@laitszkin/apollo-toolkit 2.13.1 → 2.13.2
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/AGENTS.md +1 -1
- package/CHANGELOG.md +6 -0
- package/codex/codex-memory-manager/README.md +12 -1
- package/codex/codex-memory-manager/SKILL.md +33 -18
- package/codex/codex-memory-manager/agents/openai.yaml +1 -1
- package/codex/codex-memory-manager/references/templates/memory-file.md +21 -0
- package/codex/codex-memory-manager/tests/test_memory_template.py +37 -0
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -16,7 +16,7 @@ This repository enables users to install and run a curated set of reusable agent
|
|
|
16
16
|
- Users can investigate application logs, slice them to precise time windows, search by keyword or regex, and produce evidence-backed root-cause findings.
|
|
17
17
|
- Users can answer repository-backed questions with additional web research when needed.
|
|
18
18
|
- Users can commit and push local changes without performing version or release work.
|
|
19
|
-
- Users can manage Codex user-preference memory by reviewing the last 24 hours of chats, storing
|
|
19
|
+
- Users can manage Codex user-preference memory by reviewing the last 24 hours of chats, storing reusable preference-first memory documents under `~/.codex/memory`, and syncing a memory index into `~/.codex/AGENTS.md`.
|
|
20
20
|
- Users can research a topic deeply and produce evidence-based deliverables.
|
|
21
21
|
- Users can research the latest completed market week and produce a PDF watchlist of tradeable instruments for the coming week.
|
|
22
22
|
- Users can turn a marked weekly finance PDF into a concise evidence-based financial event report.
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,12 @@ All notable changes to this repository are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [v2.13.2] - 2026-04-05
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
- Update `codex-memory-manager` to require reusable, preference-first memory files built around a normalized `Scope / Preferences / Maintenance / Evidence notes` template instead of project- or incident-specific memory logs.
|
|
11
|
+
- Add a bundled memory-file template reference plus focused template-structure tests so future updates keep the new memory format and de-projectification rules aligned.
|
|
12
|
+
|
|
7
13
|
## [v2.13.1] - 2026-04-05
|
|
8
14
|
|
|
9
15
|
### Fixed
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
# codex-memory-manager
|
|
2
2
|
|
|
3
|
-
Persist durable user preferences from recent Codex conversations into
|
|
3
|
+
Persist durable user preferences from recent Codex conversations into reusable, preference-first memory files and a synchronized AGENTS index.
|
|
4
4
|
|
|
5
5
|
## Highlights
|
|
6
6
|
|
|
7
7
|
- Reads the last 24 hours of `~/.codex/sessions` and `~/.codex/archived_sessions`
|
|
8
8
|
- Stores categorized preference memory under `~/.codex/memory/*.md`
|
|
9
|
+
- Uses a normalized `Scope / Preferences / Maintenance / Evidence notes` memory template
|
|
9
10
|
- Keeps a normalized memory index at the end of `~/.codex/AGENTS.md`
|
|
10
11
|
- Adds new index entries automatically when new preference categories appear
|
|
11
12
|
- Preserves the existing language already used in `~/.codex/AGENTS.md`
|
|
@@ -19,10 +20,14 @@ Persist durable user preferences from recent Codex conversations into categorize
|
|
|
19
20
|
├── LICENSE
|
|
20
21
|
├── agents/
|
|
21
22
|
│ └── openai.yaml
|
|
23
|
+
├── references/
|
|
24
|
+
│ └── templates/
|
|
25
|
+
│ └── memory-file.md
|
|
22
26
|
├── scripts/
|
|
23
27
|
│ ├── extract_recent_conversations.py
|
|
24
28
|
│ └── sync_memory_index.py
|
|
25
29
|
└── tests/
|
|
30
|
+
├── test_memory_template.py
|
|
26
31
|
├── test_extract_recent_conversations.py
|
|
27
32
|
└── test_sync_memory_index.py
|
|
28
33
|
```
|
|
@@ -49,6 +54,12 @@ Refresh the AGENTS memory index after updating the memory files:
|
|
|
49
54
|
python3 scripts/sync_memory_index.py --agents-file ~/.codex/AGENTS.md --memory-dir ~/.codex/memory
|
|
50
55
|
```
|
|
51
56
|
|
|
57
|
+
Use the bundled memory template when creating or refactoring category files:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
sed -n '1,200p' references/templates/memory-file.md
|
|
61
|
+
```
|
|
62
|
+
|
|
52
63
|
## License
|
|
53
64
|
|
|
54
65
|
MIT. See `LICENSE` for details.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: codex-memory-manager
|
|
3
|
-
description: Manage persistent Codex user-preference memory from recent conversation history. Use when users ask to learn from the last 24 hours of chats, update `~/.codex/AGENTS.md`, maintain `~/.codex/memory/*.md`, or sync new preference categories discovered in `~/.codex/sessions` and `~/.codex/archived_sessions`.
|
|
3
|
+
description: Manage persistent Codex user-preference memory from recent conversation history. Use when users ask to learn from the last 24 hours of chats, update `~/.codex/AGENTS.md`, maintain reusable preference-first memory under `~/.codex/memory/*.md`, or sync new preference categories discovered in `~/.codex/sessions` and `~/.codex/archived_sessions`.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Codex Memory Manager
|
|
@@ -16,7 +16,7 @@ description: Manage persistent Codex user-preference memory from recent conversa
|
|
|
16
16
|
|
|
17
17
|
- Evidence: Derive memory only from actual recent Codex conversations, and keep each stored preference tied to concrete chat evidence.
|
|
18
18
|
- Execution: Extract the last 24 hours first, classify durable user preferences into memory files, then refresh the AGENTS index section.
|
|
19
|
-
- Quality: Ignore one-off instructions, avoid duplicating categories,
|
|
19
|
+
- Quality: Ignore one-off instructions, avoid duplicating categories, preserve the existing language and tone already used in `~/.codex/AGENTS.md`, and keep memory entries cross-project reusable, preference-heavy, and light on repository- or incident-specific detail.
|
|
20
20
|
- Output: Report which sessions were reviewed, which memory categories were created or updated, and whether the AGENTS index changed.
|
|
21
21
|
|
|
22
22
|
## Goal
|
|
@@ -59,31 +59,38 @@ python3 ~/.codex/skills/codex-memory-manager/scripts/extract_recent_conversation
|
|
|
59
59
|
|
|
60
60
|
- Store memory files under `~/.codex/memory/*.md`.
|
|
61
61
|
- Reuse an existing category file when the new preference clearly belongs there.
|
|
62
|
-
- Create a new category file when
|
|
62
|
+
- Create a new category file only when recent chats introduce a distinct reusable preference class that does not fit an existing file.
|
|
63
63
|
- Keep filenames in kebab-case and scoped to a real category, for example:
|
|
64
|
-
- `
|
|
65
|
-
- `
|
|
66
|
-
- `
|
|
67
|
-
-
|
|
64
|
+
- `engineering-workflow.md`
|
|
65
|
+
- `assistant-style.md`
|
|
66
|
+
- `integration-and-deployment-preferences.md`
|
|
67
|
+
- Keep categories organized by reusable preference type, not by repository, issue, feature name, or one-off incident.
|
|
68
|
+
- When a file mixes too many unrelated preference types, split it by decision domain rather than by project.
|
|
69
|
+
- Prefer wording that captures a reusable choice pattern such as `Prefer X when Y` or `Do not do Z when Q`.
|
|
70
|
+
- Strip or generalize project-specific nouns, module names, branch names, issue numbers, and niche scenario labels unless they are required to explain the durable preference.
|
|
71
|
+
- Keep evidence notes concise and factual; they should justify the preference without turning the memory file into a project log.
|
|
72
|
+
- Use the normalized structure from `references/templates/memory-file.md` inside each memory file:
|
|
68
73
|
|
|
69
74
|
```md
|
|
70
|
-
#
|
|
75
|
+
# User Memory - Engineering Workflow
|
|
76
|
+
|
|
77
|
+
Last curated: 2026-04-05 09:20 HKT
|
|
71
78
|
|
|
72
79
|
## Scope
|
|
73
|
-
User preferences about
|
|
80
|
+
User preferences about how engineering tasks should be investigated, planned, implemented, verified, merged, and documented across repositories.
|
|
74
81
|
|
|
75
82
|
## Preferences
|
|
76
|
-
- Prefer
|
|
77
|
-
- Applies when:
|
|
78
|
-
|
|
79
|
-
-
|
|
80
|
-
- Applies when: choosing between a focused edit and a broader refactor.
|
|
81
|
-
- Evidence: explicit repeated user guidance in recent sessions.
|
|
83
|
+
- Prefer modular abstractions over duplicated logic.
|
|
84
|
+
- Applies when: designing or refactoring implementation structure.
|
|
85
|
+
- Skip planning artifacts for clearly small, localized, low-risk changes.
|
|
86
|
+
- Applies when: assessing whether a task needs formal spec documents.
|
|
82
87
|
|
|
83
88
|
## Maintenance
|
|
84
|
-
- Keep entries concrete
|
|
85
|
-
-
|
|
86
|
-
|
|
89
|
+
- Keep entries concrete, action-guiding, and reusable across repositories.
|
|
90
|
+
- Move overlapping preferences to a better-matched memory file instead of keeping mixed categories.
|
|
91
|
+
|
|
92
|
+
## Evidence notes
|
|
93
|
+
- 2026-03-22 through 2026-04-04 repeated workflow corrections consistently reinforced scoped planning, approval gating, and architecture-aware implementation.
|
|
87
94
|
```
|
|
88
95
|
|
|
89
96
|
### 4) Refresh the AGENTS memory index at the end of `~/.codex/AGENTS.md`
|
|
@@ -123,4 +130,12 @@ python3 ~/.codex/skills/codex-memory-manager/scripts/sync_memory_index.py \
|
|
|
123
130
|
- Do not store secrets, tokens, credentials, or personal data that should not persist.
|
|
124
131
|
- Do not invent preferences when the evidence is weak or ambiguous.
|
|
125
132
|
- Do not create duplicate categories when a current memory document already covers the same theme.
|
|
133
|
+
- Do not create memory files organized around a specific repository, issue number, feature branch, or single operational incident unless the user explicitly wants that narrower scope.
|
|
134
|
+
- Do not preserve project-specific wording when a more general preference statement would retain the useful lesson.
|
|
126
135
|
- Do not rewrite unrelated parts of `~/.codex/AGENTS.md`; only manage the memory index block at the end.
|
|
136
|
+
|
|
137
|
+
## References
|
|
138
|
+
|
|
139
|
+
Load only when needed:
|
|
140
|
+
|
|
141
|
+
- `references/templates/memory-file.md`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Codex Memory Manager"
|
|
3
3
|
short_description: "Persist user preferences from recent Codex chats"
|
|
4
|
-
default_prompt: "Use $codex-memory-manager to review the last 24 hours of Codex sessions,
|
|
4
|
+
default_prompt: "Use $codex-memory-manager to review the last 24 hours of Codex sessions, keep ~/.codex/memory/*.md reusable and preference-first with the normalized memory template, and refresh the memory index at the end of ~/.codex/AGENTS.md."
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# User Memory - [Category Name]
|
|
2
|
+
|
|
3
|
+
Last curated: [YYYY-MM-DD HH:MM TZ]
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
User preferences about [decision domain] across repositories and workflows.
|
|
7
|
+
|
|
8
|
+
## Preferences
|
|
9
|
+
- Prefer [reusable choice or behavior].
|
|
10
|
+
- Applies when: [general condition, not a single incident].
|
|
11
|
+
- Avoid [reusable anti-pattern].
|
|
12
|
+
- Applies when: [general condition].
|
|
13
|
+
|
|
14
|
+
## Maintenance
|
|
15
|
+
- Keep entries preference-heavy and reusable across projects.
|
|
16
|
+
- Remove or rewrite project names, issue numbers, branch names, and niche module details unless they are necessary to explain the preference.
|
|
17
|
+
- Split the file when it starts mixing unrelated decision domains.
|
|
18
|
+
- Replace stale or conflicting entries instead of keeping both.
|
|
19
|
+
|
|
20
|
+
## Evidence notes
|
|
21
|
+
- [YYYY-MM-DD through YYYY-MM-DD concise summary of the repeated conversation evidence that justified the preference.]
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Tests for the codex-memory-manager memory template reference."""
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
import unittest
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
TEMPLATE_PATH = (
|
|
11
|
+
Path(__file__).resolve().parents[1]
|
|
12
|
+
/ "references"
|
|
13
|
+
/ "templates"
|
|
14
|
+
/ "memory-file.md"
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class MemoryTemplateTests(unittest.TestCase):
|
|
19
|
+
def test_template_contains_required_sections(self) -> None:
|
|
20
|
+
content = TEMPLATE_PATH.read_text(encoding="utf-8")
|
|
21
|
+
|
|
22
|
+
self.assertIn("# User Memory - [Category Name]", content)
|
|
23
|
+
self.assertIn("## Scope", content)
|
|
24
|
+
self.assertIn("## Preferences", content)
|
|
25
|
+
self.assertIn("## Maintenance", content)
|
|
26
|
+
self.assertIn("## Evidence notes", content)
|
|
27
|
+
|
|
28
|
+
def test_template_enforces_preference_first_generalization_rules(self) -> None:
|
|
29
|
+
content = TEMPLATE_PATH.read_text(encoding="utf-8")
|
|
30
|
+
|
|
31
|
+
self.assertIn("preference-heavy and reusable across projects", content)
|
|
32
|
+
self.assertIn("Remove or rewrite project names, issue numbers, branch names", content)
|
|
33
|
+
self.assertIn("Split the file when it starts mixing unrelated decision domains", content)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
if __name__ == "__main__":
|
|
37
|
+
unittest.main()
|
package/package.json
CHANGED