oh-my-codex 0.4.4 → 0.5.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.
Files changed (143) hide show
  1. package/README.md +17 -10
  2. package/dist/agents/definitions.d.ts.map +1 -1
  3. package/dist/agents/definitions.js +7 -13
  4. package/dist/agents/definitions.js.map +1 -1
  5. package/dist/agents/native-config.d.ts +1 -0
  6. package/dist/agents/native-config.d.ts.map +1 -1
  7. package/dist/agents/native-config.js +1 -6
  8. package/dist/agents/native-config.js.map +1 -1
  9. package/dist/catalog/__tests__/generator.test.d.ts +2 -0
  10. package/dist/catalog/__tests__/generator.test.d.ts.map +1 -0
  11. package/dist/catalog/__tests__/generator.test.js +42 -0
  12. package/dist/catalog/__tests__/generator.test.js.map +1 -0
  13. package/dist/catalog/__tests__/schema.test.d.ts +2 -0
  14. package/dist/catalog/__tests__/schema.test.d.ts.map +1 -0
  15. package/dist/catalog/__tests__/schema.test.js +33 -0
  16. package/dist/catalog/__tests__/schema.test.js.map +1 -0
  17. package/dist/catalog/reader.d.ts +19 -0
  18. package/dist/catalog/reader.d.ts.map +1 -0
  19. package/dist/catalog/reader.js +63 -0
  20. package/dist/catalog/reader.js.map +1 -0
  21. package/dist/catalog/schema.d.ts +32 -0
  22. package/dist/catalog/schema.d.ts.map +1 -0
  23. package/dist/catalog/schema.js +101 -0
  24. package/dist/catalog/schema.js.map +1 -0
  25. package/dist/cli/__tests__/index.test.js +109 -1
  26. package/dist/cli/__tests__/index.test.js.map +1 -1
  27. package/dist/cli/__tests__/setup-scope.test.d.ts +2 -0
  28. package/dist/cli/__tests__/setup-scope.test.d.ts.map +1 -0
  29. package/dist/cli/__tests__/setup-scope.test.js +164 -0
  30. package/dist/cli/__tests__/setup-scope.test.js.map +1 -0
  31. package/dist/cli/catalog-contract.d.ts +10 -0
  32. package/dist/cli/catalog-contract.d.ts.map +1 -0
  33. package/dist/cli/catalog-contract.js +24 -0
  34. package/dist/cli/catalog-contract.js.map +1 -0
  35. package/dist/cli/doctor.d.ts.map +1 -1
  36. package/dist/cli/doctor.js +7 -4
  37. package/dist/cli/doctor.js.map +1 -1
  38. package/dist/cli/index.d.ts +10 -0
  39. package/dist/cli/index.d.ts.map +1 -1
  40. package/dist/cli/index.js +124 -99
  41. package/dist/cli/index.js.map +1 -1
  42. package/dist/cli/setup.d.ts +3 -0
  43. package/dist/cli/setup.d.ts.map +1 -1
  44. package/dist/cli/setup.js +189 -35
  45. package/dist/cli/setup.js.map +1 -1
  46. package/dist/config/__tests__/generator-notify.test.js +28 -0
  47. package/dist/config/__tests__/generator-notify.test.js.map +1 -1
  48. package/dist/config/generator.d.ts +1 -0
  49. package/dist/config/generator.d.ts.map +1 -1
  50. package/dist/config/generator.js +12 -8
  51. package/dist/config/generator.js.map +1 -1
  52. package/dist/hooks/code-simplifier/__tests__/index.test.d.ts +2 -0
  53. package/dist/hooks/code-simplifier/__tests__/index.test.d.ts.map +1 -0
  54. package/dist/hooks/code-simplifier/__tests__/index.test.js +135 -0
  55. package/dist/hooks/code-simplifier/__tests__/index.test.js.map +1 -0
  56. package/dist/hooks/code-simplifier/index.d.ts +74 -0
  57. package/dist/hooks/code-simplifier/index.d.ts.map +1 -0
  58. package/dist/hooks/code-simplifier/index.js +145 -0
  59. package/dist/hooks/code-simplifier/index.js.map +1 -0
  60. package/dist/hooks/emulator.d.ts.map +1 -1
  61. package/dist/hooks/emulator.js +0 -1
  62. package/dist/hooks/emulator.js.map +1 -1
  63. package/dist/hooks/keyword-detector.d.ts.map +1 -1
  64. package/dist/hooks/keyword-detector.js +0 -3
  65. package/dist/hooks/keyword-detector.js.map +1 -1
  66. package/dist/notifications/__tests__/tmux.test.js +61 -1
  67. package/dist/notifications/__tests__/tmux.test.js.map +1 -1
  68. package/dist/notifications/__tests__/verbosity.test.d.ts +2 -0
  69. package/dist/notifications/__tests__/verbosity.test.d.ts.map +1 -0
  70. package/dist/notifications/__tests__/verbosity.test.js +202 -0
  71. package/dist/notifications/__tests__/verbosity.test.js.map +1 -0
  72. package/dist/notifications/config.d.ts +14 -1
  73. package/dist/notifications/config.d.ts.map +1 -1
  74. package/dist/notifications/config.js +52 -0
  75. package/dist/notifications/config.js.map +1 -1
  76. package/dist/notifications/formatter.d.ts.map +1 -1
  77. package/dist/notifications/formatter.js +14 -0
  78. package/dist/notifications/formatter.js.map +1 -1
  79. package/dist/notifications/index.d.ts +3 -3
  80. package/dist/notifications/index.d.ts.map +1 -1
  81. package/dist/notifications/index.js +14 -4
  82. package/dist/notifications/index.js.map +1 -1
  83. package/dist/notifications/tmux.d.ts +6 -0
  84. package/dist/notifications/tmux.d.ts.map +1 -1
  85. package/dist/notifications/tmux.js +31 -1
  86. package/dist/notifications/tmux.js.map +1 -1
  87. package/dist/notifications/types.d.ts +13 -0
  88. package/dist/notifications/types.d.ts.map +1 -1
  89. package/dist/team/__tests__/model-contract.test.d.ts +2 -0
  90. package/dist/team/__tests__/model-contract.test.d.ts.map +1 -0
  91. package/dist/team/__tests__/model-contract.test.js +47 -0
  92. package/dist/team/__tests__/model-contract.test.js.map +1 -0
  93. package/dist/team/__tests__/phase-controller.test.d.ts +2 -0
  94. package/dist/team/__tests__/phase-controller.test.d.ts.map +1 -0
  95. package/dist/team/__tests__/phase-controller.test.js +36 -0
  96. package/dist/team/__tests__/phase-controller.test.js.map +1 -0
  97. package/dist/team/__tests__/runtime.test.js +6 -6
  98. package/dist/team/__tests__/runtime.test.js.map +1 -1
  99. package/dist/team/model-contract.d.ts +19 -0
  100. package/dist/team/model-contract.d.ts.map +1 -0
  101. package/dist/team/model-contract.js +123 -0
  102. package/dist/team/model-contract.js.map +1 -0
  103. package/dist/team/orchestrator.d.ts.map +1 -1
  104. package/dist/team/orchestrator.js +0 -1
  105. package/dist/team/orchestrator.js.map +1 -1
  106. package/dist/team/phase-controller.d.ts +10 -0
  107. package/dist/team/phase-controller.d.ts.map +1 -0
  108. package/dist/team/phase-controller.js +128 -0
  109. package/dist/team/phase-controller.js.map +1 -0
  110. package/dist/team/runtime.d.ts +3 -3
  111. package/dist/team/runtime.d.ts.map +1 -1
  112. package/dist/team/runtime.js +24 -51
  113. package/dist/team/runtime.js.map +1 -1
  114. package/dist/team/state.d.ts +15 -0
  115. package/dist/team/state.d.ts.map +1 -1
  116. package/dist/team/state.js +35 -0
  117. package/dist/team/state.js.map +1 -1
  118. package/dist/team/team-ops.d.ts +3 -1
  119. package/dist/team/team-ops.d.ts.map +1 -1
  120. package/dist/team/team-ops.js +2 -0
  121. package/dist/team/team-ops.js.map +1 -1
  122. package/package.json +2 -2
  123. package/prompts/product-analyst.md +7 -7
  124. package/scripts/generate-catalog-docs.js +111 -0
  125. package/skills/build-fix/SKILL.md +3 -3
  126. package/skills/code-review/SKILL.md +3 -3
  127. package/skills/help/SKILL.md +4 -4
  128. package/skills/omx-setup/SKILL.md +24 -15
  129. package/skills/research/SKILL.md +28 -28
  130. package/skills/security-review/SKILL.md +3 -3
  131. package/templates/AGENTS.md +1 -8
  132. package/templates/catalog-manifest.json +397 -0
  133. package/prompts/deep-executor.md +0 -19
  134. package/prompts/scientist.md +0 -89
  135. package/skills/deepinit/SKILL.md +0 -320
  136. package/skills/learn-about-omx/SKILL.md +0 -37
  137. package/skills/learner/SKILL.md +0 -135
  138. package/skills/pipeline/SKILL.md +0 -407
  139. package/skills/project-session-manager/SKILL.md +0 -560
  140. package/skills/psm/SKILL.md +0 -20
  141. package/skills/release/SKILL.md +0 -83
  142. package/skills/ultrapilot/SKILL.md +0 -627
  143. package/skills/writer-memory/SKILL.md +0 -443
package/README.md CHANGED
@@ -102,8 +102,8 @@ OMX installs and wires these layers:
102
102
  User
103
103
  -> Codex CLI
104
104
  -> AGENTS.md (orchestration brain)
105
- -> ~/.codex/prompts/*.md (30 agent prompts)
106
- -> ~/.agents/skills/*/SKILL.md (40 skills)
105
+ -> ~/.codex/prompts/*.md (agent prompt catalog)
106
+ -> ~/.agents/skills/*/SKILL.md (skill catalog)
107
107
  -> ~/.codex/config.toml (features, notify, MCP)
108
108
  -> .omx/ (runtime state, memory, plans, logs)
109
109
  ```
@@ -112,7 +112,7 @@ User
112
112
 
113
113
  ```bash
114
114
  omx # Launch Codex (+ HUD in tmux when available)
115
- omx setup # Install prompts, skills, config wiring, AGENTS.md
115
+ omx setup # Install prompts/skills/config by scope + project AGENTS.md/.omx
116
116
  omx doctor # Installation/runtime diagnostics
117
117
  omx doctor --team # Team/swarm diagnostics
118
118
  omx team ... # Start/status/resume/shutdown tmux team workers
@@ -146,6 +146,7 @@ See `docs/hooks-extension.md` for the full extension workflow and event model.
146
146
  --force
147
147
  --dry-run
148
148
  --verbose
149
+ --scope <user|project-local|project> # setup only
149
150
  ```
150
151
 
151
152
  `--madmax` maps to Codex `--dangerously-bypass-approvals-and-sandbox`.
@@ -192,9 +193,14 @@ Important rule: do not shutdown while tasks are still `in_progress` unless abort
192
193
 
193
194
  ## What `omx setup` writes
194
195
 
195
- - `~/.codex/prompts/` (30 prompt files)
196
- - `~/.agents/skills/` (40 skills)
197
- - `~/.codex/config.toml` updates:
196
+ - `.omx/setup-scope.json` (persisted setup scope)
197
+ - Scope-dependent installs:
198
+ - `user`: `~/.codex/prompts/`, `~/.agents/skills/`, `~/.codex/config.toml`, `~/.omx/agents/`
199
+ - `project-local`: `./.codex/prompts/`, `./.agents/skills/`, `./.codex/config.toml`, `./.omx/agents/`
200
+ - `project`: skips prompt/skill/config/native-agent installs
201
+ - Launch behavior: if persisted scope is `project-local`, `omx` launch auto-uses `CODEX_HOME=./.codex` (unless `CODEX_HOME` is already set).
202
+ - Existing `AGENTS.md` is preserved unless `--force` is used (and active-session safety checks still apply).
203
+ - `config.toml` updates (for `user`/`project-local` scopes):
198
204
  - `notify = ["node", "..."]`
199
205
  - `model_reasoning_effort = "high"`
200
206
  - `developer_instructions = "..."`
@@ -206,13 +212,12 @@ Important rule: do not shutdown while tasks are still `in_progress` unless abort
206
212
 
207
213
  ## Agents and Skills
208
214
 
209
- - Prompts: `prompts/*.md` (installed to `~/.codex/prompts/`)
210
- - Skills: `skills/*/SKILL.md` (installed to `~/.agents/skills/`)
215
+ - Prompts: `prompts/*.md` (installed to `~/.codex/prompts/` for `user`, `./.codex/prompts/` for `project-local`)
216
+ - Skills: `skills/*/SKILL.md` (installed to `~/.agents/skills/` for `user`, `./.agents/skills/` for `project-local`)
211
217
 
212
218
  Examples:
213
219
  - Agents: `architect`, `planner`, `executor`, `debugger`, `verifier`, `security-reviewer`
214
- - `deep-executor` is deprecated; use `executor` for complex implementation tasks.
215
- - Skills: `autopilot`, `plan`, `team`, `ralph`, `ultrawork`, `ultrapilot`, `research`, `cancel`
220
+ - Skills: `autopilot`, `plan`, `team`, `ralph`, `ultrawork`, `research`, `cancel`
216
221
 
217
222
  ## Project Layout
218
223
 
@@ -247,6 +252,8 @@ npm test
247
252
 
248
253
  ## Notes
249
254
 
255
+ - Release notes: `CHANGELOG.md`
256
+ - Migration guide (post-v0.4.4 mainline): `docs/migration-mainline-post-v0.4.4.md`
250
257
  - Coverage and parity notes: `COVERAGE.md`
251
258
  - Hook extension workflow: `docs/hooks-extension.md`
252
259
  - Setup and contribution details: `CONTRIBUTING.md`
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/agents/definitions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IACnC,0BAA0B;IAC1B,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC;IACvD,4BAA4B;IAC5B,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,cAAc,CAAC;CACtE;AAgBD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAgN7D,CAAC;AAEF,mCAAmC;AACnC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAElE;AAED,mCAAmC;AACnC,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,GAAG,eAAe,EAAE,CAE5F;AAED,0BAA0B;AAC1B,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC"}
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/agents/definitions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IACnC,0BAA0B;IAC1B,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC;IACvD,4BAA4B;IAC5B,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,cAAc,CAAC;CACtE;AAUD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CA+M7D,CAAC;AAEF,mCAAmC;AACnC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAElE;AAED,mCAAmC;AACnC,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,GAAG,eAAe,EAAE,CAE5F;AAED,0BAA0B;AAC1B,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC"}
@@ -10,11 +10,6 @@ const EXECUTOR_AGENT = {
10
10
  tools: 'execution',
11
11
  category: 'build',
12
12
  };
13
- const DEEP_EXECUTOR_ALIAS_AGENT = {
14
- ...EXECUTOR_AGENT,
15
- name: 'deep-executor',
16
- description: '[Deprecated] Backward-compatible alias of executor',
17
- };
18
13
  export const AGENT_DEFINITIONS = {
19
14
  // Build/Analysis Lane
20
15
  'explore': {
@@ -53,7 +48,6 @@ export const AGENT_DEFINITIONS = {
53
48
  category: 'build',
54
49
  },
55
50
  'executor': EXECUTOR_AGENT,
56
- 'deep-executor': DEEP_EXECUTOR_ALIAS_AGENT,
57
51
  'verifier': {
58
52
  name: 'verifier',
59
53
  description: 'Completion evidence, claim validation, test adequacy',
@@ -154,13 +148,6 @@ export const AGENT_DEFINITIONS = {
154
148
  tools: 'execution',
155
149
  category: 'domain',
156
150
  },
157
- 'scientist': {
158
- name: 'scientist',
159
- description: 'Data/statistical analysis and hypothesis testing',
160
- model: 'sonnet',
161
- tools: 'data',
162
- category: 'domain',
163
- },
164
151
  'git-master': {
165
152
  name: 'git-master',
166
153
  description: 'Commit strategy, history hygiene, rebasing',
@@ -168,6 +155,13 @@ export const AGENT_DEFINITIONS = {
168
155
  tools: 'execution',
169
156
  category: 'domain',
170
157
  },
158
+ 'code-simplifier': {
159
+ name: 'code-simplifier',
160
+ description: 'Simplifies recently modified code for clarity and consistency without changing behavior',
161
+ model: 'opus',
162
+ tools: 'execution',
163
+ category: 'domain',
164
+ },
171
165
  'researcher': {
172
166
  name: 'researcher',
173
167
  description: 'External documentation and reference research',
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/agents/definitions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/agents/definitions.ts"],"names":[],"mappings":"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"}
@@ -15,5 +15,6 @@ export declare function installNativeAgentConfigs(pkgRoot: string, options?: {
15
15
  force?: boolean;
16
16
  dryRun?: boolean;
17
17
  verbose?: boolean;
18
+ agentsDir?: string;
18
19
  }): Promise<number>;
19
20
  //# sourceMappingURL=native-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"native-config.d.ts","sourceRoot":"","sources":["../../src/agents/native-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAqB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAiCtE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAavF;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GACrE,OAAO,CAAC,MAAM,CAAC,CAoCjB"}
1
+ {"version":3,"file":"native-config.d.ts","sourceRoot":"","sources":["../../src/agents/native-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAqB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AA8BtE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAavF;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACzF,OAAO,CAAC,MAAM,CAAC,CAsCjB"}
@@ -13,8 +13,6 @@ const REASONING_EFFORT_MAP = {
13
13
  sonnet: 'medium',
14
14
  opus: 'high',
15
15
  };
16
- // Agents to skip (deprecated aliases)
17
- const SKIP_AGENTS = new Set(['deep-executor']);
18
16
  /**
19
17
  * Strip YAML frontmatter (between --- markers) from markdown content
20
18
  */
@@ -54,15 +52,12 @@ export function generateAgentToml(agent, promptContent) {
54
52
  * Returns the number of agents installed
55
53
  */
56
54
  export async function installNativeAgentConfigs(pkgRoot, options = {}) {
57
- const { force = false, dryRun = false, verbose = false } = options;
58
- const agentsDir = omxAgentsConfigDir();
55
+ const { force = false, dryRun = false, verbose = false, agentsDir = omxAgentsConfigDir(), } = options;
59
56
  if (!dryRun) {
60
57
  await mkdir(agentsDir, { recursive: true });
61
58
  }
62
59
  let count = 0;
63
60
  for (const [name, agent] of Object.entries(AGENT_DEFINITIONS)) {
64
- if (SKIP_AGENTS.has(name))
65
- continue;
66
61
  const promptPath = join(pkgRoot, 'prompts', `${name}.md`);
67
62
  if (!existsSync(promptPath)) {
68
63
  if (verbose)
@@ -1 +1 @@
1
- {"version":3,"file":"native-config.js","sourceRoot":"","sources":["../../src/agents/native-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"native-config.js","sourceRoot":"","sources":["../../src/agents/native-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=generator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.test.d.ts","sourceRoot":"","sources":["../../../src/catalog/__tests__/generator.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,42 @@
1
+ import { describe, it } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { mkdir, mkdtemp, readFile, writeFile } from 'fs/promises';
4
+ import { join } from 'path';
5
+ import { tmpdir } from 'os';
6
+ import { readCatalogManifest, toPublicCatalogContract } from '../reader.js';
7
+ async function readSourceManifestRaw() {
8
+ return readFile(join(process.cwd(), 'src', 'catalog', 'manifest.json'), 'utf8');
9
+ }
10
+ async function readSourceManifestCounts() {
11
+ const raw = await readSourceManifestRaw();
12
+ const parsed = JSON.parse(raw);
13
+ return {
14
+ skills: parsed.skills.length,
15
+ agents: parsed.agents.length,
16
+ };
17
+ }
18
+ describe('catalog reader/contract', () => {
19
+ it('prefers template manifest path when present', async () => {
20
+ const root = await mkdtemp(join(tmpdir(), 'omx-catalog-'));
21
+ await mkdir(join(root, 'templates'), { recursive: true });
22
+ await writeFile(join(root, 'templates', 'catalog-manifest.json'), await readSourceManifestRaw());
23
+ const parsed = readCatalogManifest(root);
24
+ assert.equal(parsed.schemaVersion, 1);
25
+ assert.ok(parsed.skills.length > 0);
26
+ });
27
+ it('builds public contract with aliases and internalHidden', async () => {
28
+ const contract = toPublicCatalogContract(readCatalogManifest());
29
+ const expected = await readSourceManifestCounts();
30
+ assert.equal(contract.counts.skillCount, expected.skills);
31
+ assert.equal(contract.counts.promptCount, expected.agents);
32
+ assert.ok(contract.aliases.some((a) => a.name === 'swarm' && a.canonical === 'team'));
33
+ assert.ok(contract.internalHidden.includes('worker'));
34
+ assert.ok(contract.coreSkills.includes('autopilot'));
35
+ });
36
+ it('template manifest can be synced from source manifest', async () => {
37
+ const sourceRaw = await readFile(join(process.cwd(), 'src', 'catalog', 'manifest.json'), 'utf8');
38
+ const targetRaw = await readFile(join(process.cwd(), 'templates', 'catalog-manifest.json'), 'utf8');
39
+ assert.equal(JSON.parse(targetRaw).catalogVersion, JSON.parse(sourceRaw).catalogVersion);
40
+ });
41
+ });
42
+ //# sourceMappingURL=generator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.test.js","sourceRoot":"","sources":["../../../src/catalog/__tests__/generator.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=schema.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.test.d.ts","sourceRoot":"","sources":["../../../src/catalog/__tests__/schema.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,33 @@
1
+ import { describe, it } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { readFileSync } from 'node:fs';
4
+ import { join } from 'node:path';
5
+ import { summarizeCatalogCounts, validateCatalogManifest } from '../schema.js';
6
+ function readSourceManifest() {
7
+ const path = join(process.cwd(), 'src', 'catalog', 'manifest.json');
8
+ return JSON.parse(readFileSync(path, 'utf8'));
9
+ }
10
+ describe('catalog schema', () => {
11
+ it('validates repository manifest', () => {
12
+ const parsed = validateCatalogManifest(readSourceManifest());
13
+ assert.equal(parsed.schemaVersion, 1);
14
+ assert.ok(parsed.catalogVersion.length > 0);
15
+ assert.ok(parsed.skills.length > 0);
16
+ assert.ok(parsed.agents.length > 0);
17
+ });
18
+ it('enforces required core skills as active', () => {
19
+ const broken = JSON.parse(JSON.stringify(readSourceManifest()));
20
+ const idx = broken.skills.findIndex((s) => s.name === 'team');
21
+ broken.skills[idx].status = 'deprecated';
22
+ assert.throws(() => validateCatalogManifest(broken), /missing_core_skill:team/);
23
+ });
24
+ it('summarizes counts', () => {
25
+ const parsed = validateCatalogManifest(readSourceManifest());
26
+ const counts = summarizeCatalogCounts(parsed);
27
+ assert.equal(counts.skillCount, parsed.skills.length);
28
+ assert.equal(counts.promptCount, parsed.agents.length);
29
+ assert.ok(counts.activeSkillCount > 0);
30
+ assert.ok(counts.activeAgentCount > 0);
31
+ });
32
+ });
33
+ //# sourceMappingURL=schema.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.test.js","sourceRoot":"","sources":["../../../src/catalog/__tests__/schema.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE/E,SAAS,kBAAkB;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IACpE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,MAAM,GAAG,uBAAuB,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAChF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,yBAAyB,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,MAAM,GAAG,uBAAuB,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { type CatalogManifest, type CatalogCounts } from './schema.js';
2
+ export declare function readCatalogManifest(packageRoot?: string): CatalogManifest;
3
+ export declare function tryReadCatalogManifest(packageRoot?: string): CatalogManifest | null;
4
+ export declare function getCatalogCounts(packageRoot?: string): CatalogCounts;
5
+ export interface PublicCatalogContract {
6
+ generatedAt: string;
7
+ version: string;
8
+ counts: CatalogCounts;
9
+ coreSkills: string[];
10
+ skills: CatalogManifest['skills'];
11
+ agents: CatalogManifest['agents'];
12
+ aliases: Array<{
13
+ name: string;
14
+ canonical: string;
15
+ }>;
16
+ internalHidden: string[];
17
+ }
18
+ export declare function toPublicCatalogContract(manifest: CatalogManifest): PublicCatalogContract;
19
+ //# sourceMappingURL=reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../src/catalog/reader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,eAAe,EAA0B,KAAK,aAAa,EAA2B,MAAM,aAAa,CAAC;AAmBxH,wBAAgB,mBAAmB,CAAC,WAAW,GAAE,MAAyB,GAAG,eAAe,CAa3F;AAED,wBAAgB,sBAAsB,CAAC,WAAW,GAAE,MAAyB,GAAG,eAAe,GAAG,IAAI,CAMrG;AAED,wBAAgB,gBAAgB,CAAC,WAAW,GAAE,MAAyB,GAAG,aAAa,CAGtF;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,eAAe,GAAG,qBAAqB,CAkBxF"}
@@ -0,0 +1,63 @@
1
+ import { existsSync, readFileSync } from 'fs';
2
+ import { join } from 'path';
3
+ import { getPackageRoot } from '../utils/package.js';
4
+ import { summarizeCatalogCounts, validateCatalogManifest } from './schema.js';
5
+ const MANIFEST_CANDIDATE_PATHS = [
6
+ ['templates', 'catalog-manifest.json'],
7
+ ['src', 'catalog', 'manifest.json'],
8
+ ['dist', 'catalog', 'manifest.json'],
9
+ ];
10
+ let cachedManifest = null;
11
+ let cachedPath = null;
12
+ function resolveManifestPath(packageRoot) {
13
+ for (const segments of MANIFEST_CANDIDATE_PATHS) {
14
+ const fullPath = join(packageRoot, ...segments);
15
+ if (existsSync(fullPath))
16
+ return fullPath;
17
+ }
18
+ return null;
19
+ }
20
+ export function readCatalogManifest(packageRoot = getPackageRoot()) {
21
+ const path = resolveManifestPath(packageRoot);
22
+ if (!path) {
23
+ throw new Error('catalog_manifest_missing');
24
+ }
25
+ if (cachedManifest && cachedPath === path)
26
+ return cachedManifest;
27
+ const raw = JSON.parse(readFileSync(path, 'utf8'));
28
+ const manifest = validateCatalogManifest(raw);
29
+ cachedManifest = manifest;
30
+ cachedPath = path;
31
+ return manifest;
32
+ }
33
+ export function tryReadCatalogManifest(packageRoot = getPackageRoot()) {
34
+ try {
35
+ return readCatalogManifest(packageRoot);
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ }
41
+ export function getCatalogCounts(packageRoot = getPackageRoot()) {
42
+ const manifest = readCatalogManifest(packageRoot);
43
+ return summarizeCatalogCounts(manifest);
44
+ }
45
+ export function toPublicCatalogContract(manifest) {
46
+ const aliases = manifest.skills
47
+ .filter((s) => (s.status === 'alias' || s.status === 'merged') && typeof s.canonical === 'string')
48
+ .map((s) => ({ name: s.name, canonical: s.canonical }));
49
+ const internalHidden = manifest.skills
50
+ .filter((s) => s.status === 'internal')
51
+ .map((s) => s.name);
52
+ return {
53
+ generatedAt: new Date().toISOString(),
54
+ version: manifest.catalogVersion,
55
+ counts: summarizeCatalogCounts(manifest),
56
+ coreSkills: manifest.skills.filter((s) => s.core).map((s) => s.name),
57
+ skills: manifest.skills,
58
+ agents: manifest.agents,
59
+ aliases,
60
+ internalHidden,
61
+ };
62
+ }
63
+ //# sourceMappingURL=reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.js","sourceRoot":"","sources":["../../src/catalog/reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export type CatalogSkillCategory = 'execution' | 'planning' | 'shortcut' | 'utility';
2
+ export type CatalogAgentCategory = 'build' | 'review' | 'domain' | 'product' | 'coordination';
3
+ export type CatalogEntryStatus = 'active' | 'alias' | 'merged' | 'deprecated' | 'internal';
4
+ export interface CatalogSkillEntry {
5
+ name: string;
6
+ category: CatalogSkillCategory;
7
+ status: CatalogEntryStatus;
8
+ canonical?: string;
9
+ core?: boolean;
10
+ internalRequired?: boolean;
11
+ }
12
+ export interface CatalogAgentEntry {
13
+ name: string;
14
+ category: CatalogAgentCategory;
15
+ status: CatalogEntryStatus;
16
+ canonical?: string;
17
+ }
18
+ export interface CatalogManifest {
19
+ schemaVersion: number;
20
+ catalogVersion: string;
21
+ skills: CatalogSkillEntry[];
22
+ agents: CatalogAgentEntry[];
23
+ }
24
+ export declare function validateCatalogManifest(input: unknown): CatalogManifest;
25
+ export interface CatalogCounts {
26
+ skillCount: number;
27
+ promptCount: number;
28
+ activeSkillCount: number;
29
+ activeAgentCount: number;
30
+ }
31
+ export declare function summarizeCatalogCounts(manifest: CatalogManifest): CatalogCounts;
32
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/catalog/schema.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AACrF,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,cAAc,CAAC;AAC9F,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,CAAC;AAE3F,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAiBD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAuFvE;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,eAAe,GAAG,aAAa,CAO/E"}
@@ -0,0 +1,101 @@
1
+ const SKILL_CATEGORIES = new Set(['execution', 'planning', 'shortcut', 'utility']);
2
+ const AGENT_CATEGORIES = new Set(['build', 'review', 'domain', 'product', 'coordination']);
3
+ const ENTRY_STATUSES = new Set(['active', 'alias', 'merged', 'deprecated', 'internal']);
4
+ const REQUIRED_CORE_SKILLS = new Set(['ralplan', 'team', 'ralph', 'ultrawork', 'autopilot']);
5
+ function isObject(value) {
6
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
7
+ }
8
+ function assertNonEmptyString(value, field) {
9
+ if (typeof value !== 'string' || value.trim() === '') {
10
+ throw new Error(`catalog_manifest_invalid:${field}`);
11
+ }
12
+ }
13
+ export function validateCatalogManifest(input) {
14
+ if (!isObject(input))
15
+ throw new Error('catalog_manifest_invalid:root');
16
+ if (typeof input.schemaVersion !== 'number' || !Number.isInteger(input.schemaVersion)) {
17
+ throw new Error('catalog_manifest_invalid:schemaVersion');
18
+ }
19
+ assertNonEmptyString(input.catalogVersion, 'catalogVersion');
20
+ if (!Array.isArray(input.skills))
21
+ throw new Error('catalog_manifest_invalid:skills');
22
+ if (!Array.isArray(input.agents))
23
+ throw new Error('catalog_manifest_invalid:agents');
24
+ const seenSkills = new Set();
25
+ const skills = input.skills.map((entry, index) => {
26
+ if (!isObject(entry))
27
+ throw new Error(`catalog_manifest_invalid:skills[${index}]`);
28
+ assertNonEmptyString(entry.name, `skills[${index}].name`);
29
+ assertNonEmptyString(entry.category, `skills[${index}].category`);
30
+ assertNonEmptyString(entry.status, `skills[${index}].status`);
31
+ if (!SKILL_CATEGORIES.has(entry.category)) {
32
+ throw new Error(`catalog_manifest_invalid:skills[${index}].category`);
33
+ }
34
+ if (!ENTRY_STATUSES.has(entry.status)) {
35
+ throw new Error(`catalog_manifest_invalid:skills[${index}].status`);
36
+ }
37
+ const name = entry.name.trim();
38
+ if (seenSkills.has(name))
39
+ throw new Error(`catalog_manifest_invalid:duplicate_skill:${name}`);
40
+ seenSkills.add(name);
41
+ const canonical = typeof entry.canonical === 'string' && entry.canonical.trim() !== ''
42
+ ? entry.canonical.trim()
43
+ : undefined;
44
+ return {
45
+ name,
46
+ category: entry.category,
47
+ status: entry.status,
48
+ canonical,
49
+ core: entry.core === true,
50
+ internalRequired: entry.internalRequired === true,
51
+ };
52
+ });
53
+ const seenAgents = new Set();
54
+ const agents = input.agents.map((entry, index) => {
55
+ if (!isObject(entry))
56
+ throw new Error(`catalog_manifest_invalid:agents[${index}]`);
57
+ assertNonEmptyString(entry.name, `agents[${index}].name`);
58
+ assertNonEmptyString(entry.category, `agents[${index}].category`);
59
+ assertNonEmptyString(entry.status, `agents[${index}].status`);
60
+ if (!AGENT_CATEGORIES.has(entry.category)) {
61
+ throw new Error(`catalog_manifest_invalid:agents[${index}].category`);
62
+ }
63
+ if (!ENTRY_STATUSES.has(entry.status)) {
64
+ throw new Error(`catalog_manifest_invalid:agents[${index}].status`);
65
+ }
66
+ const name = entry.name.trim();
67
+ if (seenAgents.has(name))
68
+ throw new Error(`catalog_manifest_invalid:duplicate_agent:${name}`);
69
+ seenAgents.add(name);
70
+ const canonical = typeof entry.canonical === 'string' && entry.canonical.trim() !== ''
71
+ ? entry.canonical.trim()
72
+ : undefined;
73
+ return {
74
+ name,
75
+ category: entry.category,
76
+ status: entry.status,
77
+ canonical,
78
+ };
79
+ });
80
+ for (const coreSkill of REQUIRED_CORE_SKILLS) {
81
+ const skill = skills.find((s) => s.name === coreSkill);
82
+ if (!skill || skill.status !== 'active') {
83
+ throw new Error(`catalog_manifest_invalid:missing_core_skill:${coreSkill}`);
84
+ }
85
+ }
86
+ return {
87
+ schemaVersion: input.schemaVersion,
88
+ catalogVersion: input.catalogVersion,
89
+ skills,
90
+ agents,
91
+ };
92
+ }
93
+ export function summarizeCatalogCounts(manifest) {
94
+ return {
95
+ skillCount: manifest.skills.length,
96
+ promptCount: manifest.agents.length,
97
+ activeSkillCount: manifest.skills.filter((s) => s.status === 'active').length,
98
+ activeAgentCount: manifest.agents.filter((a) => a.status === 'active').length,
99
+ };
100
+ }
101
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/catalog/schema.ts"],"names":[],"mappings":"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"}