@laitszkin/apollo-toolkit 2.13.0 → 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 +15 -0
- package/README.md +4 -2
- 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/lib/cli.js +8 -4
- package/lib/installer.js +17 -3
- 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,21 @@ 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
|
+
|
|
13
|
+
## [v2.13.1] - 2026-04-05
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
- Fix the npm / `apltk` installer so selecting `codex` now copies agent-specific skills from the repository `codex/` subdirectory into the managed toolkit home and the final Codex skills target.
|
|
17
|
+
- Fix the npm / `apltk` interactive installer and help output so `claude-code` appears as a supported target and can be installed through the same CLI flow as the other modes.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
- Refresh installer banner and README wording so Claude Code support is described consistently in the npm-based installation flow.
|
|
21
|
+
|
|
7
22
|
## [v2.13.0] - 2026-04-05
|
|
8
23
|
|
|
9
24
|
### Added
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Apollo Toolkit Skills
|
|
2
2
|
|
|
3
|
-
A curated skill catalog for Codex, OpenClaw, and
|
|
3
|
+
A curated skill catalog for Codex, OpenClaw, Trae, and Claude Code with a managed installer that keeps the toolkit in `~/.apollo-toolkit` and copies each skill into the targets you choose.
|
|
4
4
|
|
|
5
5
|
## Included skills
|
|
6
6
|
|
|
@@ -62,7 +62,7 @@ npx @laitszkin/apollo-toolkit
|
|
|
62
62
|
The interactive installer:
|
|
63
63
|
- shows a branded `Apollo Toolkit` terminal welcome screen with a short staged reveal
|
|
64
64
|
- installs a managed copy into `~/.apollo-toolkit`
|
|
65
|
-
- lets you multi-select `codex`, `openclaw`, `trae`, or `all`
|
|
65
|
+
- lets you multi-select `codex`, `openclaw`, `trae`, `claude-code`, or `all`
|
|
66
66
|
- copies `~/.apollo-toolkit/<skill>` into each selected target
|
|
67
67
|
- removes stale previously installed skill directories that existed in the previous installed version but no longer exist in the current package skill list
|
|
68
68
|
- replaces legacy symlink-based installs created by older Apollo Toolkit installers with real copied directories
|
|
@@ -81,6 +81,7 @@ Global install 後,`apltk` 與 `apollo-toolkit` 都會啟動同一個 Apollo T
|
|
|
81
81
|
|
|
82
82
|
```bash
|
|
83
83
|
npx @laitszkin/apollo-toolkit codex
|
|
84
|
+
npx @laitszkin/apollo-toolkit claude-code
|
|
84
85
|
npx @laitszkin/apollo-toolkit codex openclaw
|
|
85
86
|
npx @laitszkin/apollo-toolkit all
|
|
86
87
|
```
|
|
@@ -92,6 +93,7 @@ APOLLO_TOOLKIT_HOME=~/custom-toolkit npx @laitszkin/apollo-toolkit codex
|
|
|
92
93
|
CODEX_SKILLS_DIR=~/custom-codex-skills npx @laitszkin/apollo-toolkit codex
|
|
93
94
|
OPENCLAW_HOME=~/.openclaw npx @laitszkin/apollo-toolkit openclaw
|
|
94
95
|
TRAE_SKILLS_DIR=~/.trae/skills npx @laitszkin/apollo-toolkit trae
|
|
96
|
+
CLAUDE_CODE_SKILLS_DIR=~/.claude/skills npx @laitszkin/apollo-toolkit claude-code
|
|
95
97
|
```
|
|
96
98
|
|
|
97
99
|
## Local installer scripts
|
|
@@ -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/lib/cli.js
CHANGED
|
@@ -17,6 +17,7 @@ const TARGET_OPTIONS = [
|
|
|
17
17
|
{ id: 'codex', label: 'Codex', description: '~/.codex/skills' },
|
|
18
18
|
{ id: 'openclaw', label: 'OpenClaw', description: '~/.openclaw/workspace*/skills' },
|
|
19
19
|
{ id: 'trae', label: 'Trae', description: '~/.trae/skills' },
|
|
20
|
+
{ id: 'claude-code', label: 'Claude Code', description: '~/.claude/skills' },
|
|
20
21
|
];
|
|
21
22
|
|
|
22
23
|
const WORDMARK_LINES = [
|
|
@@ -56,7 +57,7 @@ function buildBanner({ version, colorEnabled }) {
|
|
|
56
57
|
return [
|
|
57
58
|
buildWordmark({ colorEnabled }),
|
|
58
59
|
color('Apollo Toolkit', '1', colorEnabled),
|
|
59
|
-
color('Install curated skills for Codex, OpenClaw, and
|
|
60
|
+
color('Install curated skills for Codex, OpenClaw, Trae, and Claude Code', '2', colorEnabled),
|
|
60
61
|
color(`Version ${version}`, '1;33', colorEnabled),
|
|
61
62
|
].join('\n');
|
|
62
63
|
}
|
|
@@ -90,6 +91,7 @@ function buildWelcomeScreen({ version, colorEnabled, stage = 4 }) {
|
|
|
90
91
|
` ${color('Codex', '1', colorEnabled)} ~/.codex/skills`,
|
|
91
92
|
` ${color('OpenClaw', '1', colorEnabled)} ~/.openclaw/workspace*/skills`,
|
|
92
93
|
` ${color('Trae', '1', colorEnabled)} ~/.trae/skills`,
|
|
94
|
+
` ${color('Claude Code', '1', colorEnabled)} ~/.claude/skills`,
|
|
93
95
|
);
|
|
94
96
|
}
|
|
95
97
|
|
|
@@ -118,8 +120,8 @@ function buildHelpText({ version, colorEnabled }) {
|
|
|
118
120
|
buildBanner({ version, colorEnabled }),
|
|
119
121
|
'',
|
|
120
122
|
'Usage:',
|
|
121
|
-
' apltk [install] [codex|openclaw|trae|all]...',
|
|
122
|
-
' apollo-toolkit [install] [codex|openclaw|trae|all]...',
|
|
123
|
+
' apltk [install] [codex|openclaw|trae|claude-code|all]...',
|
|
124
|
+
' apollo-toolkit [install] [codex|openclaw|trae|claude-code|all]...',
|
|
123
125
|
' apltk --help',
|
|
124
126
|
' apollo-toolkit --help',
|
|
125
127
|
'',
|
|
@@ -129,6 +131,7 @@ function buildHelpText({ version, colorEnabled }) {
|
|
|
129
131
|
' npx @laitszkin/apollo-toolkit',
|
|
130
132
|
' npx @laitszkin/apollo-toolkit codex openclaw',
|
|
131
133
|
' npm i -g @laitszkin/apollo-toolkit',
|
|
134
|
+
' apltk claude-code',
|
|
132
135
|
' apltk all',
|
|
133
136
|
' apollo-toolkit all',
|
|
134
137
|
'',
|
|
@@ -212,7 +215,7 @@ function renderSelectionScreen({ output, version, cursor, selected, message, env
|
|
|
212
215
|
|
|
213
216
|
async function promptForModes({ stdin, stdout, version, env }) {
|
|
214
217
|
if (!stdin.isTTY || !stdout.isTTY) {
|
|
215
|
-
throw new Error('Interactive install requires a TTY. Re-run with targets like `codex`, `openclaw`, `trae`, or `all`.');
|
|
218
|
+
throw new Error('Interactive install requires a TTY. Re-run with targets like `codex`, `openclaw`, `trae`, `claude-code`, or `all`.');
|
|
216
219
|
}
|
|
217
220
|
|
|
218
221
|
await animateWelcomeScreen({ output: stdout, version, env });
|
|
@@ -401,6 +404,7 @@ async function run(argv, context = {}) {
|
|
|
401
404
|
sourceRoot,
|
|
402
405
|
toolkitHome,
|
|
403
406
|
version: packageJson.version,
|
|
407
|
+
modes,
|
|
404
408
|
});
|
|
405
409
|
|
|
406
410
|
const installResult = await installLinks({
|
package/lib/installer.js
CHANGED
|
@@ -107,14 +107,28 @@ function shouldCopyEntry(sourceRoot, entry) {
|
|
|
107
107
|
return fs.existsSync(path.join(sourceRoot, entry.name, 'SKILL.md'));
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
function shouldCopyCodexContainer({ sourceRoot, entry, modes = [] }) {
|
|
111
|
+
if (entry.name !== 'codex' || !entry.isDirectory() || !modes.includes('codex')) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const codexDir = path.join(sourceRoot, entry.name);
|
|
116
|
+
if (!fs.existsSync(codexDir)) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const childNames = fs.readdirSync(codexDir);
|
|
121
|
+
return childNames.some((childName) => fs.existsSync(path.join(codexDir, childName, 'SKILL.md')));
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
async function stageToolkitContents({ sourceRoot, destinationRoot, version, modes = [] }) {
|
|
111
125
|
const entries = await fsp.readdir(sourceRoot, { withFileTypes: true });
|
|
112
126
|
const copiedEntries = [];
|
|
113
127
|
|
|
114
128
|
await fsp.mkdir(destinationRoot, { recursive: true });
|
|
115
129
|
|
|
116
130
|
for (const entry of entries) {
|
|
117
|
-
if (!shouldCopyEntry(sourceRoot, entry)) {
|
|
131
|
+
if (!shouldCopyEntry(sourceRoot, entry) && !shouldCopyCodexContainer({ sourceRoot, entry, modes })) {
|
|
118
132
|
continue;
|
|
119
133
|
}
|
|
120
134
|
|
|
@@ -144,7 +158,7 @@ async function syncToolkitHome({ sourceRoot, toolkitHome, version, modes = [] })
|
|
|
144
158
|
const previousSkillNames = await listSkillNames(toolkitHome, modes).catch(() => []);
|
|
145
159
|
|
|
146
160
|
await fsp.rm(tempDir, { recursive: true, force: true });
|
|
147
|
-
await stageToolkitContents({ sourceRoot, destinationRoot: tempDir, version });
|
|
161
|
+
await stageToolkitContents({ sourceRoot, destinationRoot: tempDir, version, modes });
|
|
148
162
|
|
|
149
163
|
const stat = await fsp.lstat(toolkitHome).catch(() => null);
|
|
150
164
|
if (stat && !stat.isDirectory()) {
|
package/package.json
CHANGED