@jayjiang/byoao 1.1.2 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/plugin-config.test.js +7 -10
- package/dist/__tests__/plugin-config.test.js.map +1 -1
- package/dist/assets/obsidian-skills/byoao-conventions.md +30 -54
- package/dist/assets/obsidian-skills/vault-thinking.md +6 -5
- package/dist/assets/presets/common/AGENTS.md.hbs +29 -46
- package/dist/assets/presets/common/SCHEMA.md.hbs +57 -0
- package/dist/assets/presets/common/Start Here.md.hbs +29 -40
- package/dist/assets/presets/minimal/preset.json +3 -3
- package/dist/assets/presets/pm-tpm/preset.json +2 -2
- package/{src/skills/ask.md → dist/assets/skills/ask/SKILL.md} +30 -27
- package/dist/assets/skills/ask.md +28 -27
- package/dist/assets/skills/challenge/SKILL.md +134 -0
- package/dist/assets/skills/challenge.md +79 -121
- package/dist/assets/skills/connect/SKILL.md +126 -0
- package/dist/assets/skills/connect.md +75 -163
- package/dist/assets/skills/cook/SKILL.md +170 -0
- package/dist/assets/skills/cook.md +167 -0
- package/dist/assets/skills/diagnose/SKILL.md +134 -0
- package/dist/assets/skills/diagnose.md +102 -43
- package/dist/assets/skills/drift/SKILL.md +123 -0
- package/dist/assets/skills/drift.md +64 -165
- package/dist/assets/skills/health/SKILL.md +65 -0
- package/dist/assets/skills/health.md +63 -0
- package/{src/skills/ideas.md → dist/assets/skills/ideas/SKILL.md} +11 -10
- package/dist/assets/skills/ideas.md +11 -10
- package/dist/assets/skills/organize/SKILL.md +109 -0
- package/dist/assets/skills/organize.md +56 -155
- package/dist/assets/skills/prep/SKILL.md +65 -0
- package/dist/assets/skills/prep.md +63 -0
- package/dist/assets/skills/trace/SKILL.md +143 -0
- package/dist/assets/skills/trace.md +75 -90
- package/dist/assets/skills/wiki/SKILL.md +127 -0
- package/dist/assets/skills/wiki.md +77 -178
- package/dist/cli/cli-program.js +18 -15
- package/dist/cli/cli-program.js.map +1 -1
- package/dist/cli/installer.js +54 -29
- package/dist/cli/installer.js.map +1 -1
- package/dist/hooks/idle-suggestions.js +4 -4
- package/dist/hooks/idle-suggestions.js.map +1 -1
- package/dist/hooks/system-transform.js +35 -1
- package/dist/hooks/system-transform.js.map +1 -1
- package/dist/index.js +455 -636
- package/dist/index.js.map +1 -1
- package/dist/plugin-config.js +6 -32
- package/dist/plugin-config.js.map +1 -1
- package/dist/tools/init-vault.js +8 -38
- package/dist/tools/init-vault.js.map +1 -1
- package/dist/tools/vault-doctor.js +1 -1
- package/dist/tools/vault-doctor.js.map +1 -1
- package/dist/tools/vault-status.js +1 -1
- package/dist/tools/vault-status.js.map +1 -1
- package/dist/vault/__tests__/create.test.js +48 -116
- package/dist/vault/__tests__/create.test.js.map +1 -1
- package/dist/vault/__tests__/doctor.test.js +14 -2
- package/dist/vault/__tests__/doctor.test.js.map +1 -1
- package/dist/vault/__tests__/manifest.test.js +2 -2
- package/dist/vault/__tests__/manifest.test.js.map +1 -1
- package/dist/vault/__tests__/status.test.js +12 -0
- package/dist/vault/__tests__/status.test.js.map +1 -1
- package/dist/vault/__tests__/upgrade.test.js +3 -3
- package/dist/vault/__tests__/upgrade.test.js.map +1 -1
- package/dist/vault/create.js +86 -196
- package/dist/vault/create.js.map +1 -1
- package/dist/vault/doctor.js +49 -0
- package/dist/vault/doctor.js.map +1 -1
- package/dist/vault/manifest.js +2 -2
- package/dist/vault/manifest.js.map +1 -1
- package/dist/vault/preset.js +10 -4
- package/dist/vault/preset.js.map +1 -1
- package/dist/vault/self-update.js +1 -1
- package/dist/vault/status.js +24 -0
- package/dist/vault/status.js.map +1 -1
- package/dist/vault/upgrade.js +165 -23
- package/dist/vault/upgrade.js.map +1 -1
- package/package.json +1 -1
- package/src/assets/obsidian-skills/byoao-conventions.md +9 -6
- package/src/assets/obsidian-skills/vault-thinking.md +6 -5
- package/src/assets/presets/common/AGENTS.md.hbs +23 -19
- package/src/assets/presets/common/SCHEMA.md.hbs +57 -0
- package/src/assets/presets/common/Start Here.md.hbs +29 -40
- package/src/assets/presets/minimal/preset.json +3 -3
- package/src/assets/presets/pm-tpm/preset.json +2 -2
- package/src/skills/ask/SKILL.md +135 -0
- package/src/skills/challenge/SKILL.md +134 -0
- package/src/skills/connect/SKILL.md +126 -0
- package/src/skills/cook/SKILL.md +170 -0
- package/src/skills/diagnose/SKILL.md +134 -0
- package/src/skills/drift/SKILL.md +123 -0
- package/src/skills/health/SKILL.md +65 -0
- package/src/skills/ideas/SKILL.md +173 -0
- package/src/skills/organize/SKILL.md +109 -0
- package/src/skills/prep/SKILL.md +65 -0
- package/src/skills/trace/SKILL.md +143 -0
- package/src/skills/wiki/SKILL.md +127 -0
- package/dist/assets/presets/common/Glossary.md.hbs +0 -16
- package/dist/assets/presets/common/obsidian/daily-notes.json +0 -5
- package/dist/assets/presets/common/obsidian/templates.json +0 -3
- package/dist/assets/presets/common/templates/Daily Note.md +0 -19
- package/dist/assets/presets/common/templates/Decision Record.md +0 -32
- package/dist/assets/presets/common/templates/Investigation.md +0 -34
- package/dist/assets/presets/common/templates/Meeting Notes.md +0 -25
- package/dist/assets/skills/emerge.md +0 -168
- package/dist/assets/skills/weave.md +0 -287
- package/dist/tools/add-glossary-term.js +0 -21
- package/dist/tools/add-glossary-term.js.map +0 -1
- package/dist/tools/add-person.js +0 -21
- package/dist/tools/add-person.js.map +0 -1
- package/dist/tools/add-project.js +0 -24
- package/dist/tools/add-project.js.map +0 -1
- package/dist/tools/graph-health.js +0 -25
- package/dist/tools/graph-health.js.map +0 -1
- package/dist/tools/note-read.js +0 -19
- package/dist/tools/note-read.js.map +0 -1
- package/dist/tools/search-vault.js +0 -22
- package/dist/tools/search-vault.js.map +0 -1
- package/dist/vault/__tests__/glossary.test.js +0 -68
- package/dist/vault/__tests__/glossary.test.js.map +0 -1
- package/dist/vault/__tests__/graph-health.test.js +0 -102
- package/dist/vault/__tests__/graph-health.test.js.map +0 -1
- package/dist/vault/__tests__/member.test.js +0 -85
- package/dist/vault/__tests__/member.test.js.map +0 -1
- package/dist/vault/__tests__/note-read.test.js +0 -71
- package/dist/vault/__tests__/note-read.test.js.map +0 -1
- package/dist/vault/__tests__/obsidian-cli.test.js +0 -108
- package/dist/vault/__tests__/obsidian-cli.test.js.map +0 -1
- package/dist/vault/__tests__/search-vault.test.js +0 -93
- package/dist/vault/__tests__/search-vault.test.js.map +0 -1
- package/dist/vault/glossary.js +0 -27
- package/dist/vault/glossary.js.map +0 -1
- package/dist/vault/graph-health.js +0 -83
- package/dist/vault/graph-health.js.map +0 -1
- package/dist/vault/member.js +0 -67
- package/dist/vault/member.js.map +0 -1
- package/dist/vault/note-read.js +0 -70
- package/dist/vault/note-read.js.map +0 -1
- package/dist/vault/project.js +0 -68
- package/dist/vault/project.js.map +0 -1
- package/dist/vault/retrieval-types.js +0 -5
- package/dist/vault/retrieval-types.js.map +0 -1
- package/dist/vault/search-vault.js +0 -87
- package/dist/vault/search-vault.js.map +0 -1
- package/src/assets/presets/common/obsidian/daily-notes.json +0 -5
- package/src/assets/presets/common/obsidian/templates.json +0 -3
- package/src/assets/presets/common/templates/Daily Note.md +0 -19
- package/src/assets/presets/common/templates/Decision Record.md +0 -32
- package/src/assets/presets/common/templates/Investigation.md +0 -34
- package/src/assets/presets/common/templates/Meeting Notes.md +0 -25
- package/src/skills/challenge.md +0 -174
- package/src/skills/connect.md +0 -213
- package/src/skills/diagnose.md +0 -72
- package/src/skills/drift.md +0 -223
- package/src/skills/emerge.md +0 -168
- package/src/skills/organize.md +0 -206
- package/src/skills/trace.md +0 -156
- package/src/skills/weave.md +0 -287
- package/src/skills/wiki.md +0 -227
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { isObsidianCliAvailable, execObsidianCmd } from "./obsidian-cli.js";
|
|
3
|
-
import { DEFAULT_RESULT_LIMIT } from "./retrieval-types.js";
|
|
4
|
-
const ALL_CHECKS = ["orphans", "unresolved", "deadends"];
|
|
5
|
-
/** Parse CLI output lines into result items for a given check type. */
|
|
6
|
-
function parseCheckOutput(check, output) {
|
|
7
|
-
const lines = output.split("\n").filter((l) => l.trim().length > 0);
|
|
8
|
-
return lines.map((line) => {
|
|
9
|
-
const trimmed = line.trim();
|
|
10
|
-
// For orphans/deadends: output is file paths
|
|
11
|
-
// For unresolved: output is link target names
|
|
12
|
-
const isPath = trimmed.includes("/") || trimmed.endsWith(".md");
|
|
13
|
-
const title = isPath ? path.basename(trimmed, ".md") : trimmed;
|
|
14
|
-
return {
|
|
15
|
-
title,
|
|
16
|
-
path: isPath ? trimmed : "",
|
|
17
|
-
file: title,
|
|
18
|
-
metadata: { check },
|
|
19
|
-
};
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Run graph health diagnostics using Obsidian CLI.
|
|
24
|
-
* Returns runtime_unavailable if CLI is not available — no internal fallback.
|
|
25
|
-
*/
|
|
26
|
-
export async function getGraphHealth(input) {
|
|
27
|
-
const { vaultPath, check = "all", limit = DEFAULT_RESULT_LIMIT } = input;
|
|
28
|
-
const mode = "graph-health";
|
|
29
|
-
const base = {
|
|
30
|
-
mode,
|
|
31
|
-
vault: vaultPath,
|
|
32
|
-
fallback: "none",
|
|
33
|
-
};
|
|
34
|
-
// 1. Check CLI availability
|
|
35
|
-
if (!isObsidianCliAvailable()) {
|
|
36
|
-
return {
|
|
37
|
-
...base,
|
|
38
|
-
status: "runtime_unavailable",
|
|
39
|
-
summary: "Obsidian CLI not available",
|
|
40
|
-
results: [],
|
|
41
|
-
truncated: false,
|
|
42
|
-
diagnostics: ["Obsidian CLI not available"],
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
// 2. Determine which checks to run
|
|
46
|
-
const checks = check === "all" ? ALL_CHECKS : [check];
|
|
47
|
-
// 3. Run each check and collect results
|
|
48
|
-
const allItems = [];
|
|
49
|
-
const diagnostics = [];
|
|
50
|
-
for (const checkType of checks) {
|
|
51
|
-
const cliResult = execObsidianCmd([checkType, "--vault", vaultPath]);
|
|
52
|
-
if (!cliResult.success) {
|
|
53
|
-
diagnostics.push(`${checkType} check failed: ${cliResult.error ?? "unknown error"}`);
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
if (cliResult.output.trim().length > 0) {
|
|
57
|
-
allItems.push(...parseCheckOutput(checkType, cliResult.output));
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
// 4. Build response
|
|
61
|
-
if (allItems.length === 0 && diagnostics.length === 0) {
|
|
62
|
-
return {
|
|
63
|
-
...base,
|
|
64
|
-
status: "no_results",
|
|
65
|
-
summary: "No issues found — vault graph is healthy",
|
|
66
|
-
results: [],
|
|
67
|
-
truncated: false,
|
|
68
|
-
diagnostics,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
const truncated = allItems.length > limit;
|
|
72
|
-
const results = allItems.slice(0, limit);
|
|
73
|
-
return {
|
|
74
|
-
...base,
|
|
75
|
-
status: allItems.length > 0 ? "ok" : "no_results",
|
|
76
|
-
summary: `Found ${allItems.length} graph issues across ${checks.join(", ")} checks`,
|
|
77
|
-
results,
|
|
78
|
-
truncated,
|
|
79
|
-
totalMatches: allItems.length,
|
|
80
|
-
diagnostics,
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=graph-health.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph-health.js","sourceRoot":"","sources":["../../src/vault/graph-health.ts"],"names":[],"mappings":"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"}
|
package/dist/vault/member.js
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { fs } from "../lib/cjs-modules.js";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
export async function addMember(input) {
|
|
4
|
-
const { vaultPath, name, role, team } = input;
|
|
5
|
-
let wikilinksAdded = 0;
|
|
6
|
-
// 1. Create person note
|
|
7
|
-
const personPath = path.join(vaultPath, `People/${name}.md`);
|
|
8
|
-
if (await fs.pathExists(personPath)) {
|
|
9
|
-
throw new Error(`Person note already exists: ${personPath}`);
|
|
10
|
-
}
|
|
11
|
-
const content = `---
|
|
12
|
-
title: "${name}"
|
|
13
|
-
type: person
|
|
14
|
-
team: "${team}"
|
|
15
|
-
role: "${role}"
|
|
16
|
-
status: active
|
|
17
|
-
tags: [person]
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
# ${name}
|
|
21
|
-
|
|
22
|
-
**Role**: ${role}
|
|
23
|
-
**Team**: ${team}
|
|
24
|
-
`;
|
|
25
|
-
await fs.writeFile(personPath, content);
|
|
26
|
-
// 2. Update team index if it exists
|
|
27
|
-
const teamFiles = await fs.readdir(path.join(vaultPath, "People"));
|
|
28
|
-
const teamIndexFile = teamFiles.find((f) => f.endsWith("Team.md"));
|
|
29
|
-
if (teamIndexFile) {
|
|
30
|
-
const teamIndexPath = path.join(vaultPath, "People", teamIndexFile);
|
|
31
|
-
let teamContent = await fs.readFile(teamIndexPath, "utf-8");
|
|
32
|
-
// Add to members table
|
|
33
|
-
const tableRow = `| [[${name}]] | ${role} |`;
|
|
34
|
-
if (teamContent.includes("|------|------|")) {
|
|
35
|
-
// Insert after the table header separator
|
|
36
|
-
teamContent = teamContent.replace(/(^\|------|------\|$)/m, `$1\n${tableRow}`);
|
|
37
|
-
wikilinksAdded++;
|
|
38
|
-
}
|
|
39
|
-
await fs.writeFile(teamIndexPath, teamContent);
|
|
40
|
-
}
|
|
41
|
-
// 3. Update AGENTS.md wikilinks (check AGENTS.md first, fallback to AGENT.md)
|
|
42
|
-
for (const agentFile of ["AGENTS.md", "AGENT.md"]) {
|
|
43
|
-
const agentPath = path.join(vaultPath, agentFile);
|
|
44
|
-
if (await fs.pathExists(agentPath)) {
|
|
45
|
-
let agentContent = await fs.readFile(agentPath, "utf-8");
|
|
46
|
-
// Replace placeholder if present
|
|
47
|
-
if (agentContent.includes("(No members added yet")) {
|
|
48
|
-
const table = `| Name | Role |\n|------|------|\n| [[${name}]] | ${role} |`;
|
|
49
|
-
agentContent = agentContent.replace(/\(No members added yet[^)]*\)/, table);
|
|
50
|
-
wikilinksAdded++;
|
|
51
|
-
}
|
|
52
|
-
else if (agentContent.includes("|------|------|")) {
|
|
53
|
-
// Find the team table section and add a row
|
|
54
|
-
const teamSectionMatch = agentContent.match(/## Team[^\n]*\n[\s\S]*?(\|------|------\|[^\n]*(?:\n\|[^\n]*)*)/);
|
|
55
|
-
if (teamSectionMatch) {
|
|
56
|
-
const existingTable = teamSectionMatch[1];
|
|
57
|
-
const newTable = existingTable + `\n| [[${name}]] | ${role} |`;
|
|
58
|
-
agentContent = agentContent.replace(existingTable, newTable);
|
|
59
|
-
wikilinksAdded++;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
await fs.writeFile(agentPath, agentContent);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
return { filePath: personPath, wikilinksAdded };
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=member.js.map
|
package/dist/vault/member.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"member.js","sourceRoot":"","sources":["../../src/vault/member.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAU7B,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAqB;IACnD,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAC9C,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,wBAAwB;IACxB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,IAAI,KAAK,CAAC,CAAC;IAC7D,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,OAAO,GAAG;UACR,IAAI;;SAEL,IAAI;SACJ,IAAI;;;;;IAKT,IAAI;;YAEI,IAAI;YACJ,IAAI;CACf,CAAC;IACA,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAExC,oCAAoC;IACpC,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnE,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAEnE,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;QACpE,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAE5D,uBAAuB;QACvB,MAAM,QAAQ,GAAG,OAAO,IAAI,QAAQ,IAAI,IAAI,CAAC;QAC7C,IAAI,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC5C,0CAA0C;YAC1C,WAAW,GAAG,WAAW,CAAC,OAAO,CAC/B,wBAAwB,EACxB,OAAO,QAAQ,EAAE,CAClB,CAAC;YACF,cAAc,EAAE,CAAC;QACnB,CAAC;QAED,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACjD,CAAC;IAED,8EAA8E;IAC9E,KAAK,MAAM,SAAS,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,IAAI,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAEzD,iCAAiC;YACjC,IAAI,YAAY,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,yCAAyC,IAAI,QAAQ,IAAI,IAAI,CAAC;gBAC5E,YAAY,GAAG,YAAY,CAAC,OAAO,CACjC,+BAA+B,EAC/B,KAAK,CACN,CAAC;gBACF,cAAc,EAAE,CAAC;YACnB,CAAC;iBAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACpD,4CAA4C;gBAC5C,MAAM,gBAAgB,GAAG,YAAY,CAAC,KAAK,CACzC,iEAAiE,CAClE,CAAC;gBACF,IAAI,gBAAgB,EAAE,CAAC;oBACrB,MAAM,aAAa,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;oBAC1C,MAAM,QAAQ,GAAG,aAAa,GAAG,SAAS,IAAI,QAAQ,IAAI,IAAI,CAAC;oBAC/D,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;oBAC7D,cAAc,EAAE,CAAC;gBACnB,CAAC;YACH,CAAC;YAED,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;AAClD,CAAC"}
|
package/dist/vault/note-read.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { isObsidianCliAvailable, execObsidianCmd } from "./obsidian-cli.js";
|
|
2
|
-
import { MAX_SNIPPET_LENGTH } from "./retrieval-types.js";
|
|
3
|
-
/**
|
|
4
|
-
* Read a note from the vault using Obsidian CLI.
|
|
5
|
-
* Returns runtime_unavailable if CLI is not available — no internal fallback.
|
|
6
|
-
*/
|
|
7
|
-
export async function readNote(input) {
|
|
8
|
-
const { vaultPath, file } = input;
|
|
9
|
-
const mode = "read";
|
|
10
|
-
const base = {
|
|
11
|
-
mode,
|
|
12
|
-
vault: vaultPath,
|
|
13
|
-
fallback: "none",
|
|
14
|
-
};
|
|
15
|
-
// 1. Check CLI availability
|
|
16
|
-
if (!isObsidianCliAvailable()) {
|
|
17
|
-
return {
|
|
18
|
-
...base,
|
|
19
|
-
status: "runtime_unavailable",
|
|
20
|
-
summary: "Obsidian CLI not available",
|
|
21
|
-
results: [],
|
|
22
|
-
truncated: false,
|
|
23
|
-
diagnostics: ["Obsidian CLI not available"],
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
// 2. Execute read command
|
|
27
|
-
const cliResult = execObsidianCmd(["read", "--vault", vaultPath, file]);
|
|
28
|
-
if (!cliResult.success) {
|
|
29
|
-
return {
|
|
30
|
-
...base,
|
|
31
|
-
status: "runtime_unavailable",
|
|
32
|
-
summary: `Failed to read note "${file}"`,
|
|
33
|
-
results: [],
|
|
34
|
-
truncated: false,
|
|
35
|
-
diagnostics: [cliResult.error ?? "Unknown CLI error"],
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
// 3. Handle empty output
|
|
39
|
-
const content = cliResult.output.trim();
|
|
40
|
-
if (content.length === 0) {
|
|
41
|
-
return {
|
|
42
|
-
...base,
|
|
43
|
-
status: "no_results",
|
|
44
|
-
summary: `Note "${file}" is empty or not found`,
|
|
45
|
-
results: [],
|
|
46
|
-
truncated: false,
|
|
47
|
-
diagnostics: [],
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
// 4. Build result — full content as snippet (truncated for the summary item)
|
|
51
|
-
const snippet = content.length > MAX_SNIPPET_LENGTH
|
|
52
|
-
? content.substring(0, MAX_SNIPPET_LENGTH)
|
|
53
|
-
: content;
|
|
54
|
-
return {
|
|
55
|
-
...base,
|
|
56
|
-
status: "ok",
|
|
57
|
-
summary: `Read note "${file}" (${content.length} chars)`,
|
|
58
|
-
results: [
|
|
59
|
-
{
|
|
60
|
-
title: file,
|
|
61
|
-
path: "",
|
|
62
|
-
file,
|
|
63
|
-
snippet,
|
|
64
|
-
},
|
|
65
|
-
],
|
|
66
|
-
truncated: false,
|
|
67
|
-
diagnostics: [],
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=note-read.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"note-read.js","sourceRoot":"","sources":["../../src/vault/note-read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO1D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,KAAoB;IACjD,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC;IACpB,MAAM,IAAI,GAAyD;QACjE,IAAI;QACJ,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,MAAM;KACjB,CAAC;IAEF,4BAA4B;IAC5B,IAAI,CAAC,sBAAsB,EAAE,EAAE,CAAC;QAC9B,OAAO;YACL,GAAG,IAAI;YACP,MAAM,EAAE,qBAAqB;YAC7B,OAAO,EAAE,4BAA4B;YACrC,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,CAAC,4BAA4B,CAAC;SAC5C,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,MAAM,SAAS,GAAG,eAAe,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAExE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO;YACL,GAAG,IAAI;YACP,MAAM,EAAE,qBAAqB;YAC7B,OAAO,EAAE,wBAAwB,IAAI,GAAG;YACxC,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,CAAC,SAAS,CAAC,KAAK,IAAI,mBAAmB,CAAC;SACtD,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,GAAG,IAAI;YACP,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,SAAS,IAAI,yBAAyB;YAC/C,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,EAAE;SAChB,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,MAAM,OAAO,GACX,OAAO,CAAC,MAAM,GAAG,kBAAkB;QACjC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,kBAAkB,CAAC;QAC1C,CAAC,CAAC,OAAO,CAAC;IAEd,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,cAAc,IAAI,MAAM,OAAO,CAAC,MAAM,SAAS;QACxD,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,EAAE;gBACR,IAAI;gBACJ,OAAO;aACR;SACF;QACD,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,EAAE;KAChB,CAAC;AACJ,CAAC"}
|
package/dist/vault/project.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { fs } from "../lib/cjs-modules.js";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { today } from "./template.js";
|
|
4
|
-
export async function addProject(input) {
|
|
5
|
-
const { vaultPath, name, description, team } = input;
|
|
6
|
-
let wikilinksAdded = 0;
|
|
7
|
-
// 1. Create project note
|
|
8
|
-
const projectPath = path.join(vaultPath, `Projects/${name}.md`);
|
|
9
|
-
if (await fs.pathExists(projectPath)) {
|
|
10
|
-
throw new Error(`Project note already exists: ${projectPath}`);
|
|
11
|
-
}
|
|
12
|
-
const content = `---
|
|
13
|
-
title: "${name}"
|
|
14
|
-
type: feature
|
|
15
|
-
status: active
|
|
16
|
-
date: ${today()}
|
|
17
|
-
team: "${team}"
|
|
18
|
-
jira: ""
|
|
19
|
-
stakeholders: []
|
|
20
|
-
priority: ""
|
|
21
|
-
tags: [project]
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
# ${name}
|
|
25
|
-
|
|
26
|
-
${description}
|
|
27
|
-
`;
|
|
28
|
-
await fs.writeFile(projectPath, content);
|
|
29
|
-
// 2. Update team index if it exists
|
|
30
|
-
const peoplePath = path.join(vaultPath, "People");
|
|
31
|
-
if (await fs.pathExists(peoplePath)) {
|
|
32
|
-
const teamFiles = await fs.readdir(peoplePath);
|
|
33
|
-
const teamIndexFile = teamFiles.find((f) => f.endsWith("Team.md"));
|
|
34
|
-
if (teamIndexFile) {
|
|
35
|
-
const teamIndexPath = path.join(peoplePath, teamIndexFile);
|
|
36
|
-
let teamContent = await fs.readFile(teamIndexPath, "utf-8");
|
|
37
|
-
const projectLine = `- [[${name}]] — ${description}`;
|
|
38
|
-
if (teamContent.includes("(No projects added yet)")) {
|
|
39
|
-
teamContent = teamContent.replace("(No projects added yet)", projectLine);
|
|
40
|
-
}
|
|
41
|
-
else if (teamContent.includes("## Active Projects")) {
|
|
42
|
-
// Append to the projects section
|
|
43
|
-
teamContent = teamContent.replace(/(## Active Projects\n\n)([\s\S]*?)(\n\n|$)/, `$1$2\n${projectLine}$3`);
|
|
44
|
-
}
|
|
45
|
-
wikilinksAdded++;
|
|
46
|
-
await fs.writeFile(teamIndexPath, teamContent);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
// 3. Update AGENTS.md wikilinks (check AGENTS.md first, fallback to AGENT.md)
|
|
50
|
-
for (const agentFile of ["AGENTS.md", "AGENT.md"]) {
|
|
51
|
-
const agentPath = path.join(vaultPath, agentFile);
|
|
52
|
-
if (await fs.pathExists(agentPath)) {
|
|
53
|
-
let agentContent = await fs.readFile(agentPath, "utf-8");
|
|
54
|
-
const projectLine = `- [[${name}]] — ${description}`;
|
|
55
|
-
if (agentContent.includes("(No projects added yet")) {
|
|
56
|
-
agentContent = agentContent.replace(/\(No projects added yet[^)]*\)/, projectLine);
|
|
57
|
-
wikilinksAdded++;
|
|
58
|
-
}
|
|
59
|
-
else if (agentContent.includes("## Active Projects")) {
|
|
60
|
-
agentContent = agentContent.replace(/(## Active Projects[^\n]*\n\n)([\s\S]*?)(\n\n|$)/, `$1$2\n${projectLine}$3`);
|
|
61
|
-
wikilinksAdded++;
|
|
62
|
-
}
|
|
63
|
-
await fs.writeFile(agentPath, agentContent);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return { filePath: projectPath, wikilinksAdded };
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=project.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/vault/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"retrieval-types.js","sourceRoot":"","sources":["../../src/vault/retrieval-types.ts"],"names":[],"mappings":"AA4CA,mDAAmD;AACnD,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEvC,8DAA8D;AAC9D,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { isObsidianCliAvailable, execObsidianCmd } from "./obsidian-cli.js";
|
|
3
|
-
import { DEFAULT_RESULT_LIMIT, MAX_SNIPPET_LENGTH } from "./retrieval-types.js";
|
|
4
|
-
/**
|
|
5
|
-
* Search vault notes using Obsidian CLI search:context.
|
|
6
|
-
* Returns runtime_unavailable if CLI is not available — no internal fallback.
|
|
7
|
-
*/
|
|
8
|
-
export async function searchVault(input) {
|
|
9
|
-
const { vaultPath, query, limit = DEFAULT_RESULT_LIMIT } = input;
|
|
10
|
-
const mode = "search:context";
|
|
11
|
-
const base = {
|
|
12
|
-
mode,
|
|
13
|
-
vault: vaultPath,
|
|
14
|
-
fallback: "none",
|
|
15
|
-
};
|
|
16
|
-
// 1. Check CLI availability
|
|
17
|
-
if (!isObsidianCliAvailable()) {
|
|
18
|
-
return {
|
|
19
|
-
...base,
|
|
20
|
-
status: "runtime_unavailable",
|
|
21
|
-
summary: "Obsidian CLI not available",
|
|
22
|
-
results: [],
|
|
23
|
-
truncated: false,
|
|
24
|
-
diagnostics: ["Obsidian CLI not available"],
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
// 2. Execute search:context
|
|
28
|
-
const cliResult = execObsidianCmd([
|
|
29
|
-
"search:context",
|
|
30
|
-
"--vault",
|
|
31
|
-
vaultPath,
|
|
32
|
-
query,
|
|
33
|
-
]);
|
|
34
|
-
if (!cliResult.success) {
|
|
35
|
-
return {
|
|
36
|
-
...base,
|
|
37
|
-
status: "runtime_unavailable",
|
|
38
|
-
summary: "Obsidian CLI command failed",
|
|
39
|
-
results: [],
|
|
40
|
-
truncated: false,
|
|
41
|
-
diagnostics: [cliResult.error ?? "Unknown CLI error"],
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
// 3. Parse output lines (format: path/to/note.md:context line)
|
|
45
|
-
const lines = cliResult.output.split("\n").filter((l) => l.trim().length > 0);
|
|
46
|
-
if (lines.length === 0) {
|
|
47
|
-
return {
|
|
48
|
-
...base,
|
|
49
|
-
status: "no_results",
|
|
50
|
-
summary: `No matches for "${query}"`,
|
|
51
|
-
results: [],
|
|
52
|
-
truncated: false,
|
|
53
|
-
diagnostics: [],
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
// 4. Build result items
|
|
57
|
-
const allItems = [];
|
|
58
|
-
for (const line of lines) {
|
|
59
|
-
const colonIdx = line.indexOf(":");
|
|
60
|
-
if (colonIdx === -1)
|
|
61
|
-
continue;
|
|
62
|
-
const filePath = line.substring(0, colonIdx);
|
|
63
|
-
const snippet = line.substring(colonIdx + 1).trim();
|
|
64
|
-
const title = path.basename(filePath, ".md");
|
|
65
|
-
allItems.push({
|
|
66
|
-
title,
|
|
67
|
-
path: filePath,
|
|
68
|
-
file: title,
|
|
69
|
-
snippet: snippet.length > MAX_SNIPPET_LENGTH
|
|
70
|
-
? snippet.substring(0, MAX_SNIPPET_LENGTH)
|
|
71
|
-
: snippet,
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
// 5. Apply limit
|
|
75
|
-
const truncated = allItems.length > limit;
|
|
76
|
-
const results = allItems.slice(0, limit);
|
|
77
|
-
return {
|
|
78
|
-
...base,
|
|
79
|
-
status: "ok",
|
|
80
|
-
summary: `${allItems.length} matching notes for "${query}"`,
|
|
81
|
-
results,
|
|
82
|
-
truncated,
|
|
83
|
-
totalMatches: allItems.length,
|
|
84
|
-
diagnostics: [],
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=search-vault.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search-vault.js","sourceRoot":"","sources":["../../src/vault/search-vault.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE5E,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAQhF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAuB;IACvD,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,oBAAoB,EAAE,GAAG,KAAK,CAAC;IACjE,MAAM,IAAI,GAAG,gBAAgB,CAAC;IAC9B,MAAM,IAAI,GAAyD;QACjE,IAAI;QACJ,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,MAAM;KACjB,CAAC;IAEF,4BAA4B;IAC5B,IAAI,CAAC,sBAAsB,EAAE,EAAE,CAAC;QAC9B,OAAO;YACL,GAAG,IAAI;YACP,MAAM,EAAE,qBAAqB;YAC7B,OAAO,EAAE,4BAA4B;YACrC,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,CAAC,4BAA4B,CAAC;SAC5C,CAAC;IACJ,CAAC;IAED,4BAA4B;IAC5B,MAAM,SAAS,GAAG,eAAe,CAAC;QAChC,gBAAgB;QAChB,SAAS;QACT,SAAS;QACT,KAAK;KACN,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO;YACL,GAAG,IAAI;YACP,MAAM,EAAE,qBAAqB;YAC7B,OAAO,EAAE,6BAA6B;YACtC,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,CAAC,SAAS,CAAC,KAAK,IAAI,mBAAmB,CAAC;SACtD,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE9E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,GAAG,IAAI;YACP,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,mBAAmB,KAAK,GAAG;YACpC,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,EAAE;SAChB,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,MAAM,QAAQ,GAA0B,EAAE,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,QAAQ,KAAK,CAAC,CAAC;YAAE,SAAS;QAE9B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE7C,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK;YACL,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,kBAAkB;gBAC1C,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,kBAAkB,CAAC;gBAC1C,CAAC,CAAC,OAAO;SACZ,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB;IACjB,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEzC,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,GAAG,QAAQ,CAAC,MAAM,wBAAwB,KAAK,GAAG;QAC3D,OAAO;QACP,SAAS;QACT,YAAY,EAAE,QAAQ,CAAC,MAAM;QAC7B,WAAW,EAAE,EAAE;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: ""
|
|
3
|
-
type: decision
|
|
4
|
-
status: draft
|
|
5
|
-
date: {{date}}
|
|
6
|
-
decision: ""
|
|
7
|
-
decided-by: []
|
|
8
|
-
alternatives-considered: []
|
|
9
|
-
tags: [decision]
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## Context
|
|
13
|
-
|
|
14
|
-
What is the situation that requires a decision?
|
|
15
|
-
|
|
16
|
-
## Decision
|
|
17
|
-
|
|
18
|
-
What was decided.
|
|
19
|
-
|
|
20
|
-
## Alternatives Considered
|
|
21
|
-
|
|
22
|
-
| Option | Pros | Cons |
|
|
23
|
-
|--------|------|------|
|
|
24
|
-
| | | |
|
|
25
|
-
|
|
26
|
-
## Rationale
|
|
27
|
-
|
|
28
|
-
Why this option was chosen over alternatives.
|
|
29
|
-
|
|
30
|
-
## Consequences
|
|
31
|
-
|
|
32
|
-
What changes as a result of this decision.
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: ""
|
|
3
|
-
type: investigation
|
|
4
|
-
status: draft
|
|
5
|
-
date: {{date}}
|
|
6
|
-
jira: ""
|
|
7
|
-
hypothesis: ""
|
|
8
|
-
conclusion: ""
|
|
9
|
-
tags: [investigation, spike]
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## Question
|
|
13
|
-
|
|
14
|
-
What are we trying to find out?
|
|
15
|
-
|
|
16
|
-
## Hypothesis
|
|
17
|
-
|
|
18
|
-
What we expect to find and why.
|
|
19
|
-
|
|
20
|
-
## Method
|
|
21
|
-
|
|
22
|
-
How we investigated (queries, tools, data sources).
|
|
23
|
-
|
|
24
|
-
## Findings
|
|
25
|
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
## Conclusion
|
|
29
|
-
|
|
30
|
-
Summary of what we learned. Does it confirm or refute the hypothesis?
|
|
31
|
-
|
|
32
|
-
## Next Steps
|
|
33
|
-
|
|
34
|
-
-
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: ""
|
|
3
|
-
type: meeting
|
|
4
|
-
status: active
|
|
5
|
-
date: {{date}}
|
|
6
|
-
participants: []
|
|
7
|
-
meeting-type: ""
|
|
8
|
-
tags: [meeting]
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Agenda
|
|
12
|
-
|
|
13
|
-
1.
|
|
14
|
-
|
|
15
|
-
## Notes
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
## Decisions
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
## Action Items
|
|
24
|
-
|
|
25
|
-
- [ ] @person — task — due date
|