# ============================================================================ # dsh-agentmemory — static composition row (cordis.yml) # ---------------------------------------------------------------------------- # Backend-only bridge. One way to configure this plugin: edit the `config` of # its cordis.yml row — there is no browser Settings UI and no persisted config # file. Cordis validates the row against the plugin's Config schema and fills # defaults for anything omitted, so a minimal row is just {name}: # # - insert: # - id: agentmemory-bridge # name: "dsh-agentmemory" # # Where to put it: the host composition cordis.yml (deployment config), or a # per-session agent preset under ${DSH_HOME:-$HOME/.dsh}/.agent-presets//. # Rows are {id, name, config?}. # # `name` must be a RESOLVABLE PACKAGE NAME. Quote it if it starts with `@` # (a scoped package) — '@' is a YAML reserved scalar start. Install the # package into your profile first: # dsh plugin --profile web add /path/to/checkout # A pnpm link (file: dev checkout) works great for development. # # HMR / cache: host index.js edits take effect when the loader re-imports the # row — bump the name's version once (e.g. dsh-agentmemory@0.4.1 when the # current package version is 0.4.0) to bust Node's ESM cache. # # The daemon is a HARD dependency: the plugin checks livez on load and fails # loudly if it is unreachable, so start agentmemory (port 3111) first. # # Injection: with injectContext enabled the plugin injects the project-level # /context window ONCE per session (seeded at session/start and refreshed on # each user turn) as a sourced user/message via agent/pre-step; # injectSemantic (off by default) adds a per-user-message /smart-search recall # block; injectContextOnCompaction re-injects right before compaction. # ============================================================================ - insert: - id: agentmemory-bridge name: "dsh-agentmemory" config: baseUrl: http://localhost:3111 secret: "" # empty = no Authorization header at all. # To read the token from an env var, reference it here: # ${AGENTMEMORY_SECRET} unset → load fails # ${AGENTMEMORY_SECRET:default} unset → "default" # ${AGENTMEMORY_SECRET:?goes nowhere} unset → error "goes nowhere" # (a bare string is used verbatim as the Bearer token) enabled: true # observation bridge master switch enableTools: true # register memory_recall / memory_remember enableSessionStartEnd: true compactionBridge: true # persist compaction summaries via /remember agentId: dsh # identity stamped on written rows # (env AGENT_ID overrides this at load) curlTimeoutMs: 4000 observeBatchLimit: 20 maxContentChars: 4000 maxArgsChars: 2000 injectContext: true # project recall: inject /context once per session injectContextMaxChars: 6000 # cap project context window text injectContextOnCompaction: true # re-inject /context right before compaction injectSemantic: false # semantic recall: per-user-message /smart-search injection injectSemanticMaxResults: 8 # cap smart-search results folded into the block injectSemanticMaxChars: 3000 # cap rendered semantic recall text