@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 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 categorized memory documents under `~/.codex/memory`, and syncing a memory index into `~/.codex/AGENTS.md`.
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 categorized memory files and a synchronized AGENTS index.
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, and preserve the existing language and tone already used in `~/.codex/AGENTS.md`.
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 the recent chats introduce a distinct new class of preferences. Example: if the existing files are Rust-focused and recent chats introduce stable Java preferences, add a new Java-oriented category file and index it.
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
- - `architecture-preferences.md`
65
- - `workflow-preferences.md`
66
- - `java-preferences.md`
67
- - Use this normalized structure inside each memory file:
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
- # Architecture Preferences
75
+ # User Memory - Engineering Workflow
76
+
77
+ Last curated: 2026-04-05 09:20 HKT
71
78
 
72
79
  ## Scope
73
- User preferences about system design, reuse, abstractions, and code organization.
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 extending existing modules over parallel implementations.
77
- - Applies when: adding adjacent behavior in an existing codebase.
78
- - Evidence: repeated direction from recent Codex conversations reviewed on 2026-03-18.
79
- - Avoid speculative abstractions and over-engineering.
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 and action-guiding.
85
- - Merge duplicates instead of restating the same preference.
86
- - Replace older statements when newer evidence clearly supersedes them.
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, update ~/.codex/memory/*.md, and refresh the memory index at the end of ~/.codex/AGENTS.md."
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@laitszkin/apollo-toolkit",
3
- "version": "2.13.1",
3
+ "version": "2.13.2",
4
4
  "description": "Apollo Toolkit npm installer for managed skill copying across Codex, OpenClaw, and Trae.",
5
5
  "license": "MIT",
6
6
  "author": "LaiTszKin",