@dxos/assistant-toolkit 0.8.4-main.1068cf700f
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/LICENSE +8 -0
- package/README.md +3 -0
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +3708 -0
- package/dist/lib/neutral/index.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/neutral/testing/index.mjs +44 -0
- package/dist/lib/neutral/testing/index.mjs.map +7 -0
- package/dist/types/src/blueprints/design/design-blueprint.d.ts +18 -0
- package/dist/types/src/blueprints/design/design-blueprint.d.ts.map +1 -0
- package/dist/types/src/blueprints/design/design-blueprint.test.d.ts +2 -0
- package/dist/types/src/blueprints/design/design-blueprint.test.d.ts.map +1 -0
- package/dist/types/src/blueprints/design/index.d.ts +3 -0
- package/dist/types/src/blueprints/design/index.d.ts.map +1 -0
- package/dist/types/src/blueprints/discord/discord-blueprint.d.ts +18 -0
- package/dist/types/src/blueprints/discord/discord-blueprint.d.ts.map +1 -0
- package/dist/types/src/blueprints/discord/index.d.ts +3 -0
- package/dist/types/src/blueprints/discord/index.d.ts.map +1 -0
- package/dist/types/src/blueprints/index.d.ts +8 -0
- package/dist/types/src/blueprints/index.d.ts.map +1 -0
- package/dist/types/src/blueprints/linear/index.d.ts +3 -0
- package/dist/types/src/blueprints/linear/index.d.ts.map +1 -0
- package/dist/types/src/blueprints/linear/linear-blueprint.d.ts +18 -0
- package/dist/types/src/blueprints/linear/linear-blueprint.d.ts.map +1 -0
- package/dist/types/src/blueprints/markdown/index.d.ts +3 -0
- package/dist/types/src/blueprints/markdown/index.d.ts.map +1 -0
- package/dist/types/src/blueprints/markdown/markdown-blueprint.d.ts +18 -0
- package/dist/types/src/blueprints/markdown/markdown-blueprint.d.ts.map +1 -0
- package/dist/types/src/blueprints/planning/index.d.ts +3 -0
- package/dist/types/src/blueprints/planning/index.d.ts.map +1 -0
- package/dist/types/src/blueprints/planning/planning-blueprint.d.ts +18 -0
- package/dist/types/src/blueprints/planning/planning-blueprint.d.ts.map +1 -0
- package/dist/types/src/blueprints/planning/planning-blueprint.test.d.ts +2 -0
- package/dist/types/src/blueprints/planning/planning-blueprint.test.d.ts.map +1 -0
- package/dist/types/src/blueprints/research/index.d.ts +3 -0
- package/dist/types/src/blueprints/research/index.d.ts.map +1 -0
- package/dist/types/src/blueprints/research/research-blueprint.d.ts +18 -0
- package/dist/types/src/blueprints/research/research-blueprint.d.ts.map +1 -0
- package/dist/types/src/blueprints/research/research-blueprint.test.d.ts +2 -0
- package/dist/types/src/blueprints/research/research-blueprint.test.d.ts.map +1 -0
- package/dist/types/src/blueprints/testing.d.ts +10 -0
- package/dist/types/src/blueprints/testing.d.ts.map +1 -0
- package/dist/types/src/blueprints/websearch/index.d.ts +4 -0
- package/dist/types/src/blueprints/websearch/index.d.ts.map +1 -0
- package/dist/types/src/blueprints/websearch/websearch-blueprint.d.ts +18 -0
- package/dist/types/src/blueprints/websearch/websearch-blueprint.d.ts.map +1 -0
- package/dist/types/src/blueprints/websearch/websearch-toolkit.d.ts +27 -0
- package/dist/types/src/blueprints/websearch/websearch-toolkit.d.ts.map +1 -0
- package/dist/types/src/chat/Chat.d.ts +31 -0
- package/dist/types/src/chat/Chat.d.ts.map +1 -0
- package/dist/types/src/chat/index.d.ts +2 -0
- package/dist/types/src/chat/index.d.ts.map +1 -0
- package/dist/types/src/crud/graph.d.ts +67 -0
- package/dist/types/src/crud/graph.d.ts.map +1 -0
- package/dist/types/src/crud/graph.test.d.ts +2 -0
- package/dist/types/src/crud/graph.test.d.ts.map +1 -0
- package/dist/types/src/crud/index.d.ts +2 -0
- package/dist/types/src/crud/index.d.ts.map +1 -0
- package/dist/types/src/experimental/feed.test.d.ts +2 -0
- package/dist/types/src/experimental/feed.test.d.ts.map +1 -0
- package/dist/types/src/functions/agent/index.d.ts +5 -0
- package/dist/types/src/functions/agent/index.d.ts.map +1 -0
- package/dist/types/src/functions/agent/prompt.d.ts +76 -0
- package/dist/types/src/functions/agent/prompt.d.ts.map +1 -0
- package/dist/types/src/functions/discord/fetch-messages.d.ts +11 -0
- package/dist/types/src/functions/discord/fetch-messages.d.ts.map +1 -0
- package/dist/types/src/functions/discord/fetch-messages.test.d.ts +2 -0
- package/dist/types/src/functions/discord/fetch-messages.test.d.ts.map +1 -0
- package/dist/types/src/functions/discord/index.d.ts +12 -0
- package/dist/types/src/functions/discord/index.d.ts.map +1 -0
- package/dist/types/src/functions/document/create.d.ts +6 -0
- package/dist/types/src/functions/document/create.d.ts.map +1 -0
- package/dist/types/src/functions/document/index.d.ts +30 -0
- package/dist/types/src/functions/document/index.d.ts.map +1 -0
- package/dist/types/src/functions/document/read.d.ts +14 -0
- package/dist/types/src/functions/document/read.d.ts.map +1 -0
- package/dist/types/src/functions/document/update.d.ts +13 -0
- package/dist/types/src/functions/document/update.d.ts.map +1 -0
- package/dist/types/src/functions/entity-extraction/entity-extraction.d.ts +174 -0
- package/dist/types/src/functions/entity-extraction/entity-extraction.d.ts.map +1 -0
- package/dist/types/src/functions/entity-extraction/entity-extraction.test.d.ts +2 -0
- package/dist/types/src/functions/entity-extraction/entity-extraction.test.d.ts.map +1 -0
- package/dist/types/src/functions/entity-extraction/index.d.ts +175 -0
- package/dist/types/src/functions/entity-extraction/index.d.ts.map +1 -0
- package/dist/types/src/functions/exa/data/exa-search-1748337321991.d.ts +38 -0
- package/dist/types/src/functions/exa/data/exa-search-1748337321991.d.ts.map +1 -0
- package/dist/types/src/functions/exa/data/exa-search-1748337331526.d.ts +37 -0
- package/dist/types/src/functions/exa/data/exa-search-1748337331526.d.ts.map +1 -0
- package/dist/types/src/functions/exa/data/exa-search-1748337344119.d.ts +58 -0
- package/dist/types/src/functions/exa/data/exa-search-1748337344119.d.ts.map +1 -0
- package/dist/types/src/functions/exa/data/index.d.ts +3 -0
- package/dist/types/src/functions/exa/data/index.d.ts.map +1 -0
- package/dist/types/src/functions/exa/exa.d.ts +5 -0
- package/dist/types/src/functions/exa/exa.d.ts.map +1 -0
- package/dist/types/src/functions/exa/index.d.ts +3 -0
- package/dist/types/src/functions/exa/index.d.ts.map +1 -0
- package/dist/types/src/functions/exa/mock.d.ts +5 -0
- package/dist/types/src/functions/exa/mock.d.ts.map +1 -0
- package/dist/types/src/functions/github/fetch-prs.d.ts +6 -0
- package/dist/types/src/functions/github/fetch-prs.d.ts.map +1 -0
- package/dist/types/src/functions/index.d.ts +8 -0
- package/dist/types/src/functions/index.d.ts.map +1 -0
- package/dist/types/src/functions/linear/index.d.ts +9 -0
- package/dist/types/src/functions/linear/index.d.ts.map +1 -0
- package/dist/types/src/functions/linear/linear.test.d.ts +2 -0
- package/dist/types/src/functions/linear/linear.test.d.ts.map +1 -0
- package/dist/types/src/functions/linear/sync-issues.d.ts +12 -0
- package/dist/types/src/functions/linear/sync-issues.d.ts.map +1 -0
- package/dist/types/src/functions/research/document-create.d.ts +9 -0
- package/dist/types/src/functions/research/document-create.d.ts.map +1 -0
- package/dist/types/src/functions/research/index.d.ts +21 -0
- package/dist/types/src/functions/research/index.d.ts.map +1 -0
- package/dist/types/src/functions/research/research-graph.d.ts +19 -0
- package/dist/types/src/functions/research/research-graph.d.ts.map +1 -0
- package/dist/types/src/functions/research/research.d.ts +14 -0
- package/dist/types/src/functions/research/research.d.ts.map +1 -0
- package/dist/types/src/functions/research/research.test.d.ts +2 -0
- package/dist/types/src/functions/research/research.test.d.ts.map +1 -0
- package/dist/types/src/functions/research/types.d.ts +6 -0
- package/dist/types/src/functions/research/types.d.ts.map +1 -0
- package/dist/types/src/functions/tasks/index.d.ts +29 -0
- package/dist/types/src/functions/tasks/index.d.ts.map +1 -0
- package/dist/types/src/functions/tasks/read.d.ts +14 -0
- package/dist/types/src/functions/tasks/read.d.ts.map +1 -0
- package/dist/types/src/functions/tasks/task-list.d.ts +74 -0
- package/dist/types/src/functions/tasks/task-list.d.ts.map +1 -0
- package/dist/types/src/functions/tasks/task-list.test.d.ts +2 -0
- package/dist/types/src/functions/tasks/task-list.test.d.ts.map +1 -0
- package/dist/types/src/functions/tasks/update.d.ts +16 -0
- package/dist/types/src/functions/tasks/update.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +9 -0
- package/dist/types/src/index.d.ts.map +1 -0
- package/dist/types/src/initiative/Initiative.d.ts +41 -0
- package/dist/types/src/initiative/Initiative.d.ts.map +1 -0
- package/dist/types/src/initiative/blueprint.d.ts +153 -0
- package/dist/types/src/initiative/blueprint.d.ts.map +1 -0
- package/dist/types/src/initiative/functions/addArtifact.d.ts +6 -0
- package/dist/types/src/initiative/functions/addArtifact.d.ts.map +1 -0
- package/dist/types/src/initiative/functions/agent.d.ts +62 -0
- package/dist/types/src/initiative/functions/agent.d.ts.map +1 -0
- package/dist/types/src/initiative/functions/getContext.d.ts +13 -0
- package/dist/types/src/initiative/functions/getContext.d.ts.map +1 -0
- package/dist/types/src/initiative/functions/index.d.ts +5 -0
- package/dist/types/src/initiative/functions/index.d.ts.map +1 -0
- package/dist/types/src/initiative/functions/qualifier.d.ts +60 -0
- package/dist/types/src/initiative/functions/qualifier.d.ts.map +1 -0
- package/dist/types/src/initiative/index.d.ts +6 -0
- package/dist/types/src/initiative/index.d.ts.map +1 -0
- package/dist/types/src/initiative/initiative.test.d.ts +2 -0
- package/dist/types/src/initiative/initiative.test.d.ts.map +1 -0
- package/dist/types/src/initiative/plan.d.ts +77 -0
- package/dist/types/src/initiative/plan.d.ts.map +1 -0
- package/dist/types/src/initiative/util.d.ts +29 -0
- package/dist/types/src/initiative/util.d.ts.map +1 -0
- package/dist/types/src/planning/blueprint.d.ts +18 -0
- package/dist/types/src/planning/blueprint.d.ts.map +1 -0
- package/dist/types/src/planning/functions/index.d.ts +2 -0
- package/dist/types/src/planning/functions/index.d.ts.map +1 -0
- package/dist/types/src/planning/functions/update-tasks.d.ts +9 -0
- package/dist/types/src/planning/functions/update-tasks.d.ts.map +1 -0
- package/dist/types/src/planning/index.d.ts +3 -0
- package/dist/types/src/planning/index.d.ts.map +1 -0
- package/dist/types/src/sync/index.d.ts +2 -0
- package/dist/types/src/sync/index.d.ts.map +1 -0
- package/dist/types/src/sync/sync.d.ts +15 -0
- package/dist/types/src/sync/sync.d.ts.map +1 -0
- package/dist/types/src/testing/index.d.ts +2 -0
- package/dist/types/src/testing/index.d.ts.map +1 -0
- package/dist/types/src/testing/plugins.d.ts +19 -0
- package/dist/types/src/testing/plugins.d.ts.map +1 -0
- package/dist/types/src/toolkits/AssistantToolkit.d.ts +43 -0
- package/dist/types/src/toolkits/AssistantToolkit.d.ts.map +1 -0
- package/dist/types/src/toolkits/AssistantToolkit.test.d.ts +2 -0
- package/dist/types/src/toolkits/AssistantToolkit.test.d.ts.map +1 -0
- package/dist/types/src/toolkits/SystemToolkit.d.ts +99 -0
- package/dist/types/src/toolkits/SystemToolkit.d.ts.map +1 -0
- package/dist/types/src/toolkits/WebToolkit.d.ts +38 -0
- package/dist/types/src/toolkits/WebToolkit.d.ts.map +1 -0
- package/dist/types/src/toolkits/index.d.ts +4 -0
- package/dist/types/src/toolkits/index.d.ts.map +1 -0
- package/dist/types/src/util/graphql.d.ts +22 -0
- package/dist/types/src/util/graphql.d.ts.map +1 -0
- package/dist/types/src/util/index.d.ts +2 -0
- package/dist/types/src/util/index.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -0
- package/package.json +74 -0
- package/src/blueprints/design/design-blueprint.test.ts +100 -0
- package/src/blueprints/design/design-blueprint.ts +31 -0
- package/src/blueprints/design/index.ts +7 -0
- package/src/blueprints/discord/discord-blueprint.ts +32 -0
- package/src/blueprints/discord/index.ts +7 -0
- package/src/blueprints/index.ts +11 -0
- package/src/blueprints/linear/index.ts +7 -0
- package/src/blueprints/linear/linear-blueprint.ts +33 -0
- package/src/blueprints/markdown/index.ts +7 -0
- package/src/blueprints/markdown/markdown-blueprint.ts +24 -0
- package/src/blueprints/planning/index.ts +7 -0
- package/src/blueprints/planning/planning-blueprint.test.ts +120 -0
- package/src/blueprints/planning/planning-blueprint.ts +96 -0
- package/src/blueprints/research/index.ts +7 -0
- package/src/blueprints/research/research-blueprint.test.ts +7 -0
- package/src/blueprints/research/research-blueprint.ts +51 -0
- package/src/blueprints/testing.ts +30 -0
- package/src/blueprints/websearch/index.ts +9 -0
- package/src/blueprints/websearch/websearch-blueprint.ts +18 -0
- package/src/blueprints/websearch/websearch-toolkit.ts +8 -0
- package/src/chat/Chat.ts +45 -0
- package/src/chat/index.ts +5 -0
- package/src/crud/graph.test.ts +46 -0
- package/src/crud/graph.ts +380 -0
- package/src/crud/index.ts +5 -0
- package/src/experimental/feed.test.ts +106 -0
- package/src/functions/agent/index.ts +11 -0
- package/src/functions/agent/prompt.ts +116 -0
- package/src/functions/discord/fetch-messages.test.ts +54 -0
- package/src/functions/discord/fetch-messages.ts +252 -0
- package/src/functions/discord/index.ts +9 -0
- package/src/functions/document/create.ts +29 -0
- package/src/functions/document/index.ts +13 -0
- package/src/functions/document/read.ts +32 -0
- package/src/functions/document/update.ts +32 -0
- package/src/functions/entity-extraction/entity-extraction.conversations.json +1 -0
- package/src/functions/entity-extraction/entity-extraction.test.ts +74 -0
- package/src/functions/entity-extraction/entity-extraction.ts +181 -0
- package/src/functions/entity-extraction/index.ts +9 -0
- package/src/functions/exa/data/exa-search-1748337321991.ts +131 -0
- package/src/functions/exa/data/exa-search-1748337331526.ts +144 -0
- package/src/functions/exa/data/exa-search-1748337344119.ts +133 -0
- package/src/functions/exa/data/index.ts +11 -0
- package/src/functions/exa/exa.ts +37 -0
- package/src/functions/exa/index.ts +6 -0
- package/src/functions/exa/mock.ts +71 -0
- package/src/functions/github/fetch-prs.ts +31 -0
- package/src/functions/index.ts +11 -0
- package/src/functions/linear/index.ts +9 -0
- package/src/functions/linear/linear.test.ts +58 -0
- package/src/functions/linear/sync-issues.ts +191 -0
- package/src/functions/research/document-create.ts +73 -0
- package/src/functions/research/index.ts +14 -0
- package/src/functions/research/research-graph.ts +49 -0
- package/src/functions/research/research-instructions.tpl +106 -0
- package/src/functions/research/research.conversations.json +1 -0
- package/src/functions/research/research.test.ts +144 -0
- package/src/functions/research/research.ts +182 -0
- package/src/functions/research/types.ts +26 -0
- package/src/functions/tasks/index.ts +11 -0
- package/src/functions/tasks/read.ts +34 -0
- package/src/functions/tasks/task-list.test.ts +99 -0
- package/src/functions/tasks/task-list.ts +165 -0
- package/src/functions/tasks/update.ts +52 -0
- package/src/index.ts +12 -0
- package/src/initiative/Initiative.ts +61 -0
- package/src/initiative/blueprint.ts +60 -0
- package/src/initiative/functions/addArtifact.ts +41 -0
- package/src/initiative/functions/agent.ts +77 -0
- package/src/initiative/functions/getContext.ts +54 -0
- package/src/initiative/functions/index.ts +8 -0
- package/src/initiative/functions/qualifier.ts +98 -0
- package/src/initiative/index.ts +9 -0
- package/src/initiative/initiative.test.ts +584 -0
- package/src/initiative/plan.ts +107 -0
- package/src/initiative/util.ts +137 -0
- package/src/planning/blueprint.ts +14 -0
- package/src/planning/functions/index.ts +5 -0
- package/src/planning/functions/update-tasks.ts +168 -0
- package/src/planning/index.ts +6 -0
- package/src/sync/index.ts +5 -0
- package/src/sync/sync.ts +95 -0
- package/src/testing/index.ts +5 -0
- package/src/testing/plugins.tsx +69 -0
- package/src/toolkits/AssistantToolkit.conversations.json +1 -0
- package/src/toolkits/AssistantToolkit.test.ts +72 -0
- package/src/toolkits/AssistantToolkit.ts +70 -0
- package/src/toolkits/SystemToolkit.ts +299 -0
- package/src/toolkits/WebToolkit.ts +34 -0
- package/src/toolkits/index.ts +7 -0
- package/src/typedefs.d.ts +8 -0
- package/src/util/graphql.ts +31 -0
- package/src/util/index.ts +5 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import * as Effect from 'effect/Effect';
|
|
6
|
+
import * as Layer from 'effect/Layer';
|
|
7
|
+
import * as Predicate from 'effect/Predicate';
|
|
8
|
+
import * as Schema from 'effect/Schema';
|
|
9
|
+
|
|
10
|
+
import { AiService } from '@dxos/ai';
|
|
11
|
+
import { AiSession, GenericToolkit, ToolExecutionServices } from '@dxos/assistant';
|
|
12
|
+
import { Filter, Obj, Ref, Type } from '@dxos/echo';
|
|
13
|
+
import { Database } from '@dxos/echo';
|
|
14
|
+
import { defineFunction } from '@dxos/functions';
|
|
15
|
+
import { FunctionInvocationServiceLayerTest } from '@dxos/functions-runtime/testing';
|
|
16
|
+
import { type DXN } from '@dxos/keys';
|
|
17
|
+
import { log } from '@dxos/log';
|
|
18
|
+
import { type Actor, LegacyOrganization, Message, Organization, Person } from '@dxos/types';
|
|
19
|
+
import { trim } from '@dxos/util';
|
|
20
|
+
|
|
21
|
+
import { makeGraphWriterHandler, makeGraphWriterToolkit } from '../../crud';
|
|
22
|
+
import { contextQueueLayerFromResearchGraph } from '../research';
|
|
23
|
+
|
|
24
|
+
export default defineFunction({
|
|
25
|
+
key: 'dxos.org/functions/entity-extraction',
|
|
26
|
+
name: 'Entity Extraction',
|
|
27
|
+
description: 'Extracts entities from emails and transcripts.',
|
|
28
|
+
inputSchema: Schema.Struct({
|
|
29
|
+
source: Message.Message.annotations({
|
|
30
|
+
description: 'Email or transcript to extract entities from.',
|
|
31
|
+
}),
|
|
32
|
+
|
|
33
|
+
// TODO(dmaretskyi): Consider making this an array of blueprints instead.
|
|
34
|
+
instructions: Schema.optional(Schema.String).annotations({
|
|
35
|
+
description: 'Instructions extraction process.',
|
|
36
|
+
}),
|
|
37
|
+
}),
|
|
38
|
+
outputSchema: Schema.Struct({
|
|
39
|
+
entities: Schema.optional(
|
|
40
|
+
Schema.Array(Type.Obj).annotations({
|
|
41
|
+
description: 'Extracted entities.',
|
|
42
|
+
}),
|
|
43
|
+
),
|
|
44
|
+
}),
|
|
45
|
+
handler: Effect.fnUntraced(
|
|
46
|
+
function* ({ data: { source: message, instructions } }) {
|
|
47
|
+
const tags = Obj.getMeta(message)?.tags;
|
|
48
|
+
const contact = yield* extractContact(message.sender, tags);
|
|
49
|
+
let organization: Organization.Organization | null = null;
|
|
50
|
+
|
|
51
|
+
if (contact && !contact.organization) {
|
|
52
|
+
const created: DXN[] = [];
|
|
53
|
+
const GraphWriterToolkit = makeGraphWriterToolkit({
|
|
54
|
+
schema: [LegacyOrganization],
|
|
55
|
+
}).pipe();
|
|
56
|
+
const GraphWriterHandler = makeGraphWriterHandler(GraphWriterToolkit, {
|
|
57
|
+
onAppend: (dxns) => created.push(...dxns),
|
|
58
|
+
});
|
|
59
|
+
const toolkit = yield* GraphWriterToolkit.pipe(
|
|
60
|
+
Effect.provide(GraphWriterHandler.pipe(Layer.provide(contextQueueLayerFromResearchGraph))),
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
yield* new AiSession().run({
|
|
64
|
+
system: trim`
|
|
65
|
+
Extract the sender's organization from the email. If you are not sure, do nothing.
|
|
66
|
+
The extracted organization URL must match the sender's email domain.
|
|
67
|
+
${instructions ? '<user_intructions>' + instructions + '</user_intructions>' : ''},
|
|
68
|
+
`,
|
|
69
|
+
prompt: JSON.stringify({ source: message, contact }),
|
|
70
|
+
toolkit,
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
if (created.length > 1) {
|
|
74
|
+
throw new Error('Multiple organizations created');
|
|
75
|
+
} else if (created.length === 1) {
|
|
76
|
+
organization = yield* Database.resolve(created[0], Organization.Organization);
|
|
77
|
+
Obj.change(organization, (org) => {
|
|
78
|
+
const meta = Obj.getMeta(org);
|
|
79
|
+
meta.tags ??= [];
|
|
80
|
+
meta.tags.push(...(tags ?? []));
|
|
81
|
+
});
|
|
82
|
+
Obj.change(contact, (c) => {
|
|
83
|
+
c.organization = Ref.make(organization!);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return {
|
|
89
|
+
entities: [contact, organization].filter(Predicate.isNotNullable),
|
|
90
|
+
};
|
|
91
|
+
},
|
|
92
|
+
Effect.provide(
|
|
93
|
+
Layer.mergeAll(
|
|
94
|
+
AiService.model('@anthropic/claude-sonnet-4-0'), // TODO(dmaretskyi): Extract.
|
|
95
|
+
ToolExecutionServices,
|
|
96
|
+
).pipe(
|
|
97
|
+
Layer.provide(
|
|
98
|
+
// TODO(dmaretskyi): This should be provided by environment.
|
|
99
|
+
Layer.mergeAll(GenericToolkit.providerEmpty, FunctionInvocationServiceLayerTest()),
|
|
100
|
+
),
|
|
101
|
+
),
|
|
102
|
+
),
|
|
103
|
+
),
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
const extractContact = Effect.fn('extractContact')(function* (actor: Actor.Actor, tags?: readonly string[]) {
|
|
107
|
+
const name = actor.name;
|
|
108
|
+
const email = actor.email;
|
|
109
|
+
if (!email) {
|
|
110
|
+
log.warn('email is required for contact extraction', { actor });
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
const existingContacts = yield* Database.runQuery(Filter.type(Person.Person));
|
|
115
|
+
|
|
116
|
+
// Check for existing contact
|
|
117
|
+
// TODO(dmaretskyi): Query filter DSL - https://linear.app/dxos/issue/DX-541/filtercontains-should-work-with-partial-objects
|
|
118
|
+
const existingContact = existingContacts.find((contact) =>
|
|
119
|
+
contact.emails?.some((contactEmail) => contactEmail.value === email),
|
|
120
|
+
);
|
|
121
|
+
|
|
122
|
+
if (existingContact) {
|
|
123
|
+
log.info('Contact already exists', { email, existingContact });
|
|
124
|
+
return existingContact;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
const newContact = Obj.make(Person.Person, {
|
|
128
|
+
...(tags ? { [Obj.Meta]: { tags: [...tags] } } : {}),
|
|
129
|
+
emails: [{ value: email }],
|
|
130
|
+
});
|
|
131
|
+
yield* Database.add(newContact);
|
|
132
|
+
|
|
133
|
+
if (name) {
|
|
134
|
+
Obj.change(newContact, (c) => {
|
|
135
|
+
c.fullName = name;
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
const emailDomain = email.split('@')[1]?.toLowerCase();
|
|
140
|
+
if (!emailDomain) {
|
|
141
|
+
log.warn('Invalid email format, cannot extract domain', { email });
|
|
142
|
+
return newContact;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
log.info('extracted email domain', { emailDomain });
|
|
146
|
+
|
|
147
|
+
const existingOrganisations = yield* Database.runQuery(Filter.type(Organization.Organization));
|
|
148
|
+
const matchingOrg = existingOrganisations.find((org) => {
|
|
149
|
+
if (org.website) {
|
|
150
|
+
try {
|
|
151
|
+
const websiteUrl =
|
|
152
|
+
org.website.startsWith('http://') || org.website.startsWith('https://')
|
|
153
|
+
? org.website
|
|
154
|
+
: `https://${org.website}`;
|
|
155
|
+
|
|
156
|
+
const websiteDomain = new URL(websiteUrl).hostname.toLowerCase();
|
|
157
|
+
return (
|
|
158
|
+
websiteDomain === emailDomain ||
|
|
159
|
+
websiteDomain.endsWith(`.${emailDomain}`) ||
|
|
160
|
+
emailDomain.endsWith(`.${websiteDomain}`)
|
|
161
|
+
);
|
|
162
|
+
} catch (e) {
|
|
163
|
+
log.warn('Error parsing website URL', {
|
|
164
|
+
website: org.website,
|
|
165
|
+
error: e,
|
|
166
|
+
});
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return false;
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
if (matchingOrg) {
|
|
174
|
+
log.info('found matching organization', { organization: matchingOrg });
|
|
175
|
+
Obj.change(newContact, (c) => {
|
|
176
|
+
c.organization = Ref.make(matchingOrg);
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
return newContact;
|
|
181
|
+
});
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
requestId: '324936368a74f4db978982172bc18a6c',
|
|
7
|
+
autopromptString: 'AI personal knowledge management tools projects 2024',
|
|
8
|
+
autoDate: '2024-01-01T00:00:00.000Z',
|
|
9
|
+
resolvedSearchType: 'neural',
|
|
10
|
+
results: [
|
|
11
|
+
{
|
|
12
|
+
id: 'https://www.open-notebook.ai/',
|
|
13
|
+
title: 'What is Open Notebook? | Open Notebook',
|
|
14
|
+
url: 'https://www.open-notebook.ai/',
|
|
15
|
+
publishedDate: '2024-01-01T00:00:00.000Z',
|
|
16
|
+
author: '',
|
|
17
|
+
score: 0.3995794951915741,
|
|
18
|
+
text: "Take Control of Your Learning. Privately. A powerful open-source, AI-powered note-taking/research platform that respects your privacy 🎙️ Podcast Generator Transform your notes into engaging podcasts with customizable voices, speakers, and episodes 🤖 AI-Powered Notes Leverage AI to summarize, generate insights, and manage your notes 🔒 Privacy Control Full control over what information AI can access 🔄 Content Integration Support for links, PDFs, TXT, PPT, YouTube, and more What is Open Notebook? Open Notebook is the cognitive partner you always wanted and could never explain why. It combines the power of AI with unwavering privacy controls. It's designed for researchers, students, and professionals who want to enhance their learning and abilities while maintaining complete control over workflows, models, and how their data gets used and exposed. Is this right for me? 📚 Learning Enthusiast You're constantly seeking knowledge and want to go beyond surface-level understanding. Learning for you is about building deep, lasting comprehension. 🤝 You want a learning partner You believe your learning process can improve by partnering with a tailor made AI. You want to be provoked to think more clearly. 🤯 Your learning backlog is way too big You have hundreds of links you would love to read, but there is no time for it all. You want to make sure those are catalogued for when you need them. ✍️ Independent Thinker You value both taking notes and forming your own ideas. You understand different viewpoints but believe in developing your own perspective. 🔒 You are privacy aware You don't want all your context, thoughts and plans to be all over Big Tech, if not necessary. 💁 You like things your way You want to decide how your content is handled, which AI models you want to interact with and help specifically it should help/challenge you. What is the plan for the future? There is much more that can be done to augment human knowledge. Open Notebook's first release is just a first step in that direction. The end goal is to build a Cognitive Partner for every person. A customized assistant that can help you develop your skills, knowledge, and opinions in a way that makes sense to you. Learn more about our long-term vision and roadmap in our Vision page.",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: 'https://www.reorproject.org/',
|
|
22
|
+
title: 'Reor',
|
|
23
|
+
url: 'https://www.reorproject.org/',
|
|
24
|
+
publishedDate: '2024-01-01T00:00:00.000Z',
|
|
25
|
+
author: 'Reor',
|
|
26
|
+
score: 0.39665618538856506,
|
|
27
|
+
text: "Private & local AI personal knowledge management app for high entropy thinkers. Q&A Chat with an LLM that has full context of your notes. Automatically connected ideas Never manually link your notes again. Semantic Search Search without having to remember exact phrasing. WYSIWYG Markdown Markdown is the language of thought. Local First LLMs, Embedding Models, Vector database. Everything runs and stores locally. Writing Assistant Write with the world's first local writing assistant. Trusted by individuals who may have heard of these companies",
|
|
28
|
+
image: 'https://reorhomepage-2-cwy0zagzg-reor-team.vercel.app/opengraph-image.jpg?a25ca70e900445ed',
|
|
29
|
+
favicon: 'https://www.reorproject.org/favicon-16x16.png',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
id: 'https://mymemo.ai/blog/best-ai-personal-knowledge-management-tools-in-2024/detail',
|
|
33
|
+
title: 'Best AI Personal Knowledge Management (PKM) tools in 2024 - My Framer Site',
|
|
34
|
+
url: 'https://mymemo.ai/blog/best-ai-personal-knowledge-management-tools-in-2024/detail',
|
|
35
|
+
publishedDate: '2025-05-21T17:17:02.000Z',
|
|
36
|
+
author: '',
|
|
37
|
+
score: 0.3811739385128021,
|
|
38
|
+
text: "In today's fast-paced world, managing and organizing knowledge has become increasingly challenging. With the rise of digital information and the need for efficient knowledge sharing, traditional methods of knowledge management are no longer sufficient. AI-powered tools have emerged as a game-changer in this domain, offering a more efficient and effective way to manage and organize knowledge. Efficiency Amplified: AI streamlines the organization and analysis of vast data sets, saving time and reducing manual effort. Insights Unearthed: Uncover hidden patterns, trends, and valuable insights within your data, providing a deeper understanding of your information. Personalized Experience: Tailor your knowledge management approach with AI, creating a personalized digital assistant that adapts to your unique needs. Stay Ahead in the Digital Era: Embrace the transformative power of AI to navigate the information overload and stay ahead in our rapidly evolving digital landscape. Here are 10 AI-powered tools for personal knowledge management with their product links: 1. MyMemo AI: - Introduction: MyMemo transforms personal data into wisdom using AI, offering features like targeted search, smart advice, and creative writing prompts. - Product Link: [MyMemo Website](https://www.mymemo.ai) - Features: - Collects digital knowledge from various sources into a single platform. - Processes collected information with AI to extract key insights. - Allows users to query MyMemoAI for specific info or insights from their knowledge base. - Offers targeted search, smart advice, and creative writing prompts for enhanced knowledge management. 2. Notion AI: - Introduction: Notion AI offers a customizable workspace for efficient knowledge sharing and management. - Product Link: [Notion AI Website](https://www.notion.so) - Features: - Customizable workspace for knowledge sharing. - Integration with various tools like Slack, Google Drive, and Microsoft Teams. - Robust search capabilities powered by AI and AI-based analytics. 3. ClickUp: - Introduction: ClickUp provides dedicated spaces for knowledge base organization and seamless integration with various tools. - Product Link: [ClickUp Website](https://clickup.com) - Features: - Dedicated spaces for Knowledge Base organization. - Integration with third-party software like Microsoft Teams, Jira, Slack, Zoho, and more. - AI-based analytics to track productivity and identify patterns. 4. MyMind: - Introduction: MyMind offers a private space to save notes, images, quotes, and highlights enhanced by AI to aid in memory recall without the need for manual categorization. - Product Link: [MyMind Website](https://www.mymind.com) - Features: - Private space for saving notes, images, quotes, and highlights. - Enhanced by AI for efficient memory recall without manual organization. - Tailored for designers, writers, researchers, developers, and visual minds of all kinds. Adding Mem.ai to the top 10 list of AI-powered tools for personal kn",
|
|
39
|
+
image: 'https://framerusercontent.com/images/xtRTZ9zRVH3uL1fvH2vqA6G60W8.png',
|
|
40
|
+
favicon: 'https://framerusercontent.com/images/XEQTxAwueP1wc7BpbB1zrouiuoA.png',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: 'https://mymemo.ai/',
|
|
44
|
+
title: 'MyMemo-Empower Your Mind with AI',
|
|
45
|
+
url: 'https://mymemo.ai/',
|
|
46
|
+
publishedDate: '2025-05-21T17:17:02.000Z',
|
|
47
|
+
author: '',
|
|
48
|
+
score: 0.3810442090034485,
|
|
49
|
+
text: 'End Digital Chaos with All In One Digital Space Effortlessly Access Information with AI Chat What have I uploaded about the marketing strategy? How to raise fund as a founder for startup? Write an article about the impact of AI in our society. Compliance with Global Standards MyMemo AI adheres to international data protection regulations, ensuring your data is handled with the utmost care. Secure Storage Your data is encrypted and stored on our high-security servers, ensuring that only you have access. We maintain strict privacy protocols, and even our team cannot view your information. Private Links for Your Memos MyMemo AI ensures that all links generated for your uploaded content are private and exclusively visible to you. 100 AI chat per month 100 content uploads per month 5 memo collections Powered by GPT-4o mini Up to 5 Related Memo in AI chat Single PDF file size under 5MB 10 AI writing for notes in total AI chat unlimited 1000 content uploads per month 100 Memo Collections Supports multiple AI models Up to 5 Related Memo in AI chat Single PDF file size under 30MB 100 AI writing for notes per month Custom AI summary prompt(coming soon) AI chat unlimited Unlimited content uploads Unlimited memo collections Supports multiple AI models Up to 8 Related Memo in AI chat Single PDF file size under 50MB Unlimited AI writing for notes Custom AI summary prompt(coming soon) Free access to @GPT-4o in Chat We’re excited to partner with Inkwise to bring MyMemo users an exclusive deal! Inkwise.ai is an AI-powered platform that helps users craft professional documents by extracting and integrating key information from uploaded files. It offers industry-specific templates, intelligent content extraction, and a referencing system that ensures factual accuracy. Exclusive for MyMemo Users: Get 2 months of Inkwise Pro for free with the code INKWISE2025 at checkout! MyMemo © MyMemo 2025. All rights reserved',
|
|
50
|
+
image: 'https://framerusercontent.com/images/xtRTZ9zRVH3uL1fvH2vqA6G60W8.png',
|
|
51
|
+
favicon: 'https://framerusercontent.com/images/XEQTxAwueP1wc7BpbB1zrouiuoA.png',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
id: 'https://www.personal.ai/memory',
|
|
55
|
+
title: 'Make Your Own AI with Your Unique Memory',
|
|
56
|
+
url: 'https://www.personal.ai/memory',
|
|
57
|
+
publishedDate: '2024-01-01T00:00:00.000Z',
|
|
58
|
+
author: '',
|
|
59
|
+
score: 0.3991696536540985,
|
|
60
|
+
text: "In Personal AI, version control for memory and model is managed through a systematic approach that allows users to track, manage, and revert changes made to the AI's memory and model. Memory Stack: When you store a memory in Personal AI, it goes into the memory stack for training the AI. Data Uploads: Users can add, edit, or reinforce memories by uploading authored data directly into their personal language model. The personal language model has unlimited memory and is not bound by token or context limitations. The AI's performance is as good as the memory provided to it. If it makes false statements, the memory needs to be fixed and reinforced for future learning. There will be mechanisms to download the memory and model in the future. The output of the personal AI model is entirely controlled by the user's input and training. Yes, you can automate conversations using stacked memories in your Personal AI. By leveraging the memory stacking feature, you can train your AI to recall and utilize specific information during interactions Practices for Automating Conversations: Memory Anchors: When stacking new memories, consider adding memory anchors to organize the information effectively. This practice helps structure and categorize the data within your Personal AI account. Variety of Sources: Utilize all available tools such as the chat box, document editor, file uploader, and URL uploader to stack data from various sources. This diverse input enables your AI to learn from a wide range of inputs for a more personalized experience. Application of Practices: To automate conversations effectively, ensure that you consistently add relevant information into your memory stack using different tools provided by Personal AI. By doing so, you enable your AI to access and utilize this knowledge when engaging in digital interactions on your behalf. Yes, you can absolutely use hashtags to label and recall specific memories later on with your Personal AI. When adding memories to your AI, it's beneficial to include detailed and descriptive information about the topic or subject, along with context such as people, location, and absolute time for the AI to reference. Using hashtags allows you to categorize and organize these memories effectively. By using proper placement of hashtags without spaces and maintaining uniform capitalization, you can enhance the selection of memories for generating answers. Additionally, when stacking content using the chat box or file/document uploader in Personal AI, you can utilize #hashtags for single words or :colons followed by keywords for multiple words or complete titles. This practice helps in refining the selection of memories for generating answers while ensuring effective organization and retrieval of data. Personal AI is built with a strong emphasis on data privacy and security. It operates under the principle that the data you provide is yours alone. Measures such as encryption, secure data storage, and the optio",
|
|
61
|
+
image: 'https://cdn.prod.website-files.com/5ff65c460ce39f5ec5681c6a/663d12aab1b425e1ad40d3a6_Memory-min.jpg',
|
|
62
|
+
favicon:
|
|
63
|
+
'https://cdn.prod.website-files.com/5ff65c460ce39f5ec5681c6a/5ffcbe4a31309a2dcf7d1f18_Human%20AI%20Icon%2032x32-bolder.png',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
id: 'https://iki.ai/',
|
|
67
|
+
title: 'IKI AI – Intelligent Knowledge Interface',
|
|
68
|
+
url: 'https://iki.ai/',
|
|
69
|
+
publishedDate: '2025-04-10T16:28:59.000Z',
|
|
70
|
+
author: '',
|
|
71
|
+
score: 0.38676750659942627,
|
|
72
|
+
text: 'Think faster. Organize deeper. All in one place. An AI-native workspace for research, strategy, and creative work An AI-native workspace for research, strategy, and creative work Backed by 500 Global Backed by 500 Global Backed by 500 Global Capture anything. Build your thinking library. Capture anything. Build your thinking library. Capture anything. Build your thinking library. AI assistant Turn long reads into clear insights. IKI summarizes, highlights, and connects the dots. AI assistant Turn long reads into clear insights. IKI summarizes, highlights, and connects the dots. AI assistant Turn long reads into clear insights. IKI summarizes, highlights, and connects the dots. AI editor AI writing with real context. Grounded in your content, not the internet. AI editor AI writing with real context. Grounded in your content, not the internet. AI editor AI writing with real context. Grounded in your content, not the internet. Team spaces Your team’s shared brain. One space for knowledge, context, and decisions. Team spaces Your team’s shared brain. One space for knowledge, context, and decisions. Team spaces Your team’s shared brain. One space for knowledge, context, and decisions. Everything you need for smarter knowledge work AI Editor Ask IKI AI Heading 1 B U I Browser extension Download extension to save webpages in one click along with notes Author Spotify Design Youtube · 3 min read Designing Data Science Tools at Spotify: Part 2 AI Summury Methods based on the relational path have shown strong, interpretable, and transferable reasoning ability. However, paths are naturally limited in capturing local evidence in graphs...Methods based on the relational path have shown strong, interpretable LLMs powered by top-tier models you trust Multi-source insights with agent context AI Digest Everything you need for smarter knowledge work AI Editor Ask IKI AI Heading 1 B U I Browser extension Download extension to save webpages in one click along with notes Author Spotify Design Youtube · 3 min read Designing Data Science Tools at Spotify: Part 2 AI Summury Methods based on the relational path have shown strong, interpretable, and transferable reasoning ability. However, paths are naturally limited in capturing local evidence in graphs...Methods based on the relational path have shown strong, interpretable LLMs powered by top-tier models you trust Multi-source insights with agent context AI Digest Everything you need for smarter knowledge work AI Editor Ask IKI AI Heading 1 B U I Browser extension Download extension to save webpages in one click along with notes Author Spotify Design Youtube · 3 min read Designing Data Science Tools at Spotify: Part 2 AI Summury Methods based on the relational path have shown strong, interpretable, and transferable reasoning ability. However, paths are naturally limited in capturing local evidence in graphs...Methods based on the relational path have shown strong, interpretable LLMs powered by',
|
|
73
|
+
image: 'https://framerusercontent.com/assets/cI6Uo7x4q0W3uxzOt2preXjv6aE.jpg',
|
|
74
|
+
favicon: 'https://framerusercontent.com/images/5NLFiJq5bLl5FXOTcVQX8vhkU.png',
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
id: 'https://supermemory.ai/',
|
|
78
|
+
title: 'supermemory™',
|
|
79
|
+
url: 'https://supermemory.ai/',
|
|
80
|
+
publishedDate: '2025-01-01T00:00:00.000Z',
|
|
81
|
+
author: '',
|
|
82
|
+
score: 0.393942266702652,
|
|
83
|
+
text: "The universal memory API for the AI era Stop building retrieval from scratch. Personalise LLMs for your users. Built for developers who ship. Start building DOCS Context is everything Without it, even the smartest AI is just an expensive chatbot $ init vector_database Way too expensive. Time to switch. Painfully slow. Let's try another. Won't scale. Back to square one. Maintenance nightmare. Need alternatives. $ choose embedding_model Which model fits your use case? Confusing performance tradeoffs Can't keep up with new releases $ handle format_parsing Markdown: Tables break everything HTML: Scripts and styles interfere PDF: Layout ruins extraction Word docs: Unpredictable formatting $ calculate scaling_costs Costs explode at production scale Performance degrades as data grows Engineering hours pile up fast $ setup connection_sync Sync failures between data sources API rate limits during large syncs Images: Need vision models now? Audio/Video: Transcription costs soar $ init multimodal_support Websites: JS & rate limits are messy PDFs: OCR fails, extraction inconsistent Authentication tokens expire constantly $ init vector_database Way too expensive. Time to switch. Painfully slow. Let's try another. Won't scale. Back to square one. Maintenance nightmare. Need alternatives. $ choose embedding_model Which model fits your use case? Confusing performance tradeoffs Can't keep up with new releases $ handle format_parsing Markdown: Tables break everything HTML: Scripts and styles interfere PDF: Layout ruins extraction Word docs: Unpredictable formatting $ calculate scaling_costs Costs explode at production scale Performance degrades as data grows Engineering hours pile up fast $ setup connection_sync Sync failures between data sources API rate limits during large syncs Images: Need vision models now? Audio/Video: Transcription costs soar $ init multimodal_support Websites: JS & rate limits are messy PDFs: OCR fails, extraction inconsistent Authentication tokens expire constantly FEATURES • FEATURES • FEATURES Unlock the Full Potential of Your Data const response = await fetch( 'https://api.supermemory.ai/v3/memories', {\n method: 'POST',\n headers: {\n 'Authorization': 'Bearer sm_ywdhjSbiDLkLIjjVotSegR_rsq3ZZKNRJmVr12p4ItTcf' \n },\n body: JSON.stringify({\n content: 'My name is Shreyans.',\n // or https://example.com \n // or https://example.com/page.pdf \n metadata: {\n user_id: '123' \n }\n }),\n})\n const data = await response.json() const response = await fetch( 'https://api.supermemory.ai/v3/memories', {\n method: 'GET',\n headers: {\n 'Authorization': 'Bearer sm_ywdhjSbiDLkLIjjVotSegR_rsq3ZZKNRJmVr12p4ItTcf',\n },\n body: JSON.stringify({\n q: \"What's my name?\" \n })\n})\n const data = await response.json() const response = await fetch( 'https://api.supermemory.ai/v3/connections/onedrive', {\n method: 'POST',\n headers: {\n 'Authorization': 'Bearer sm_ywdhjSbiDLkLIjjVotSegR_rsq3ZZKNRJmVr12p4ItTcf',\n }\n});\n const data = await response.json(); solution • sol",
|
|
84
|
+
image: 'https://cdn.prod.website-files.com/6826235ef861ed9464b064c8/6826251d65991babe21a9a9a_Frame%2031.png',
|
|
85
|
+
favicon: 'https://cdn.prod.website-files.com/6826235ef861ed9464b064c8/682639813def380d7694f590_favicon.png',
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
id: 'https://mykin.ai/',
|
|
89
|
+
title: 'Kin - Private, and Emotionally Intelligent, Personal AI',
|
|
90
|
+
url: 'https://mykin.ai/',
|
|
91
|
+
publishedDate: '2025-05-26T00:00:00.000Z',
|
|
92
|
+
author: '',
|
|
93
|
+
score: 0.38142070174217224,
|
|
94
|
+
text: "Clarity and confidence. Always on hand. Kin is a new kind of personal AI companion, more emotionally intelligent and private than ever. For whatever life throws at you. Available on iPhone and Android Anytime. Anywhere. Life at work is becoming increasingly challenging to navigate Think with Kin Personalized coaching can be inaccessible and expensive Talk with Kin How can Kin help? Inspiration “Whenever I need fresh ideas or just a soundboard, I know I can quickly turn to Kin.” Inspiration “Whenever I need fresh ideas or just a soundboard, I know I can quickly turn to Kin.” Planning “I use Kin to think things through, set goals, and organize my time.” Planning “I use Kin to think things through, set goals, and organize my time.” Learning “I can learn about almost any topic, with structured lessons created in seconds.” Learning “I can learn about almost any topic, with structured lessons created in seconds.” Support “Kin helps me with everything from small tasks to processing ideas and emotions.” Support “Kin helps me with everything from small tasks to processing ideas and emotions.” Guidance “I’m more aware of my strengths and I feel better prepared for tricky conversations.” Guidance “I’m more aware of my strengths and I feel better prepared for tricky conversations.” Kin remembers, so you don’t have to. The more you interact with Kin, the more Kin learns about you and your life. Because Kin understands both the big picture and its complexities, it can provide genuinely meaningful support in your day-to-day. Learn more Private & Secure Kin encrypts and stores your data securely on you device. No one else can see or access it. Powerful features. Scandinavian design. Smart journaling Share your thoughts and notes to reflect and build a better Kin. Coming soon Powered by open source models Coming soon Semantic and Episodic memory Coming soon Private, encrypted local-first storage Coming soon Intelligent reminders Stay on top of what matters with timely reminders. Coming soon Conversational voice chat Coming soon Third party integration Connect your Kin to the apps you love like Google calendar. Coming soon Proudly made in Copenhagen, Denmark Get started with simple tutorials and big ideas Frequently asked questions Product How does Kin's memory work? Kin’s memory pulls information from your messages into a database on your device so it can always reference it. Kin’s memory is automatic, so in practice, it works just by you talking with Kin. General More than anyone else. Every word you share and every reply is stored locally on your device - unless you change your settings to allow otherwise. You have full control over deleting it at any time. General Do I need a subscription to use Kin? No - Kin is currently free and without message limits for our beta users. However, we’re expecting to transition to a subscription model once we hit full release - we’ll make sure to talk a lot about that before it happens, though. Product Can I use Kin on a d",
|
|
95
|
+
image: 'https://cdn.prod.website-files.com/67b8fb50931278cabb866969/67d2a6c56ee313becd0f482d_img-opengraph.jpg',
|
|
96
|
+
favicon: 'https://cdn.prod.website-files.com/67b8fb50931278cabb866969/67c0cfc2c45ca5db9ca5c9e4_favicon.png',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
id: 'https://try.rememberizer.ai/blog/introducing-rememberizer-connect-knowledge-to-your-ai',
|
|
100
|
+
title: 'Introducing Rememberizer - Connect Knowledge To Your AI',
|
|
101
|
+
url: 'https://try.rememberizer.ai/blog/introducing-rememberizer-connect-knowledge-to-your-ai',
|
|
102
|
+
publishedDate: '2024-01-28T00:00:00.000Z',
|
|
103
|
+
author: '',
|
|
104
|
+
score: 0.38043755292892456,
|
|
105
|
+
text: "Introduction In the rapidly evolving world of artificial intelligence (AI), Rememberizer emerges as a revolutionary platform that profoundly changes how both developers and personal consumers interact with AI, especially Generative Pre-trained Transformers (GPT). This platform is not just another tool; it's a transformative solution, making AI interactions deeply personal, intuitive, and efficient. Let’s dive into how Rememberizer is redefining AI personalization and integration, offering unique experiences for a diverse range of users, free. Part 1: Rememberizer for Personal Consumers Why Rememberizer Matters for Personal Users Generative AI apps work better when they have access to background information. They need to know what you know. A great way to achieve that is to give them access to relevant content from the documents, data and discussions you create and use. This is what Rememberizer does. Rememberizer helps by seamlessly integrating personal data with AI applications. For OpenAI GPTs users, this means transforming your interactions with AI into something deeply personal and relevant. By indexing your data just once, Rememberizer avoids wasting time performing the same process over and over again. Empowering Personal AI Experiences Whether you’re engaging in creative projects, professional tasks, or simply exploring AI for personal curiosity, Rememberizer brings a unique value proposition. It transforms your data into a powerful AI collaborator, ensuring your interactions are tailored to your specific circumstances. Imagine an AI that feels intuitively designed for you, understanding your projects, circumstances and recent discussions. That’s the personalized AI experience Rememberizer delivers. Part 2: Rememberizer for Developers Revolutionizing AI Integration in App Development For developers, Rememberizer is a game-changer. It simplifies the integration of user data into AI applications, enhancing app functionality and user experience. Rememberizer connects directly to various data sources including Slack and Google Drive, embedding their contents semantic meaning into a vector database. This process not only elevates the AI capabilities of your app but also saves vast amounts GPU processing costs and engineering resources in backend development: it’s free! The Developer's Advantage with Rememberizer Streamlined Data Integration: Rememberizer takes care of the complex process of integrating data sources into a vector database, allowing developers to focus more on creative aspects of app development. Enhanced AI Capabilities: By leveraging Rememberizer, apps gain access to rich, personalized data, leading to more intuitive and context-aware AI interactions. Personalization and Continuous Adaptation: Apps powered by Rememberizer can offer unparalleled personalization, learning, and adapting based on the user's data, thereby improving over time. Part 3: Pricing and Accessibility for All Rememberizer is committed to democratizing ",
|
|
106
|
+
image:
|
|
107
|
+
'https://cdn.prod.website-files.com/656fc35f7b92e991c863ce0a/65b7523200497f3ac6391238_Rememberizer%20banner.png',
|
|
108
|
+
favicon: 'https://cdn.prod.website-files.com/656fc35f7b92e991c863cdc4/657acdfb9a0ba55d8f622765_Favicon.png',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
id: 'https://twinmind.com/',
|
|
112
|
+
title: 'TwinMind',
|
|
113
|
+
url: 'https://twinmind.com/',
|
|
114
|
+
publishedDate: '2025-05-23T09:12:49.000Z',
|
|
115
|
+
author: '',
|
|
116
|
+
score: 0.38130462169647217,
|
|
117
|
+
text: '\n Never Forget Anything with Your Never Forget Anything with Your Never Forget Anything with Your Second Brain Memory Vault Life Copilot AI Notetaker Second Brain Second Brain Memory Vault Life Copilot AI Notetaker Second Brain Second Brain Memory Vault Life Copilot AI Notetaker Second Brain Get perfect notes, to-dos, and proactive answers during meetings, lectures, interviews, and conversations. Get perfect notes, to-dos, and proactive answers during meetings, lectures, interviews, and conversations. Watch Demo Watch Demo Watch Demo Featured in Featured in Trusted by users at Trusted by users at Capture any moment, even inside your pocket Capture any moment, even inside your pocket Transcribe everything. Forget nothing. Ask anything. Transcribe everything. Forget nothing. Ask anything. Transcribe everything. Forget nothing. Ask anything. Seamlessly switch from mobile to desktop Seamlessly switch from mobile to desktop With TwinMind for Chrome, transcribe video calls or chat with tabs, PDFs, Youtube videos, and automate your work. With the TwinMind Chrome sidebar, transcribe video calls or chat with websites, PDFs, Youtube videos, and all your memories. Works with all the products you love Works with all the products you love Ask anything with context from all your favorite websites and insert answers directly into them on Chrome. Ask anything with context from all your favorite websites and insert answers directly into them on Chrome. Transcribe video calls or capture context from all your favorite websites, and insert answers into them on Chrome browser. Get Proactive Answers Get Proactive Answers Get personalized suggestions, prepare for meetings or exams based on all your notes synced with your calendar. Get personalized suggestions, prepare for meetings or exams based on all your notes synced with your calendar. Unlock Perfect Memory Unlock Perfect Memory Your brain forgets 90% of memories in 7 days but TwinMind doesn’t. Ask TwinMind anything with Deep Memory Search. Your brain forgets 90% of memories in 7 days but TwinMind doesn’t. Ask TwinMind anything with Deep Memory Search. Summarize all my meetings Ask TwinMind Summarize all my meetings Ask TwinMind Summarize all my meetings Ask TwinMind Insert Insert Insert Automate Your Work Automate Your Work Generate follow-up emails, reports, assignments based on memories. Insert anywhere on your browser in one click. Generate follow-up emails, reports, assignments based on memories. Insert anywhere on your browser in one click. 100% privacy with offline mode 100% privacy with offline mode 100% privacy with offline mode Transcribes without recording TwinMind processes your audio on-the-fly in real-time and saves only the transcripts on-device, ensuring that your audio is never stored anywhere. Transcribes without recording TwinMind processes your audio on-the-fly in real-time and saves only the transcripts on-device, ensuring that your audio is never stored anywhere. Transcribes without recording ',
|
|
118
|
+
image: 'https://framerusercontent.com/assets/9u5tx2lerz0ndBVcB14sg4tNoKs.png',
|
|
119
|
+
favicon: 'https://framerusercontent.com/images/zDX0zsHZ6Z2PvwK2vmkOsISWBiY.svg',
|
|
120
|
+
},
|
|
121
|
+
],
|
|
122
|
+
costDollars: {
|
|
123
|
+
total: 0.015,
|
|
124
|
+
search: {
|
|
125
|
+
neural: 0.005,
|
|
126
|
+
},
|
|
127
|
+
contents: {
|
|
128
|
+
text: 0.01,
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
};
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
requestId: '0dc12e344fa649884456960ca1a54954',
|
|
7
|
+
autopromptString: 'PKM software artificial intelligence integration open source projects',
|
|
8
|
+
resolvedSearchType: 'neural',
|
|
9
|
+
results: [
|
|
10
|
+
{
|
|
11
|
+
id: 'https://github.com/subspace-ai/subspace',
|
|
12
|
+
title: 'GitHub - subspace-ai/subspace: PKM + REPL + AI',
|
|
13
|
+
url: 'https://github.com/subspace-ai/subspace',
|
|
14
|
+
publishedDate: '2023-03-23T16:02:40.000Z',
|
|
15
|
+
author: 'subspace-ai',
|
|
16
|
+
score: 0.7530648708343506,
|
|
17
|
+
text: "subspace.ai - PKM + REPL + AI \n The long-term goal of subspace is to be/have three things: \n \n PKM (Personal Knowledge Management system) like Roam Research or Tana. \n REPL-like (Read Evaluate Print Loop) capabilities. Should be able to execute individual code cells in the JVM backend and rendered in the frontend with Electric. Similar behaviour can be achieved with other languages via Jupyter kernels (or GraalVM Polyglot) and JavaScript. \n AI (Artificial Intelligence) integrations. Should be integrated with LLMs - e.g. write GPT queries in subspace, and incorporate the response to your personal knowledge base as a new node. Intelligent search and LLM-based summaries and reasoning over the existing knowledge base (Retrieval Oriented Generation, RAG). \n \n The overall design should be open-ended, allowing for easy forking and providing custom node types / rendering functions. The goal is not to be just a storage of information, but a control panel for commonly used workflows. So that you can create convenient shortcuts and informative output views with Clojure + Electric. Since you persist which actions you took over time, you can search for past outputs and interleave these with your personal notes. Later query your knowledge base with RAG in natural language, or query it with GPT by exposing subspace knowledge base as an API to GPT. \n For example, additional customizations and use cases could be: \n \n Intelligent work log for day to day coding. \n Wrappers for any babashka / shell scripts you already have. \n Wrapper functions to MLOps platform (or some other task manager) to trigger jobs, query stats and logs from past train runs. Build dashboards as subspace nodes from the result of such queries with Electric+HTML. \n Wrappers for common Kubernetes / AWS / GCP commands. Build ad hoc UIs on top of your cluster that make sense to you. \n Wrappers that pull the contents of arxiv documents as subspace nodes. \n Spaced repetition learning of content (of nodes which you mark to be remembered). \n \n UI/UX \n There will be two types of UI elements: pages and nodes. Pages contain nodes, and nodes can nest other nodes. Both pages and nodes are referencable (meaning you can link to them and the page/node will get a backreference). \n Each node contains some media, and possibly subnodes. \n Media can be: \n \n Text, numeric, Markdown \n Image, video, audio \n Flexible spreadsheet tesserrae \n code block, which can be executed in a jupyter kernel (runs once) \n code block containing an e/fn (runs continuously when on the page) \n \n Executing an e/fn is the most powerful and flexible thing to do. It can pull data in from other nodes on the page or in the graph, and displays its own little UI within its boundaries. Crucially, when upstream info changes, your e/fn's output gets recomputed. Running tesserrae is also very powerful; you can think of subspace as a non-grid tesserae that can also embed tesserae. \n Subnodes can be organised either by indenting or tiling. \n \n Indente",
|
|
18
|
+
image:
|
|
19
|
+
'https://opengraph.githubassets.com/734547dbba15cefe41b9ad9cd97ba2ac489aeebd18945d54dbf7b1931b5ed980/subspace-ai/subspace',
|
|
20
|
+
favicon: 'https://github.com/fluidicon.png',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: 'https://github.com/khoj-ai/khoj',
|
|
24
|
+
title:
|
|
25
|
+
'GitHub - khoj-ai/khoj: Your AI second brain. Self-hostable. Get answers from the web or your docs. Build custom agents, schedule automations, do deep research. Turn any online or local LLM into your personal, autonomous AI (gpt, claude, gemini, llama, qwen, mistral). Get started - free.',
|
|
26
|
+
url: 'https://github.com/khoj-ai/khoj',
|
|
27
|
+
publishedDate: '2021-08-16T01:48:44.000Z',
|
|
28
|
+
author: 'khoj-ai',
|
|
29
|
+
score: 0.33666935563087463,
|
|
30
|
+
text: "\n \n \n \n \n Your AI second brain \n \n \n \n 🎁 New \n \n Start any message with /research to try out the experimental research mode with Khoj. \n Anyone can now create custom agents with tunable personality, tools and knowledge bases. \n Read about Khoj's excellent performance on modern retrieval and reasoning benchmarks. \n \n \n Overview \n Khoj is a personal AI app to extend your capabilities. It smoothly scales up from an on-device personal AI to a cloud-scale enterprise AI. \n \n Chat with any local or online LLM (e.g llama3, qwen, gemma, mistral, gpt, claude, gemini, deepseek). \n Get answers from the internet and your docs (including image, pdf, markdown, org-mode, word, notion files). \n Access it from your Browser, Obsidian, Emacs, Desktop, Phone or Whatsapp. \n Create agents with custom knowledge, persona, chat model and tools to take on any role. \n Automate away repetitive research. Get personal newsletters and smart notifications delivered to your inbox. \n Find relevant docs quickly and easily using our advanced semantic search. \n Generate images, talk out loud, play your messages. \n Khoj is open-source, self-hostable. Always. \n Run it privately on your computer or try it on our cloud app. \n \n \n See it in action \n \n Go to https://app.khoj.dev to see Khoj live. \n Full feature list \n You can see the full feature list here. \n Self-Host \n To get started with self-hosting Khoj, read the docs. \n Enterprise \n Khoj is available as a cloud service, on-premises, or as a hybrid solution. To learn more about Khoj Enterprise, visit our website. \n Frequently Asked Questions (FAQ) \n Q: Can I use Khoj without self-hosting? \n Yes! You can use Khoj right away at https://app.khoj.dev — no setup required. \n Q: What kinds of documents can Khoj read? \n Khoj supports a wide variety: PDFs, Markdown, Notion, Word docs, org-mode files, and more. \n Q: How can I make my own agent? \n Check out this blog post for a step-by-step guide to custom agents.\nFor more questions, head over to our Discord! \n Contributors \n Cheers to our awesome contributors! 🎉 \n \n \n Made with contrib.rocks. \n Interested in Contributing? \n Khoj is open source. It is sustained by the community and we’d love for you to join it! Whether you’re a coder, designer, writer, or enthusiast, there’s a place for you. \n Why Contribute? \n \n Make an Impact: Help build, test and improve a tool used by thousands to boost productivity. \n Learn & Grow: Work on cutting-edge AI, LLMs, and semantic search technologies. \n \n You can help us build new features, improve the project documentation, report issues and fix bugs. If you're a developer, please see our Contributing Guidelines and check out good first issues to work on. \n",
|
|
31
|
+
image: 'https://repository-images.githubusercontent.com/396569538/533a8bf7-385f-427b-a03f-76795fd938ed',
|
|
32
|
+
favicon: 'https://github.com/fluidicon.png',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: 'https://github.com/paulbricman/conceptarium',
|
|
36
|
+
title: 'GitHub - paulbricman/conceptarium: A fluid medium for storing, relating, and surfacing thoughts.',
|
|
37
|
+
url: 'https://github.com/paulbricman/conceptarium',
|
|
38
|
+
publishedDate: '2021-08-12T04:45:29.000Z',
|
|
39
|
+
author: 'paulbricman',
|
|
40
|
+
score: 0.3376504182815552,
|
|
41
|
+
text: "\n 💡 Conceptarium \n The conceptarium is an experimental personal knowledge base designed to weave AI capabilities into knowledge work. Its main features include: \n \n powerful multi-modal search across ideas \n sharing microverses of knowledge with peers \n ranking items by Anki-like activation, so as to promote serendipity \n \n Installation \n Docker \n After installing docker and docker-compose, run: \n # install with:\ncurl -fsS https://raw.githubusercontent.com/paulbricman/conceptarium/main/docker-compose.yml -o docker-compose.yml\nmkdir knowledge\ndocker-compose up -d\n# stop with:\ndocker-compose stop\n# update with:\ndocker-compose stop\ndocker-compose rm -f\ndocker-compose pull\ndocker-compose up -d\n \n Note that you'll have to wait a bit initially for the models to be downloaded in the docker container. Use docker logs <backend container ID> or watch the process's memory for feedback on that. Or just try using it until it via the API or UI until it works (see usage). \n Source \n After pulling this repo run: \n python3 -m pip install -r frontend/requirements.txt\npython3 -m pip install -r backend/requirements.txt\nstreamlit run frontend/main.py\n# in a separate session:\ncd backend\npython3 -m uvicorn main:app --reload\n# update by pulling from repo again\n \n Missing dependencies? Please have a look at frontend/Dockerfile and backend/Dockerfile. ARM architecture (e.g. Raspberry Pi)? Remove the torch entries from requirements.txt, and install a custom-built version. \n Usage \n The web app should then be available at localhost:8501, while the API at localhost:8000 (with docs at localhost:8000/docs). The backend component takes a few minutes to get the ML models at first. \n To access your local instance, enter the conceptarium URL (i.e. localhost:8000 if you ran from source, backend.docker:8000 if you used docker), and your desired token. Remember your token, as you'll have to use it to authenticate in future sessions. \n",
|
|
42
|
+
image:
|
|
43
|
+
'https://opengraph.githubassets.com/2b454d3e4b9d69c65d465d8ec6609b3b61f34b83f1f8eece471806be32e710bc/paulbricman/conceptarium',
|
|
44
|
+
favicon: 'https://github.com/fluidicon.png',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
id: 'https://github.com/mfakih/Pomegranate-PKM',
|
|
48
|
+
title:
|
|
49
|
+
'GitHub - mfakih/Pomegranate-PKM: Pomegranate PKM is a new open source web-based cross-platform work and knowledge management application for productive and prolific people. PKM features text-based commands for adding, updating and searching records, thus providing powerful tools to manage information. It also allows the user to build up the navigation menu using saved searches.',
|
|
50
|
+
url: 'https://github.com/mfakih/Pomegranate-PKM',
|
|
51
|
+
publishedDate: '2014-03-17T06:28:12.000Z',
|
|
52
|
+
author: 'mfakih',
|
|
53
|
+
score: 0.7761150002479553,
|
|
54
|
+
text: 'Pomegranate-PKM \n Pomegranate PKM is a new open source web-based cross-platform work and knowledge management application for productive and prolific people. \n PKM features text-based commands for adding, updating and searching records, thus providing powerful tools to manage information. It also allows the user to build up the navigation menu using saved searches. \n \n Pomegranate PKM manages: \n \n Goals, tasks, and plans \n Journal and indicators \n Writings and notes \n Resources (books, articles, news, presentations, audiobooks, documentaries, movies etc),and book excerpts, mainly book chapters. \n Documents e.g. Word documents, Excels \n People \n \n In technical terms, Pomegranate PKM is a combination of: \n \n Document management system \n Content management system \n Research index cards and reference management \n Bug tracking systems, applied for the software development and self development \n Lightweight project management \n Powerful task management \n Time tracking \n Blog (e.g. WordPress) client \n \n My in-progress book at LeanPub outlines the motivations, design principles and the features of Pomegranate PKM. \n',
|
|
55
|
+
image:
|
|
56
|
+
'https://opengraph.githubassets.com/d4afbe16f55b89cbdd3344472df483147de49f6a8a136bd1da7af7e568c16908/mfakih/Pomegranate-PKM',
|
|
57
|
+
favicon: 'https://github.com/fluidicon.png',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
id: 'https://github.com/mfakih294/Nibras-PKM',
|
|
61
|
+
title:
|
|
62
|
+
'GitHub - mfakih294/Nibras-PKM: A web-based self-hosted open-source system for the long-term management of personal information. It targets the needs of advanced users with serious information management needs. It is accompanied with an Android application that syncs the bookmarked records over local Wifi network.',
|
|
63
|
+
url: 'https://github.com/mfakih294/Nibras-PKM',
|
|
64
|
+
publishedDate: '2019-09-14T02:05:28.000Z',
|
|
65
|
+
author: 'mfakih294',
|
|
66
|
+
score: 0.7633954882621765,
|
|
67
|
+
text: "Nibras PKM \n Nibras PKM is a web-based self-hosted open source system for\nthe long-term management of personal information.\nIt is a combination of a web-based application\nintended for desktop use and where all the records are entered,\nand an Android mobile reader application. \n \n Local \n The user has full control over his/her data, without the need for a (fast) internet connection, and without all the distractions and information overload that the internet can cause. \n Open source \n The user has control over the system itself too, especially when using it on the long term to manage the important personal information and files. \n Comprehensize \n It manages resources (articles, books, documents), notes, writings, tasks, goals, journal, planner, payments, indicators, and (study) courses and departments. \n Powerful \n It was designed with large amounts of information in mind. In current usage, it manages dozens of thousands of records. With its commands and saved searches, it makes easy to navigate through all the information. \n Main Features \n \n Flexible text-based commands to add, update and search records, which provides powerful ways to manage information. \n Saved searches to save searches for later use. \n Ability to display records on calendars and Kanban boards. \n Full-text search of all record fields. \n Simple file system integration so to greatly reduce the need to organize files manually. \n \n Documentation \n User's guide is available online at https://mfakih294.github.io/Nibras-PKM/. \n Releases \n Nibras PKM is hosted on GitHub https://github.com/mfakih294/Nibras-PKM. \n Quick start guide \n Running Nibras requires three simple steps: \n \n Download the bundle file corresponding to your platform, e.g. nibras-bundle-windows.zip from the releases page on Github. \n Extract the zipped file to a location of your choice on your local disk. \n Launch Nibras by double clicking on ./scripts/start file. \n \n Once Nibras has finished launching, a message like the one below will appear. \n * Nibras has launched. You can access it from: * \n * https://localhost:1441/ * \n Go to https://localhost:1441/ using Firefox or Chrome. On the login page, enter nibras for username and nibras for the password. \n Notes: \n \n As it has a self-signed certificate, you need to accept and bypass the security warning that shows up at the beginning. \n On Linux, you need to make the files inside ./scripts and ./tomcat/bin folders executable (chmod +x *). \n To stop Nibras, you can close this window, or press ctrl+c in it, or run ./scripts/stop script. \n \n Technical details \n \n Nibras is developed in Grails framework 3.3.10, a dynamic framework on top of the Java platform. \n Grails applications run on any platform that can run Java 8 and later, so practically all platforms, including Windows, Linux, Mac. \n For production use, Nibras uses MySQL 5+ for its database, and the file system to store the files of the records. To testing and demonstration, it can run with h2 database, with zero ex",
|
|
68
|
+
image:
|
|
69
|
+
'https://opengraph.githubassets.com/5e45c614cd8441100a4acd0e48d8b9c15984b51e816d4d4683436dd3be25c813/mfakih294/Nibras-PKM',
|
|
70
|
+
favicon: 'https://github.com/fluidicon.png',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
id: 'https://github.com/reorproject/reor',
|
|
74
|
+
title: 'GitHub - reorproject/reor: Private & local AI personal knowledge management app for high entropy people.',
|
|
75
|
+
url: 'https://github.com/reorproject/reor',
|
|
76
|
+
publishedDate: '2023-11-27T01:30:44.000Z',
|
|
77
|
+
author: 'reorproject',
|
|
78
|
+
text: 'Reor Project \n \nPrivate & local AI personal knowledge management app. \n \n \n \n \n \n \n 📢 Announcement \n We are now on Discord! Our team is shipping very quickly right now so sharing ❤️feedback❤️ with us will really help shape the product 🚀 \n \n About \n Reor is an AI-powered desktop note-taking app: it automatically links related notes, answers questions on your notes and provides semantic search. Everything is stored locally and you can edit your notes with an Obsidian-like markdown editor. \n The hypothesis of the project is that AI tools for thought should run models locally by default. Reor stands on the shoulders of the giants Ollama, Transformers.js & LanceDB to enable both LLMs and embedding models to run locally: \n \n Every note you write is chunked and embedded into an internal vector database. \n Related notes are connected automatically via vector similarity. \n LLM-powered Q&A does RAG on your corpus of notes. \n Everything can be searched semantically. \n \n One way to think about Reor is as a RAG app with two generators: the LLM and the human. In Q&A mode, the LLM is fed retrieved context from the corpus to help answer a query. Similarly, in editor mode, the human can toggle the sidebar to reveal related notes "retrieved" from the corpus. This is quite a powerful way of "augmenting" your thoughts by cross-referencing ideas in a current note against related ideas from your corpus. \n Getting Started \n \n Download from reorproject.org or releases. Mac, Linux & Windows are all supported. \n Install like a normal App. \n \n Running local models \n Reor interacts directly with Ollama which means you can download and run models locally right from inside Reor. Head to Settings->Add New Local LLM then enter the name of the model you want Reor to download. You can find available models here. \n You can also connect to an OpenAI-compatible API like Oobabooga, Ollama or OpenAI itself! \n Importing notes from other apps \n Reor works within a single directory in the filesystem. You choose the directory on first boot.\nTo import notes/files from another app, you\'ll need to populate that directory manually with markdown files. Note that if you have frontmatter in your markdown files it may not parse correctly. Integrations with other apps are hopefully coming soon! \n Building from source \n Make sure you have nodejs installed. \n Clone repo \n git clone https://github.com/reorproject/reor.git\n \n Install dependencies \n Run for dev \n Build \n Interested in contributing? \n We are always on the lookout for contributors keen on building the future of knowledge management. Have a feature idea? Want to squash a bug? Want to improve some styling? We\'d love to hear it. Check out our issues page and the contributing guide to get started. \n License \n AGPL-3.0 license. See LICENSE for details. \n Reor means "to think" in Latin. \n',
|
|
79
|
+
image:
|
|
80
|
+
'https://opengraph.githubassets.com/101249afc41e6b8729eca3c619d4c08c5c67288ab4126de16c59c1ab97c5492c/reorproject/reor',
|
|
81
|
+
favicon: 'https://github.com/fluidicon.png',
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
id: 'https://github.com/memex-life/memex',
|
|
85
|
+
title:
|
|
86
|
+
'GitHub - memex-life/memex: Your second brain for the web browsing. An AI powered Chrome extension that constructs personal knowledge base for you.',
|
|
87
|
+
url: 'https://github.com/memex-life/memex',
|
|
88
|
+
publishedDate: '2023-03-16T23:48:35.000Z',
|
|
89
|
+
author: 'memex-life',
|
|
90
|
+
score: 0.34730345010757446,
|
|
91
|
+
text: 'Memex \n Your second brain for web browsing. Picture possessing the ultimate ability of total recall. \n \n Overview \n This project aims to create a browser extension that acts like a personal memex machine.\nIt will keep track of everything you browse online to build your own knowledge base.\nThen it will use AI to retrieve that knowledge whenever you need it. \n What is a Memex? \n \n Consider a future device for individual use, which is a sort of mechanized private file and library. It needs a name, and, to coin one at random, “memex” will do. A memex is a device in which an individual stores all his books, records, and communications, and which is mechanized so that it may be consulted with exceeding speed and flexibility. It is an enlarged intimate supplement to his memory. \n--- “As We May Think” Vannevar Bush (1945) \n \n Features \n \n Seamlessly captures content and metadata from your web browsing. \n Constructs your own personalized knowledge base on your local device \n Retrive knowledge with power of AI. \n \n How it works \n When you browse the web, this extension will inject a script to capture the text content on the pages you visit. It will send that content to the backend service-worker for processing\nThe service-worker will break the content into pieces and store it in a database.\nThe popup page acts as a chat interface to answer your questions using the information in the database. \n Getting Started \n Build & import Extension \n Build extension files into dist/ folder \n npm install\nnpm run build # or npm run watch \n Load extension \n Start the Kownledge Base server \n Currently the LangchainJs has not yet support browser runtime. The extension still needs a backend server as Knowledge Base implementaion. \n set environments: \n export TOKENIZERS_PARALLELISM=false\nexport OPENAI_API_KEY=<your-api-key>\ncd server\nFLASK_APP=server flask run\n \n Start using \n Once you have completed the above steps, you can start using the Memex browser extension to enhance your web browsing experience. \n \n As you browse the web, the extension will automatically capture and store the text content from the web pages you visit, along with their metadata, in your personalized knowledge base. \n When you need to retrieve information or recall something from your browsing history, simply open the chat interface by clicking on the Memex extension icon. Type your question or query into the chat interface and press Enter or click the Send button. The Memex extension will use AI to search your knowledge base and provide you with the most relevant information based on your query. \n \n',
|
|
92
|
+
image:
|
|
93
|
+
'https://opengraph.githubassets.com/aa7966b46e8bb10410af6cdb5af62c9095d99c4b9d17683b246641b8a1291746/memex-life/memex',
|
|
94
|
+
favicon: 'https://github.com/fluidicon.png',
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
id: 'https://github.com/samkeen/knowling',
|
|
98
|
+
title:
|
|
99
|
+
'GitHub - samkeen/knowling: A desktop notes application leveraging AI designed for Personal Knowledge Management (PKM)',
|
|
100
|
+
url: 'https://github.com/samkeen/knowling',
|
|
101
|
+
publishedDate: '2024-03-08T03:28:38.000Z',
|
|
102
|
+
author: 'samkeen',
|
|
103
|
+
score: 0.8010122776031494,
|
|
104
|
+
text: 'Knowling \n A desktop notes application designed for Personal Knowledge Management (PKM) \n \n Knowling aims to provide users with an intuitive platform for gathering and organizing knowledge from various research\nsources. By leveraging AI, Knowling assists users in categorizing their notes and highlighting connections between them,\nthereby enhancing the overall management of their personal knowledge store. \n Features \n \n Fast Performance: Knowling is developed using Rust and JavaScript, ensuring a responsive and efficient user\nexperience. \n WSIWIG Markdown Editor: A What-You-See-Is-What-You-Get (WSIWIG) Markdown editor for seamless and straightforward\nnote-taking. \n Simple, Uncluttered UI: The user interface is designed to be minimalistic and distraction-free, allowing users to\nfocus on their content. \n Export/Import Notes: Easily export and import notes to manage your knowledge base across different devices and\nformats. \n AI Integration: AI is integrated to empower users by automatically categorizing notes and identifying meaningful\nconnections between them. \n Open Source: Knowling is open source and licensed under the Apache 2.0 license, encouraging community\ncontributions\nand\ntransparency. \n \n Current Development Status \n Knowling is currently in the early stages of development, with a minimal feature set. We are actively working on\nexpanding the application\'s capabilities and enhancing its functionality. We welcome you to check out the open feature\nrequests and encourage you to open new ones if you have any suggestions or ideas. \n \n Open Issues \n Project view \n \n We hope you find Knowling valuable for managing your personal knowledge. If you have any feedback or encounter any\nissues, please don\'t hesitate to reach out or contribute to the project. \n Why the name Knowling: Knowling is a play on the words "Knowledge" and "Knolling", a process of arranging objects to\ncreate clean and organized\nspaces. This reflects our goal of helping users keep their knowledge organized and easily accessible. \n \n \n Developing Knowling \n Knowling is built atop Tauri 1.x \n Project setup \n npm install\nnpm run tauri dev\n \n Development \n Build \n https://tauri.app/v1/api/cli/ \n Development follows the common practices of developing a Tauri application. \n Debugging in RustRover \n https://tauri.app/v1/guides/debugging/rustrover/ \n',
|
|
105
|
+
image:
|
|
106
|
+
'https://opengraph.githubassets.com/68a818dd653e6084907d244111f983fe2b2367dcfb8eed93ebece179892ae74c/samkeen/knowling',
|
|
107
|
+
favicon: 'https://github.com/fluidicon.png',
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
id: 'https://github.com/whl1207/Knowledge',
|
|
111
|
+
title: 'GitHub - whl1207/Knowledge: Distributed Multi-View Intelligent Knowledge Management Platform',
|
|
112
|
+
url: 'https://github.com/whl1207/Knowledge',
|
|
113
|
+
publishedDate: '2023-08-26T03:26:41.000Z',
|
|
114
|
+
author: 'whl1207',
|
|
115
|
+
score: 0.35489749908447266,
|
|
116
|
+
text: 'AI-KM Intelligent Knowledge Management Platform \n Overview \n AI-KM (Artificial Intelligence Knowledge Management) is a next-generation knowledge management platform that integrates cutting-edge AI technologies. Leveraging large language models and knowledge graph technologies, it helps individuals and organizations achieve efficient knowledge organization, in-depth analysis, and intelligent application. \n \n Core Value \n \n Intelligent Knowledge Processing: Automatically parses, queries, and associates knowledge content \n Multi-dimensional Visualization: Provides 6 view modes to present knowledge relationships \n Open Model Integration: Supports seamless switching between mainstream open-source large language models via Ollama \n Enterprise-grade Security: All data processing is performed locally \n \n Key Features \n 1. Core Technical Architecture \n \n \n Multi-model Integration Engine \n \n Supports mainstream large language models deployed via the Ollama framework \n Base models: Deepseek-R1, qwen3, LLaMA3.3, QWQ \n Embedding models: nomic-embed-text, bge-m3, mxbai-embed-large \n Multimodal models: Gemma3, Mistral-Small 3.1 \n \n \n \n Enhanced Retrieval System \n \n RAG (Retrieval-Augmented Generation) architecture \n Supports knowledge base preprocessing (default segmentation by 2 line breaks) \n Supports similarity calculations for various embedding models \n Supports hidden information inference in knowledge bases (default: deducing potential user queries) and knowledge fragment keyword editing \n Supports custom retrieval thresholds (can set knowledge base retrieval thresholds based on cosine similarity, quantity, characters, etc.) \n Explainable analysis and debugging of retrieval results, displaying similarity information for each knowledge fragment \n Supports cosine similarity calculation and MDS dimensionality reduction-based similarity calculation \n \n \n \n Visual Workflow Engine \n \n Drag-and-drop AI processing pipeline construction \n Includes 3+ pre-built node templates \n Supports workflow import/export \n \n \n \n Markdown Document Editing \n \n Deep Markdown parsing and editing \n Document structure analysis (heading hierarchy recognition) \n Code block processing \n \n \n \n Multi-view Knowledge Display Module \n \n \n \n Multi-platform Packaging & Deployment \n \n Electron-based packaging for Windows, Linux, macOS, and other platform clients \n \n \n \n Installation & Deployment \n System Requirements \n \n OS: Windows 10+/macOS 12+/Linux (Ubuntu 20.04+) \n Hardware:\n \n Minimum: 8GB RAM, 4-core CPU, 10GB storage \n Recommended: 16GB+ RAM, dedicated GPU, 50GB+ storage \n \n \n \n Development Environment Setup \n # Install dependencies \nnpm install\n # Run in development mode \nnpm run dev\n # Build Windows client \nnpm run build\n # Generate installation package \n AI-KM 智能知识管理平台 \n 概述 \n AI-KM(Artificial Intelligence Knowledge Management)是一个集成了前沿AI技术的下一代知识管理平台,通过大语言模型和知识图谱技术,帮助个人和组织实现知识的高效组织、深度分析和智能应用。 \n 核心价值 \n \n 智能知识处理 :自动解析、查询和关联知识内容 \n 多维度可视化 :提供6种视图模式呈现知识关系 \n 开放模型集成 :可以通过ollama支持主流开源',
|
|
117
|
+
image:
|
|
118
|
+
'https://opengraph.githubassets.com/fc9354a52086145d1cf60e2b9c3d386a3be8fa44e2e00cbb13cd2b1af09973b7/whl1207/Knowledge',
|
|
119
|
+
favicon: 'https://github.com/fluidicon.png',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
id: 'https://github.com/putaodoudou/kmagent',
|
|
123
|
+
title:
|
|
124
|
+
'GitHub - putaodoudou/kmagent: KMAgent (Knowledge Management Agent),基于语义元的智能知识管理GTD工具,个人智能助理。',
|
|
125
|
+
url: 'https://github.com/putaodoudou/kmagent',
|
|
126
|
+
publishedDate: '2018-06-05T09:11:21.000Z',
|
|
127
|
+
author: 'putaodoudou',
|
|
128
|
+
score: 0.35521113872528076,
|
|
129
|
+
text: 'KMAgent-个人智能助理 \n \n 个人 知识智能助理(KMAgent, Knowledge Management Agent)--专注智能知识管理GTD 多元融合创新 发扬传承智慧! \n KMAgent 以 个人知识管理 GTD 应用为主的工具效率软件。基于交互区+文档的协同学习工作空间,专注于语义计算、知识工程,致力于通过自然语言处理、机器学习、知识图谱等人工智能技术,简化知识增强认知、融合支持优秀方法论模板,辅助高效学习工作,扩展个人能力,类似钢铁侠的【贾维斯】。以开源项目的形式结合产学研,支持社群协同积累创新,节省时间精力,从知识中挖掘智慧。您的私人知识引擎、秘书、智友、智囊团。 \n 请查看网站 http://kmagent.com 获取相关安装指南及使用说明。 \n 为什么Why? \n \n 特别重要的两个能力:1、制造工具;2、寻求合作。 \n \n 智能时代,信息爆炸,知识匮乏,辅助做减法!协同合作,降低信息熵,提高智商,极简智能知识管理! \n \n \n 知识财富 ,积累知识胜过积累金钱,知识是人类进步的阶梯。是个人及企业的核心竞争力! \n 化繁为简 ,发现模式化繁为简,挖掘本质及关联,知其然知其所以然,促进融合创新。 \n 人类智能 ,挖掘隐性知识、理解人类多元智能,发掘利用大脑潜力,挑战认知极限。 \n 知识传播 ,静态文本书籍的缺陷、探索新的知识存储展示分享方式,建立高效沟通协同与积累分享的基础。 \n 实现应对人工智能 ,知识与智能相辅相成,知识管理作为核心环节,承上启下形成闭环,社群协同积累创新。 \n 重新造轮子 ,为自己开发一个工具,自然交互降低工具学习使用成本,支持学习工作生活。 \n 作为事业 ,值得奋斗十年的事业。 \n \n Do something diferent, make a change! \n \n 【产品简介】产品原型正火速开发中! \n \n 是以文档+交互区为中心的功能集成,资源事务行为的协同智能管理GTD。首先用于协同建立核心概念理论体系,知识管理业务建模,积累分享资源知识技术,应用于KM、IT、AI、数学相关领域知识的学习整理。 \n \n 功能及特性: \n \n 多媒体无限画板、实时协同文本导图编辑器,富文本和 Markdown 扩展编辑。 \n 支持本体建模、阅读笔记、灵感便签、思维导图、各类模板。 \n 划词翻译知识解释、搜索、百科字典。 \n 知识可视化,多层次粒度维度去冗余,浓缩摘要、生成博客。 \n 知识导入导出、Web 知识抽取集成。 \n 资源管理、公共+个人+领域知识图谱。 \n 收藏订阅评论分享、话题课程小组班级圈子。 \n 项目事务的PDCA、GTD,日历日程安排提醒。 \n 即时通信、实时协同、项目合作、积分系统。 \n 个性化自学习聊天机器人、虚拟形象、语音识别生成、事务代理、主动推荐提醒引导辅助。 \n 自然语言交互、语义化、响应式生成式、文本化、可视化、极致沉浸体验。 \n 高级功能:自定义配置、插件、命令行、领域语言。 \n \n 辅助您进行极简智能知识管理:知识可视化创作展示,简化结构化已有知识资源,建立知识体系。深入本质理解知识、整体高效合作学习。个人事务的管理、原则方法论习惯的养成。语义计算,辅助推理、仿真、预测、决策。聊天解闷启发。 \n 很高兴您 下载试用 并 回馈使用情况 。 \n \n 随着开发进展,会及时列出最新特性、新功能及改进情况。查看 v0.1 -> v1.0 升级信息 ,获取更多产品升级信息 。 \n 【参与贡献】 \n \n 我们是一个协同学习型组织,以开源项目为中心,结合产学研,理论技术知识能力实践闭环正反馈迭代积累的过程,人与人与机器机器的合作学习!项目处于初期规划阶段, 欢迎各位有志之士的加入! \n \n 基于共同信念、统一基础、协同机制,自由分工合作的工作组,可选择一个或多个模块参与合作学习及开发,根据 规则 记录贡献积分,按贡献分配奖励,未来若盈利可分红,涌现集体智慧!欢迎每个人贡献力量、收获积分朋友知识工具技术。 \n 【值得加入】知识改变命运,创新改变世界!改变自己从心而为,不忘初心方得始终! \n 多种贡献方式 \n \n 可参与理论研究、业务建模、技术开发、项目管理、运营、投资、试用分享推广。 \n 提交或投票新功能特性需求 ProductPains \n 工具使用 情况反馈 \n \n 欢迎提交 pull requests 及 issue 。 \n 若贡献源码请阅读遵循 编程风格 及 贡献说明文档 。 \n 致谢 \n 【源计划】KMAgent 当前是一个公开社群和免费软件,感谢所有促进其发展的 贡献者 和 [深度用户]( https://github.com/kmagent/ kmagent/fans.md)。【捐赠】如果您认同我们请支持我们快速持续发展。 \n 主要模块 \n 【核心重点】智能体语义元核心抽象、认知建模、知识图谱、智能知识管理GTD解决方案、产品设计开发,社群运营协同积累创新。(智能基础->智能核->智能块->智能体)群体智能->通用智能,模拟->超越。模块:km-thory km-engine km-onto km-agents km-sys km-ui、km-graph。 \n 【领域及技术】智能知识管理(领域建模)、机器学习(tensorflow)、自然语言处理(NLTK、hanlp)、知识图谱(图数据库neo4j分布式存储ceph)、领域语言(DSL)、语义网(OWL)、web知识发现(爬虫)、检索(lucene)推理推荐、多agent集群智能(架构)、人机交互UI(vue.js、bootstrap、数据可视化)、Web网站(keystone)、桌面(webkit、electron)、移动(weex)、大数据(spark)、虚拟化云计算(Mesos、docker、Kubernetes)、安全网络通信加密权限认证(openSSL)、软件工程(项目开发管理)、区块链、VR、代码生成、认知心理、复杂系统、知识共享协议产权、社群体验经济。 \n 【工作分解】 关键在于 :统一认识、工具支持、有效积累可持续发展。 \n \n 业务建模(智能知识管理GTD理论体系):核心抽象模型,人性建模。 \n 产品设计(个人智能助理):产品规划、虚拟形象UI设计、竞品分析。 参考产品 :protege、vscode、quip、knowledgebuilder、metacademy、wiki、CSDN知识库、sketchboard、feedly、onenote画板、foxmail、京东阅读、qq音乐、NetLogo、flyinglogic、sourceinsight、幕布、Anki、wolframalpha。 \n 技术架构(通用智能系统):分布式计算存储多智能体协同系统:普适网格语义人类计算。全平台、微服务、核心算法、技术选型、测试部署。C++、Python、js、HTML。 \n 商业计划(SaaS 软件即服务):以软件产品为中心的增值服务、品牌运营推广营销。 \n 项目管理(小代价达到目的):敏捷迭代、过程改进、配置管理。 \n 社群建设(利益共同体联盟):文化理念集体智慧、扩大影响。 \n 知识创作(知识管理等领域知识):知识管',
|
|
130
|
+
image:
|
|
131
|
+
'https://opengraph.githubassets.com/935c4954d4a340aff679b550e201df566a4f53b442922a997e8a83570a564195/putaodoudou/kmagent',
|
|
132
|
+
favicon: 'https://github.com/fluidicon.png',
|
|
133
|
+
},
|
|
134
|
+
],
|
|
135
|
+
costDollars: {
|
|
136
|
+
total: 0.015,
|
|
137
|
+
search: {
|
|
138
|
+
neural: 0.005,
|
|
139
|
+
},
|
|
140
|
+
contents: {
|
|
141
|
+
text: 0.01,
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
};
|