6.5 KiB
Context Memory API Reference
Pure API documentation for storage_obsidian.py functions.
Import
from skills.context_memory.utils.storage_obsidian import (
store_file_analysis,
store_pattern,
store_decision,
recall_query,
recall_file,
get_memory_stats
)
store_file_analysis()
Store analysis of a source file.
Signature:
def store_file_analysis(
file_path: str,
summary: str,
purpose: str = None,
complexity: str = 'moderate',
key_functions: List[str] = None,
dependencies: List[str] = None,
notes: str = None
) -> str
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
file_path |
str | Yes | Relative path from project root |
summary |
str | Yes | Brief file description |
purpose |
str | No | Detailed explanation |
complexity |
str | No | simple, moderate, or complex |
key_functions |
List[str] | No | Important function names |
dependencies |
List[str] | No | External libraries used |
notes |
str | No | Additional context |
Returns: str - Path to created markdown file
Example:
path = store_file_analysis(
file_path='src/auth/jwt.ts',
summary='JWT token validation and refresh',
purpose='Handles authentication token lifecycle',
complexity='moderate',
key_functions=['validateToken', 'refreshToken'],
dependencies=['jsonwebtoken', 'crypto']
)
Output Location: {vault}/PRISM-Memory/Files/{file_path}.md
store_pattern()
Store reusable code pattern.
Signature:
def store_pattern(
name: str,
description: str,
category: str = 'general',
example_path: str = None,
code_example: str = None,
when_to_use: str = None
) -> str
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
str | Yes | Pattern name |
description |
str | Yes | What pattern does |
category |
str | No | Pattern type (e.g., architecture, testing) |
example_path |
str | No | File where pattern is used |
code_example |
str | No | Code snippet |
when_to_use |
str | No | Usage guidance |
Returns: str - Path to created markdown file
Example:
path = store_pattern(
name='Repository Pattern',
description='Encapsulates data access in repository classes',
category='architecture',
example_path='src/repos/user-repository.ts'
)
Output Location: {vault}/PRISM-Memory/Patterns/{category}/{name-slugified}.md
store_decision()
Record architectural decision.
Signature:
def store_decision(
title: str,
decision: str,
context: str,
alternatives: str = None,
consequences: str = None
) -> str
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
title |
str | Yes | Decision title |
decision |
str | Yes | What was decided |
context |
str | Yes | Why it matters |
alternatives |
str | No | Options considered |
consequences |
str | No | Impact/tradeoffs |
Returns: str - Path to created markdown file
Example:
path = store_decision(
title='Use JWT for Authentication',
decision='Implement stateless JWT tokens',
context='Need horizontal scaling',
alternatives='Considered Redis sessions',
consequences='Tokens cannot be revoked until expiry'
)
Output Location: {vault}/PRISM-Memory/Decisions/{YYYYMMDD}-{title-slugified}.md
recall_query()
Search all stored context.
Signature:
def recall_query(
query: str,
limit: int = 10,
types: List[str] = None
) -> List[Dict]
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
query |
str | Yes | Search terms |
limit |
int | No | Max results (default: 10) |
types |
List[str] | No | Filter by type: ['file', 'pattern', 'decision'] |
Returns: List[Dict] - Matching notes
Result Structure:
[
{
'type': 'file', # file|pattern|decision
'path': 'src/auth/jwt.ts',
'title': 'JWT Handler',
'summary': 'JWT token validation...',
'content': '...', # Full markdown
'file_path': 'docs/memory/.../jwt.md'
}
]
Example:
results = recall_query('authentication JWT', limit=5)
for r in results:
print(f"{r['type']}: {r['path']}")
recall_file()
Get analysis for specific file.
Signature:
def recall_file(file_path: str) -> Optional[Dict]
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
file_path |
str | Yes | Relative path from project root |
Returns: Optional[Dict] - File analysis or None
Result Structure:
{
'path': 'src/auth/jwt.ts',
'summary': '...',
'purpose': '...',
'complexity': 'moderate',
'key_functions': [...],
'dependencies': [...],
'last_analyzed': '2025-01-05'
}
Example:
analysis = recall_file('src/auth/jwt.ts')
if analysis:
print(f"Complexity: {analysis['complexity']}")
get_memory_stats()
Get vault statistics.
Signature:
def get_memory_stats() -> Dict
Parameters: None
Returns: Dict - Statistics
Result Structure:
{
'files_analyzed': 42,
'patterns_stored': 15,
'decisions_recorded': 8,
'total_notes': 65,
'vault_path': '/path/to/vault'
}
Example:
stats = get_memory_stats()
print(f"Total notes: {stats['total_notes']}")
Configuration
Vault location configured via:
- Environment variable:
PRISM_OBSIDIAN_VAULT - core-config.yaml:
memory.vault - Default:
../docs/memory
Path Resolution:
- Relative paths: resolved from
.prism/folder - Absolute paths: used as-is
Example:
# Relative (from .prism/)
PRISM_OBSIDIAN_VAULT=../docs/memory
# → C:\Dev\docs\memory
# Absolute
PRISM_OBSIDIAN_VAULT=C:\vault
# → C:\vault
Markdown Format
All notes use YAML frontmatter:
---
type: file_analysis
path: src/auth/jwt.ts
analyzed_at: 2025-01-05
complexity: moderate
tags:
- authentication
---
# File Name
Content...
Error Handling
Functions return None or raise exceptions:
try:
result = recall_file('missing.ts')
if result is None:
print("Not found")
except Exception as e:
print(f"Error: {e}")
Version: 1.7.1