@jayjiang/byoao 0.2.3 → 0.3.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.
Files changed (38) hide show
  1. package/dist/__tests__/plugin-config.test.js +130 -0
  2. package/dist/__tests__/plugin-config.test.js.map +1 -0
  3. package/dist/cli/cli-program.js +60 -10
  4. package/dist/cli/cli-program.js.map +1 -1
  5. package/dist/cli/installer.js +39 -30
  6. package/dist/cli/installer.js.map +1 -1
  7. package/dist/cli/ui.js +23 -0
  8. package/dist/cli/ui.js.map +1 -1
  9. package/dist/hooks/__tests__/idle-suggestions.test.js +15 -0
  10. package/dist/hooks/__tests__/idle-suggestions.test.js.map +1 -0
  11. package/dist/plugin-config.js +9 -0
  12. package/dist/plugin-config.js.map +1 -1
  13. package/dist/tools/init-vault.js +38 -0
  14. package/dist/tools/init-vault.js.map +1 -1
  15. package/dist/vault/__tests__/create.test.js +125 -0
  16. package/dist/vault/__tests__/create.test.js.map +1 -0
  17. package/dist/vault/__tests__/doctor.test.js +88 -0
  18. package/dist/vault/__tests__/doctor.test.js.map +1 -0
  19. package/dist/vault/__tests__/glossary.test.js +57 -0
  20. package/dist/vault/__tests__/glossary.test.js.map +1 -0
  21. package/dist/vault/__tests__/mcp.test.js +88 -0
  22. package/dist/vault/__tests__/mcp.test.js.map +1 -0
  23. package/dist/vault/__tests__/member.test.js +87 -0
  24. package/dist/vault/__tests__/member.test.js.map +1 -0
  25. package/dist/vault/__tests__/obsidian-plugins.test.js +366 -0
  26. package/dist/vault/__tests__/obsidian-plugins.test.js.map +1 -0
  27. package/dist/vault/__tests__/status.test.js +134 -0
  28. package/dist/vault/__tests__/status.test.js.map +1 -0
  29. package/dist/vault/__tests__/template.test.js +33 -0
  30. package/dist/vault/__tests__/template.test.js.map +1 -0
  31. package/dist/vault/create.js +121 -18
  32. package/dist/vault/create.js.map +1 -1
  33. package/dist/vault/mcp.js +54 -0
  34. package/dist/vault/mcp.js.map +1 -0
  35. package/dist/vault/obsidian-plugins.js +209 -0
  36. package/dist/vault/obsidian-plugins.js.map +1 -0
  37. package/package.json +7 -2
  38. package/src/assets/presets/pm-tpm/preset.json +25 -1
@@ -2,6 +2,15 @@ import fs from "fs-extra";
2
2
  import path from "node:path";
3
3
  import { renderTemplate, today } from "./template.js";
4
4
  import { loadPreset, getCommonDir } from "./preset.js";
5
+ import { configureMcp } from "./mcp.js";
6
+ import { configureObsidianPlugins } from "./obsidian-plugins.js";
7
+ function countWikilinks(content) {
8
+ const stripped = content
9
+ .replace(/```[\s\S]*?```/g, "")
10
+ .replace(/`[^`]+`/g, "");
11
+ const matches = stripped.match(/\[\[([^\]|]+)(?:\|[^\]]+)?\]\]/g);
12
+ return matches ? matches.length : 0;
13
+ }
5
14
  // Common directories shared by all presets
6
15
  const COMMON_DIRECTORIES = [
7
16
  "Inbox",
@@ -20,7 +29,6 @@ export async function createVault(config) {
20
29
  const commonDir = getCommonDir();
21
30
  const presetDir = path.join(presetsDir, presetName);
22
31
  let filesCreated = 0;
23
- let wikilinksCreated = 0;
24
32
  // Merge directories: common + preset-specific
25
33
  const allDirectories = [...COMMON_DIRECTORIES, ...presetConfig.directories];
26
34
  // 1. Create directories
@@ -70,13 +78,19 @@ export async function createVault(config) {
70
78
  date: today(),
71
79
  GLOSSARY_ENTRIES: glossaryRows,
72
80
  });
73
- await fs.writeFile(path.join(vaultPath, "Knowledge/Glossary.md"), glossaryContent);
74
- filesCreated++;
81
+ const glossaryPath = path.join(vaultPath, "Knowledge/Glossary.md");
82
+ if (!(await fs.pathExists(glossaryPath))) {
83
+ await fs.writeFile(glossaryPath, glossaryContent);
84
+ filesCreated++;
85
+ }
75
86
  // 5. Generate Start Here.md
76
87
  const startHereTemplate = await fs.readFile(path.join(commonDir, "Start Here.md.hbs"), "utf-8");
77
88
  const startHereContent = renderTemplate(startHereTemplate, { TEAM_NAME: teamName });
78
- await fs.writeFile(path.join(vaultPath, "Start Here.md"), startHereContent);
79
- filesCreated++;
89
+ const startHerePath = path.join(vaultPath, "Start Here.md");
90
+ if (!(await fs.pathExists(startHerePath))) {
91
+ await fs.writeFile(startHerePath, startHereContent);
92
+ filesCreated++;
93
+ }
80
94
  // 6. Generate AGENT.md (two-layer: common skeleton + preset section)
81
95
  const agentSkeletonTemplate = await fs.readFile(path.join(commonDir, "AGENT.md.hbs"), "utf-8");
82
96
  // Render preset agent-section
@@ -89,7 +103,6 @@ export async function createVault(config) {
89
103
  projectsList = projects
90
104
  .map((p) => `- [[${p.name}]] — ${p.description}`)
91
105
  .join("\n");
92
- wikilinksCreated += projects.length;
93
106
  }
94
107
  else {
95
108
  projectsList = "(No projects added yet — create notes in Projects/)";
@@ -106,7 +119,6 @@ export async function createVault(config) {
106
119
  if (members.length > 0) {
107
120
  const rows = members.map((m) => `| [[${m.name}]] | ${m.role} |`).join("\n");
108
121
  teamTable = `| Name | Role |\n|------|------|\n${rows}`;
109
- wikilinksCreated += members.length;
110
122
  }
111
123
  else {
112
124
  teamTable = "(No members added yet — create notes in People/)";
@@ -120,9 +132,16 @@ export async function createVault(config) {
120
132
  TEAM_TABLE: teamTable,
121
133
  TEMPLATE_LIST: templateList,
122
134
  });
123
- await fs.writeFile(path.join(vaultPath, "AGENT.md"), agentContent);
124
- await fs.writeFile(path.join(vaultPath, "CLAUDE.md"), agentContent);
125
- filesCreated += 2;
135
+ const agentMdPath = path.join(vaultPath, "AGENT.md");
136
+ const claudeMdPath = path.join(vaultPath, "CLAUDE.md");
137
+ if (!(await fs.pathExists(agentMdPath))) {
138
+ await fs.writeFile(agentMdPath, agentContent);
139
+ filesCreated++;
140
+ }
141
+ if (!(await fs.pathExists(claudeMdPath))) {
142
+ await fs.writeFile(claudeMdPath, agentContent);
143
+ filesCreated++;
144
+ }
126
145
  // 7. Create people notes
127
146
  for (const member of members) {
128
147
  const content = `---
@@ -139,8 +158,11 @@ tags: [person]
139
158
  **Role**: ${member.role}
140
159
  **Team**: ${teamName}
141
160
  `;
142
- await fs.writeFile(path.join(vaultPath, `People/${member.name}.md`), content);
143
- filesCreated++;
161
+ const memberPath = path.join(vaultPath, `People/${member.name}.md`);
162
+ if (!(await fs.pathExists(memberPath))) {
163
+ await fs.writeFile(memberPath, content);
164
+ filesCreated++;
165
+ }
144
166
  }
145
167
  // 8. Create project notes
146
168
  for (const project of projects) {
@@ -160,8 +182,11 @@ tags: [project]
160
182
 
161
183
  ${project.description}
162
184
  `;
163
- await fs.writeFile(path.join(vaultPath, `Projects/${project.name}.md`), content);
164
- filesCreated++;
185
+ const projectPath = path.join(vaultPath, `Projects/${project.name}.md`);
186
+ if (!(await fs.pathExists(projectPath))) {
187
+ await fs.writeFile(projectPath, content);
188
+ filesCreated++;
189
+ }
165
190
  }
166
191
  // 9. Create team index (always, since Start Here.md links to it)
167
192
  {
@@ -180,7 +205,6 @@ tags: [team]
180
205
  if (members.length > 0) {
181
206
  teamIndexContent += "| Name | Role |\n|------|------|\n";
182
207
  teamIndexContent += members.map((m) => `| [[${m.name}]] | ${m.role} |`).join("\n");
183
- wikilinksCreated += members.length;
184
208
  }
185
209
  else {
186
210
  teamIndexContent += "(No members added yet)";
@@ -190,14 +214,16 @@ tags: [team]
190
214
  teamIndexContent += projects
191
215
  .map((p) => `- [[${p.name}]] — ${p.description}`)
192
216
  .join("\n");
193
- wikilinksCreated += projects.length;
194
217
  }
195
218
  else {
196
219
  teamIndexContent += "(No projects added yet)";
197
220
  }
198
221
  teamIndexContent += "\n";
199
- await fs.writeFile(path.join(vaultPath, `People/${teamName} Team.md`), teamIndexContent);
200
- filesCreated++;
222
+ const teamIndexPath = path.join(vaultPath, `People/${teamName} Team.md`);
223
+ if (!(await fs.pathExists(teamIndexPath))) {
224
+ await fs.writeFile(teamIndexPath, teamIndexContent);
225
+ filesCreated++;
226
+ }
201
227
  }
202
228
  // 10. Create .gitkeep in empty directories
203
229
  const dirsNeedingGitkeep = [
@@ -220,11 +246,88 @@ tags: [team]
220
246
  }
221
247
  }
222
248
  }
249
+ // 11. Configure vault as OpenCode project (plugin + skills + commands)
250
+ await configureOpenCodeProject(vaultPath);
251
+ // 12. Configure MCP servers in global OpenCode config
252
+ const mcpResult = await configureMcp(presetConfig);
253
+ // 12. Install Obsidian community plugins from preset
254
+ const pluginsResult = await configureObsidianPlugins(vaultPath, presetConfig);
255
+ // 13. Count wikilinks from all generated markdown files
256
+ let wikilinksCreated = 0;
257
+ const entries = await fs.readdir(vaultPath, { recursive: true });
258
+ for (const entry of entries) {
259
+ const entryStr = String(entry);
260
+ if (entryStr.endsWith(".md") && !entryStr.startsWith(".obsidian")) {
261
+ const content = await fs.readFile(path.join(vaultPath, entryStr), "utf-8");
262
+ wikilinksCreated += countWikilinks(content);
263
+ }
264
+ }
223
265
  return {
224
266
  vaultPath,
225
267
  filesCreated,
226
268
  wikilinksCreated,
227
269
  directories: allDirectories,
270
+ mcpResult,
271
+ pluginsResult,
228
272
  };
229
273
  }
274
+ /**
275
+ * Configure the vault directory as an OpenCode project.
276
+ * Creates .opencode.json with BYOAO plugin registered,
277
+ * and copies skills + commands so BYOAO tools work when
278
+ * OpenCode is launched from the vault (including via Agent Client).
279
+ */
280
+ async function configureOpenCodeProject(vaultPath) {
281
+ // 1. Write .opencode.json with BYOAO plugin
282
+ const configPath = path.join(vaultPath, ".opencode.json");
283
+ let config = {};
284
+ if (await fs.pathExists(configPath)) {
285
+ try {
286
+ config = await fs.readJson(configPath);
287
+ }
288
+ catch {
289
+ // Invalid JSON — start fresh
290
+ }
291
+ }
292
+ const plugins = config.plugin || [];
293
+ if (!plugins.includes("byoao")) {
294
+ plugins.push("byoao");
295
+ config.plugin = plugins;
296
+ }
297
+ await fs.writeJson(configPath, config, { spaces: 2 });
298
+ // 2. Copy Obsidian Skills
299
+ const assetsDir = resolveAssetsDir();
300
+ const obsidianSkillsSrc = path.join(assetsDir, "obsidian-skills");
301
+ const skillsDest = path.join(vaultPath, ".opencode", "skills");
302
+ if (await fs.pathExists(obsidianSkillsSrc)) {
303
+ await fs.ensureDir(skillsDest);
304
+ const files = await fs.readdir(obsidianSkillsSrc);
305
+ for (const file of files) {
306
+ if (file.endsWith(".md")) {
307
+ await fs.copy(path.join(obsidianSkillsSrc, file), path.join(skillsDest, file), { overwrite: true });
308
+ }
309
+ }
310
+ }
311
+ // 3. Copy BYOAO commands
312
+ const byoaoSkillsSrc = path.join(assetsDir, "..", "skills");
313
+ const commandsDest = path.join(vaultPath, ".opencode", "commands");
314
+ if (await fs.pathExists(byoaoSkillsSrc)) {
315
+ await fs.ensureDir(commandsDest);
316
+ const files = await fs.readdir(byoaoSkillsSrc);
317
+ for (const file of files) {
318
+ if (file.endsWith(".md")) {
319
+ await fs.copy(path.join(byoaoSkillsSrc, file), path.join(commandsDest, file), { overwrite: true });
320
+ }
321
+ }
322
+ }
323
+ }
324
+ function resolveAssetsDir() {
325
+ const srcAssets = path.resolve(import.meta.dirname, "..", "assets");
326
+ const distAssets = path.resolve(import.meta.dirname, "..", "..", "src", "assets");
327
+ if (fs.existsSync(srcAssets))
328
+ return srcAssets;
329
+ if (fs.existsSync(distAssets))
330
+ return distAssets;
331
+ return srcAssets;
332
+ }
230
333
  //# sourceMappingURL=create.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/vault/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/vault/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import fs from "fs-extra";
2
+ import path from "node:path";
3
+ import os from "node:os";
4
+ const OPENCODE_CONFIG_PATHS = [
5
+ path.join(os.homedir(), ".config/opencode/opencode.json"),
6
+ path.join(os.homedir(), ".config/opencode/.opencode.json"),
7
+ ];
8
+ function findOpencodeConfig() {
9
+ for (const p of OPENCODE_CONFIG_PATHS) {
10
+ if (fs.existsSync(p))
11
+ return p;
12
+ }
13
+ // Default to primary path if none exists yet
14
+ return OPENCODE_CONFIG_PATHS[0];
15
+ }
16
+ /**
17
+ * Merge a preset's MCP servers into the global OpenCode config.
18
+ * Preserves existing entries — only adds servers not already configured.
19
+ */
20
+ export async function configureMcp(presetConfig) {
21
+ const mcpServers = presetConfig.mcpServers;
22
+ if (!mcpServers || Object.keys(mcpServers).length === 0) {
23
+ return null;
24
+ }
25
+ const configPath = findOpencodeConfig();
26
+ await fs.ensureDir(path.dirname(configPath));
27
+ let config = {};
28
+ if (await fs.pathExists(configPath)) {
29
+ try {
30
+ config = await fs.readJson(configPath);
31
+ }
32
+ catch {
33
+ // Invalid JSON — start fresh
34
+ }
35
+ }
36
+ const existingMcp = config.mcp || {};
37
+ const serversAdded = [];
38
+ const serversSkipped = [];
39
+ for (const [name, serverConfig] of Object.entries(mcpServers)) {
40
+ if (existingMcp[name]) {
41
+ serversSkipped.push(name);
42
+ }
43
+ else {
44
+ existingMcp[name] = serverConfig;
45
+ serversAdded.push(name);
46
+ }
47
+ }
48
+ if (serversAdded.length > 0) {
49
+ config.mcp = existingMcp;
50
+ await fs.writeJson(configPath, config, { spaces: 2 });
51
+ }
52
+ return { configPath, serversAdded, serversSkipped };
53
+ }
54
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/vault/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAGzB,MAAM,qBAAqB,GAAG;IAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,gCAAgC,CAAC;IACzD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,iCAAiC,CAAC;CAC3D,CAAC;AAEF,SAAS,kBAAkB;IACzB,KAAK,MAAM,CAAC,IAAI,qBAAqB,EAAE,CAAC;QACtC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IACD,6CAA6C;IAC7C,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC;AAQD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,YAA0B;IAE1B,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;IAC3C,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;IACxC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAE7C,IAAI,MAAM,GAA4B,EAAE,CAAC;IACzC,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,6BAA6B;QAC/B,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAI,MAAM,CAAC,GAA+B,IAAI,EAAE,CAAC;IAClE,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,MAAM,cAAc,GAAa,EAAE,CAAC;IAEpC,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9D,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;YACjC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,GAAG,WAAW,CAAC;QACzB,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;AACtD,CAAC"}
@@ -0,0 +1,209 @@
1
+ import fs from "fs-extra";
2
+ import path from "node:path";
3
+ import { execSync } from "node:child_process";
4
+ const BRAT_PLUGIN_ID = "obsidian42-brat";
5
+ const BRAT_REPO = "TfTHacker/obsidian42-brat";
6
+ const REQUIRED_ASSETS = ["main.js", "manifest.json"];
7
+ const OPTIONAL_ASSETS = ["styles.css"];
8
+ const FETCH_TIMEOUT_MS = 30_000;
9
+ function getHeaders() {
10
+ const headers = {
11
+ Accept: "application/vnd.github.v3+json",
12
+ };
13
+ const token = process.env.GITHUB_TOKEN;
14
+ if (token) {
15
+ headers.Authorization = `token ${token}`;
16
+ }
17
+ return headers;
18
+ }
19
+ function getReleaseUrl(repo, version) {
20
+ if (version === "latest") {
21
+ return `https://api.github.com/repos/${repo}/releases/latest`;
22
+ }
23
+ return `https://api.github.com/repos/${repo}/releases/tags/${version}`;
24
+ }
25
+ async function fetchWithTimeout(url, options = {}) {
26
+ const controller = new AbortController();
27
+ const timeout = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
28
+ try {
29
+ return await fetch(url, { ...options, signal: controller.signal });
30
+ }
31
+ finally {
32
+ clearTimeout(timeout);
33
+ }
34
+ }
35
+ /**
36
+ * Resolve command names to absolute paths in plugin config.
37
+ * Obsidian GUI apps don't inherit terminal PATH, so commands like "opencode"
38
+ * must be resolved to their full path (e.g., "/Users/jay/.opencode/bin/opencode").
39
+ */
40
+ function resolveCommandPaths(config) {
41
+ const result = { ...config };
42
+ // Resolve command in customAgents array
43
+ if (Array.isArray(result.customAgents)) {
44
+ result.customAgents = result.customAgents.map((agent) => {
45
+ if (typeof agent.command === "string" && !agent.command.startsWith("/")) {
46
+ try {
47
+ const resolved = execSync(`which ${agent.command}`, { encoding: "utf-8" }).trim();
48
+ if (resolved) {
49
+ return { ...agent, command: resolved };
50
+ }
51
+ }
52
+ catch {
53
+ // Command not found — leave as-is
54
+ }
55
+ }
56
+ return agent;
57
+ });
58
+ }
59
+ return result;
60
+ }
61
+ /**
62
+ * Download a plugin from GitHub Releases into .obsidian/plugins/<id>/.
63
+ * Caller must check if plugin already exists before calling.
64
+ * Throws on failure.
65
+ */
66
+ async function downloadPlugin(pluginId, repo, version, pluginsDir, config) {
67
+ const headers = getHeaders();
68
+ // 1. Fetch release metadata
69
+ const releaseUrl = getReleaseUrl(repo, version);
70
+ const releaseRes = await fetchWithTimeout(releaseUrl, { headers });
71
+ if (!releaseRes.ok) {
72
+ const msg = releaseRes.status === 403
73
+ ? "GitHub API rate limited — try setting GITHUB_TOKEN env var"
74
+ : `GitHub API error: ${releaseRes.status} ${releaseRes.statusText}`;
75
+ throw new Error(msg);
76
+ }
77
+ const release = (await releaseRes.json());
78
+ // 2. Validate required assets
79
+ const assetMap = new Map(release.assets.map((a) => [a.name, a.browser_download_url]));
80
+ const missingRequired = REQUIRED_ASSETS.filter((name) => !assetMap.has(name));
81
+ if (missingRequired.length > 0) {
82
+ throw new Error(`Plugin release missing required assets: ${missingRequired.join(", ")}`);
83
+ }
84
+ // 3. Download assets
85
+ const pluginDir = path.join(pluginsDir, pluginId);
86
+ await fs.ensureDir(pluginDir);
87
+ const allAssets = [...REQUIRED_ASSETS, ...OPTIONAL_ASSETS];
88
+ for (const assetName of allAssets) {
89
+ const url = assetMap.get(assetName);
90
+ if (!url)
91
+ continue;
92
+ const assetRes = await fetchWithTimeout(url, { headers });
93
+ if (assetRes.ok) {
94
+ const content = await assetRes.text();
95
+ await fs.writeFile(path.join(pluginDir, assetName), content);
96
+ }
97
+ }
98
+ // 4. Write plugin config if provided, resolving command paths to absolute
99
+ if (config) {
100
+ const resolved = resolveCommandPaths(config);
101
+ await fs.writeJson(path.join(pluginDir, "data.json"), resolved, { spaces: 2 });
102
+ }
103
+ }
104
+ /**
105
+ * Download and configure Obsidian community plugins from a preset.
106
+ * Three-step install: BRAT → plugins → BRAT registration.
107
+ */
108
+ export async function configureObsidianPlugins(vaultPath, presetConfig) {
109
+ const obsidianPlugins = presetConfig.obsidianPlugins;
110
+ if (!obsidianPlugins || Object.keys(obsidianPlugins).length === 0) {
111
+ return null;
112
+ }
113
+ const pluginsDir = path.join(vaultPath, ".obsidian", "plugins");
114
+ await fs.ensureDir(pluginsDir);
115
+ let bratNewlyInstalled = false;
116
+ const pluginsAdded = [];
117
+ const pluginsSkipped = [];
118
+ const errors = [];
119
+ // Step 1: Install BRAT if not present
120
+ const bratMainJs = path.join(pluginsDir, BRAT_PLUGIN_ID, "main.js");
121
+ if (!(await fs.pathExists(bratMainJs))) {
122
+ try {
123
+ await downloadPlugin(BRAT_PLUGIN_ID, BRAT_REPO, "latest", pluginsDir);
124
+ bratNewlyInstalled = true;
125
+ }
126
+ catch (err) {
127
+ errors.push({
128
+ pluginId: BRAT_PLUGIN_ID,
129
+ error: err instanceof Error ? err.message : String(err),
130
+ });
131
+ }
132
+ }
133
+ // Step 2: Install each preset plugin
134
+ for (const [pluginId, pluginDef] of Object.entries(obsidianPlugins)) {
135
+ const pluginMainJs = path.join(pluginsDir, pluginId, "main.js");
136
+ if (await fs.pathExists(pluginMainJs)) {
137
+ pluginsSkipped.push(pluginId);
138
+ continue;
139
+ }
140
+ try {
141
+ await downloadPlugin(pluginId, pluginDef.repo, pluginDef.version ?? "latest", pluginsDir, pluginDef.config);
142
+ pluginsAdded.push(pluginId);
143
+ }
144
+ catch (err) {
145
+ errors.push({
146
+ pluginId,
147
+ error: err instanceof Error ? err.message : String(err),
148
+ });
149
+ }
150
+ }
151
+ // Update community-plugins.json
152
+ const communityPluginsPath = path.join(vaultPath, ".obsidian", "community-plugins.json");
153
+ let communityPlugins = [];
154
+ if (await fs.pathExists(communityPluginsPath)) {
155
+ try {
156
+ communityPlugins = await fs.readJson(communityPluginsPath);
157
+ }
158
+ catch {
159
+ // Invalid JSON — start fresh
160
+ }
161
+ }
162
+ // Always ensure BRAT is in community-plugins.json when plugins are declared
163
+ // (handles edge case where BRAT dir exists but was removed from JSON)
164
+ const bratDirExists = await fs.pathExists(path.join(pluginsDir, BRAT_PLUGIN_ID));
165
+ const allPluginIds = [
166
+ ...(bratNewlyInstalled || bratDirExists ? [BRAT_PLUGIN_ID] : []),
167
+ ...pluginsAdded,
168
+ ];
169
+ for (const id of allPluginIds) {
170
+ if (!communityPlugins.includes(id)) {
171
+ communityPlugins.push(id);
172
+ }
173
+ }
174
+ if (allPluginIds.length > 0) {
175
+ await fs.writeJson(communityPluginsPath, communityPlugins, { spaces: 2 });
176
+ }
177
+ // Step 3: Register plugins in BRAT config
178
+ const bratDataPath = path.join(pluginsDir, BRAT_PLUGIN_ID, "data.json");
179
+ if (pluginsAdded.length > 0 && await fs.pathExists(path.join(pluginsDir, BRAT_PLUGIN_ID))) {
180
+ let bratData = {
181
+ pluginList: [],
182
+ pluginSubListFrozenVersion: [],
183
+ themesList: [],
184
+ updateAtStartup: true,
185
+ updateThemesAtStartup: false,
186
+ ribbonIconEnabled: true,
187
+ loggingEnabled: false,
188
+ };
189
+ if (await fs.pathExists(bratDataPath)) {
190
+ try {
191
+ bratData = { ...bratData, ...(await fs.readJson(bratDataPath)) };
192
+ }
193
+ catch {
194
+ // Invalid JSON — use defaults
195
+ }
196
+ }
197
+ const pluginList = bratData.pluginList || [];
198
+ for (const pluginId of pluginsAdded) {
199
+ const repo = obsidianPlugins[pluginId]?.repo;
200
+ if (repo && !pluginList.includes(repo)) {
201
+ pluginList.push(repo);
202
+ }
203
+ }
204
+ bratData.pluginList = pluginList;
205
+ await fs.writeJson(bratDataPath, bratData, { spaces: 2 });
206
+ }
207
+ return { bratNewlyInstalled, pluginsAdded, pluginsSkipped, errors };
208
+ }
209
+ //# sourceMappingURL=obsidian-plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obsidian-plugins.js","sourceRoot":"","sources":["../../src/vault/obsidian-plugins.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,11 @@
1
1
  {
2
2
  "name": "@jayjiang/byoao",
3
- "version": "0.2.3",
3
+ "version": "0.3.0",
4
4
  "description": "Build Your Own AI OS — Obsidian + AI Agent",
5
5
  "type": "module",
6
+ "engines": {
7
+ "node": ">=18.0.0"
8
+ },
6
9
  "main": "dist/index.js",
7
10
  "types": "dist/index.d.ts",
8
11
  "bin": {
@@ -11,6 +14,7 @@
11
14
  "scripts": {
12
15
  "build": "tsc",
13
16
  "dev": "node --import tsx src/cli/cli-program.ts",
17
+ "test": "vitest run",
14
18
  "typecheck": "tsc --noEmit",
15
19
  "prepublishOnly": "npm run build"
16
20
  },
@@ -53,6 +57,7 @@
53
57
  "@types/inquirer": "^9.0.0",
54
58
  "@types/node": "^20.0.0",
55
59
  "tsx": "^4.21.0",
56
- "typescript": "^5.4.0"
60
+ "typescript": "^5.4.0",
61
+ "vitest": "^4.1.0"
57
62
  }
58
63
  }
@@ -8,5 +8,29 @@
8
8
  "project": ["jira", "stakeholders", "priority"],
9
9
  "sprint": ["sprint-dates", "jira-board"]
10
10
  },
11
- "templates": ["Feature Doc.md", "Sprint Handoff.md"]
11
+ "templates": ["Feature Doc.md", "Sprint Handoff.md"],
12
+ "mcpServers": {
13
+ "atlassian": {
14
+ "type": "remote",
15
+ "url": "https://mcp.atlassian.com/v1/sse"
16
+ }
17
+ },
18
+ "obsidianPlugins": {
19
+ "agent-client": {
20
+ "repo": "RAIT-09/obsidian-agent-client",
21
+ "version": "latest",
22
+ "config": {
23
+ "defaultAgentId": "opencode-acp",
24
+ "customAgents": [
25
+ {
26
+ "id": "opencode-acp",
27
+ "displayName": "OpenCode",
28
+ "command": "opencode",
29
+ "args": ["acp"],
30
+ "env": []
31
+ }
32
+ ]
33
+ }
34
+ }
35
+ }
12
36
  }