oh-my-second-brain 0.1.8 → 0.2.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 (466) hide show
  1. package/CHANGELOG.md +89 -0
  2. package/README.ko.md +127 -0
  3. package/README.md +128 -0
  4. package/adapters/README.md +8 -8
  5. package/adapters/claude-code/.claude-plugin/plugin.json +3 -2
  6. package/adapters/claude-code/.mcp.json +8 -0
  7. package/adapters/claude-code/CLAUDE.md +5 -6
  8. package/adapters/claude-code/skills/compile/SKILL.md +10 -35
  9. package/adapters/claude-code/skills/distill/SKILL.md +6 -26
  10. package/adapters/claude-code/skills/link/SKILL.md +87 -0
  11. package/adapters/claude-code/skills/retrieve/SKILL.md +4 -7
  12. package/adapters/claude-code/skills/setup/SKILL.md +5 -6
  13. package/adapters/claude-code/skills/uninstall/SKILL.md +1 -1
  14. package/adapters/claude-code/skills/wiki/SKILL.md +49 -24
  15. package/adapters/claude-code/skills/write/SKILL.md +16 -0
  16. package/adapters/codex/.codex-plugin/plugin.json +1 -1
  17. package/adapters/codex/AGENTS.md +2 -2
  18. package/adapters/codex/rules/oms.md +1 -1
  19. package/adapters/codex/skills/oms-compile/SKILL.md +7 -9
  20. package/adapters/codex/skills/oms-distill/SKILL.md +4 -9
  21. package/adapters/codex/skills/oms-link/SKILL.md +35 -0
  22. package/adapters/codex/skills/oms-retrieve/SKILL.md +5 -6
  23. package/adapters/codex/skills/oms-wiki/SKILL.md +28 -8
  24. package/adapters/codex/skills/oms-write/SKILL.md +10 -0
  25. package/adapters/hermes/README.md +3 -1
  26. package/adapters/hermes/SOUL.md +2 -3
  27. package/adapters/hermes/manifest.json +1 -1
  28. package/adapters/hermes/skills/compile/SKILL.md +5 -7
  29. package/adapters/hermes/skills/distill/SKILL.md +1 -3
  30. package/adapters/hermes/skills/link/SKILL.md +18 -0
  31. package/adapters/hermes/skills/retrieve/SKILL.md +5 -6
  32. package/adapters/hermes/skills/setup/SKILL.md +5 -2
  33. package/adapters/hermes/skills/wiki/SKILL.md +4 -2
  34. package/adapters/hermes/skills/write/SKILL.md +10 -0
  35. package/core/AGENTS.md +4 -2
  36. package/core/agents/librarian.md +3 -2
  37. package/core/ontology/concepts/term.yaml +12 -0
  38. package/core/ontology/taxonomy.yaml +3 -0
  39. package/core/skills/compile/SKILL.md +19 -18
  40. package/core/skills/distill/SKILL.md +13 -24
  41. package/core/skills/link/SKILL.md +130 -0
  42. package/core/skills/retrieve/SKILL.md +0 -1
  43. package/core/skills/setup/SKILL.md +12 -14
  44. package/core/skills/vault-lint/SKILL.md +1 -1
  45. package/core/skills/wiki/SKILL.md +109 -30
  46. package/core/skills/write/SKILL.md +15 -0
  47. package/dist/capture/safe.d.ts +61 -1
  48. package/dist/capture/safe.js +489 -66
  49. package/dist/capture/safe.js.map +1 -1
  50. package/dist/cli/args.d.ts +29 -0
  51. package/dist/cli/args.js +156 -0
  52. package/dist/cli/args.js.map +1 -0
  53. package/dist/cli/audit.d.ts +6 -0
  54. package/dist/cli/audit.js +93 -0
  55. package/dist/cli/audit.js.map +1 -0
  56. package/dist/cli/claude-install-plan.d.ts +10 -0
  57. package/dist/cli/claude-install-plan.js +26 -0
  58. package/dist/cli/claude-install-plan.js.map +1 -0
  59. package/dist/cli/doctor-lint.d.ts +11 -0
  60. package/dist/cli/doctor-lint.js +86 -0
  61. package/dist/cli/doctor-lint.js.map +1 -0
  62. package/dist/cli/global-writeback.d.ts +31 -0
  63. package/dist/cli/global-writeback.js +73 -0
  64. package/dist/cli/global-writeback.js.map +1 -0
  65. package/dist/cli/host-commands.d.ts +30 -0
  66. package/dist/cli/host-commands.js +89 -0
  67. package/dist/cli/host-commands.js.map +1 -0
  68. package/dist/cli/link-command.d.ts +9 -0
  69. package/dist/cli/link-command.js +47 -0
  70. package/dist/cli/link-command.js.map +1 -0
  71. package/dist/cli/linkify.d.ts +23 -0
  72. package/dist/cli/linkify.js +118 -0
  73. package/dist/cli/linkify.js.map +1 -0
  74. package/dist/cli/oms.d.ts +8 -32
  75. package/dist/cli/oms.js +100 -703
  76. package/dist/cli/oms.js.map +1 -1
  77. package/dist/cli/semantic-args.d.ts +1 -2
  78. package/dist/cli/semantic-args.js +4 -7
  79. package/dist/cli/semantic-args.js.map +1 -1
  80. package/dist/cli/semantic-http.d.ts +0 -3
  81. package/dist/cli/semantic-http.js +40 -45
  82. package/dist/cli/semantic-http.js.map +1 -1
  83. package/dist/cli/semantic-usage.js +10 -9
  84. package/dist/cli/semantic-usage.js.map +1 -1
  85. package/dist/cli/semantic.js +99 -137
  86. package/dist/cli/semantic.js.map +1 -1
  87. package/dist/cli/setup-command.d.ts +11 -0
  88. package/dist/cli/setup-command.js +196 -0
  89. package/dist/cli/setup-command.js.map +1 -0
  90. package/dist/cli/setup-documents.d.ts +15 -0
  91. package/dist/cli/setup-documents.js +149 -0
  92. package/dist/cli/setup-documents.js.map +1 -0
  93. package/dist/cli/update-notice.d.ts +10 -0
  94. package/dist/cli/update-notice.js +42 -0
  95. package/dist/cli/update-notice.js.map +1 -0
  96. package/dist/cli/usage.d.ts +4 -0
  97. package/dist/cli/usage.js +102 -0
  98. package/dist/cli/usage.js.map +1 -0
  99. package/dist/conventions/lint.js +12 -33
  100. package/dist/conventions/lint.js.map +1 -1
  101. package/dist/conventions/report.d.ts +62 -0
  102. package/dist/conventions/report.js +217 -0
  103. package/dist/conventions/report.js.map +1 -0
  104. package/dist/conventions/validate.d.ts +1 -1
  105. package/dist/conventions/vault-walk.d.ts +38 -0
  106. package/dist/conventions/vault-walk.js +80 -0
  107. package/dist/conventions/vault-walk.js.map +1 -0
  108. package/dist/conventions/write-contract.d.ts +27 -0
  109. package/dist/conventions/write-contract.js +91 -0
  110. package/dist/conventions/write-contract.js.map +1 -0
  111. package/dist/conventions/write-protocol.d.ts +39 -0
  112. package/dist/conventions/write-protocol.js +44 -0
  113. package/dist/conventions/write-protocol.js.map +1 -0
  114. package/dist/core/ontology/loader.d.ts +2 -0
  115. package/dist/{ontology → core/ontology}/loader.js +11 -20
  116. package/dist/core/ontology/loader.js.map +1 -0
  117. package/dist/core/ontology/resolver.d.ts +2 -0
  118. package/dist/{ontology → core/ontology}/resolver.js +1 -15
  119. package/dist/core/ontology/resolver.js.map +1 -0
  120. package/dist/core/ontology/types.d.ts +47 -0
  121. package/dist/core/ontology/types.js +2 -0
  122. package/dist/core/ontology/types.js.map +1 -0
  123. package/dist/core/runtime/assets.d.ts +20 -0
  124. package/dist/core/runtime/assets.js +66 -0
  125. package/dist/core/runtime/assets.js.map +1 -0
  126. package/dist/engine/assemble.d.ts +28 -72
  127. package/dist/engine/assemble.js +77 -61
  128. package/dist/engine/assemble.js.map +1 -1
  129. package/dist/engine/conventions/vault-lint.d.ts +30 -2
  130. package/dist/engine/conventions/vault-lint.js +93 -97
  131. package/dist/engine/conventions/vault-lint.js.map +1 -1
  132. package/dist/engine/embed/deferred.d.ts +3 -4
  133. package/dist/engine/embed/deferred.js +10 -7
  134. package/dist/engine/embed/deferred.js.map +1 -1
  135. package/dist/engine/embed/identity.d.ts +11 -0
  136. package/dist/engine/embed/identity.js +15 -0
  137. package/dist/engine/embed/identity.js.map +1 -0
  138. package/dist/engine/embed/provider.d.ts +12 -13
  139. package/dist/engine/embed/provider.js +30 -27
  140. package/dist/engine/embed/provider.js.map +1 -1
  141. package/dist/engine/embed/store.d.ts +48 -27
  142. package/dist/engine/embed/store.js +281 -98
  143. package/dist/engine/embed/store.js.map +1 -1
  144. package/dist/engine/embed/sync.d.ts +17 -47
  145. package/dist/engine/embed/sync.js +233 -69
  146. package/dist/engine/embed/sync.js.map +1 -1
  147. package/dist/engine/graph/builder.d.ts +1 -1
  148. package/dist/engine/graph/builder.js +1 -1
  149. package/dist/engine/graph/explore.d.ts +2 -2
  150. package/dist/engine/graph/explore.js +0 -0
  151. package/dist/engine/graph/resolver.d.ts +17 -0
  152. package/dist/engine/graph/resolver.js +46 -11
  153. package/dist/engine/graph/resolver.js.map +1 -1
  154. package/dist/engine/linkify/apply.d.ts +56 -0
  155. package/dist/engine/linkify/apply.js +65 -0
  156. package/dist/engine/linkify/apply.js.map +1 -0
  157. package/dist/engine/linkify/josa.d.ts +58 -0
  158. package/dist/engine/linkify/josa.js +133 -0
  159. package/dist/engine/linkify/josa.js.map +1 -0
  160. package/dist/engine/linkify/mask.d.ts +29 -0
  161. package/dist/engine/linkify/mask.js +173 -0
  162. package/dist/engine/linkify/mask.js.map +1 -0
  163. package/dist/engine/linkify/suggest.d.ts +52 -0
  164. package/dist/engine/linkify/suggest.js +181 -0
  165. package/dist/engine/linkify/suggest.js.map +1 -0
  166. package/dist/engine/linkify/types.d.ts +68 -0
  167. package/dist/engine/linkify/types.js +12 -0
  168. package/dist/engine/linkify/types.js.map +1 -0
  169. package/dist/engine/mcp/facade.d.ts +12 -18
  170. package/dist/engine/mcp/facade.js +30 -80
  171. package/dist/engine/mcp/facade.js.map +1 -1
  172. package/dist/engine/mcp/op-mappers.d.ts +3 -9
  173. package/dist/engine/mcp/op-mappers.js +2 -30
  174. package/dist/engine/mcp/op-mappers.js.map +1 -1
  175. package/dist/engine/mcp/types.d.ts +5 -29
  176. package/dist/engine/tracer.js +6 -2
  177. package/dist/engine/tracer.js.map +1 -1
  178. package/dist/engine/types.d.ts +8 -3
  179. package/dist/graph/cache.d.ts +1 -11
  180. package/dist/graph/cache.js +1 -44
  181. package/dist/graph/cache.js.map +1 -1
  182. package/dist/graph/explore.js +88 -137
  183. package/dist/graph/explore.js.map +1 -1
  184. package/dist/harness/surface-registry.d.ts +56 -0
  185. package/dist/harness/surface-registry.js +397 -0
  186. package/dist/harness/surface-registry.js.map +1 -0
  187. package/dist/harness/validation.d.ts +9 -0
  188. package/dist/harness/validation.js +201 -0
  189. package/dist/harness/validation.js.map +1 -0
  190. package/dist/hook/post-tool-use.js +2 -2
  191. package/dist/hook/post-tool-use.js.map +1 -1
  192. package/dist/index.d.ts +7 -5
  193. package/dist/index.js +7 -5
  194. package/dist/index.js.map +1 -1
  195. package/dist/install/adapter-source.d.ts +14 -0
  196. package/dist/install/adapter-source.js +45 -0
  197. package/dist/install/adapter-source.js.map +1 -0
  198. package/dist/install/claude-hooks.d.ts +13 -0
  199. package/dist/install/claude-hooks.js +411 -0
  200. package/dist/install/claude-hooks.js.map +1 -0
  201. package/dist/install/claude-marketplace.d.ts +44 -0
  202. package/dist/install/claude-marketplace.js +89 -0
  203. package/dist/install/claude-marketplace.js.map +1 -0
  204. package/dist/install/claude.d.ts +4 -0
  205. package/dist/install/claude.js +216 -0
  206. package/dist/install/claude.js.map +1 -0
  207. package/dist/install/codex.d.ts +24 -0
  208. package/dist/install/codex.js +193 -0
  209. package/dist/install/codex.js.map +1 -0
  210. package/dist/install/common.d.ts +34 -0
  211. package/dist/install/common.js +122 -0
  212. package/dist/install/common.js.map +1 -0
  213. package/dist/install/hermes.d.ts +4 -0
  214. package/dist/install/hermes.js +78 -0
  215. package/dist/install/hermes.js.map +1 -0
  216. package/dist/install/hosts.d.ts +6 -56
  217. package/dist/install/hosts.js +65 -610
  218. package/dist/install/hosts.js.map +1 -1
  219. package/dist/install/types.d.ts +34 -0
  220. package/dist/install/types.js +2 -0
  221. package/dist/install/types.js.map +1 -0
  222. package/dist/link/convention-note.d.ts +10 -0
  223. package/dist/link/convention-note.js +59 -0
  224. package/dist/link/convention-note.js.map +1 -0
  225. package/dist/link/global-config.d.ts +22 -0
  226. package/dist/link/global-config.js +69 -0
  227. package/dist/link/global-config.js.map +1 -0
  228. package/dist/link/link.d.ts +101 -0
  229. package/dist/link/link.js +265 -0
  230. package/dist/link/link.js.map +1 -0
  231. package/dist/mcp/engine-morning-backend.d.ts +12 -17
  232. package/dist/mcp/engine-morning-backend.js +25 -131
  233. package/dist/mcp/engine-morning-backend.js.map +1 -1
  234. package/dist/mcp/link-tools.d.ts +81 -0
  235. package/dist/mcp/link-tools.js +157 -0
  236. package/dist/mcp/link-tools.js.map +1 -0
  237. package/dist/mcp/semantic-engine.d.ts +32 -0
  238. package/dist/mcp/semantic-engine.js +52 -0
  239. package/dist/mcp/semantic-engine.js.map +1 -0
  240. package/dist/mcp/semantic-retrieve-args.d.ts +1 -5
  241. package/dist/mcp/semantic-retrieve-args.js +1 -26
  242. package/dist/mcp/semantic-retrieve-args.js.map +1 -1
  243. package/dist/mcp/semantic-retrieve-schema.d.ts +0 -14
  244. package/dist/mcp/semantic-retrieve-schema.js +0 -5
  245. package/dist/mcp/semantic-retrieve-schema.js.map +1 -1
  246. package/dist/mcp/semantic-retrieve.d.ts +12 -18
  247. package/dist/mcp/semantic-retrieve.js +40 -71
  248. package/dist/mcp/semantic-retrieve.js.map +1 -1
  249. package/dist/mcp/semantic-tool-schemas.js +7 -24
  250. package/dist/mcp/semantic-tool-schemas.js.map +1 -1
  251. package/dist/mcp/server.d.ts +7 -0
  252. package/dist/mcp/server.js +224 -162
  253. package/dist/mcp/server.js.map +1 -1
  254. package/dist/mcp/update-notice.d.ts +51 -0
  255. package/dist/mcp/update-notice.js +196 -0
  256. package/dist/mcp/update-notice.js.map +1 -0
  257. package/dist/ontology/active.d.ts +7 -0
  258. package/dist/ontology/active.js +41 -0
  259. package/dist/ontology/active.js.map +1 -0
  260. package/dist/retrieve/morning.d.ts +10 -18
  261. package/dist/retrieve/morning.js +2 -26
  262. package/dist/retrieve/morning.js.map +1 -1
  263. package/dist/retrieve/semantic-contract.d.ts +10 -0
  264. package/dist/retrieve/semantic-contract.js +2 -0
  265. package/dist/retrieve/semantic-contract.js.map +1 -0
  266. package/dist/setup/axis.d.ts +22 -3
  267. package/dist/setup/axis.js +82 -35
  268. package/dist/setup/axis.js.map +1 -1
  269. package/dist/update/update.d.ts +12 -0
  270. package/dist/update/update.js +2 -2
  271. package/dist/update/update.js.map +1 -1
  272. package/docs/install.md +43 -7
  273. package/docs/release.md +109 -17
  274. package/package.json +11 -3
  275. package/scripts/install.sh +1 -1
  276. package/adapters/claude-code/skills/capture/SKILL.md +0 -50
  277. package/adapters/codex/skills/oms-capture/SKILL.md +0 -16
  278. package/adapters/hermes/skills/capture/SKILL.md +0 -16
  279. package/core/skills/capture/SKILL.md +0 -50
  280. package/dist/adapt/HostAdapter.d.ts +0 -21
  281. package/dist/adapt/HostAdapter.js +0 -10
  282. package/dist/adapt/HostAdapter.js.map +0 -1
  283. package/dist/adapt/claudeCode.d.ts +0 -9
  284. package/dist/adapt/claudeCode.js +0 -15
  285. package/dist/adapt/claudeCode.js.map +0 -1
  286. package/dist/adapt/codex.d.ts +0 -9
  287. package/dist/adapt/codex.js +0 -15
  288. package/dist/adapt/codex.js.map +0 -1
  289. package/dist/adapt/hermes.d.ts +0 -9
  290. package/dist/adapt/hermes.js +0 -15
  291. package/dist/adapt/hermes.js.map +0 -1
  292. package/dist/cli/semantic-metadata-commands.d.ts +0 -3
  293. package/dist/cli/semantic-metadata-commands.js +0 -115
  294. package/dist/cli/semantic-metadata-commands.js.map +0 -1
  295. package/dist/engine/compile/cascade.d.ts +0 -35
  296. package/dist/engine/compile/cascade.js +0 -59
  297. package/dist/engine/compile/cascade.js.map +0 -1
  298. package/dist/engine/compile/cot.d.ts +0 -30
  299. package/dist/engine/compile/cot.js +0 -153
  300. package/dist/engine/compile/cot.js.map +0 -1
  301. package/dist/engine/compile/phases.d.ts +0 -47
  302. package/dist/engine/compile/phases.js +0 -101
  303. package/dist/engine/compile/phases.js.map +0 -1
  304. package/dist/engine/compile/provenance.d.ts +0 -45
  305. package/dist/engine/compile/provenance.js +0 -103
  306. package/dist/engine/compile/provenance.js.map +0 -1
  307. package/dist/engine/compile/sha-cache.d.ts +0 -42
  308. package/dist/engine/compile/sha-cache.js +0 -86
  309. package/dist/engine/compile/sha-cache.js.map +0 -1
  310. package/dist/engine/compile/types.d.ts +0 -71
  311. package/dist/engine/compile/types.js +0 -9
  312. package/dist/engine/compile/types.js.map +0 -1
  313. package/dist/engine/compile/worker.d.ts +0 -47
  314. package/dist/engine/compile/worker.js +0 -75
  315. package/dist/engine/compile/worker.js.map +0 -1
  316. package/dist/engine/distill/analyzer.d.ts +0 -51
  317. package/dist/engine/distill/analyzer.js +0 -279
  318. package/dist/engine/distill/analyzer.js.map +0 -1
  319. package/dist/engine/distill/clean-room.d.ts +0 -46
  320. package/dist/engine/distill/clean-room.js +0 -131
  321. package/dist/engine/distill/clean-room.js.map +0 -1
  322. package/dist/engine/distill/report.d.ts +0 -23
  323. package/dist/engine/distill/report.js +0 -107
  324. package/dist/engine/distill/report.js.map +0 -1
  325. package/dist/engine/distill/types.d.ts +0 -89
  326. package/dist/engine/distill/types.js +0 -9
  327. package/dist/engine/distill/types.js.map +0 -1
  328. package/dist/engine/embed/pull.d.ts +0 -51
  329. package/dist/engine/embed/pull.js +0 -90
  330. package/dist/engine/embed/pull.js.map +0 -1
  331. package/dist/engine/graph/community.d.ts +0 -38
  332. package/dist/engine/graph/community.js +0 -122
  333. package/dist/engine/graph/community.js.map +0 -1
  334. package/dist/engine/index.d.ts +0 -5
  335. package/dist/engine/index.js +0 -2
  336. package/dist/engine/index.js.map +0 -1
  337. package/dist/engine/mcp/index.d.ts +0 -15
  338. package/dist/engine/mcp/index.js +0 -19
  339. package/dist/engine/mcp/index.js.map +0 -1
  340. package/dist/engine/mcp/retrieve-mapper.d.ts +0 -38
  341. package/dist/engine/mcp/retrieve-mapper.js +0 -96
  342. package/dist/engine/mcp/retrieve-mapper.js.map +0 -1
  343. package/dist/engine/setup/ambiguity.d.ts +0 -39
  344. package/dist/engine/setup/ambiguity.js +0 -50
  345. package/dist/engine/setup/ambiguity.js.map +0 -1
  346. package/dist/engine/setup/types.d.ts +0 -71
  347. package/dist/engine/setup/types.js +0 -22
  348. package/dist/engine/setup/types.js.map +0 -1
  349. package/dist/engine/setup/writer.d.ts +0 -32
  350. package/dist/engine/setup/writer.js +0 -77
  351. package/dist/engine/setup/writer.js.map +0 -1
  352. package/dist/engine/wiki/collection.d.ts +0 -91
  353. package/dist/engine/wiki/collection.js +0 -188
  354. package/dist/engine/wiki/collection.js.map +0 -1
  355. package/dist/engine/wiki/ledger.d.ts +0 -59
  356. package/dist/engine/wiki/ledger.js +0 -130
  357. package/dist/engine/wiki/ledger.js.map +0 -1
  358. package/dist/engine/wiki/lint.d.ts +0 -38
  359. package/dist/engine/wiki/lint.js +0 -186
  360. package/dist/engine/wiki/lint.js.map +0 -1
  361. package/dist/engine/wiki/navigation.d.ts +0 -40
  362. package/dist/engine/wiki/navigation.js +0 -83
  363. package/dist/engine/wiki/navigation.js.map +0 -1
  364. package/dist/engine/wiki/types.d.ts +0 -54
  365. package/dist/engine/wiki/types.js +0 -7
  366. package/dist/engine/wiki/types.js.map +0 -1
  367. package/dist/ontology/loader.d.ts +0 -13
  368. package/dist/ontology/loader.js.map +0 -1
  369. package/dist/ontology/resolver.d.ts +0 -13
  370. package/dist/ontology/resolver.js.map +0 -1
  371. package/dist/ontology/types.d.ts +0 -72
  372. package/dist/ontology/types.js +0 -12
  373. package/dist/ontology/types.js.map +0 -1
  374. package/dist/retrieve/embedding-sync.d.ts +0 -3
  375. package/dist/retrieve/embedding-sync.js +0 -21
  376. package/dist/retrieve/embedding-sync.js.map +0 -1
  377. package/dist/runtime/assets.d.ts +0 -7
  378. package/dist/runtime/assets.js +0 -13
  379. package/dist/runtime/assets.js.map +0 -1
  380. package/dist/search/semantic-collections.d.ts +0 -32
  381. package/dist/search/semantic-collections.js +0 -68
  382. package/dist/search/semantic-collections.js.map +0 -1
  383. package/dist/search/semantic-contexts.d.ts +0 -21
  384. package/dist/search/semantic-contexts.js +0 -28
  385. package/dist/search/semantic-contexts.js.map +0 -1
  386. package/dist/search/semantic-diagnostics.d.ts +0 -16
  387. package/dist/search/semantic-diagnostics.js +0 -110
  388. package/dist/search/semantic-diagnostics.js.map +0 -1
  389. package/dist/search/semantic-documents.d.ts +0 -3
  390. package/dist/search/semantic-documents.js +0 -150
  391. package/dist/search/semantic-documents.js.map +0 -1
  392. package/dist/search/semantic-embedding-hash.d.ts +0 -3
  393. package/dist/search/semantic-embedding-hash.js +0 -30
  394. package/dist/search/semantic-embedding-hash.js.map +0 -1
  395. package/dist/search/semantic-embedding-provider.d.ts +0 -9
  396. package/dist/search/semantic-embedding-provider.js +0 -58
  397. package/dist/search/semantic-embedding-provider.js.map +0 -1
  398. package/dist/search/semantic-index-build.d.ts +0 -13
  399. package/dist/search/semantic-index-build.js +0 -101
  400. package/dist/search/semantic-index-build.js.map +0 -1
  401. package/dist/search/semantic-index-core.d.ts +0 -21
  402. package/dist/search/semantic-index-core.js +0 -106
  403. package/dist/search/semantic-index-core.js.map +0 -1
  404. package/dist/search/semantic-index-io.d.ts +0 -19
  405. package/dist/search/semantic-index-io.js +0 -214
  406. package/dist/search/semantic-index-io.js.map +0 -1
  407. package/dist/search/semantic-index-types.d.ts +0 -50
  408. package/dist/search/semantic-index-types.js +0 -2
  409. package/dist/search/semantic-index-types.js.map +0 -1
  410. package/dist/search/semantic-index.d.ts +0 -4
  411. package/dist/search/semantic-index.js +0 -4
  412. package/dist/search/semantic-index.js.map +0 -1
  413. package/dist/search/semantic-listing.d.ts +0 -12
  414. package/dist/search/semantic-listing.js +0 -64
  415. package/dist/search/semantic-listing.js.map +0 -1
  416. package/dist/search/semantic-maintenance-shared.d.ts +0 -15
  417. package/dist/search/semantic-maintenance-shared.js +0 -43
  418. package/dist/search/semantic-maintenance-shared.js.map +0 -1
  419. package/dist/search/semantic-maintenance-types.d.ts +0 -103
  420. package/dist/search/semantic-maintenance-types.js +0 -2
  421. package/dist/search/semantic-maintenance-types.js.map +0 -1
  422. package/dist/search/semantic-maintenance.d.ts +0 -4
  423. package/dist/search/semantic-maintenance.js +0 -5
  424. package/dist/search/semantic-maintenance.js.map +0 -1
  425. package/dist/search/semantic-provider-types.d.ts +0 -34
  426. package/dist/search/semantic-provider-types.js +0 -2
  427. package/dist/search/semantic-provider-types.js.map +0 -1
  428. package/dist/search/semantic-query-types.d.ts +0 -83
  429. package/dist/search/semantic-query-types.js +0 -2
  430. package/dist/search/semantic-query-types.js.map +0 -1
  431. package/dist/search/semantic-query.d.ts +0 -2
  432. package/dist/search/semantic-query.js +0 -188
  433. package/dist/search/semantic-query.js.map +0 -1
  434. package/dist/search/semantic-sqlite-db.d.ts +0 -18
  435. package/dist/search/semantic-sqlite-db.js +0 -87
  436. package/dist/search/semantic-sqlite-db.js.map +0 -1
  437. package/dist/search/semantic-sqlite-query.d.ts +0 -2
  438. package/dist/search/semantic-sqlite-query.js +0 -128
  439. package/dist/search/semantic-sqlite-query.js.map +0 -1
  440. package/dist/search/semantic-sqlite-read.d.ts +0 -5
  441. package/dist/search/semantic-sqlite-read.js +0 -104
  442. package/dist/search/semantic-sqlite-read.js.map +0 -1
  443. package/dist/search/semantic-sqlite-write.d.ts +0 -7
  444. package/dist/search/semantic-sqlite-write.js +0 -66
  445. package/dist/search/semantic-sqlite-write.js.map +0 -1
  446. package/dist/search/semantic-store.d.ts +0 -15
  447. package/dist/search/semantic-store.js +0 -17
  448. package/dist/search/semantic-store.js.map +0 -1
  449. package/dist/search/semantic-sync-types.d.ts +0 -47
  450. package/dist/search/semantic-sync-types.js +0 -2
  451. package/dist/search/semantic-sync-types.js.map +0 -1
  452. package/dist/search/semantic-sync.d.ts +0 -13
  453. package/dist/search/semantic-sync.js +0 -131
  454. package/dist/search/semantic-sync.js.map +0 -1
  455. package/dist/search/semantic-test-fixtures.d.ts +0 -1
  456. package/dist/search/semantic-test-fixtures.js +0 -38
  457. package/dist/search/semantic-test-fixtures.js.map +0 -1
  458. package/dist/search/semantic-token.d.ts +0 -25
  459. package/dist/search/semantic-token.js +0 -114
  460. package/dist/search/semantic-token.js.map +0 -1
  461. package/dist/search/semantic-types.d.ts +0 -5
  462. package/dist/search/semantic-types.js +0 -2
  463. package/dist/search/semantic-types.js.map +0 -1
  464. package/dist/search/semantic.d.ts +0 -6
  465. package/dist/search/semantic.js +0 -6
  466. package/dist/search/semantic.js.map +0 -1
@@ -0,0 +1,89 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { isRecord, runExternal } from "./common.js";
4
+ /**
5
+ * Published marketplace source used when the running install has no repo
6
+ * checkout on disk. The npm package ships `adapters/` but not
7
+ * `.claude-plugin/marketplace.json`, so a released install resolves the
8
+ * marketplace from GitHub rather than from a local path.
9
+ */
10
+ const PUBLISHED_MARKETPLACE_REPO = "GoBeromsu/oh-my-second-brain";
11
+ /**
12
+ * Marketplace name published in `.claude-plugin/marketplace.json`. Only used
13
+ * when that manifest is not readable locally; a local checkout always wins so
14
+ * a renamed marketplace cannot drift from the commands OMS prints.
15
+ */
16
+ const PUBLISHED_MARKETPLACE_NAME = "oms";
17
+ const MARKETPLACE_MANIFEST = path.join(".claude-plugin", "marketplace.json");
18
+ /**
19
+ * Claude leaves `autoUpdate` off for third-party marketplaces, and
20
+ * `claude plugin marketplace add` writes the `extraKnownMarketplaces` entry
21
+ * itself. OMS therefore never touches that key: enabling background updates
22
+ * for a third-party source stays an explicit user decision.
23
+ */
24
+ export const MARKETPLACE_AUTO_UPDATE_MESSAGE = "Claude keeps autoUpdate off for third-party marketplaces. To let this marketplace update itself, set " +
25
+ '`extraKnownMarketplaces.<name>.autoUpdate` to true in ~/.claude/settings.json; otherwise run ' +
26
+ "`claude plugin marketplace update` when you want a refresh. OMS does not change this setting for you.";
27
+ /**
28
+ * Reads the marketplace name a repo root declares. Returns null when the
29
+ * manifest is missing, unreadable, or declares no string `name`, so callers can
30
+ * fall back instead of printing a command with a guessed marketplace id.
31
+ */
32
+ export async function readMarketplaceName(repoRoot) {
33
+ let parsed;
34
+ try {
35
+ parsed = JSON.parse(await readFile(path.join(repoRoot, MARKETPLACE_MANIFEST), "utf-8"));
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ if (!isRecord(parsed))
41
+ return null;
42
+ const name = parsed["name"];
43
+ return typeof name === "string" && name.length > 0 ? name : null;
44
+ }
45
+ /**
46
+ * Resolves the marketplace Claude should add. A repo checkout containing the
47
+ * manifest above `adapters/` is preferred (dev and offline installs); otherwise
48
+ * the published GitHub repo is used.
49
+ */
50
+ export async function resolveClaudeMarketplaceSource(pluginPath) {
51
+ const repoRoot = path.resolve(pluginPath, "..", "..");
52
+ const localName = await readMarketplaceName(repoRoot);
53
+ if (localName !== null) {
54
+ return { kind: "local", source: repoRoot, marketplaceName: localName };
55
+ }
56
+ return {
57
+ kind: "github",
58
+ source: PUBLISHED_MARKETPLACE_REPO,
59
+ marketplaceName: PUBLISHED_MARKETPLACE_NAME,
60
+ };
61
+ }
62
+ /**
63
+ * Installs the plugin through the marketplace, falling back to the local plugin
64
+ * path whenever the marketplace flow does not complete (offline, private
65
+ * checkout, or a Claude build without the marketplace surface). The fallback is
66
+ * the pre-marketplace behavior and must stay reachable.
67
+ */
68
+ export function runClaudePluginInstall(plan) {
69
+ const messages = [];
70
+ const addResult = runExternal("claude", ["plugin", "marketplace", "add", plan.marketplace.source]);
71
+ messages.push(addResult.ok
72
+ ? `Executed: ${addResult.message}`
73
+ : "Claude marketplace add failed [claude_marketplace_add_failed]; falling back to the local plugin path.");
74
+ if (addResult.ok) {
75
+ const pluginId = `oms@${plan.marketplace.marketplaceName}`;
76
+ const installResult = runExternal("claude", ["plugin", "install", pluginId]);
77
+ if (installResult.ok) {
78
+ messages.push(`Executed: ${installResult.message}`);
79
+ return { installed: true, messages };
80
+ }
81
+ messages.push(`Claude marketplace install of ${pluginId} failed [claude_marketplace_install_failed]; falling back to the local plugin path.`);
82
+ }
83
+ const fallbackResult = runExternal("claude", ["plugin", "install", plan.pluginPath]);
84
+ messages.push(fallbackResult.ok
85
+ ? `Executed: ${fallbackResult.message} (local plugin path fallback).`
86
+ : plan.describeFailure(fallbackResult));
87
+ return { installed: fallbackResult.ok, messages };
88
+ }
89
+ //# sourceMappingURL=claude-marketplace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-marketplace.js","sourceRoot":"","sources":["../../src/install/claude-marketplace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { HarnessHostSurface } from "../harness/surface-registry.js";
2
+ import type { HostOperationOptions, HostOperationResult } from "./types.js";
3
+ export declare function installClaude(options: HostOperationOptions, host: HarnessHostSurface): Promise<HostOperationResult>;
4
+ export declare function uninstallClaude(options: HostOperationOptions): Promise<HostOperationResult>;
@@ -0,0 +1,216 @@
1
+ import { readFile, writeFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { resolveHostAdapterSource } from "./adapter-source.js";
4
+ import { commandExists, hostHome, isRecord, runExternal } from "./common.js";
5
+ import { removeClaudeHooks, replaceRootJsonPropertyPreservingBytes, upsertClaudeHooks } from "./claude-hooks.js";
6
+ import { MARKETPLACE_AUTO_UPDATE_MESSAGE, resolveClaudeMarketplaceSource, runClaudePluginInstall, } from "./claude-marketplace.js";
7
+ const CLAUDE_MCP_SCOPES = ["local", "project", "user"];
8
+ function claudeMcpRemoveCommand(scope) {
9
+ return `claude mcp remove oms --scope ${scope}`;
10
+ }
11
+ function classifyCleanupResult(scope, result) {
12
+ const manualCommand = claudeMcpRemoveCommand(scope);
13
+ if (result.ok) {
14
+ return { scope, status: "removed", reasonCode: "legacy_removed", manualCommand };
15
+ }
16
+ const stderr = result.stderr;
17
+ const localNotFound = scope === "local" && /No local mcp server found with name:\s*oms/i.test(stderr);
18
+ const projectNotFound = scope === "project" &&
19
+ /No MCP server found with name:\s*oms/i.test(stderr) &&
20
+ /\.mcp\.json|project/i.test(stderr);
21
+ if (localNotFound || projectNotFound) {
22
+ return { scope, status: "not_found", reasonCode: "legacy_not_found", manualCommand };
23
+ }
24
+ return { scope, status: "failed", reasonCode: "legacy_cleanup_failed", manualCommand };
25
+ }
26
+ function cleanupMessage(result) {
27
+ if (result.status === "removed") {
28
+ return `Claude MCP cleanup (${result.scope}): removed stale oms registration.`;
29
+ }
30
+ if (result.status === "not_found") {
31
+ return `Claude MCP cleanup (${result.scope}): no stale oms registration found.`;
32
+ }
33
+ return `WARNING: Claude MCP cleanup (${result.scope}) failed [${result.reasonCode}]. Install continued. Manual step: ${result.manualCommand}`;
34
+ }
35
+ function plannedCleanupMessages(dryRun) {
36
+ const prefix = dryRun ? "dry-run: would execute" : "planned external cleanup";
37
+ return CLAUDE_MCP_SCOPES.map((scope) => `Claude MCP cleanup (${scope}): ${prefix} ${claudeMcpRemoveCommand(scope)}.`);
38
+ }
39
+ function externalLifecycleFailure(action, result) {
40
+ const reasonCode = result.exitCode === null ? "claude_cli_spawn_failed" : `claude_plugin_${action}_failed`;
41
+ return `WARNING: Claude plugin ${action} failed [${reasonCode}]. Plugin-owned MCP activation remains a manual step.`;
42
+ }
43
+ function runClaudeMcpCleanup(options) {
44
+ if (options.dryRun) {
45
+ return { results: [], messages: plannedCleanupMessages(true), changed: false };
46
+ }
47
+ if (!options.executeExternal) {
48
+ return {
49
+ results: [],
50
+ messages: [
51
+ "Claude MCP cleanup was not executed; pass --execute to remove stale registrations through the Claude CLI.",
52
+ ...plannedCleanupMessages(false),
53
+ ],
54
+ changed: false,
55
+ };
56
+ }
57
+ if (!commandExists("claude")) {
58
+ const results = CLAUDE_MCP_SCOPES.map((scope) => ({
59
+ scope,
60
+ status: "failed",
61
+ reasonCode: "claude_cli_unavailable",
62
+ manualCommand: claudeMcpRemoveCommand(scope),
63
+ }));
64
+ return {
65
+ results,
66
+ messages: results.map(cleanupMessage),
67
+ changed: false,
68
+ };
69
+ }
70
+ const results = CLAUDE_MCP_SCOPES.map((scope) => {
71
+ const result = runExternal("claude", ["mcp", "remove", "oms", "--scope", scope]);
72
+ return classifyCleanupResult(scope, result);
73
+ });
74
+ return {
75
+ results,
76
+ messages: results.map(cleanupMessage),
77
+ changed: results.some((result) => result.status === "removed"),
78
+ };
79
+ }
80
+ async function removeClaudeMcp(options, claudeDir) {
81
+ const mcpPath = path.join(claudeDir, "mcp.json");
82
+ let raw;
83
+ try {
84
+ raw = await readFile(mcpPath, "utf-8");
85
+ }
86
+ catch (error) {
87
+ if (error instanceof Error && "code" in error && error.code === "ENOENT")
88
+ return { changed: false };
89
+ return { changed: false, message: `WARNING: Could not read ${mcpPath}; direct MCP cleanup skipped. Remove stale oms manually.` };
90
+ }
91
+ let data;
92
+ try {
93
+ const parsed = JSON.parse(raw);
94
+ if (!isRecord(parsed)) {
95
+ return { changed: false, message: `WARNING: ${mcpPath} is not a JSON object; direct MCP cleanup skipped.` };
96
+ }
97
+ data = parsed;
98
+ }
99
+ catch {
100
+ return { changed: false, message: `WARNING: ${mcpPath} is malformed JSON; direct MCP cleanup skipped.` };
101
+ }
102
+ const existingServers = data["mcpServers"];
103
+ if (existingServers !== undefined && !isRecord(existingServers)) {
104
+ return { changed: false, message: `WARNING: ${mcpPath} has unsupported mcpServers metadata; direct MCP cleanup skipped.` };
105
+ }
106
+ if (!isRecord(existingServers) || !("oms" in existingServers)) {
107
+ return { changed: false };
108
+ }
109
+ delete existingServers["oms"];
110
+ const next = replaceRootJsonPropertyPreservingBytes(raw, "mcpServers", existingServers);
111
+ if (next === null) {
112
+ return { changed: false, message: `WARNING: Could not preserve unmanaged MCP config bytes in ${mcpPath}; direct cleanup skipped.` };
113
+ }
114
+ if (!options.dryRun) {
115
+ try {
116
+ await writeFile(mcpPath, next, "utf-8");
117
+ }
118
+ catch {
119
+ return { changed: false, message: `WARNING: Could not write ${mcpPath}; direct MCP cleanup skipped. Remove stale oms manually.` };
120
+ }
121
+ }
122
+ return { changed: !options.dryRun };
123
+ }
124
+ export async function installClaude(options, host) {
125
+ const claudeDir = hostHome(options.homeDir, ".claude", "OMS_CLAUDE_HOME");
126
+ const pluginPath = resolveHostAdapterSource(options.adapterRoot, host);
127
+ const marketplace = await resolveClaudeMarketplaceSource(pluginPath);
128
+ const commands = [
129
+ ...CLAUDE_MCP_SCOPES.map(claudeMcpRemoveCommand),
130
+ `claude plugin marketplace add ${marketplace.source}`,
131
+ `claude plugin install oms@${marketplace.marketplaceName}`,
132
+ `claude plugin install ${pluginPath}`,
133
+ ];
134
+ const messages = [
135
+ "Claude Code adapter is installed through the plugin-owned MCP surface declared in .mcp.json.",
136
+ `Claude marketplace source: ${marketplace.source} (${marketplace.kind}); the local plugin path stays available as an offline fallback.`,
137
+ MARKETPLACE_AUTO_UPDATE_MESSAGE,
138
+ ];
139
+ const directCleanup = await removeClaudeMcp(options, claudeDir);
140
+ let changed = directCleanup.changed;
141
+ if (directCleanup.changed)
142
+ messages.push("Removed stale direct oms MCP registration from Claude local config.");
143
+ if (directCleanup.message)
144
+ messages.push(directCleanup.message);
145
+ let pluginInstalled = false;
146
+ const cleanup = runClaudeMcpCleanup(options);
147
+ messages.push(...cleanup.messages);
148
+ changed = cleanup.changed || changed;
149
+ if (options.executeExternal) {
150
+ if (!commandExists("claude")) {
151
+ messages.push("Claude CLI was not found; no plugin or MCP activation was performed. Run the listed plugin command manually.");
152
+ }
153
+ else if (!options.dryRun) {
154
+ const install = runClaudePluginInstall({
155
+ marketplace,
156
+ pluginPath,
157
+ describeFailure: (result) => externalLifecycleFailure("install", result),
158
+ });
159
+ messages.push(...install.messages);
160
+ changed = changed || install.installed;
161
+ pluginInstalled = install.installed;
162
+ }
163
+ }
164
+ if (!pluginInstalled)
165
+ messages.push("Claude plugin was not installed; plugin-owned MCP activation remains a manual step.");
166
+ const hookResult = await upsertClaudeHooks(options, claudeDir);
167
+ changed = hookResult.changed || changed;
168
+ messages.push(...hookResult.messages);
169
+ return {
170
+ runtime: "claude",
171
+ action: "install",
172
+ changed: changed && !options.dryRun,
173
+ skipped: false,
174
+ paths: [pluginPath, path.join(claudeDir, "settings.json")],
175
+ commands,
176
+ messages,
177
+ cleanup: cleanup.results,
178
+ };
179
+ }
180
+ export async function uninstallClaude(options) {
181
+ const claudeDir = hostHome(options.homeDir, ".claude", "OMS_CLAUDE_HOME");
182
+ const commands = [
183
+ ...CLAUDE_MCP_SCOPES.map(claudeMcpRemoveCommand),
184
+ "claude plugin uninstall oms",
185
+ ];
186
+ const messages = ["Claude Code uninstall removes the Oh My Second Brain MCP entry and, when requested, asks Claude CLI to uninstall the plugin."];
187
+ const directCleanup = await removeClaudeMcp(options, claudeDir);
188
+ let changed = directCleanup.changed;
189
+ if (directCleanup.message)
190
+ messages.push(directCleanup.message);
191
+ const cleanup = runClaudeMcpCleanup(options);
192
+ messages.push(...cleanup.messages);
193
+ changed = cleanup.changed || changed;
194
+ const hookResult = await removeClaudeHooks(options, claudeDir);
195
+ changed = hookResult.changed || changed;
196
+ messages.push(...hookResult.messages);
197
+ if (options.executeExternal && commandExists("claude") && !options.dryRun) {
198
+ const externalCommands = [["claude", "plugin", "uninstall", "oms"]];
199
+ for (const [command, ...args] of externalCommands) {
200
+ const result = runExternal(command, args);
201
+ messages.push(result.ok ? `Executed: ${result.message}` : externalLifecycleFailure("uninstall", result));
202
+ changed = changed || result.ok;
203
+ }
204
+ }
205
+ return {
206
+ runtime: "claude",
207
+ action: "uninstall",
208
+ changed: changed && !options.dryRun,
209
+ skipped: false,
210
+ paths: [path.join(claudeDir, "mcp.json")],
211
+ commands,
212
+ messages,
213
+ cleanup: cleanup.results,
214
+ };
215
+ }
216
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/install/claude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { HarnessHostSurface } from "../harness/surface-registry.js";
2
+ import type { HostOperationOptions, HostOperationResult } from "./types.js";
3
+ export declare class CodexSkillNamespaceError extends Error {
4
+ readonly skillDir: string;
5
+ readonly prefix: string;
6
+ constructor(skillDir: string, prefix: string);
7
+ }
8
+ /**
9
+ * Codex install stays file-copy based on purpose.
10
+ *
11
+ * `codex plugin marketplace add <repo>` does consume the same root
12
+ * `.claude-plugin/marketplace.json` (verified against codex-cli 0.147.0: the
13
+ * marketplace resolves as `oms` and `codex plugin add oms@oms` succeeds), but
14
+ * the manifest's plugin entry declares `"source": "./"`, so Codex caches the
15
+ * whole repository and finds no `rules/` or `skills/` at the cached root —
16
+ * those live under `adapters/codex/`. A marketplace install would therefore
17
+ * register a plugin that delivers none of the Codex-native surfaces this
18
+ * function installs, on top of the managed MCP block it already writes.
19
+ *
20
+ * Wiring Codex to the shared manifest needs a Codex-native descriptor whose
21
+ * source points at `adapters/codex`; that is a follow-up, not this change.
22
+ */
23
+ export declare function installCodex(options: HostOperationOptions, host: HarnessHostSurface): Promise<HostOperationResult>;
24
+ export declare function uninstallCodex(options: HostOperationOptions): Promise<HostOperationResult>;
@@ -0,0 +1,193 @@
1
+ import { existsSync } from "node:fs";
2
+ import { cp, mkdir, readFile, readdir, rm, writeFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { resolveHostAdapterSource } from "./adapter-source.js";
5
+ import { hostHome, jsonString, mcpArgs, replaceDirectory } from "./common.js";
6
+ const MANAGED_CODEX_START = "# BEGIN OMS MANAGED MCP";
7
+ const MANAGED_CODEX_END = "# END OMS MANAGED MCP";
8
+ const CODEX_SKILL_PREFIX = "oms-";
9
+ const CODEX_RULE_FILENAME = "oms.md";
10
+ export class CodexSkillNamespaceError extends Error {
11
+ skillDir;
12
+ prefix;
13
+ constructor(skillDir, prefix) {
14
+ super(`Codex skill directory must be namespaced ${prefix}*: ${skillDir}`);
15
+ this.name = "CodexSkillNamespaceError";
16
+ this.skillDir = skillDir;
17
+ this.prefix = prefix;
18
+ }
19
+ }
20
+ function codexManagedBlock(options) {
21
+ const args = mcpArgs(options).map(jsonString).join(", ");
22
+ return [
23
+ MANAGED_CODEX_START,
24
+ "# OMS MCP hookup for Codex CLI. Managed by `oms install/uninstall`.",
25
+ "# Codex-native rules live in ~/.codex/rules/oms.md; skills live in ~/.codex/skills/oms-*.",
26
+ "[mcp_servers.oms]",
27
+ 'command = "oms"',
28
+ `args = [${args}]`,
29
+ "",
30
+ "[mcp_servers.oms.env]",
31
+ 'OMS_AGENT_RUNTIME = "codex"',
32
+ MANAGED_CODEX_END,
33
+ "",
34
+ ].join("\n");
35
+ }
36
+ function isCodexOMSTable(line) {
37
+ return line === "[mcp_servers.oms]" || line.startsWith("[mcp_servers.oms.");
38
+ }
39
+ function removeManagedCodexBlock(content) {
40
+ const start = MANAGED_CODEX_START.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
41
+ const end = MANAGED_CODEX_END.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
42
+ const markerPattern = new RegExp(`\\n?${start}[\\s\\S]*?${end}\\n?`, "g");
43
+ const withoutMarkers = content.replace(markerPattern, "\n");
44
+ const markerRemoved = withoutMarkers !== content;
45
+ const lines = withoutMarkers.split(/\r?\n/);
46
+ const output = [];
47
+ let removedLegacy = false;
48
+ for (let i = 0; i < lines.length; i++) {
49
+ const line = lines[i] ?? "";
50
+ const trimmed = line.trim();
51
+ if (isCodexOMSTable(trimmed)) {
52
+ removedLegacy = true;
53
+ i++;
54
+ while (i < lines.length) {
55
+ const next = (lines[i] ?? "").trim();
56
+ const isTable = /^\[[^\]]+\]$/.test(next);
57
+ if (isTable && !isCodexOMSTable(next)) {
58
+ i--;
59
+ break;
60
+ }
61
+ i++;
62
+ }
63
+ continue;
64
+ }
65
+ if (line.includes("OMS MCP hookup for Codex CLI")) {
66
+ removedLegacy = true;
67
+ continue;
68
+ }
69
+ output.push(line);
70
+ }
71
+ return { content: `${output.join("\n").replace(/\n{3,}/g, "\n\n").trimEnd()}\n`, removed: markerRemoved || removedLegacy };
72
+ }
73
+ async function installCodexNativeArtifacts(codexDir, options, adapterSource) {
74
+ const paths = [];
75
+ const rulesSource = path.join(adapterSource, "rules", CODEX_RULE_FILENAME);
76
+ const rulesTarget = path.join(codexDir, "rules", CODEX_RULE_FILENAME);
77
+ const skillsSource = path.join(adapterSource, "skills");
78
+ const skillsTargetRoot = path.join(codexDir, "skills");
79
+ if (!options.dryRun) {
80
+ await mkdir(path.dirname(rulesTarget), { recursive: true });
81
+ await cp(rulesSource, rulesTarget);
82
+ await mkdir(skillsTargetRoot, { recursive: true });
83
+ const entries = await readdir(skillsSource, { withFileTypes: true });
84
+ const desired = new Set(entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name));
85
+ for (const entry of entries) {
86
+ if (!entry.isDirectory())
87
+ continue;
88
+ const target = path.join(skillsTargetRoot, entry.name);
89
+ if (!entry.name.startsWith(CODEX_SKILL_PREFIX)) {
90
+ throw new CodexSkillNamespaceError(entry.name, CODEX_SKILL_PREFIX);
91
+ }
92
+ await replaceDirectory(path.join(skillsSource, entry.name), target, false);
93
+ paths.push(target);
94
+ }
95
+ const installed = await readdir(skillsTargetRoot, { withFileTypes: true });
96
+ for (const entry of installed) {
97
+ if (entry.isDirectory() && entry.name.startsWith(CODEX_SKILL_PREFIX) && !desired.has(entry.name)) {
98
+ await rm(path.join(skillsTargetRoot, entry.name), { recursive: true, force: true });
99
+ }
100
+ }
101
+ }
102
+ else {
103
+ paths.push(path.join(skillsTargetRoot, `${CODEX_SKILL_PREFIX}setup`));
104
+ }
105
+ return [rulesTarget, ...paths];
106
+ }
107
+ /**
108
+ * Codex install stays file-copy based on purpose.
109
+ *
110
+ * `codex plugin marketplace add <repo>` does consume the same root
111
+ * `.claude-plugin/marketplace.json` (verified against codex-cli 0.147.0: the
112
+ * marketplace resolves as `oms` and `codex plugin add oms@oms` succeeds), but
113
+ * the manifest's plugin entry declares `"source": "./"`, so Codex caches the
114
+ * whole repository and finds no `rules/` or `skills/` at the cached root —
115
+ * those live under `adapters/codex/`. A marketplace install would therefore
116
+ * register a plugin that delivers none of the Codex-native surfaces this
117
+ * function installs, on top of the managed MCP block it already writes.
118
+ *
119
+ * Wiring Codex to the shared manifest needs a Codex-native descriptor whose
120
+ * source points at `adapters/codex`; that is a follow-up, not this change.
121
+ */
122
+ export async function installCodex(options, host) {
123
+ const codexDir = hostHome(options.homeDir, ".codex", "OMS_CODEX_HOME");
124
+ const pluginSource = resolveHostAdapterSource(options.adapterRoot, host);
125
+ const pluginTarget = path.join(codexDir, "plugins", "oms");
126
+ const configPath = path.join(codexDir, "config.toml");
127
+ const original = existsSync(configPath) ? await readFile(configPath, "utf-8") : "";
128
+ const stripped = removeManagedCodexBlock(original).content;
129
+ const next = `${stripped.trimEnd()}\n\n${codexManagedBlock(options)}`;
130
+ let nativePaths = [];
131
+ if (!options.dryRun) {
132
+ await mkdir(path.dirname(configPath), { recursive: true });
133
+ await writeFile(configPath, next, "utf-8");
134
+ await replaceDirectory(pluginSource, pluginTarget, false);
135
+ nativePaths = await installCodexNativeArtifacts(codexDir, options, pluginSource);
136
+ }
137
+ else {
138
+ nativePaths = [
139
+ path.join(codexDir, "rules", CODEX_RULE_FILENAME),
140
+ path.join(codexDir, "skills", `${CODEX_SKILL_PREFIX}setup`),
141
+ ];
142
+ }
143
+ return {
144
+ runtime: "codex",
145
+ action: "install",
146
+ changed: !options.dryRun,
147
+ skipped: false,
148
+ paths: [configPath, pluginTarget, ...nativePaths],
149
+ commands: [`Codex MCP config: ${configPath}`],
150
+ messages: ["Installed Codex-native Oh My Second Brain rules, namespaced skills, plugin assets, and managed MCP/env config."],
151
+ };
152
+ }
153
+ export async function uninstallCodex(options) {
154
+ const codexDir = hostHome(options.homeDir, ".codex", "OMS_CODEX_HOME");
155
+ const pluginTarget = path.join(codexDir, "plugins", "oms");
156
+ const configPath = path.join(codexDir, "config.toml");
157
+ const ruleTarget = path.join(codexDir, "rules", CODEX_RULE_FILENAME);
158
+ const skillsRoot = path.join(codexDir, "skills");
159
+ let changed = false;
160
+ if (existsSync(configPath)) {
161
+ const original = await readFile(configPath, "utf-8");
162
+ const removed = removeManagedCodexBlock(original);
163
+ changed = removed.removed;
164
+ if (removed.removed && !options.dryRun)
165
+ await writeFile(configPath, removed.content, "utf-8");
166
+ }
167
+ for (const target of [pluginTarget, ruleTarget]) {
168
+ if (existsSync(target)) {
169
+ changed = true;
170
+ if (!options.dryRun)
171
+ await rm(target, { recursive: true, force: true });
172
+ }
173
+ }
174
+ if (existsSync(skillsRoot)) {
175
+ for (const entry of await readdir(skillsRoot, { withFileTypes: true })) {
176
+ if (entry.isDirectory() && entry.name.startsWith(CODEX_SKILL_PREFIX)) {
177
+ changed = true;
178
+ if (!options.dryRun)
179
+ await rm(path.join(skillsRoot, entry.name), { recursive: true, force: true });
180
+ }
181
+ }
182
+ }
183
+ return {
184
+ runtime: "codex",
185
+ action: "uninstall",
186
+ changed: changed && !options.dryRun,
187
+ skipped: !changed,
188
+ paths: [configPath, pluginTarget, ruleTarget, path.join(skillsRoot, `${CODEX_SKILL_PREFIX}*`)],
189
+ commands: [],
190
+ messages: ["Removed Codex managed MCP block, Oh My Second Brain rule, namespaced Oh My Second Brain skills, and plugin assets."],
191
+ };
192
+ }
193
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/install/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { HostOperationOptions } from "./types.js";
2
+ export declare class InstallTargetSymlinkError extends Error {
3
+ readonly target: string;
4
+ constructor(target: string);
5
+ }
6
+ export declare function commandExists(command: string): boolean;
7
+ export declare function hostHome(homeDir: string | undefined, dirname: string, envName: string): string;
8
+ export declare function mcpArgs(options: HostOperationOptions): string[];
9
+ export declare function jsonString(value: string): string;
10
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
11
+ export declare function readJsonObject(file: string): Promise<Record<string, unknown>>;
12
+ export declare function writeJsonObject(file: string, data: Record<string, unknown>, dryRun: boolean): Promise<boolean>;
13
+ export type YamlEntryEdit = {
14
+ readonly kind: "set";
15
+ readonly value: Record<string, unknown>;
16
+ } | {
17
+ readonly kind: "delete";
18
+ };
19
+ /**
20
+ * Applies one `section.key` edit to a YAML file while leaving every other byte,
21
+ * comment, and key ordering the document already had in place.
22
+ */
23
+ export declare function editYamlEntryPreservingComments(file: string, entryPath: readonly [string, string], edit: YamlEntryEdit): Promise<boolean>;
24
+ export declare function mcpServerEntry(options: HostOperationOptions): Record<string, unknown>;
25
+ export interface ExternalCommandResult {
26
+ readonly ok: boolean;
27
+ readonly exitCode: number | null;
28
+ readonly signal: NodeJS.Signals | null;
29
+ readonly stdout: string;
30
+ readonly stderr: string;
31
+ readonly message: string;
32
+ }
33
+ export declare function runExternal(command: string, args: string[]): ExternalCommandResult;
34
+ export declare function replaceDirectory(source: string, target: string, dryRun: boolean): Promise<boolean>;