echoes-vault-opencode 1.1.3 → 1.1.5

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 (3) hide show
  1. package/index.ts +0 -48
  2. package/package.json +1 -1
  3. package/tui.tsx +0 -32
package/index.ts CHANGED
@@ -19,12 +19,6 @@ type VaultPaths = {
19
19
  assets: string
20
20
  }
21
21
 
22
- type VaultStats = {
23
- totalPages: number
24
- totalDailyLogs: number
25
- deprecatedPages: number
26
- }
27
-
28
22
  type EchoesState = {
29
23
  version: number
30
24
  pluginVersion: string
@@ -35,7 +29,6 @@ type EchoesState = {
35
29
  lastStart: string | null
36
30
  lastSave: string | null
37
31
  }
38
- stats: VaultStats
39
32
  }
40
33
 
41
34
  const STATE_FILENAME = ".opencode/echoes-state.json"
@@ -60,11 +53,6 @@ const defaultState = (): EchoesState => ({
60
53
  lastStart: null,
61
54
  lastSave: null,
62
55
  },
63
- stats: {
64
- totalPages: 0,
65
- totalDailyLogs: 0,
66
- deprecatedPages: 0,
67
- },
68
56
  })
69
57
 
70
58
  const readState = async (directory: string): Promise<EchoesState> => {
@@ -100,36 +88,6 @@ const ensureVaultDirs = async (paths: VaultPaths): Promise<void> => {
100
88
  await fs.mkdir(paths.assets, { recursive: true })
101
89
  }
102
90
 
103
- const collectStats = async (vaultPaths: VaultPaths): Promise<VaultStats> => {
104
- let totalPages = 0
105
- let totalDailyLogs = 0
106
- let deprecatedPages = 0
107
-
108
- try {
109
- const pageFiles = (await fs.readdir(vaultPaths.pages)).filter((f) => f.endsWith(".md"))
110
- totalPages = pageFiles.length
111
- for (const file of pageFiles) {
112
- const content = await fs.readFile(path.join(vaultPaths.pages, file), "utf-8")
113
- if (content.includes("DEPRECATED")) {
114
- deprecatedPages++
115
- }
116
- }
117
- } catch { /* pages dir may not exist yet */ }
118
-
119
- try {
120
- const dailyFiles = (await fs.readdir(vaultPaths.daily)).filter((f) => f.endsWith(".md"))
121
- totalDailyLogs = dailyFiles.length
122
- } catch { /* daily dir may not exist yet */ }
123
-
124
- return { totalPages, totalDailyLogs, deprecatedPages }
125
- }
126
-
127
- const updateStats = async (directory: string, vaultPaths: VaultPaths): Promise<void> => {
128
- const st = await readState(directory)
129
- st.stats = await collectStats(vaultPaths)
130
- await writeState(directory, st)
131
- }
132
-
133
91
  const DEFAULT_INDEX = `# EchoesVault Index
134
92
 
135
93
  Welcome to the EchoesVault knowledge base.
@@ -417,7 +375,6 @@ const OpenCodeEchoes: Plugin = async ({ directory }) => {
417
375
  state.pluginVersion = await getPluginVersion()
418
376
  state.session.started = false
419
377
  state.session.saved = false
420
- state.stats = await collectStats(paths)
421
378
  await writeState(directory, state)
422
379
 
423
380
  return {
@@ -522,7 +479,6 @@ const OpenCodeEchoes: Plugin = async ({ directory }) => {
522
479
  const st = await readState(directory)
523
480
  st.session.saved = true
524
481
  st.session.lastSave = new Date().toISOString()
525
- st.stats = await collectStats(paths)
526
482
  await writeState(directory, st)
527
483
 
528
484
  return [
@@ -550,7 +506,6 @@ const OpenCodeEchoes: Plugin = async ({ directory }) => {
550
506
  const timestamp = new Date().toISOString()
551
507
  const entry = `### Scratchpad — ${timestamp}\n\n${args.logEntry}\n\n`
552
508
  await fs.appendFile(dailyFile, entry)
553
- await updateStats(directory, paths)
554
509
  return `✅ Scratchpad note saved to EchoesVault/daily/${today}.md`
555
510
  },
556
511
  }),
@@ -632,8 +587,6 @@ const OpenCodeEchoes: Plugin = async ({ directory }) => {
632
587
  }
633
588
  }
634
589
 
635
- await updateStats(directory, paths)
636
-
637
590
  const action = existed ? "updated" : "created"
638
591
  const parts = [`✅ Page ${action}: EchoesVault/pages/${fileName}`]
639
592
  if (!existed && args.indexDescription) {
@@ -649,7 +602,6 @@ const OpenCodeEchoes: Plugin = async ({ directory }) => {
649
602
  async execute(_args, _ctx) {
650
603
  const st = await readState(directory)
651
604
  st.initialized = true
652
- st.stats = await collectStats(paths)
653
605
  await writeState(directory, st)
654
606
  return "EchoesVault activated."
655
607
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "echoes-vault-opencode",
3
- "version": "1.1.3",
3
+ "version": "1.1.5",
4
4
  "description": "EchoesVault — persistent memory plugin for OpenCode. Obsidian-style knowledge base with daily logs, encyclopedia pages, and session resumption.",
5
5
  "type": "module",
6
6
  "main": "index.ts",
package/tui.tsx CHANGED
@@ -4,12 +4,6 @@ import { createSignal, onCleanup } from "solid-js"
4
4
  import * as fs from "node:fs"
5
5
  import * as path from "node:path"
6
6
 
7
- type VaultStats = {
8
- totalPages: number
9
- totalDailyLogs: number
10
- deprecatedPages: number
11
- }
12
-
13
7
  type EchoesState = {
14
8
  version: number
15
9
  pluginVersion: string
@@ -20,7 +14,6 @@ type EchoesState = {
20
14
  lastStart: string | null
21
15
  lastSave: string | null
22
16
  }
23
- stats: VaultStats
24
17
  }
25
18
 
26
19
  const STATE_PATH = path.join(process.cwd(), ".opencode", "echoes-state.json")
@@ -61,18 +54,6 @@ const tui: TuiPlugin = async (api) => {
61
54
  return "Session Not Started"
62
55
  }
63
56
 
64
- const vaultHealthColor = () => {
65
- const pages = state()?.stats?.totalPages ?? 0
66
- if (pages > 200) return theme.error
67
- if (pages >= 170) return theme.warning
68
- return theme.success
69
- }
70
-
71
- const vaultUsagePercent = () => {
72
- const pages = state()?.stats?.totalPages ?? 0
73
- return Math.round((pages / 200) * 100)
74
- }
75
-
76
57
  const statusDesc = () => {
77
58
  const s = state()
78
59
  if (!s || !s.initialized) return null
@@ -116,19 +97,6 @@ const tui: TuiPlugin = async (api) => {
116
97
  <text fg={theme.textMuted}> {statusCmdHint()}</text>
117
98
  </box>
118
99
  )}
119
- {state()?.initialized && (
120
- <box flexDirection="column">
121
- <box flexDirection="row">
122
- <text fg={vaultHealthColor()}>• </text>
123
- <text fg={theme.text}><b>Vault Health</b></text>
124
- </box>
125
- <text fg={theme.textMuted}> Pages: {state()?.stats?.totalPages ?? 0}</text>
126
- <text fg={theme.textMuted}> Usage: {vaultUsagePercent()}%</text>
127
- {(state()?.stats?.totalPages ?? 0) > 200 && (
128
- <text fg={theme.textMuted}> Consider migrating to RAG</text>
129
- )}
130
- </box>
131
- )}
132
100
  </box>
133
101
  )
134
102
  },