@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.
Files changed (156) hide show
  1. package/dist/__tests__/plugin-config.test.js +7 -10
  2. package/dist/__tests__/plugin-config.test.js.map +1 -1
  3. package/dist/assets/obsidian-skills/byoao-conventions.md +30 -54
  4. package/dist/assets/obsidian-skills/vault-thinking.md +6 -5
  5. package/dist/assets/presets/common/AGENTS.md.hbs +29 -46
  6. package/dist/assets/presets/common/SCHEMA.md.hbs +57 -0
  7. package/dist/assets/presets/common/Start Here.md.hbs +29 -40
  8. package/dist/assets/presets/minimal/preset.json +3 -3
  9. package/dist/assets/presets/pm-tpm/preset.json +2 -2
  10. package/{src/skills/ask.md → dist/assets/skills/ask/SKILL.md} +30 -27
  11. package/dist/assets/skills/ask.md +28 -27
  12. package/dist/assets/skills/challenge/SKILL.md +134 -0
  13. package/dist/assets/skills/challenge.md +79 -121
  14. package/dist/assets/skills/connect/SKILL.md +126 -0
  15. package/dist/assets/skills/connect.md +75 -163
  16. package/dist/assets/skills/cook/SKILL.md +170 -0
  17. package/dist/assets/skills/cook.md +167 -0
  18. package/dist/assets/skills/diagnose/SKILL.md +134 -0
  19. package/dist/assets/skills/diagnose.md +102 -43
  20. package/dist/assets/skills/drift/SKILL.md +123 -0
  21. package/dist/assets/skills/drift.md +64 -165
  22. package/dist/assets/skills/health/SKILL.md +65 -0
  23. package/dist/assets/skills/health.md +63 -0
  24. package/{src/skills/ideas.md → dist/assets/skills/ideas/SKILL.md} +11 -10
  25. package/dist/assets/skills/ideas.md +11 -10
  26. package/dist/assets/skills/organize/SKILL.md +109 -0
  27. package/dist/assets/skills/organize.md +56 -155
  28. package/dist/assets/skills/prep/SKILL.md +65 -0
  29. package/dist/assets/skills/prep.md +63 -0
  30. package/dist/assets/skills/trace/SKILL.md +143 -0
  31. package/dist/assets/skills/trace.md +75 -90
  32. package/dist/assets/skills/wiki/SKILL.md +127 -0
  33. package/dist/assets/skills/wiki.md +77 -178
  34. package/dist/cli/cli-program.js +18 -15
  35. package/dist/cli/cli-program.js.map +1 -1
  36. package/dist/cli/installer.js +54 -29
  37. package/dist/cli/installer.js.map +1 -1
  38. package/dist/hooks/idle-suggestions.js +4 -4
  39. package/dist/hooks/idle-suggestions.js.map +1 -1
  40. package/dist/hooks/system-transform.js +35 -1
  41. package/dist/hooks/system-transform.js.map +1 -1
  42. package/dist/index.js +455 -636
  43. package/dist/index.js.map +1 -1
  44. package/dist/plugin-config.js +6 -32
  45. package/dist/plugin-config.js.map +1 -1
  46. package/dist/tools/init-vault.js +8 -38
  47. package/dist/tools/init-vault.js.map +1 -1
  48. package/dist/tools/vault-doctor.js +1 -1
  49. package/dist/tools/vault-doctor.js.map +1 -1
  50. package/dist/tools/vault-status.js +1 -1
  51. package/dist/tools/vault-status.js.map +1 -1
  52. package/dist/vault/__tests__/create.test.js +48 -116
  53. package/dist/vault/__tests__/create.test.js.map +1 -1
  54. package/dist/vault/__tests__/doctor.test.js +14 -2
  55. package/dist/vault/__tests__/doctor.test.js.map +1 -1
  56. package/dist/vault/__tests__/manifest.test.js +2 -2
  57. package/dist/vault/__tests__/manifest.test.js.map +1 -1
  58. package/dist/vault/__tests__/status.test.js +12 -0
  59. package/dist/vault/__tests__/status.test.js.map +1 -1
  60. package/dist/vault/__tests__/upgrade.test.js +3 -3
  61. package/dist/vault/__tests__/upgrade.test.js.map +1 -1
  62. package/dist/vault/create.js +86 -196
  63. package/dist/vault/create.js.map +1 -1
  64. package/dist/vault/doctor.js +49 -0
  65. package/dist/vault/doctor.js.map +1 -1
  66. package/dist/vault/manifest.js +2 -2
  67. package/dist/vault/manifest.js.map +1 -1
  68. package/dist/vault/preset.js +10 -4
  69. package/dist/vault/preset.js.map +1 -1
  70. package/dist/vault/self-update.js +1 -1
  71. package/dist/vault/status.js +24 -0
  72. package/dist/vault/status.js.map +1 -1
  73. package/dist/vault/upgrade.js +165 -23
  74. package/dist/vault/upgrade.js.map +1 -1
  75. package/package.json +1 -1
  76. package/src/assets/obsidian-skills/byoao-conventions.md +9 -6
  77. package/src/assets/obsidian-skills/vault-thinking.md +6 -5
  78. package/src/assets/presets/common/AGENTS.md.hbs +23 -19
  79. package/src/assets/presets/common/SCHEMA.md.hbs +57 -0
  80. package/src/assets/presets/common/Start Here.md.hbs +29 -40
  81. package/src/assets/presets/minimal/preset.json +3 -3
  82. package/src/assets/presets/pm-tpm/preset.json +2 -2
  83. package/src/skills/ask/SKILL.md +135 -0
  84. package/src/skills/challenge/SKILL.md +134 -0
  85. package/src/skills/connect/SKILL.md +126 -0
  86. package/src/skills/cook/SKILL.md +170 -0
  87. package/src/skills/diagnose/SKILL.md +134 -0
  88. package/src/skills/drift/SKILL.md +123 -0
  89. package/src/skills/health/SKILL.md +65 -0
  90. package/src/skills/ideas/SKILL.md +173 -0
  91. package/src/skills/organize/SKILL.md +109 -0
  92. package/src/skills/prep/SKILL.md +65 -0
  93. package/src/skills/trace/SKILL.md +143 -0
  94. package/src/skills/wiki/SKILL.md +127 -0
  95. package/dist/assets/presets/common/Glossary.md.hbs +0 -16
  96. package/dist/assets/presets/common/obsidian/daily-notes.json +0 -5
  97. package/dist/assets/presets/common/obsidian/templates.json +0 -3
  98. package/dist/assets/presets/common/templates/Daily Note.md +0 -19
  99. package/dist/assets/presets/common/templates/Decision Record.md +0 -32
  100. package/dist/assets/presets/common/templates/Investigation.md +0 -34
  101. package/dist/assets/presets/common/templates/Meeting Notes.md +0 -25
  102. package/dist/assets/skills/emerge.md +0 -168
  103. package/dist/assets/skills/weave.md +0 -287
  104. package/dist/tools/add-glossary-term.js +0 -21
  105. package/dist/tools/add-glossary-term.js.map +0 -1
  106. package/dist/tools/add-person.js +0 -21
  107. package/dist/tools/add-person.js.map +0 -1
  108. package/dist/tools/add-project.js +0 -24
  109. package/dist/tools/add-project.js.map +0 -1
  110. package/dist/tools/graph-health.js +0 -25
  111. package/dist/tools/graph-health.js.map +0 -1
  112. package/dist/tools/note-read.js +0 -19
  113. package/dist/tools/note-read.js.map +0 -1
  114. package/dist/tools/search-vault.js +0 -22
  115. package/dist/tools/search-vault.js.map +0 -1
  116. package/dist/vault/__tests__/glossary.test.js +0 -68
  117. package/dist/vault/__tests__/glossary.test.js.map +0 -1
  118. package/dist/vault/__tests__/graph-health.test.js +0 -102
  119. package/dist/vault/__tests__/graph-health.test.js.map +0 -1
  120. package/dist/vault/__tests__/member.test.js +0 -85
  121. package/dist/vault/__tests__/member.test.js.map +0 -1
  122. package/dist/vault/__tests__/note-read.test.js +0 -71
  123. package/dist/vault/__tests__/note-read.test.js.map +0 -1
  124. package/dist/vault/__tests__/obsidian-cli.test.js +0 -108
  125. package/dist/vault/__tests__/obsidian-cli.test.js.map +0 -1
  126. package/dist/vault/__tests__/search-vault.test.js +0 -93
  127. package/dist/vault/__tests__/search-vault.test.js.map +0 -1
  128. package/dist/vault/glossary.js +0 -27
  129. package/dist/vault/glossary.js.map +0 -1
  130. package/dist/vault/graph-health.js +0 -83
  131. package/dist/vault/graph-health.js.map +0 -1
  132. package/dist/vault/member.js +0 -67
  133. package/dist/vault/member.js.map +0 -1
  134. package/dist/vault/note-read.js +0 -70
  135. package/dist/vault/note-read.js.map +0 -1
  136. package/dist/vault/project.js +0 -68
  137. package/dist/vault/project.js.map +0 -1
  138. package/dist/vault/retrieval-types.js +0 -5
  139. package/dist/vault/retrieval-types.js.map +0 -1
  140. package/dist/vault/search-vault.js +0 -87
  141. package/dist/vault/search-vault.js.map +0 -1
  142. package/src/assets/presets/common/obsidian/daily-notes.json +0 -5
  143. package/src/assets/presets/common/obsidian/templates.json +0 -3
  144. package/src/assets/presets/common/templates/Daily Note.md +0 -19
  145. package/src/assets/presets/common/templates/Decision Record.md +0 -32
  146. package/src/assets/presets/common/templates/Investigation.md +0 -34
  147. package/src/assets/presets/common/templates/Meeting Notes.md +0 -25
  148. package/src/skills/challenge.md +0 -174
  149. package/src/skills/connect.md +0 -213
  150. package/src/skills/diagnose.md +0 -72
  151. package/src/skills/drift.md +0 -223
  152. package/src/skills/emerge.md +0 -168
  153. package/src/skills/organize.md +0 -206
  154. package/src/skills/trace.md +0 -156
  155. package/src/skills/weave.md +0 -287
  156. 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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"}
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"member.js","sourceRoot":"","sources":["../../src/vault/member.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -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,5 +0,0 @@
1
- /** Default maximum number of results to return. */
2
- export const DEFAULT_RESULT_LIMIT = 20;
3
- /** Default maximum snippet length per result (characters). */
4
- export const MAX_SNIPPET_LENGTH = 240;
5
- //# sourceMappingURL=retrieval-types.js.map
@@ -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":"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"}
@@ -1,5 +0,0 @@
1
- {
2
- "folder": "Daily",
3
- "format": "YYYY-MM-DD",
4
- "template": "Knowledge/templates/Daily Note"
5
- }
@@ -1,3 +0,0 @@
1
- {
2
- "folder": "Knowledge/templates"
3
- }
@@ -1,19 +0,0 @@
1
- ---
2
- title: "{{date}}"
3
- type: daily
4
- status: active
5
- date: {{date}}
6
- tags: [daily]
7
- ---
8
-
9
- ## Focus
10
-
11
- -
12
-
13
- ## Notes
14
-
15
- -
16
-
17
- ## Action Items
18
-
19
- - [ ]
@@ -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