ori-memory 0.2.0
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 +201 -0
- package/README.md +217 -0
- package/adapters/claude-code/hooks/capture.mjs +58 -0
- package/adapters/claude-code/hooks/orient.mjs +114 -0
- package/adapters/claude-code/hooks/validate.mjs +56 -0
- package/dist/agents/lock.d.ts +3 -0
- package/dist/agents/lock.d.ts.map +1 -0
- package/dist/agents/lock.js +11 -0
- package/dist/agents/lock.js.map +1 -0
- package/dist/agents/protocol.d.ts +6 -0
- package/dist/agents/protocol.d.ts.map +1 -0
- package/dist/agents/protocol.js +10 -0
- package/dist/agents/protocol.js.map +1 -0
- package/dist/cli/add.d.ts +12 -0
- package/dist/cli/add.d.ts.map +1 -0
- package/dist/cli/add.js +88 -0
- package/dist/cli/add.js.map +1 -0
- package/dist/cli/archive.d.ts +25 -0
- package/dist/cli/archive.d.ts.map +1 -0
- package/dist/cli/archive.js +69 -0
- package/dist/cli/archive.js.map +1 -0
- package/dist/cli/bridge.d.ts +19 -0
- package/dist/cli/bridge.d.ts.map +1 -0
- package/dist/cli/bridge.js +180 -0
- package/dist/cli/bridge.js.map +1 -0
- package/dist/cli/health.d.ts +7 -0
- package/dist/cli/health.d.ts.map +1 -0
- package/dist/cli/health.js +66 -0
- package/dist/cli/health.js.map +1 -0
- package/dist/cli/init.d.ts +9 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +44 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/promote.d.ts +35 -0
- package/dist/cli/promote.d.ts.map +1 -0
- package/dist/cli/promote.js +182 -0
- package/dist/cli/promote.js.map +1 -0
- package/dist/cli/query.d.ts +10 -0
- package/dist/cli/query.d.ts.map +1 -0
- package/dist/cli/query.js +74 -0
- package/dist/cli/query.js.map +1 -0
- package/dist/cli/serve.d.ts +27 -0
- package/dist/cli/serve.d.ts.map +1 -0
- package/dist/cli/serve.js +254 -0
- package/dist/cli/serve.js.map +1 -0
- package/dist/cli/status.d.ts +7 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +34 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/cli/validate.d.ts +9 -0
- package/dist/cli/validate.d.ts.map +1 -0
- package/dist/cli/validate.js +37 -0
- package/dist/cli/validate.js.map +1 -0
- package/dist/core/classify.d.ts +13 -0
- package/dist/core/classify.d.ts.map +1 -0
- package/dist/core/classify.js +126 -0
- package/dist/core/classify.js.map +1 -0
- package/dist/core/config.d.ts +82 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +183 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/frontmatter.d.ts +11 -0
- package/dist/core/frontmatter.d.ts.map +1 -0
- package/dist/core/frontmatter.js +61 -0
- package/dist/core/frontmatter.js.map +1 -0
- package/dist/core/graph.d.ts +9 -0
- package/dist/core/graph.d.ts.map +1 -0
- package/dist/core/graph.js +56 -0
- package/dist/core/graph.js.map +1 -0
- package/dist/core/importance.d.ts +49 -0
- package/dist/core/importance.d.ts.map +1 -0
- package/dist/core/importance.js +230 -0
- package/dist/core/importance.js.map +1 -0
- package/dist/core/intent.d.ts +36 -0
- package/dist/core/intent.d.ts.map +1 -0
- package/dist/core/intent.js +108 -0
- package/dist/core/intent.js.map +1 -0
- package/dist/core/linkdetect.d.ts +34 -0
- package/dist/core/linkdetect.d.ts.map +1 -0
- package/dist/core/linkdetect.js +181 -0
- package/dist/core/linkdetect.js.map +1 -0
- package/dist/core/llm.d.ts +41 -0
- package/dist/core/llm.d.ts.map +1 -0
- package/dist/core/llm.js +36 -0
- package/dist/core/llm.js.map +1 -0
- package/dist/core/promote.d.ts +40 -0
- package/dist/core/promote.d.ts.map +1 -0
- package/dist/core/promote.js +246 -0
- package/dist/core/promote.js.map +1 -0
- package/dist/core/ranking.d.ts +33 -0
- package/dist/core/ranking.d.ts.map +1 -0
- package/dist/core/ranking.js +45 -0
- package/dist/core/ranking.js.map +1 -0
- package/dist/core/schema.d.ts +16 -0
- package/dist/core/schema.d.ts.map +1 -0
- package/dist/core/schema.js +76 -0
- package/dist/core/schema.js.map +1 -0
- package/dist/core/vault.d.ts +16 -0
- package/dist/core/vault.d.ts.map +1 -0
- package/dist/core/vault.js +52 -0
- package/dist/core/vault.js.map +1 -0
- package/dist/core/vitality.d.ts +55 -0
- package/dist/core/vitality.d.ts.map +1 -0
- package/dist/core/vitality.js +95 -0
- package/dist/core/vitality.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +139 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/anthropic.d.ts +12 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +90 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/package.json +60 -0
- package/scaffold/.ori +1 -0
- package/scaffold/inbox/.gitkeep +1 -0
- package/scaffold/notes/index.md +19 -0
- package/scaffold/ops/observations/.gitkeep +1 -0
- package/scaffold/ops/reminders.md +3 -0
- package/scaffold/ops/sessions/.gitkeep +1 -0
- package/scaffold/ori.config.yaml +79 -0
- package/scaffold/templates/map.md +36 -0
- package/scaffold/templates/note.md +61 -0
- package/scaffold/templates/observation.md +38 -0
- package/scaffold/templates/source.md +45 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
const SYSTEM_PROMPT = `You are a knowledge management assistant for Ori Mnemos, a markdown-native memory system.
|
|
2
|
+
Your job is to enhance a note that is being promoted from inbox to permanent storage.
|
|
3
|
+
|
|
4
|
+
Given a note's title, body, and frontmatter, plus context about the vault's existing notes:
|
|
5
|
+
1. Suggest a better description (one sentence, max 200 chars, no trailing period)
|
|
6
|
+
2. Classify the type: idea, decision, learning, insight, blocker, or opportunity
|
|
7
|
+
3. Suggest wiki-links to existing notes that are relevant
|
|
8
|
+
4. Suggest project tags if applicable
|
|
9
|
+
5. Explain your reasoning briefly
|
|
10
|
+
|
|
11
|
+
Respond with valid JSON matching this schema:
|
|
12
|
+
{
|
|
13
|
+
"type": "string (one of: idea, decision, learning, insight, blocker, opportunity)",
|
|
14
|
+
"description": "string (one sentence, max 200 chars)",
|
|
15
|
+
"links": ["string array of existing note titles to link to"],
|
|
16
|
+
"project": ["string array of project tags"],
|
|
17
|
+
"reasoning": "string (brief explanation)"
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
Only include fields where you have a confident suggestion. Omit fields you're unsure about.`;
|
|
21
|
+
export class AnthropicProvider {
|
|
22
|
+
apiKey;
|
|
23
|
+
model;
|
|
24
|
+
constructor(apiKey, model) {
|
|
25
|
+
this.apiKey = apiKey;
|
|
26
|
+
this.model = model;
|
|
27
|
+
}
|
|
28
|
+
async enhance(note, context) {
|
|
29
|
+
const userMessage = [
|
|
30
|
+
`## Note to enhance`,
|
|
31
|
+
`Title: ${note.title}`,
|
|
32
|
+
`Body: ${note.body.slice(0, 2000)}`,
|
|
33
|
+
`Current frontmatter: ${JSON.stringify(note.frontmatter)}`,
|
|
34
|
+
``,
|
|
35
|
+
`## Vault context`,
|
|
36
|
+
`Existing notes: ${context.existingTitles.slice(0, 50).join(", ")}`,
|
|
37
|
+
`Recent notes: ${context.recentNotes
|
|
38
|
+
.slice(0, 10)
|
|
39
|
+
.map((n) => `${n.title} (${n.type})`)
|
|
40
|
+
.join(", ")}`,
|
|
41
|
+
`Known projects: ${context.projectTags.join(", ")}`,
|
|
42
|
+
].join("\n");
|
|
43
|
+
try {
|
|
44
|
+
const response = await fetch("https://api.anthropic.com/v1/messages", {
|
|
45
|
+
method: "POST",
|
|
46
|
+
headers: {
|
|
47
|
+
"Content-Type": "application/json",
|
|
48
|
+
"x-api-key": this.apiKey,
|
|
49
|
+
"anthropic-version": "2023-06-01",
|
|
50
|
+
},
|
|
51
|
+
body: JSON.stringify({
|
|
52
|
+
model: this.model,
|
|
53
|
+
max_tokens: 1024,
|
|
54
|
+
system: SYSTEM_PROMPT,
|
|
55
|
+
messages: [{ role: "user", content: userMessage }],
|
|
56
|
+
}),
|
|
57
|
+
});
|
|
58
|
+
if (!response.ok) {
|
|
59
|
+
return {};
|
|
60
|
+
}
|
|
61
|
+
const data = (await response.json());
|
|
62
|
+
const text = data.content?.[0]?.text;
|
|
63
|
+
if (!text)
|
|
64
|
+
return {};
|
|
65
|
+
// Extract JSON from response (may be wrapped in markdown code block)
|
|
66
|
+
const jsonMatch = text.match(/\{[\s\S]*\}/);
|
|
67
|
+
if (!jsonMatch)
|
|
68
|
+
return {};
|
|
69
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
70
|
+
// Validate and sanitize
|
|
71
|
+
const result = {};
|
|
72
|
+
if (typeof parsed.type === "string")
|
|
73
|
+
result.type = parsed.type;
|
|
74
|
+
if (typeof parsed.description === "string")
|
|
75
|
+
result.description = parsed.description.slice(0, 200);
|
|
76
|
+
if (Array.isArray(parsed.links))
|
|
77
|
+
result.links = parsed.links;
|
|
78
|
+
if (Array.isArray(parsed.project))
|
|
79
|
+
result.project = parsed.project;
|
|
80
|
+
if (typeof parsed.reasoning === "string")
|
|
81
|
+
result.reasoning = parsed.reasoning;
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// LLM failures should never block promotion
|
|
86
|
+
return {};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=anthropic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ori-memory",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "The Git of AI memory - open source, markdown-native framework for persistent, shared agent memory without a database",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"ai",
|
|
7
|
+
"agent",
|
|
8
|
+
"memory",
|
|
9
|
+
"markdown",
|
|
10
|
+
"cli",
|
|
11
|
+
"knowledge-graph"
|
|
12
|
+
],
|
|
13
|
+
"homepage": "https://github.com/aayoawoyemi/OriMnemos",
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "https://github.com/aayoawoyemi/OriMnemos.git"
|
|
17
|
+
},
|
|
18
|
+
"license": "Apache-2.0",
|
|
19
|
+
"author": "Aayo Awoyemi",
|
|
20
|
+
"type": "module",
|
|
21
|
+
"bin": {
|
|
22
|
+
"ori": "./dist/index.js"
|
|
23
|
+
},
|
|
24
|
+
"files": [
|
|
25
|
+
"dist",
|
|
26
|
+
"scaffold",
|
|
27
|
+
"adapters"
|
|
28
|
+
],
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "tsc",
|
|
31
|
+
"dev": "tsc --watch",
|
|
32
|
+
"test": "vitest run --environment node",
|
|
33
|
+
"test:watch": "vitest --environment node",
|
|
34
|
+
"lint": "tsc --noEmit",
|
|
35
|
+
"smoke:bin": "node dist/index.js --version",
|
|
36
|
+
"pack:check": "npm pack --dry-run --cache .npm-cache",
|
|
37
|
+
"check:v01:test": "npm run test",
|
|
38
|
+
"check:v01": "npm run lint && npm run build && npm run smoke:bin && npm run pack:check"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@huggingface/transformers": "^3.8.1",
|
|
42
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
43
|
+
"better-sqlite3": "^12.6.2",
|
|
44
|
+
"chalk": "^5.3.0",
|
|
45
|
+
"commander": "^12.1.0",
|
|
46
|
+
"glob": "^11.0.0",
|
|
47
|
+
"graphology": "^0.26.0",
|
|
48
|
+
"graphology-communities-louvain": "^2.0.2",
|
|
49
|
+
"graphology-metrics": "^2.4.0",
|
|
50
|
+
"yaml": "^2.4.0"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@types/node": "^22.0.0",
|
|
54
|
+
"typescript": "^5.5.0",
|
|
55
|
+
"vitest": "^2.0.0"
|
|
56
|
+
},
|
|
57
|
+
"engines": {
|
|
58
|
+
"node": ">=18.0.0"
|
|
59
|
+
}
|
|
60
|
+
}
|
package/scaffold/.ori
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Entry point map for this vault
|
|
3
|
+
type: moc
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# index
|
|
7
|
+
|
|
8
|
+
Use this map as the root entry point. Link all major project maps here.
|
|
9
|
+
|
|
10
|
+
## Project Maps
|
|
11
|
+
- [[project map]]
|
|
12
|
+
|
|
13
|
+
## Recent Additions
|
|
14
|
+
- [[new note]]
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
Areas:
|
|
19
|
+
- [[index]]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# ori.config.yaml - vault configuration for Ori Mnemos
|
|
2
|
+
|
|
3
|
+
vault:
|
|
4
|
+
version: "0.1"
|
|
5
|
+
|
|
6
|
+
templates:
|
|
7
|
+
default: templates/note.md
|
|
8
|
+
by_type:
|
|
9
|
+
map: templates/map.md
|
|
10
|
+
moc: templates/map.md
|
|
11
|
+
source: templates/source.md
|
|
12
|
+
observation: templates/observation.md
|
|
13
|
+
|
|
14
|
+
vitality:
|
|
15
|
+
model: "actr"
|
|
16
|
+
actr_decay: 0.5
|
|
17
|
+
decay:
|
|
18
|
+
idea: 90
|
|
19
|
+
decision: 30
|
|
20
|
+
learning: 30
|
|
21
|
+
insight: 30
|
|
22
|
+
blocker: 14
|
|
23
|
+
opportunity: 30
|
|
24
|
+
base: 1.0
|
|
25
|
+
metabolic_rates:
|
|
26
|
+
self: 0.1
|
|
27
|
+
notes: 1.0
|
|
28
|
+
ops: 3.0
|
|
29
|
+
structural_boost_per_link: 0.1
|
|
30
|
+
structural_boost_cap: 10
|
|
31
|
+
revival_decay_rate: 0.2
|
|
32
|
+
revival_window_days: 14
|
|
33
|
+
access_saturation_k: 10
|
|
34
|
+
|
|
35
|
+
promote:
|
|
36
|
+
auto: true # ori add auto-promotes to notes/
|
|
37
|
+
require_llm: false # true = only auto-promote when LLM available
|
|
38
|
+
min_confidence: 0.6 # below this, skip auto-promotion and warn
|
|
39
|
+
project_keywords: {} # project_name: [keyword, keyword, ...]
|
|
40
|
+
project_map_routing: {} # project_name: map_note_title
|
|
41
|
+
default_area: "index" # fallback area when no project match
|
|
42
|
+
|
|
43
|
+
llm:
|
|
44
|
+
provider: null # null | "anthropic"
|
|
45
|
+
model: null
|
|
46
|
+
api_key_env: null # env var name containing API key
|
|
47
|
+
|
|
48
|
+
graph:
|
|
49
|
+
pagerank_alpha: 0.85
|
|
50
|
+
bridge_vitality_floor: 0.5
|
|
51
|
+
hub_degree_multiplier: 2.0
|
|
52
|
+
|
|
53
|
+
engine:
|
|
54
|
+
embedding_model: "Xenova/all-MiniLM-L6-v2"
|
|
55
|
+
embedding_dims: 384
|
|
56
|
+
piecewise_bins: 8
|
|
57
|
+
community_dims: 16
|
|
58
|
+
db_path: ".ori/embeddings.db"
|
|
59
|
+
|
|
60
|
+
retrieval:
|
|
61
|
+
default_limit: 10
|
|
62
|
+
candidate_multiplier: 5
|
|
63
|
+
rrf_k: 60
|
|
64
|
+
signal_weights:
|
|
65
|
+
composite: 2.0
|
|
66
|
+
keyword: 1.0
|
|
67
|
+
graph: 1.5
|
|
68
|
+
exploration_budget: 0.10
|
|
69
|
+
|
|
70
|
+
bm25:
|
|
71
|
+
k1: 1.2
|
|
72
|
+
b: 0.75
|
|
73
|
+
title_boost: 3.0
|
|
74
|
+
description_boost: 2.0
|
|
75
|
+
|
|
76
|
+
ips:
|
|
77
|
+
enabled: true
|
|
78
|
+
epsilon: 0.01
|
|
79
|
+
log_path: "ops/access.jsonl"
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
_schema:
|
|
3
|
+
entity_type: "map"
|
|
4
|
+
applies_to: "notes/*-map.md"
|
|
5
|
+
required:
|
|
6
|
+
- description
|
|
7
|
+
- type
|
|
8
|
+
optional:
|
|
9
|
+
- project
|
|
10
|
+
enums:
|
|
11
|
+
type:
|
|
12
|
+
- moc
|
|
13
|
+
constraints:
|
|
14
|
+
description:
|
|
15
|
+
max_length: 200
|
|
16
|
+
format: "One sentence describing what this map covers"
|
|
17
|
+
|
|
18
|
+
# Template fields
|
|
19
|
+
description: ""
|
|
20
|
+
type: moc
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# {map name}
|
|
24
|
+
|
|
25
|
+
{Brief description of what this map covers and why it exists.}
|
|
26
|
+
|
|
27
|
+
## Key Notes
|
|
28
|
+
{Links to the most important notes in this area}
|
|
29
|
+
|
|
30
|
+
## Recent Additions
|
|
31
|
+
{Links to recently added notes - keeps the map fresh}
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
Areas:
|
|
36
|
+
- [[index]]
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
_schema:
|
|
3
|
+
entity_type: "note"
|
|
4
|
+
applies_to: "notes/*.md"
|
|
5
|
+
required:
|
|
6
|
+
- description
|
|
7
|
+
- type
|
|
8
|
+
- project
|
|
9
|
+
- status
|
|
10
|
+
- created
|
|
11
|
+
optional:
|
|
12
|
+
- confidence
|
|
13
|
+
- alternatives
|
|
14
|
+
- rationale
|
|
15
|
+
- superseded_by
|
|
16
|
+
- next_step
|
|
17
|
+
- source
|
|
18
|
+
enums:
|
|
19
|
+
type:
|
|
20
|
+
- idea
|
|
21
|
+
- decision
|
|
22
|
+
- learning
|
|
23
|
+
- insight
|
|
24
|
+
- blocker
|
|
25
|
+
- opportunity
|
|
26
|
+
status:
|
|
27
|
+
- inbox
|
|
28
|
+
- active
|
|
29
|
+
- completed
|
|
30
|
+
- superseded
|
|
31
|
+
- archived
|
|
32
|
+
confidence:
|
|
33
|
+
- speculative
|
|
34
|
+
- promising
|
|
35
|
+
- validated
|
|
36
|
+
constraints:
|
|
37
|
+
description:
|
|
38
|
+
max_length: 200
|
|
39
|
+
format: "One sentence adding context beyond the title"
|
|
40
|
+
project:
|
|
41
|
+
format: "Array of project tags"
|
|
42
|
+
|
|
43
|
+
# Template fields
|
|
44
|
+
description: ""
|
|
45
|
+
type: ""
|
|
46
|
+
project: []
|
|
47
|
+
status: active
|
|
48
|
+
created: YYYY-MM-DD
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
# {prose-as-title: a complete thought that works as a statement}
|
|
52
|
+
|
|
53
|
+
{Content - your reasoning, evidence, context. Transform the material, don't just summarize.}
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
Relevant Notes:
|
|
58
|
+
- [[related note]] -- why this connection matters
|
|
59
|
+
|
|
60
|
+
Areas:
|
|
61
|
+
- [[relevant map]]
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
_schema:
|
|
3
|
+
entity_type: "observation"
|
|
4
|
+
applies_to: "ops/observations/*.md"
|
|
5
|
+
required:
|
|
6
|
+
- description
|
|
7
|
+
- category
|
|
8
|
+
- observed
|
|
9
|
+
- status
|
|
10
|
+
optional: []
|
|
11
|
+
enums:
|
|
12
|
+
category:
|
|
13
|
+
- friction
|
|
14
|
+
- surprise
|
|
15
|
+
- process-gap
|
|
16
|
+
- methodology
|
|
17
|
+
- quality
|
|
18
|
+
status:
|
|
19
|
+
- pending
|
|
20
|
+
- promoted
|
|
21
|
+
- implemented
|
|
22
|
+
- archived
|
|
23
|
+
|
|
24
|
+
# Template fields
|
|
25
|
+
description: ""
|
|
26
|
+
category: ""
|
|
27
|
+
observed: YYYY-MM-DD
|
|
28
|
+
status: pending
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
# {prose-sentence describing what was observed}
|
|
32
|
+
|
|
33
|
+
{Context - what happened, what was expected, what actually occurred}
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
Topics:
|
|
38
|
+
- [[methodology]]
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
_schema:
|
|
3
|
+
entity_type: "source"
|
|
4
|
+
applies_to: "inbox/*.md"
|
|
5
|
+
required:
|
|
6
|
+
- description
|
|
7
|
+
- source_type
|
|
8
|
+
- status
|
|
9
|
+
- created
|
|
10
|
+
optional:
|
|
11
|
+
- url
|
|
12
|
+
- author
|
|
13
|
+
- research_tool
|
|
14
|
+
- research_query
|
|
15
|
+
enums:
|
|
16
|
+
source_type:
|
|
17
|
+
- article
|
|
18
|
+
- voice-note
|
|
19
|
+
- conversation
|
|
20
|
+
- documentation
|
|
21
|
+
- video
|
|
22
|
+
- tweet
|
|
23
|
+
- raw-idea
|
|
24
|
+
status:
|
|
25
|
+
- unprocessed
|
|
26
|
+
- processing
|
|
27
|
+
- processed
|
|
28
|
+
- skipped
|
|
29
|
+
|
|
30
|
+
# Template fields
|
|
31
|
+
description: ""
|
|
32
|
+
source_type: ""
|
|
33
|
+
status: unprocessed
|
|
34
|
+
created: YYYY-MM-DD
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
# {source title or description}
|
|
38
|
+
|
|
39
|
+
{Raw content, transcript, or notes from the source}
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
Processing Notes:
|
|
44
|
+
- Extracted: {count} notes
|
|
45
|
+
- Key insights: {brief list}
|