Skip to content

Commit cb60553

Browse files
committed
v6.0.0: workspace memory OS release
1 parent 6d04293 commit cb60553

133 files changed

Lines changed: 37171 additions & 382 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ __pycache__/
44
*$py.class
55
*.so
66
.Python
7-
build/
7+
/build/
88
develop-eggs/
99
dist/
1010
downloads/
@@ -192,3 +192,51 @@ docs/longmemeval_active_memory_orchestration_plan_2026-02-23.md
192192
docs/capture_screenshots.py
193193
docs/screenshots/
194194
docs/pdf/
195+
196+
# Local-only artifacts (not part of the shipped product)
197+
_pitch_deck_v3.html
198+
_pitch_template.html
199+
demo.mp4
200+
demo-video/
201+
sankhya_v2.html
202+
dhee-views.jsx
203+
dev.sh
204+
MEMORY.md
205+
skills-lock.json
206+
/skills/
207+
/paper/
208+
/memory/
209+
docs/demo/
210+
apps/memory-os-chrome-extension/
211+
apps/memory-os-macos/
212+
213+
# Agent-tool scratch directories generated by other IDE/tool integrations
214+
.adal/
215+
.agents/
216+
.augment/
217+
.bob/
218+
.codebuddy/
219+
.commandcode/
220+
.continue/
221+
.cortex/
222+
.crush/
223+
.factory/
224+
.goose/
225+
.iflow/
226+
.junie/
227+
.kilocode/
228+
.kiro/
229+
.kode/
230+
.mcpjam/
231+
.mux/
232+
.neovate/
233+
.openhands/
234+
.pi/
235+
.pochi/
236+
.qoder/
237+
.qwen/
238+
.roo/
239+
.trae/
240+
.vibe/
241+
.windsurf/
242+
.zencoder/

.mcp.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"mcpServers": {
3+
"dhee": {
4+
"command": "/Users/chitranjanmalviya/Desktop/Dhee/.venv-dhee/bin/dhee-mcp",
5+
"args": [],
6+
"env": {}
7+
}
8+
}
9+
}

MANIFEST.in

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
prune dhee/ui/web/node_modules
2+
prune engram-bus
3+
prune engram-bridge
4+
prune engram-enterprise
5+
prune engram-failure
6+
prune engram-heartbeat
7+
prune engram-identity
8+
prune engram-metamemory
9+
prune engram-policy
10+
11+
recursive-include dhee/ui/web/dist *

README.md

Lines changed: 127 additions & 158 deletions
Large diffs are not rendered by default.

dhee/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
# Default: CoreMemory (lightest, zero-config)
3333
Memory = CoreMemory
3434

35-
__version__ = "5.0.0"
35+
__version__ = "6.0.0"
3636
__all__ = [
3737
# Memory classes
3838
"Engram",

dhee/cli.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1827,6 +1827,30 @@ def build_parser() -> argparse.ArgumentParser:
18271827
# uninstall
18281828
sub.add_parser("uninstall", help="Remove ~/.dhee directory")
18291829

1830+
# ui — Sankhya web frontend
1831+
try:
1832+
from dhee.ui.cli import register as _register_ui
1833+
1834+
_register_ui(sub)
1835+
except Exception:
1836+
pass
1837+
1838+
# onboard — interactive provider + key wizard (called by install.sh)
1839+
try:
1840+
from dhee.cli_onboard import register as _register_onboard
1841+
1842+
_register_onboard(sub)
1843+
except Exception:
1844+
pass
1845+
1846+
# update — pull latest release + rebuild UI
1847+
try:
1848+
from dhee.cli_update import register as _register_update
1849+
1850+
_register_update(sub)
1851+
except Exception:
1852+
pass
1853+
18301854
return parser
18311855

18321856

@@ -1885,7 +1909,7 @@ def main() -> None:
18851909
parser.print_help()
18861910
sys.exit(0)
18871911

1888-
handler = COMMAND_MAP.get(args.command)
1912+
handler = COMMAND_MAP.get(args.command) or getattr(args, "func", None)
18891913
if handler:
18901914
try:
18911915
handler(args)

dhee/cli_config.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,11 @@ def save_config(config: Dict[str, Any]) -> None:
9494

9595

9696
def get_api_key(provider: str) -> Optional[str]:
97-
"""Read the API key from environment for the given provider."""
97+
"""Read the API key for the given provider.
98+
99+
Environment variables win for backward compatibility. If none are
100+
set, fall back to Dhee's encrypted local secret store.
101+
"""
98102
defaults = PROVIDER_DEFAULTS.get(provider, {})
99103
env_var = defaults.get("env_var")
100104
if env_var:
@@ -105,7 +109,12 @@ def get_api_key(provider: str) -> Optional[str]:
105109
key = os.environ.get(alt)
106110
if key:
107111
return key
108-
return None
112+
try:
113+
from dhee.secret_store import get_stored_api_key
114+
115+
return get_stored_api_key(provider)
116+
except Exception:
117+
return None
109118

110119

111120
def get_memory_instance(config: Optional[Dict[str, Any]] = None):

0 commit comments

Comments
 (0)