recall-os 0.1.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.
- package/LICENSE +21 -0
- package/README.md +213 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +5213 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +5212 -0
- package/dist/index.js.map +1 -0
- package/examples/generated-flutter/.recall/config.json +17 -0
- package/examples/generated-flutter/.recall/hooks/pre-commit +9 -0
- package/examples/generated-flutter/AGENTS.md +15 -0
- package/examples/generated-flutter/CLAUDE.md +7 -0
- package/examples/generated-flutter/README.md +10 -0
- package/examples/generated-flutter/docs/00-product/BRD.md +9 -0
- package/examples/generated-flutter/docs/00-product/PRD.md +13 -0
- package/examples/generated-flutter/docs/10-architecture/ARCHITECTURE.md +11 -0
- package/examples/generated-flutter/docs/10-architecture/FILE_WRITE_POLICY.md +8 -0
- package/examples/generated-flutter/docs/10-architecture/MEMORY_ENGINE.md +16 -0
- package/examples/generated-flutter/docs/20-security/SECURITY_MODEL.md +11 -0
- package/examples/generated-flutter/docs/20-security/THREAT_MODEL.md +7 -0
- package/examples/generated-flutter/docs/30-modules/README.md +17 -0
- package/examples/generated-flutter/docs/40-features/README.md +22 -0
- package/examples/generated-flutter/docs/50-quality/QUALITY_GATES.md +11 -0
- package/examples/generated-flutter/docs/50-quality/TESTING_STRATEGY.md +5 -0
- package/examples/generated-flutter/docs/60-engineering/AI_AGENT_RULES.md +6 -0
- package/examples/generated-flutter/docs/60-engineering/ENGINEERING_STANDARDS.md +11 -0
- package/examples/generated-flutter/docs/adrs/README.md +5 -0
- package/examples/generated-flutter/docs/adrs/proposed/ADR-PROPOSED-flutter-platform.md +10 -0
- package/examples/generated-flutter/docs/ai/AI_AGENTS_SKILLS_MCP_STRATEGY.md +7 -0
- package/examples/generated-flutter/docs/ai/MCP_STRATEGY.md +6 -0
- package/examples/generated-flutter/docs/ai/RECALL_COMMANDS.md +133 -0
- package/examples/generated-flutter/docs/ai/presets/flutter-guidance.md +4 -0
- package/examples/generated-generic/.recall/config.json +17 -0
- package/examples/generated-generic/.recall/hooks/pre-commit +9 -0
- package/examples/generated-generic/AGENTS.md +15 -0
- package/examples/generated-generic/CLAUDE.md +7 -0
- package/examples/generated-generic/README.md +10 -0
- package/examples/generated-generic/docs/00-product/BRD.md +9 -0
- package/examples/generated-generic/docs/00-product/PRD.md +13 -0
- package/examples/generated-generic/docs/10-architecture/ARCHITECTURE.md +11 -0
- package/examples/generated-generic/docs/10-architecture/FILE_WRITE_POLICY.md +8 -0
- package/examples/generated-generic/docs/10-architecture/MEMORY_ENGINE.md +16 -0
- package/examples/generated-generic/docs/20-security/SECURITY_MODEL.md +11 -0
- package/examples/generated-generic/docs/20-security/THREAT_MODEL.md +7 -0
- package/examples/generated-generic/docs/30-modules/README.md +17 -0
- package/examples/generated-generic/docs/40-features/README.md +22 -0
- package/examples/generated-generic/docs/50-quality/QUALITY_GATES.md +11 -0
- package/examples/generated-generic/docs/50-quality/TESTING_STRATEGY.md +5 -0
- package/examples/generated-generic/docs/60-engineering/AI_AGENT_RULES.md +6 -0
- package/examples/generated-generic/docs/60-engineering/ENGINEERING_STANDARDS.md +11 -0
- package/examples/generated-generic/docs/adrs/README.md +5 -0
- package/examples/generated-generic/docs/ai/AI_AGENTS_SKILLS_MCP_STRATEGY.md +7 -0
- package/examples/generated-generic/docs/ai/MCP_STRATEGY.md +6 -0
- package/examples/generated-generic/docs/ai/RECALL_COMMANDS.md +133 -0
- package/examples/generated-generic/docs/ai/presets/generic-guidance.md +3 -0
- package/examples/generated-ios-swift/.recall/config.json +17 -0
- package/examples/generated-ios-swift/.recall/hooks/pre-commit +9 -0
- package/examples/generated-ios-swift/AGENTS.md +15 -0
- package/examples/generated-ios-swift/CLAUDE.md +7 -0
- package/examples/generated-ios-swift/README.md +10 -0
- package/examples/generated-ios-swift/docs/00-product/BRD.md +9 -0
- package/examples/generated-ios-swift/docs/00-product/PRD.md +13 -0
- package/examples/generated-ios-swift/docs/10-architecture/ARCHITECTURE.md +11 -0
- package/examples/generated-ios-swift/docs/10-architecture/FILE_WRITE_POLICY.md +8 -0
- package/examples/generated-ios-swift/docs/10-architecture/MEMORY_ENGINE.md +16 -0
- package/examples/generated-ios-swift/docs/20-security/SECURITY_MODEL.md +11 -0
- package/examples/generated-ios-swift/docs/20-security/THREAT_MODEL.md +7 -0
- package/examples/generated-ios-swift/docs/30-modules/README.md +17 -0
- package/examples/generated-ios-swift/docs/40-features/README.md +22 -0
- package/examples/generated-ios-swift/docs/50-quality/QUALITY_GATES.md +11 -0
- package/examples/generated-ios-swift/docs/50-quality/TESTING_STRATEGY.md +5 -0
- package/examples/generated-ios-swift/docs/60-engineering/AI_AGENT_RULES.md +6 -0
- package/examples/generated-ios-swift/docs/60-engineering/ENGINEERING_STANDARDS.md +11 -0
- package/examples/generated-ios-swift/docs/adrs/README.md +5 -0
- package/examples/generated-ios-swift/docs/adrs/proposed/ADR-PROPOSED-ios-swift-architecture-mvvm.md +23 -0
- package/examples/generated-ios-swift/docs/adrs/proposed/ADR-PROPOSED-ios-swift-concurrency-async.md +23 -0
- package/examples/generated-ios-swift/docs/adrs/proposed/ADR-PROPOSED-ios-swift-persistence-swiftdata.md +23 -0
- package/examples/generated-ios-swift/docs/adrs/proposed/ADR-PROPOSED-ios-swift-platform.md +24 -0
- package/examples/generated-ios-swift/docs/adrs/proposed/ADR-PROPOSED-ios-swift-ui-swiftui.md +23 -0
- package/examples/generated-ios-swift/docs/ai/AI_AGENTS_SKILLS_MCP_STRATEGY.md +7 -0
- package/examples/generated-ios-swift/docs/ai/MCP_STRATEGY.md +6 -0
- package/examples/generated-ios-swift/docs/ai/RECALL_COMMANDS.md +133 -0
- package/examples/generated-ios-swift/docs/ai/presets/ios-swift-guidance.md +30 -0
- package/examples/generated-kotlin-android/.recall/config.json +17 -0
- package/examples/generated-kotlin-android/.recall/hooks/pre-commit +9 -0
- package/examples/generated-kotlin-android/AGENTS.md +15 -0
- package/examples/generated-kotlin-android/CLAUDE.md +7 -0
- package/examples/generated-kotlin-android/README.md +11 -0
- package/examples/generated-kotlin-android/docs/00-product/BRD.md +9 -0
- package/examples/generated-kotlin-android/docs/00-product/PRD.md +13 -0
- package/examples/generated-kotlin-android/docs/10-architecture/ARCHITECTURE.md +11 -0
- package/examples/generated-kotlin-android/docs/10-architecture/FILE_WRITE_POLICY.md +8 -0
- package/examples/generated-kotlin-android/docs/10-architecture/MEMORY_ENGINE.md +16 -0
- package/examples/generated-kotlin-android/docs/20-security/SECURITY_MODEL.md +11 -0
- package/examples/generated-kotlin-android/docs/20-security/THREAT_MODEL.md +7 -0
- package/examples/generated-kotlin-android/docs/30-modules/README.md +17 -0
- package/examples/generated-kotlin-android/docs/40-features/README.md +22 -0
- package/examples/generated-kotlin-android/docs/50-quality/QUALITY_GATES.md +11 -0
- package/examples/generated-kotlin-android/docs/50-quality/TESTING_STRATEGY.md +5 -0
- package/examples/generated-kotlin-android/docs/60-engineering/AI_AGENT_RULES.md +6 -0
- package/examples/generated-kotlin-android/docs/60-engineering/ENGINEERING_STANDARDS.md +11 -0
- package/examples/generated-kotlin-android/docs/adrs/README.md +5 -0
- package/examples/generated-kotlin-android/docs/adrs/proposed/ADR-PROPOSED-kotlin-android-architecture-mvvm.md +23 -0
- package/examples/generated-kotlin-android/docs/adrs/proposed/ADR-PROPOSED-kotlin-android-async-coroutines.md +23 -0
- package/examples/generated-kotlin-android/docs/adrs/proposed/ADR-PROPOSED-kotlin-android-di-hilt.md +23 -0
- package/examples/generated-kotlin-android/docs/adrs/proposed/ADR-PROPOSED-kotlin-android-persistence-room.md +23 -0
- package/examples/generated-kotlin-android/docs/adrs/proposed/ADR-PROPOSED-kotlin-android-platform.md +24 -0
- package/examples/generated-kotlin-android/docs/adrs/proposed/ADR-PROPOSED-kotlin-android-ui-compose.md +23 -0
- package/examples/generated-kotlin-android/docs/ai/AI_AGENTS_SKILLS_MCP_STRATEGY.md +7 -0
- package/examples/generated-kotlin-android/docs/ai/MCP_STRATEGY.md +6 -0
- package/examples/generated-kotlin-android/docs/ai/RECALL_COMMANDS.md +133 -0
- package/examples/generated-kotlin-android/docs/ai/presets/kotlin-android-guidance.md +30 -0
- package/examples/generated-nextjs/.recall/config.json +17 -0
- package/examples/generated-nextjs/.recall/hooks/pre-commit +9 -0
- package/examples/generated-nextjs/AGENTS.md +15 -0
- package/examples/generated-nextjs/CLAUDE.md +7 -0
- package/examples/generated-nextjs/README.md +10 -0
- package/examples/generated-nextjs/docs/00-product/BRD.md +9 -0
- package/examples/generated-nextjs/docs/00-product/PRD.md +13 -0
- package/examples/generated-nextjs/docs/10-architecture/ARCHITECTURE.md +11 -0
- package/examples/generated-nextjs/docs/10-architecture/FILE_WRITE_POLICY.md +8 -0
- package/examples/generated-nextjs/docs/10-architecture/MEMORY_ENGINE.md +16 -0
- package/examples/generated-nextjs/docs/20-security/SECURITY_MODEL.md +11 -0
- package/examples/generated-nextjs/docs/20-security/THREAT_MODEL.md +7 -0
- package/examples/generated-nextjs/docs/30-modules/README.md +17 -0
- package/examples/generated-nextjs/docs/40-features/README.md +22 -0
- package/examples/generated-nextjs/docs/50-quality/QUALITY_GATES.md +11 -0
- package/examples/generated-nextjs/docs/50-quality/TESTING_STRATEGY.md +5 -0
- package/examples/generated-nextjs/docs/60-engineering/AI_AGENT_RULES.md +6 -0
- package/examples/generated-nextjs/docs/60-engineering/ENGINEERING_STANDARDS.md +11 -0
- package/examples/generated-nextjs/docs/adrs/README.md +5 -0
- package/examples/generated-nextjs/docs/adrs/proposed/ADR-PROPOSED-nextjs-data-layer.md +23 -0
- package/examples/generated-nextjs/docs/adrs/proposed/ADR-PROPOSED-nextjs-framework.md +24 -0
- package/examples/generated-nextjs/docs/adrs/proposed/ADR-PROPOSED-nextjs-routing-app-router.md +23 -0
- package/examples/generated-nextjs/docs/adrs/proposed/ADR-PROPOSED-nextjs-styling-tailwind.md +23 -0
- package/examples/generated-nextjs/docs/adrs/proposed/ADR-PROPOSED-nextjs-testing.md +23 -0
- package/examples/generated-nextjs/docs/ai/AI_AGENTS_SKILLS_MCP_STRATEGY.md +7 -0
- package/examples/generated-nextjs/docs/ai/MCP_STRATEGY.md +6 -0
- package/examples/generated-nextjs/docs/ai/RECALL_COMMANDS.md +133 -0
- package/examples/generated-nextjs/docs/ai/presets/nextjs-guidance.md +30 -0
- package/examples/generated-python-fastapi/.recall/config.json +17 -0
- package/examples/generated-python-fastapi/.recall/hooks/pre-commit +9 -0
- package/examples/generated-python-fastapi/AGENTS.md +15 -0
- package/examples/generated-python-fastapi/CLAUDE.md +7 -0
- package/examples/generated-python-fastapi/README.md +11 -0
- package/examples/generated-python-fastapi/docs/00-product/BRD.md +9 -0
- package/examples/generated-python-fastapi/docs/00-product/PRD.md +13 -0
- package/examples/generated-python-fastapi/docs/10-architecture/ARCHITECTURE.md +11 -0
- package/examples/generated-python-fastapi/docs/10-architecture/FILE_WRITE_POLICY.md +8 -0
- package/examples/generated-python-fastapi/docs/10-architecture/MEMORY_ENGINE.md +16 -0
- package/examples/generated-python-fastapi/docs/20-security/SECURITY_MODEL.md +11 -0
- package/examples/generated-python-fastapi/docs/20-security/THREAT_MODEL.md +7 -0
- package/examples/generated-python-fastapi/docs/30-modules/README.md +17 -0
- package/examples/generated-python-fastapi/docs/40-features/README.md +22 -0
- package/examples/generated-python-fastapi/docs/50-quality/QUALITY_GATES.md +11 -0
- package/examples/generated-python-fastapi/docs/50-quality/TESTING_STRATEGY.md +5 -0
- package/examples/generated-python-fastapi/docs/60-engineering/AI_AGENT_RULES.md +6 -0
- package/examples/generated-python-fastapi/docs/60-engineering/ENGINEERING_STANDARDS.md +11 -0
- package/examples/generated-python-fastapi/docs/adrs/README.md +5 -0
- package/examples/generated-python-fastapi/docs/adrs/proposed/ADR-PROPOSED-python-fastapi-cache-redis.md +23 -0
- package/examples/generated-python-fastapi/docs/adrs/proposed/ADR-PROPOSED-python-fastapi-database-postgres.md +23 -0
- package/examples/generated-python-fastapi/docs/adrs/proposed/ADR-PROPOSED-python-fastapi-framework.md +23 -0
- package/examples/generated-python-fastapi/docs/adrs/proposed/ADR-PROPOSED-python-fastapi-testing-pytest.md +23 -0
- package/examples/generated-python-fastapi/docs/adrs/proposed/ADR-PROPOSED-python-fastapi-validation-pydantic.md +23 -0
- package/examples/generated-python-fastapi/docs/ai/AI_AGENTS_SKILLS_MCP_STRATEGY.md +7 -0
- package/examples/generated-python-fastapi/docs/ai/MCP_STRATEGY.md +6 -0
- package/examples/generated-python-fastapi/docs/ai/RECALL_COMMANDS.md +133 -0
- package/examples/generated-python-fastapi/docs/ai/presets/python-fastapi-guidance.md +31 -0
- package/package.json +65 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Engineering Standards
|
|
2
|
+
|
|
3
|
+
Repository rules override model preferences.
|
|
4
|
+
|
|
5
|
+
Baseline rules:
|
|
6
|
+
|
|
7
|
+
- Never commit secrets.
|
|
8
|
+
- Keep changes scoped.
|
|
9
|
+
- Update docs when behavior or architecture changes.
|
|
10
|
+
- Add tests or document why tests were skipped.
|
|
11
|
+
- Do not claim completion without evidence.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Proposed ADR: Use Redis
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
Proposed
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
The service may need caching, rate limiting, or a task queue backend.
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
|
|
13
|
+
Consider Redis for caching and background work, awaiting human acceptance.
|
|
14
|
+
|
|
15
|
+
## Alternatives Considered
|
|
16
|
+
|
|
17
|
+
- In-process caching only.
|
|
18
|
+
- A managed queue service.
|
|
19
|
+
|
|
20
|
+
## Consequences
|
|
21
|
+
|
|
22
|
+
- Fast shared cache and queue backend.
|
|
23
|
+
- Adds an operational dependency to run and monitor.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Proposed ADR: Use PostgreSQL with SQLAlchemy
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
Proposed
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
The service needs a relational database and a migration strategy.
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
|
|
13
|
+
Consider PostgreSQL with SQLAlchemy and Alembic migrations, awaiting human acceptance.
|
|
14
|
+
|
|
15
|
+
## Alternatives Considered
|
|
16
|
+
|
|
17
|
+
- An async ORM such as Tortoise or SQLModel only.
|
|
18
|
+
- Raw SQL with a lightweight driver.
|
|
19
|
+
|
|
20
|
+
## Consequences
|
|
21
|
+
|
|
22
|
+
- Mature tooling and explicit migrations.
|
|
23
|
+
- Requires session and connection management discipline.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Proposed ADR: Use FastAPI
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
Proposed
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
The service needs a Python web framework for an async API.
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
|
|
13
|
+
Consider FastAPI as the web framework, awaiting human acceptance.
|
|
14
|
+
|
|
15
|
+
## Alternatives Considered
|
|
16
|
+
|
|
17
|
+
- Flask.
|
|
18
|
+
- Django REST Framework.
|
|
19
|
+
|
|
20
|
+
## Consequences
|
|
21
|
+
|
|
22
|
+
- Async support and automatic OpenAPI docs.
|
|
23
|
+
- Requires comfort with type hints and dependency injection.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Proposed ADR: Use pytest
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
Proposed
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
The service needs a test framework and HTTP testing approach.
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
|
|
13
|
+
Consider pytest with httpx for API tests, awaiting human acceptance.
|
|
14
|
+
|
|
15
|
+
## Alternatives Considered
|
|
16
|
+
|
|
17
|
+
- unittest.
|
|
18
|
+
- nose-style runners.
|
|
19
|
+
|
|
20
|
+
## Consequences
|
|
21
|
+
|
|
22
|
+
- Concise fixtures and rich plugins.
|
|
23
|
+
- Teams must standardize fixture and database setup.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Proposed ADR: Use Pydantic
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
Proposed
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
The service needs request validation and typed configuration.
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
|
|
13
|
+
Consider Pydantic v2 models for validation and settings, awaiting human acceptance.
|
|
14
|
+
|
|
15
|
+
## Alternatives Considered
|
|
16
|
+
|
|
17
|
+
- Marshmallow.
|
|
18
|
+
- Hand-written validation.
|
|
19
|
+
|
|
20
|
+
## Consequences
|
|
21
|
+
|
|
22
|
+
- Strong typing at the boundary and clear settings.
|
|
23
|
+
- Adds Pydantic to the dependency surface.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# Recall OS Commands
|
|
2
|
+
|
|
3
|
+
This document records the Recall OS commands available to humans and AI agents.
|
|
4
|
+
|
|
5
|
+
## Completion Gate
|
|
6
|
+
|
|
7
|
+
Before claiming implementation work is complete, run:
|
|
8
|
+
|
|
9
|
+
```txt
|
|
10
|
+
pnpm test:run
|
|
11
|
+
pnpm typecheck
|
|
12
|
+
recall doctor
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
If `recall doctor` reports errors, fix them or report why they cannot be fixed. If it reports
|
|
16
|
+
warnings, address them or record why they are acceptable.
|
|
17
|
+
|
|
18
|
+
Package binary behavior is covered by binary integration tests.
|
|
19
|
+
|
|
20
|
+
## Commands
|
|
21
|
+
|
|
22
|
+
### `recall init`
|
|
23
|
+
|
|
24
|
+
Initialize neutral repository memory.
|
|
25
|
+
|
|
26
|
+
Options:
|
|
27
|
+
|
|
28
|
+
- `--preset <id>`: apply optional preset guidance and proposed decisions.
|
|
29
|
+
- `--dry-run`: show planned writes without writing files.
|
|
30
|
+
- `--force`: overwrite existing files explicitly.
|
|
31
|
+
- `--reinit`: required with `--force` to overwrite an existing Recall OS installation (a directory
|
|
32
|
+
that already has `.recall/config.json`). Without it, `--force` refuses, protecting existing
|
|
33
|
+
repository memory.
|
|
34
|
+
|
|
35
|
+
Init also generates a tracked pre-commit hook at `.recall/hooks/pre-commit` that runs
|
|
36
|
+
`recall doctor` plus any `preCommitGates` in `.recall/config.json`. Init proposes, but does not run,
|
|
37
|
+
the activation command `git config core.hooksPath .recall/hooks`.
|
|
38
|
+
|
|
39
|
+
### `recall adopt`
|
|
40
|
+
|
|
41
|
+
Inspect an existing repository through read-only manifest and marker files, then write a proposed
|
|
42
|
+
adoption report and proposed framework ADRs for human review. Adopt never executes repository code
|
|
43
|
+
and never produces accepted memory.
|
|
44
|
+
|
|
45
|
+
Options:
|
|
46
|
+
|
|
47
|
+
- `--dry-run`: show planned writes without writing files.
|
|
48
|
+
- `--force`: overwrite existing files explicitly.
|
|
49
|
+
|
|
50
|
+
### `recall skill create <name>`
|
|
51
|
+
|
|
52
|
+
Generate a portable AI agent skill as `SKILL.md` for both Claude Code (`.claude/skills/`) and the
|
|
53
|
+
portable Agent Skills target (`.agents/skills/`). Known names use the built-in catalog; unknown
|
|
54
|
+
names produce a valid skeleton. Generated skills contain no scripts.
|
|
55
|
+
|
|
56
|
+
Options:
|
|
57
|
+
|
|
58
|
+
- `--dry-run`: show planned writes without writing files.
|
|
59
|
+
- `--force`: overwrite existing files explicitly.
|
|
60
|
+
|
|
61
|
+
### `recall skill list`
|
|
62
|
+
|
|
63
|
+
List the built-in catalog skills.
|
|
64
|
+
|
|
65
|
+
### `recall mcp add <server>`
|
|
66
|
+
|
|
67
|
+
Generate offline, proposed memory for an MCP server (for example `figma`) as
|
|
68
|
+
`docs/ai/mcp/<server>.md` plus a proposed adoption ADR. Recall OS never connects to the MCP server
|
|
69
|
+
or makes network calls; the agent records durable MCP-derived context into the generated memory for
|
|
70
|
+
human review. It also installs a `capture-mcp-context` agent skill that prompts the agent to record
|
|
71
|
+
that context.
|
|
72
|
+
|
|
73
|
+
Options:
|
|
74
|
+
|
|
75
|
+
- `--dry-run`: show planned writes without writing files.
|
|
76
|
+
- `--force`: overwrite existing files explicitly.
|
|
77
|
+
|
|
78
|
+
### `recall preset list`
|
|
79
|
+
|
|
80
|
+
List built-in presets.
|
|
81
|
+
|
|
82
|
+
### `recall feature create <name>`
|
|
83
|
+
|
|
84
|
+
Create feature memory docs under the configured features directory.
|
|
85
|
+
|
|
86
|
+
Options:
|
|
87
|
+
|
|
88
|
+
- `--dry-run`: show planned writes without writing files.
|
|
89
|
+
- `--force`: overwrite existing files explicitly.
|
|
90
|
+
|
|
91
|
+
### `recall adr create <title>`
|
|
92
|
+
|
|
93
|
+
Create a proposed ADR under the configured ADR directory.
|
|
94
|
+
|
|
95
|
+
Options:
|
|
96
|
+
|
|
97
|
+
- `--dry-run`: show planned writes without writing files.
|
|
98
|
+
- `--force`: overwrite existing files explicitly.
|
|
99
|
+
|
|
100
|
+
### `recall adr accept <name>`
|
|
101
|
+
|
|
102
|
+
Promote a proposed ADR to accepted repository memory. A proposal under
|
|
103
|
+
`docs/adrs/proposed/ADR-PROPOSED-<slug>.md` becomes a numbered, accepted `ADR-####-<slug>.md` and
|
|
104
|
+
the proposal is removed; an existing numbered Proposed ADR is accepted in place.
|
|
105
|
+
|
|
106
|
+
Options:
|
|
107
|
+
|
|
108
|
+
- `--dry-run`: show planned writes without writing files.
|
|
109
|
+
- `--force`: overwrite existing files explicitly.
|
|
110
|
+
|
|
111
|
+
### `recall module create <name>`
|
|
112
|
+
|
|
113
|
+
Create module memory docs under the configured modules directory.
|
|
114
|
+
|
|
115
|
+
Options:
|
|
116
|
+
|
|
117
|
+
- `--dry-run`: show planned writes without writing files.
|
|
118
|
+
- `--force`: overwrite existing files explicitly.
|
|
119
|
+
|
|
120
|
+
### `recall doctor`
|
|
121
|
+
|
|
122
|
+
Check whether repository memory is structurally healthy enough for AI-assisted work, whether basic
|
|
123
|
+
engineering evidence is present, and whether memory references decisions that exist and are
|
|
124
|
+
accepted.
|
|
125
|
+
|
|
126
|
+
Doctor also runs deterministic drift checks: feature or module memory that references a missing ADR
|
|
127
|
+
is an error, and memory that references a not-yet-accepted ADR is a warning.
|
|
128
|
+
|
|
129
|
+
Exit codes:
|
|
130
|
+
|
|
131
|
+
- `0`: healthy
|
|
132
|
+
- `1`: warnings only
|
|
133
|
+
- `2`: errors
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Python FastAPI Preset Guidance
|
|
2
|
+
|
|
3
|
+
This guidance is proposed, not accepted. Convert any choice you adopt into an accepted ADR in
|
|
4
|
+
repository memory. Until then, treat everything here as a recommendation awaiting human review.
|
|
5
|
+
|
|
6
|
+
## Decision forks this stack forces
|
|
7
|
+
|
|
8
|
+
- Web framework: FastAPI vs Flask vs Django REST.
|
|
9
|
+
- Database and access: PostgreSQL with SQLAlchemy and Alembic vs an async ORM vs raw SQL.
|
|
10
|
+
- Validation and settings: Pydantic v2 models and settings.
|
|
11
|
+
- Testing: pytest with httpx vs unittest.
|
|
12
|
+
- Background work and caching: Redis, task queues, and async workers.
|
|
13
|
+
|
|
14
|
+
## Recommended structure (proposed)
|
|
15
|
+
|
|
16
|
+
- A layered layout: `api/` routers, `services/` logic, `repositories/` data access, `models/`
|
|
17
|
+
schemas.
|
|
18
|
+
- Dependency injection through FastAPI dependencies.
|
|
19
|
+
- Configuration via Pydantic settings loaded from environment variables.
|
|
20
|
+
|
|
21
|
+
## Testing (proposed)
|
|
22
|
+
|
|
23
|
+
- pytest with the FastAPI test client or httpx `AsyncClient`.
|
|
24
|
+
- A disposable test database and transactional fixtures.
|
|
25
|
+
- Contract tests for request and response schemas.
|
|
26
|
+
|
|
27
|
+
## Security considerations (proposed)
|
|
28
|
+
|
|
29
|
+
- Load secrets from environment or a secret manager, never from source.
|
|
30
|
+
- Validate and constrain all input with Pydantic models.
|
|
31
|
+
- Scope authentication and authorization at the dependency layer.
|
package/package.json
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "recall-os",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Architecture-neutral repository memory for AI-assisted software teams.",
|
|
5
|
+
"packageManager": "pnpm@10.12.3",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"author": "Karthick Ramachandran",
|
|
9
|
+
"homepage": "https://github.com/Karthick-Ramachandran/recall-os#readme",
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+https://github.com/Karthick-Ramachandran/recall-os.git"
|
|
13
|
+
},
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/Karthick-Ramachandran/recall-os/issues"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"repository-memory",
|
|
19
|
+
"engineering-memory",
|
|
20
|
+
"adr",
|
|
21
|
+
"architecture-decision-records",
|
|
22
|
+
"ai-agents",
|
|
23
|
+
"agent-skills",
|
|
24
|
+
"governance",
|
|
25
|
+
"drift-detection",
|
|
26
|
+
"cli",
|
|
27
|
+
"local-first"
|
|
28
|
+
],
|
|
29
|
+
"bin": {
|
|
30
|
+
"recall": "./dist/cli.js"
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"dist",
|
|
34
|
+
"README.md",
|
|
35
|
+
"LICENSE",
|
|
36
|
+
"examples"
|
|
37
|
+
],
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": ">=20"
|
|
40
|
+
},
|
|
41
|
+
"scripts": {
|
|
42
|
+
"build": "tsup",
|
|
43
|
+
"lint": "eslint .",
|
|
44
|
+
"format:check": "prettier --check \"*.json\" \"*.js\" \"*.ts\" \".github/**/*.yml\" \"src/**/*.ts\" \"tests/**/*.ts\" \"scripts/**/*.mjs\" \"README.md\" \"examples/**/*.md\" \"docs/40-features/F-013-recall-os-package-release/**/*.md\" \"docs/30-modules/package-release/**/*.md\"",
|
|
45
|
+
"pack:check": "node scripts/check-package.mjs",
|
|
46
|
+
"test": "vitest",
|
|
47
|
+
"test:run": "vitest run",
|
|
48
|
+
"typecheck": "tsc --noEmit",
|
|
49
|
+
"prepublishOnly": "pnpm build && pnpm pack:check"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@eslint/js": "^10.0.1",
|
|
53
|
+
"@types/node": "^24.0.0",
|
|
54
|
+
"eslint": "^10.5.0",
|
|
55
|
+
"prettier": "^3.8.4",
|
|
56
|
+
"tsup": "^8.5.1",
|
|
57
|
+
"typescript": "^5.8.0",
|
|
58
|
+
"typescript-eslint": "^8.61.1",
|
|
59
|
+
"vitest": "^3.2.0"
|
|
60
|
+
},
|
|
61
|
+
"dependencies": {
|
|
62
|
+
"commander": "^15.0.0",
|
|
63
|
+
"zod": "^4.4.3"
|
|
64
|
+
}
|
|
65
|
+
}
|