@memorax/memorax-code 0.1.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 (282) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +53 -0
  3. package/bin/memorax-cli.mjs +28 -0
  4. package/bin/memorax-code-backend.mjs +4 -0
  5. package/bin/memorax-code-claude.mjs +4 -0
  6. package/bin/memorax-code-codex.mjs +4 -0
  7. package/bin/memorax-code-npm-preinstall.mjs +55 -0
  8. package/bin/memorax-code-plugin-postinstall.mjs +1236 -0
  9. package/bin/memorax-code.mjs +204 -0
  10. package/docs/configuration.md +232 -0
  11. package/docs/troubleshooting.md +179 -0
  12. package/lib/client-hook-runtime.mjs +32 -0
  13. package/lib/memorax-code-adapter-common/src/backend-connection.d.mts +111 -0
  14. package/lib/memorax-code-adapter-common/src/backend-connection.mjs +304 -0
  15. package/lib/memorax-code-adapter-common/src/clients/claude-command.mjs +38 -0
  16. package/lib/memorax-code-adapter-common/src/clients/codex-command.mjs +41 -0
  17. package/lib/memorax-code-adapter-common/src/clients/codex-plugin-artifact.d.mts +3 -0
  18. package/lib/memorax-code-adapter-common/src/clients/codex-plugin-artifact.mjs +38 -0
  19. package/lib/memorax-code-adapter-common/src/config-utils.d.mts +27 -0
  20. package/lib/memorax-code-adapter-common/src/config-utils.mjs +391 -0
  21. package/lib/memorax-code-adapter-common/src/hooks/capture-cwd-hook.mjs +137 -0
  22. package/lib/memorax-code-adapter-common/src/hooks/client-hook-launcher.mjs +324 -0
  23. package/lib/memorax-code-adapter-common/src/hooks/ensure-backend-runner.mjs +142 -0
  24. package/lib/memorax-code-adapter-common/src/hooks/hook-runtime-generation.d.mts +38 -0
  25. package/lib/memorax-code-adapter-common/src/hooks/hook-runtime-generation.mjs +501 -0
  26. package/lib/memorax-code-adapter-common/src/hooks/memory-skill-reminder-hook.mjs +277 -0
  27. package/lib/memorax-code-adapter-common/src/memorax-code-config-file.d.mts +28 -0
  28. package/lib/memorax-code-adapter-common/src/memorax-code-config-file.mjs +296 -0
  29. package/lib/memorax-code-adapter-common/src/memorax-defaults.d.mts +10 -0
  30. package/lib/memorax-code-adapter-common/src/memorax-defaults.mjs +12 -0
  31. package/lib/memorax-code-adapter-common/src/repo-memory/repo-memory-job-context.mjs +28 -0
  32. package/lib/memorax-code-adapter-common/src/repo-memory/repo-memory-job-marker.mjs +252 -0
  33. package/lib/memorax-code-adapter-common/src/repo-memory/repo-memory-job-supervisor.mjs +559 -0
  34. package/lib/memorax-code-adapter-common/src/repo-memory/repo-memory-job-worker.mjs +411 -0
  35. package/lib/memorax-code-adapter-common/src/repo-memory/repo-memory-update-policy-evaluator.mjs +185 -0
  36. package/lib/memorax-code-adapter-common/src/repo-memory/repo-memory-update-policy.mjs +165 -0
  37. package/lib/memorax-code-adapter-common/src/repo-memory/repo-procedure-memory-context.mjs +181 -0
  38. package/lib/memorax-code-adapter-common/src/repo-memory/repo-user-profile-context.mjs +251 -0
  39. package/lib/memorax-code-adapter-common/src/runtime-record.d.mts +55 -0
  40. package/lib/memorax-code-adapter-common/src/runtime-record.mjs +152 -0
  41. package/lib/memorax-code-adapter-common/src/windows-cli-invocation.mjs +100 -0
  42. package/lib/memorax-code-backend/dist/active-client-selection.js +35 -0
  43. package/lib/memorax-code-backend/dist/adapter-lifecycle-participant.js +1 -0
  44. package/lib/memorax-code-backend/dist/automatic-memory-retrieval.js +113 -0
  45. package/lib/memorax-code-backend/dist/automatic-memory-writeback.js +297 -0
  46. package/lib/memorax-code-backend/dist/backend-env.js +13 -0
  47. package/lib/memorax-code-backend/dist/backend-lifecycle-lock.js +42 -0
  48. package/lib/memorax-code-backend/dist/backend-process.js +147 -0
  49. package/lib/memorax-code-backend/dist/backend-service-cleanup.js +18 -0
  50. package/lib/memorax-code-backend/dist/backend-service-record.js +206 -0
  51. package/lib/memorax-code-backend/dist/backend-service-result.js +37 -0
  52. package/lib/memorax-code-backend/dist/backend-service-token.js +11 -0
  53. package/lib/memorax-code-backend/dist/backend-shutdown-request.js +133 -0
  54. package/lib/memorax-code-backend/dist/backend-state.js +58 -0
  55. package/lib/memorax-code-backend/dist/backend-status.js +53 -0
  56. package/lib/memorax-code-backend/dist/backend-token-record.js +79 -0
  57. package/lib/memorax-code-backend/dist/claude-adapter-lifecycle.js +134 -0
  58. package/lib/memorax-code-backend/dist/claude-local-transcript.js +648 -0
  59. package/lib/memorax-code-backend/dist/claude-memory-hook-runtime.js +472 -0
  60. package/lib/memorax-code-backend/dist/claude-transcript-turn.js +876 -0
  61. package/lib/memorax-code-backend/dist/client-plugin-removal.js +67 -0
  62. package/lib/memorax-code-backend/dist/client-selection.js +36 -0
  63. package/lib/memorax-code-backend/dist/codex-adapter-lifecycle.js +131 -0
  64. package/lib/memorax-code-backend/dist/codex-effective-prompt.js +54 -0
  65. package/lib/memorax-code-backend/dist/codex-memory-hook-runtime.js +541 -0
  66. package/lib/memorax-code-backend/dist/codex-plugin-hooks.js +421 -0
  67. package/lib/memorax-code-backend/dist/codex-plugin-install.js +523 -0
  68. package/lib/memorax-code-backend/dist/codex-rollout-turn.js +402 -0
  69. package/lib/memorax-code-backend/dist/codex-session-turn-index.js +88 -0
  70. package/lib/memorax-code-backend/dist/codex-workspace-links.js +55 -0
  71. package/lib/memorax-code-backend/dist/debug-log.js +21 -0
  72. package/lib/memorax-code-backend/dist/entrypoint.js +14 -0
  73. package/lib/memorax-code-backend/dist/incremental-jsonl-projection.js +271 -0
  74. package/lib/memorax-code-backend/dist/install-watchdog.js +71 -0
  75. package/lib/memorax-code-backend/dist/jsonl-append.js +75 -0
  76. package/lib/memorax-code-backend/dist/memorax-adapter.js +451 -0
  77. package/lib/memorax-code-backend/dist/memorax-cli.js +14 -0
  78. package/lib/memorax-code-backend/dist/memorax-code-config.js +279 -0
  79. package/lib/memorax-code-backend/dist/memorax-code-lifecycle.js +523 -0
  80. package/lib/memorax-code-backend/dist/memorax-code.js +3 -0
  81. package/lib/memorax-code-backend/dist/memorax-config.js +283 -0
  82. package/lib/memorax-code-backend/dist/memorax-http.js +142 -0
  83. package/lib/memorax-code-backend/dist/memory-cli.js +345 -0
  84. package/lib/memorax-code-backend/dist/memory-hook-command.js +200 -0
  85. package/lib/memorax-code-backend/dist/memory-observability.js +1 -0
  86. package/lib/memorax-code-backend/dist/memory-project.js +89 -0
  87. package/lib/memorax-code-backend/dist/memory-reminder-trace-recorder.js +58 -0
  88. package/lib/memorax-code-backend/dist/memory-service.js +66 -0
  89. package/lib/memorax-code-backend/dist/memory-turn-coordinator.js +139 -0
  90. package/lib/memorax-code-backend/dist/memory-viewer-activity.js +113 -0
  91. package/lib/memorax-code-backend/dist/memory-viewer-data-projection-cache.js +69 -0
  92. package/lib/memorax-code-backend/dist/memory-viewer-event-identity.js +3 -0
  93. package/lib/memorax-code-backend/dist/memory-viewer-history-projection.js +79 -0
  94. package/lib/memorax-code-backend/dist/memory-viewer-logo.js +1 -0
  95. package/lib/memorax-code-backend/dist/memory-viewer-observability.js +8 -0
  96. package/lib/memorax-code-backend/dist/memory-viewer-redaction.js +52 -0
  97. package/lib/memorax-code-backend/dist/memory-viewer-session-title.js +93 -0
  98. package/lib/memorax-code-backend/dist/memory-viewer-store.js +964 -0
  99. package/lib/memorax-code-backend/dist/memory-viewer-turn-reference.js +12 -0
  100. package/lib/memorax-code-backend/dist/memory-viewer-user-html.js +115 -0
  101. package/lib/memorax-code-backend/dist/memory-viewer-user-projection.js +168 -0
  102. package/lib/memorax-code-backend/dist/memory-viewer-writeback-status.js +97 -0
  103. package/lib/memorax-code-backend/dist/memory-writeback-buffer.js +217 -0
  104. package/lib/memorax-code-backend/dist/memory-writeback-chunk.js +120 -0
  105. package/lib/memorax-code-backend/dist/memory-writeback-reconciler.js +244 -0
  106. package/lib/memorax-code-backend/dist/memory-writeback-task-projection.js +377 -0
  107. package/lib/memorax-code-backend/dist/proxy-env.js +54 -0
  108. package/lib/memorax-code-backend/dist/repo-memory-readiness.js +188 -0
  109. package/lib/memorax-code-backend/dist/repository-memory-context.js +134 -0
  110. package/lib/memorax-code-backend/dist/repository-memory-scope.js +490 -0
  111. package/lib/memorax-code-backend/dist/server-cli.js +787 -0
  112. package/lib/memorax-code-backend/dist/server-health.js +16 -0
  113. package/lib/memorax-code-backend/dist/server-http.js +110 -0
  114. package/lib/memorax-code-backend/dist/server-json.js +4 -0
  115. package/lib/memorax-code-backend/dist/server-memory-hook.js +32 -0
  116. package/lib/memorax-code-backend/dist/server-memory-viewer.js +135 -0
  117. package/lib/memorax-code-backend/dist/server-observability.js +102 -0
  118. package/lib/memorax-code-backend/dist/server.js +220 -0
  119. package/lib/memorax-code-backend/dist/service-entrypoint.js +10 -0
  120. package/lib/memorax-code-backend/dist/service.js +567 -0
  121. package/lib/memorax-code-backend/dist/trace-config.js +112 -0
  122. package/lib/memorax-code-backend/dist/trace-context.js +111 -0
  123. package/lib/memorax-code-backend/dist/trace-store.js +571 -0
  124. package/lib/memorax-code-backend/dist/utils.js +3 -0
  125. package/lib/memorax-code-backend/dist/windows-cli-invocation.js +148 -0
  126. package/lib/memorax-code-backend/package.json +26 -0
  127. package/lib/memorax-code-claude-adapter/.claude-plugin/plugin.json +15 -0
  128. package/lib/memorax-code-claude-adapter/hooks/hook-launcher.mjs +27 -0
  129. package/lib/memorax-code-claude-adapter/hooks/hooks.json +66 -0
  130. package/lib/memorax-code-claude-adapter/hooks/repo-memory-job.mjs +37 -0
  131. package/lib/memorax-code-claude-adapter/hooks/runtime-hook.mjs +4 -0
  132. package/lib/memorax-code-claude-adapter/hooks/runtime-shell.json +5 -0
  133. package/lib/memorax-code-claude-adapter/package.json +13 -0
  134. package/lib/memorax-code-claude-adapter/runtime-hooks/capture-cwd.mjs +17 -0
  135. package/lib/memorax-code-claude-adapter/runtime-hooks/ensure-backend.mjs +59 -0
  136. package/lib/memorax-code-claude-adapter/runtime-hooks/memory-cli-session.mjs +33 -0
  137. package/lib/memorax-code-claude-adapter/runtime-hooks/memory-skill-reminder.mjs +73 -0
  138. package/lib/memorax-code-claude-adapter/runtime-hooks/memory-turn.mjs +91 -0
  139. package/lib/memorax-code-claude-adapter/scripts/build-marketplace.mjs +99 -0
  140. package/lib/memorax-code-claude-adapter/skills/memorax-code/SKILL.md +83 -0
  141. package/lib/memorax-code-claude-adapter/skills/memorax-code/agents/claude.yaml +10 -0
  142. package/lib/memorax-code-claude-adapter/skills/memorax-code/agents/openai.yaml +7 -0
  143. package/lib/memorax-code-claude-adapter/skills/memorax-code/defaults.json +9 -0
  144. package/lib/memorax-code-claude-adapter/skills/memorax-code/references/memorax-add.md +82 -0
  145. package/lib/memorax-code-claude-adapter/skills/memorax-code/references/memorax-search.md +61 -0
  146. package/lib/memorax-code-claude-adapter/skills/memorax-code/references/personal-read.md +46 -0
  147. package/lib/memorax-code-claude-adapter/skills/memorax-code/references/personal-write.md +100 -0
  148. package/lib/memorax-code-claude-adapter/skills/memorax-code/references/repo-build.md +270 -0
  149. package/lib/memorax-code-claude-adapter/skills/memorax-code/references/repo-read.md +96 -0
  150. package/lib/memorax-code-claude-adapter/skills/memorax-code/references/repo-templates.md +270 -0
  151. package/lib/memorax-code-claude-adapter/skills/memorax-code/references/repo-update.md +116 -0
  152. package/lib/memorax-code-claude-adapter/skills/memorax-code/scripts/collect_all.py +496 -0
  153. package/lib/memorax-code-claude-adapter/skills/memorax-code/scripts/detect_updates.py +856 -0
  154. package/lib/memorax-code-claude-adapter/skills/memorax-code/scripts/git_commit_facets.py +222 -0
  155. package/lib/memorax-code-claude-adapter/skills/memorax-code/scripts/github_resource_facets.py +504 -0
  156. package/lib/memorax-code-claude-adapter/skills/memorax-code/scripts/gitlab_resource_facets.py +509 -0
  157. package/lib/memorax-code-claude-adapter/skills/memorax-code/scripts/prepare_repo_memory.py +411 -0
  158. package/lib/memorax-code-claude-adapter/skills/memorax-code/scripts/user_profile_memory.py +528 -0
  159. package/lib/memorax-code-claude-adapter/skills/memorax-code/scripts/validate_memory.py +226 -0
  160. package/lib/memorax-code-claude-adapter/src/adapter-paths.mjs +46 -0
  161. package/lib/memorax-code-claude-adapter/src/cli.mjs +363 -0
  162. package/lib/memorax-code-claude-adapter/src/config-utils.mjs +1 -0
  163. package/lib/memorax-code-claude-adapter/src/config.mjs +544 -0
  164. package/lib/memorax-code-claude-adapter/src/plugin-artifact-contract.mjs +148 -0
  165. package/lib/memorax-code-claude-adapter/src/plugin-install.mjs +566 -0
  166. package/lib/memorax-code-claude-marketplace/.claude-plugin/marketplace.json +15 -0
  167. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/.claude-plugin/plugin.json +15 -0
  168. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/hooks/hook-launcher.mjs +27 -0
  169. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/hooks/hooks.json +66 -0
  170. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/hooks/repo-memory-job.mjs +37 -0
  171. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/hooks/runtime-hook.mjs +4 -0
  172. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/hooks/runtime-shell.json +5 -0
  173. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/backend-connection.d.mts +111 -0
  174. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/backend-connection.mjs +304 -0
  175. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/clients/claude-command.mjs +38 -0
  176. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/clients/codex-command.mjs +41 -0
  177. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/clients/codex-plugin-artifact.d.mts +3 -0
  178. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/clients/codex-plugin-artifact.mjs +38 -0
  179. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/config-utils.d.mts +27 -0
  180. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/config-utils.mjs +391 -0
  181. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/hooks/capture-cwd-hook.mjs +137 -0
  182. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/hooks/client-hook-launcher.mjs +324 -0
  183. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/hooks/ensure-backend-runner.mjs +142 -0
  184. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/hooks/hook-runtime-generation.d.mts +38 -0
  185. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/hooks/hook-runtime-generation.mjs +501 -0
  186. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/hooks/memory-skill-reminder-hook.mjs +277 -0
  187. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/memorax-code-config-file.d.mts +28 -0
  188. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/memorax-code-config-file.mjs +296 -0
  189. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/memorax-defaults.d.mts +10 -0
  190. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/memorax-defaults.mjs +12 -0
  191. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/repo-memory/repo-memory-job-context.mjs +28 -0
  192. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/repo-memory/repo-memory-job-marker.mjs +252 -0
  193. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/repo-memory/repo-memory-job-supervisor.mjs +559 -0
  194. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/repo-memory/repo-memory-job-worker.mjs +411 -0
  195. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/repo-memory/repo-memory-update-policy-evaluator.mjs +185 -0
  196. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/repo-memory/repo-memory-update-policy.mjs +165 -0
  197. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/repo-memory/repo-procedure-memory-context.mjs +181 -0
  198. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/repo-memory/repo-user-profile-context.mjs +251 -0
  199. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/runtime-record.d.mts +55 -0
  200. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/runtime-record.mjs +152 -0
  201. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/windows-cli-invocation.mjs +100 -0
  202. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/package.json +13 -0
  203. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/runtime-hooks/capture-cwd.mjs +17 -0
  204. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/runtime-hooks/ensure-backend.mjs +59 -0
  205. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/runtime-hooks/memory-cli-session.mjs +33 -0
  206. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/runtime-hooks/memory-skill-reminder.mjs +73 -0
  207. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/runtime-hooks/memory-turn.mjs +91 -0
  208. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/scripts/build-marketplace.mjs +99 -0
  209. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/SKILL.md +83 -0
  210. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/agents/claude.yaml +10 -0
  211. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/agents/openai.yaml +7 -0
  212. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/defaults.json +9 -0
  213. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/memorax-add.md +82 -0
  214. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/memorax-search.md +61 -0
  215. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/personal-read.md +46 -0
  216. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/personal-write.md +100 -0
  217. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/repo-build.md +270 -0
  218. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/repo-read.md +96 -0
  219. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/repo-templates.md +270 -0
  220. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/repo-update.md +116 -0
  221. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/scripts/collect_all.py +496 -0
  222. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/scripts/detect_updates.py +856 -0
  223. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/scripts/git_commit_facets.py +222 -0
  224. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/scripts/github_resource_facets.py +504 -0
  225. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/scripts/gitlab_resource_facets.py +509 -0
  226. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/scripts/prepare_repo_memory.py +411 -0
  227. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/scripts/user_profile_memory.py +528 -0
  228. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/scripts/validate_memory.py +226 -0
  229. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/src/adapter-paths.mjs +46 -0
  230. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/src/cli.mjs +363 -0
  231. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/src/config-utils.mjs +1 -0
  232. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/src/config.mjs +544 -0
  233. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/src/plugin-artifact-contract.mjs +148 -0
  234. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/src/plugin-install.mjs +566 -0
  235. package/lib/memorax-code-codex-adapter/.codex-plugin/plugin.json +33 -0
  236. package/lib/memorax-code-codex-adapter/assets/composer-icon.png +0 -0
  237. package/lib/memorax-code-codex-adapter/assets/logo.png +0 -0
  238. package/lib/memorax-code-codex-adapter/hooks/hook-launcher.mjs +26 -0
  239. package/lib/memorax-code-codex-adapter/hooks/hooks.json +61 -0
  240. package/lib/memorax-code-codex-adapter/hooks/repo-memory-job.mjs +38 -0
  241. package/lib/memorax-code-codex-adapter/hooks/repo-memory-update-policy.mjs +10 -0
  242. package/lib/memorax-code-codex-adapter/hooks/runtime-hook.mjs +4 -0
  243. package/lib/memorax-code-codex-adapter/hooks/runtime-shell.json +5 -0
  244. package/lib/memorax-code-codex-adapter/package.json +13 -0
  245. package/lib/memorax-code-codex-adapter/runtime-hooks/capture-cwd.mjs +18 -0
  246. package/lib/memorax-code-codex-adapter/runtime-hooks/ensure-backend.mjs +82 -0
  247. package/lib/memorax-code-codex-adapter/runtime-hooks/memory-skill-reminder.mjs +125 -0
  248. package/lib/memorax-code-codex-adapter/runtime-hooks/memory-writeback.mjs +52 -0
  249. package/lib/memorax-code-codex-adapter/skills/memorax-code/SKILL.md +83 -0
  250. package/lib/memorax-code-codex-adapter/skills/memorax-code/agents/claude.yaml +10 -0
  251. package/lib/memorax-code-codex-adapter/skills/memorax-code/agents/openai.yaml +7 -0
  252. package/lib/memorax-code-codex-adapter/skills/memorax-code/defaults.json +9 -0
  253. package/lib/memorax-code-codex-adapter/skills/memorax-code/references/memorax-add.md +82 -0
  254. package/lib/memorax-code-codex-adapter/skills/memorax-code/references/memorax-search.md +61 -0
  255. package/lib/memorax-code-codex-adapter/skills/memorax-code/references/personal-read.md +46 -0
  256. package/lib/memorax-code-codex-adapter/skills/memorax-code/references/personal-write.md +100 -0
  257. package/lib/memorax-code-codex-adapter/skills/memorax-code/references/repo-build.md +270 -0
  258. package/lib/memorax-code-codex-adapter/skills/memorax-code/references/repo-read.md +96 -0
  259. package/lib/memorax-code-codex-adapter/skills/memorax-code/references/repo-templates.md +270 -0
  260. package/lib/memorax-code-codex-adapter/skills/memorax-code/references/repo-update.md +116 -0
  261. package/lib/memorax-code-codex-adapter/skills/memorax-code/scripts/collect_all.py +496 -0
  262. package/lib/memorax-code-codex-adapter/skills/memorax-code/scripts/detect_updates.py +856 -0
  263. package/lib/memorax-code-codex-adapter/skills/memorax-code/scripts/git_commit_facets.py +222 -0
  264. package/lib/memorax-code-codex-adapter/skills/memorax-code/scripts/github_resource_facets.py +504 -0
  265. package/lib/memorax-code-codex-adapter/skills/memorax-code/scripts/gitlab_resource_facets.py +509 -0
  266. package/lib/memorax-code-codex-adapter/skills/memorax-code/scripts/prepare_repo_memory.py +411 -0
  267. package/lib/memorax-code-codex-adapter/skills/memorax-code/scripts/user_profile_memory.py +528 -0
  268. package/lib/memorax-code-codex-adapter/skills/memorax-code/scripts/validate_memory.py +226 -0
  269. package/lib/memorax-code-codex-adapter/src/adapter-paths.mjs +29 -0
  270. package/lib/memorax-code-codex-adapter/src/cli.mjs +368 -0
  271. package/lib/memorax-code-codex-adapter/src/config-utils.mjs +1 -0
  272. package/lib/memorax-code-codex-adapter/src/config.mjs +226 -0
  273. package/lib/memorax-code-codex-adapter/src/session-registry.mjs +331 -0
  274. package/lib/memorax-code-codex-adapter/src/workspace-kind.mjs +68 -0
  275. package/lib/node-version.mjs +11 -0
  276. package/lib/npm-invocation.mjs +31 -0
  277. package/lib/resolve-claude-command.mjs +47 -0
  278. package/lib/resolve-codex-command.mjs +94 -0
  279. package/lib/run-entrypoint.mjs +83 -0
  280. package/lib/vscode-extension-command.mjs +119 -0
  281. package/lib/windows-cli-invocation.mjs +100 -0
  282. package/package.json +45 -0
@@ -0,0 +1,324 @@
1
+ import { createHash } from "node:crypto";
2
+ import { lstatSync, readFileSync } from "node:fs";
3
+ import { homedir } from "node:os";
4
+ import { isAbsolute, join, relative, resolve, sep } from "node:path";
5
+ import { fileURLToPath, pathToFileURL } from "node:url";
6
+ import {
7
+ injectClientHookInput,
8
+ readStdinJson,
9
+ stringOption,
10
+ withJsonFileLock,
11
+ } from "../config-utils.mjs";
12
+ import {
13
+ CLIENT_HOOK_RUNTIME_ABI,
14
+ clientHookRuntimePaths,
15
+ readCurrentClientHookRuntime,
16
+ resolveClientHookRuntimeModule,
17
+ } from "./hook-runtime-generation.mjs";
18
+ import {
19
+ readJsonRuntimeRecord,
20
+ writePrivateJsonRecord,
21
+ } from "../runtime-record.mjs";
22
+ import { isRepoMemoryJobWorker } from "../repo-memory/repo-memory-job-context.mjs";
23
+
24
+ const PIN_RECORD_VERSION = 1;
25
+ const SHELL_RECORD_VERSION = 1;
26
+
27
+ export async function runClientHookLauncher({
28
+ client,
29
+ component,
30
+ debugEnv,
31
+ fallbackModuleUrl,
32
+ pluginRoot,
33
+ shellVersion,
34
+ } = {}) {
35
+ try {
36
+ if (isRepoMemoryJobWorker()) return;
37
+ const input = await readStdinJson();
38
+ const memoraxCodeHome = resolveMemoraxCodeHome();
39
+ const selection = selectHookRuntime({
40
+ client,
41
+ component,
42
+ fallbackModuleUrl,
43
+ memoraxCodeHome,
44
+ input,
45
+ pluginRoot,
46
+ shellVersion,
47
+ });
48
+ if (!selection) return;
49
+ injectClientHookInput(input);
50
+ await import(pathToFileURL(selection.modulePath).href);
51
+ } catch (error) {
52
+ if (process.env[debugEnv] === "1") {
53
+ console.error(error instanceof Error ? error.message : String(error));
54
+ }
55
+ }
56
+ }
57
+
58
+ export function readClientHookShellVersion(pluginRoot) {
59
+ try {
60
+ const parsed = JSON.parse(readFileSync(join(pluginRoot, "hooks", "runtime-shell.json"), "utf8"));
61
+ if (parsed?.version !== SHELL_RECORD_VERSION
62
+ || parsed?.runtimeAbi !== CLIENT_HOOK_RUNTIME_ABI
63
+ || !stringOption(parsed?.shellVersion)) {
64
+ return undefined;
65
+ }
66
+ return parsed.shellVersion.trim();
67
+ } catch {
68
+ return undefined;
69
+ }
70
+ }
71
+
72
+ export function selectHookRuntime({
73
+ client,
74
+ component,
75
+ fallbackModuleUrl,
76
+ memoraxCodeHome,
77
+ input,
78
+ pluginRoot,
79
+ shellVersion,
80
+ } = {}) {
81
+ if (client !== "codex" && client !== "claude-code") return undefined;
82
+ const event = hookEvent(input);
83
+ if (!["SessionStart", "UserPromptSubmit", "Stop"].includes(event)) return undefined;
84
+ const sessionId = stringOption(input?.session_id) ?? stringOption(input?.sessionId);
85
+ const turnId = client === "claude-code"
86
+ ? stringOption(input?.prompt_id) ?? stringOption(input?.promptId)
87
+ : stringOption(input?.turn_id) ?? stringOption(input?.turnId);
88
+ const fallback = bundledSelection({
89
+ fallbackModuleUrl,
90
+ pluginRoot,
91
+ shellVersion,
92
+ });
93
+
94
+ if (event === "UserPromptSubmit") {
95
+ if (!sessionId || !turnId) return undefined;
96
+ const pin = pinInfo(memoraxCodeHome, client, sessionId);
97
+ return withJsonFileLock(pin.path, () => {
98
+ const turnKey = identityHash(turnId);
99
+ const existing = readPin(pin.path);
100
+ if (existing.status === "invalid") return undefined;
101
+ if (existing.status === "valid") {
102
+ if (existing.record.client !== client
103
+ || existing.record.sessionKey !== pin.sessionKey) return undefined;
104
+ if (existing.record.turnKey === turnKey) {
105
+ return selectionFromPin({
106
+ client,
107
+ component,
108
+ fallback,
109
+ memoraxCodeHome,
110
+ pin: existing.record,
111
+ });
112
+ }
113
+ }
114
+ const selected = currentSelection({
115
+ client,
116
+ component,
117
+ fallback,
118
+ memoraxCodeHome,
119
+ });
120
+ if (!selected) return undefined;
121
+ writePrivateJsonRecord(pin.path, {
122
+ version: PIN_RECORD_VERSION,
123
+ runtimeAbi: CLIENT_HOOK_RUNTIME_ABI,
124
+ client,
125
+ sessionKey: pin.sessionKey,
126
+ turnKey,
127
+ generationSource: selected.generationSource,
128
+ generationId: selected.generationId,
129
+ pinnedAt: new Date().toISOString(),
130
+ }, { durableBoundary: resolve(memoraxCodeHome) });
131
+ return selected;
132
+ });
133
+ }
134
+
135
+ if (event === "Stop") {
136
+ if (!sessionId || !turnId) return undefined;
137
+ const pin = pinInfo(memoraxCodeHome, client, sessionId);
138
+ return withJsonFileLock(pin.path, () => {
139
+ const existing = readPin(pin.path);
140
+ if (existing.status !== "valid"
141
+ || existing.record.client !== client
142
+ || existing.record.sessionKey !== pin.sessionKey
143
+ || existing.record.turnKey !== identityHash(turnId)) return undefined;
144
+ return selectionFromPin({
145
+ client,
146
+ component,
147
+ fallback,
148
+ memoraxCodeHome,
149
+ pin: existing.record,
150
+ });
151
+ });
152
+ }
153
+
154
+ if (event === "SessionStart" && stringOption(input?.source) === "compact") {
155
+ if (!sessionId) return undefined;
156
+ const pin = pinInfo(memoraxCodeHome, client, sessionId);
157
+ return withJsonFileLock(pin.path, () => {
158
+ const existing = readPin(pin.path);
159
+ if (existing.status !== "valid"
160
+ || existing.record.client !== client
161
+ || existing.record.sessionKey !== pin.sessionKey) return undefined;
162
+ return selectionFromPin({
163
+ client,
164
+ component,
165
+ fallback,
166
+ memoraxCodeHome,
167
+ pin: existing.record,
168
+ });
169
+ });
170
+ }
171
+
172
+ return currentSelection({
173
+ client,
174
+ component,
175
+ fallback,
176
+ memoraxCodeHome,
177
+ });
178
+ }
179
+
180
+ function currentSelection({ client, component, fallback, memoraxCodeHome }) {
181
+ const current = readCurrentClientHookRuntime(memoraxCodeHome);
182
+ if (current.status !== "valid") return fallback;
183
+ const resolved = resolveClientHookRuntimeModule({
184
+ memoraxCodeHome,
185
+ client,
186
+ component,
187
+ generationId: current.record.generationId,
188
+ });
189
+ return resolved
190
+ ? {
191
+ generationSource: "durable",
192
+ generationId: current.record.generationId,
193
+ modulePath: resolved.modulePath,
194
+ }
195
+ : fallback;
196
+ }
197
+
198
+ function selectionFromPin({ client, component, fallback, memoraxCodeHome, pin }) {
199
+ if (pin.generationSource === "bundled") {
200
+ return fallback?.generationId === pin.generationId ? fallback : undefined;
201
+ }
202
+ if (pin.generationSource !== "durable") return undefined;
203
+ const resolved = resolveClientHookRuntimeModule({
204
+ memoraxCodeHome,
205
+ client,
206
+ component,
207
+ generationId: pin.generationId,
208
+ });
209
+ return resolved
210
+ ? {
211
+ generationSource: "durable",
212
+ generationId: pin.generationId,
213
+ modulePath: resolved.modulePath,
214
+ }
215
+ : undefined;
216
+ }
217
+
218
+ function bundledSelection({ fallbackModuleUrl, pluginRoot, shellVersion }) {
219
+ const normalizedShellVersion = stringOption(shellVersion);
220
+ if (!normalizedShellVersion || !fallbackModuleUrl || !pluginRoot) return undefined;
221
+ let modulePath;
222
+ try {
223
+ modulePath = resolve(
224
+ fallbackModuleUrl instanceof URL
225
+ ? fileURLToPath(fallbackModuleUrl)
226
+ : String(fallbackModuleUrl),
227
+ );
228
+ } catch {
229
+ return undefined;
230
+ }
231
+ if (!isContainedRegularFile(pluginRoot, modulePath)) return undefined;
232
+ return {
233
+ generationSource: "bundled",
234
+ generationId: `shell-${normalizedShellVersion}`,
235
+ modulePath,
236
+ };
237
+ }
238
+
239
+ function readPin(path) {
240
+ const state = readJsonRuntimeRecord(path);
241
+ if (state.status === "absent") return { status: "absent" };
242
+ if (state.status !== "present" || !isRecord(state.value)) {
243
+ return { status: "invalid" };
244
+ }
245
+ const value = state.value;
246
+ if (value.version !== PIN_RECORD_VERSION
247
+ || value.runtimeAbi !== CLIENT_HOOK_RUNTIME_ABI
248
+ || !["codex", "claude-code"].includes(value.client)
249
+ || !/^[a-f0-9]{64}$/.test(value.sessionKey)
250
+ || !/^[a-f0-9]{64}$/.test(value.turnKey)
251
+ || !["durable", "bundled"].includes(value.generationSource)
252
+ || !stringOption(value.generationId)
253
+ || !validTimestamp(value.pinnedAt)) {
254
+ return { status: "invalid" };
255
+ }
256
+ return {
257
+ status: "valid",
258
+ record: {
259
+ version: value.version,
260
+ runtimeAbi: value.runtimeAbi,
261
+ client: value.client,
262
+ sessionKey: value.sessionKey,
263
+ turnKey: value.turnKey,
264
+ generationSource: value.generationSource,
265
+ generationId: value.generationId,
266
+ pinnedAt: value.pinnedAt,
267
+ },
268
+ };
269
+ }
270
+
271
+ function pinInfo(memoraxCodeHome, client, sessionId) {
272
+ const sessionKey = identityHash(sessionId);
273
+ const root = clientHookRuntimePaths(memoraxCodeHome).root;
274
+ return {
275
+ sessionKey,
276
+ path: join(root, "pins", client, `${sessionKey}.json`),
277
+ };
278
+ }
279
+
280
+ function hookEvent(input) {
281
+ return stringOption(input?.hook_event_name)
282
+ ?? stringOption(input?.hookEventName)
283
+ ?? stringOption(input?.event)
284
+ ?? stringOption(input?.type);
285
+ }
286
+
287
+ function resolveMemoraxCodeHome() {
288
+ return resolve(process.env.MEMORAX_CODE_HOME || join(homedir(), ".memorax-code"));
289
+ }
290
+
291
+ function identityHash(value) {
292
+ return createHash("sha256").update(value).digest("hex");
293
+ }
294
+
295
+ function isContainedRegularFile(boundary, path) {
296
+ const root = resolve(boundary);
297
+ const target = resolve(path);
298
+ const child = relative(root, target);
299
+ if (child === ".." || child.startsWith(`..${sep}`) || isAbsolute(child)) return false;
300
+ let current = root;
301
+ try {
302
+ const rootMetadata = lstatSync(current);
303
+ if (!rootMetadata.isDirectory() || rootMetadata.isSymbolicLink()) return false;
304
+ const parts = child.split(sep).filter(Boolean);
305
+ for (let index = 0; index < parts.length; index += 1) {
306
+ current = join(current, parts[index]);
307
+ const metadata = lstatSync(current);
308
+ if (metadata.isSymbolicLink()) return false;
309
+ if (index === parts.length - 1) return metadata.isFile();
310
+ if (!metadata.isDirectory()) return false;
311
+ }
312
+ } catch {
313
+ return false;
314
+ }
315
+ return false;
316
+ }
317
+
318
+ function validTimestamp(value) {
319
+ return typeof value === "string" && Number.isFinite(Date.parse(value));
320
+ }
321
+
322
+ function isRecord(value) {
323
+ return typeof value === "object" && value !== null && !Array.isArray(value);
324
+ }
@@ -0,0 +1,142 @@
1
+ import { spawn } from "node:child_process";
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ import { basename, delimiter, join } from "node:path";
4
+ import {
5
+ localBackendRecoveryArguments,
6
+ resolveBackendConnection,
7
+ } from "../backend-connection.mjs";
8
+ import { readStdinJson } from "../config-utils.mjs";
9
+ import { isRepoMemoryJobWorker } from "../repo-memory/repo-memory-job-context.mjs";
10
+
11
+ export const DEFAULT_ENSURE_BACKEND_START_TIMEOUT_MS = 90000;
12
+
13
+ export async function runEnsureBackendHook(options) {
14
+ if (isRepoMemoryJobWorker() || ensureDisabled(options.ensureBackendValue)) return;
15
+
16
+ const input = await readStdinJson();
17
+ const homes = options.resolveHomes(input);
18
+ let connection;
19
+ try {
20
+ connection = resolveBackendConnection({ memoraxCodeHome: homes.memoraxCodeHome });
21
+ } catch (error) {
22
+ options.debug?.(error instanceof Error ? error.message : String(error));
23
+ return;
24
+ }
25
+ const healthTimeoutMs = parsePositiveInt(options.healthTimeoutValue, 1500);
26
+ if (await backendHealthy(connection, healthTimeoutMs)) {
27
+ await options.onHealthy?.({ homes, backendUrl: connection.url });
28
+ return;
29
+ }
30
+
31
+ const recoveryArguments = localBackendRecoveryArguments(connection);
32
+ if (recoveryArguments === undefined) return;
33
+ const command = memoraxCodeCommandInfo(options.memoraxCodeCommand, options.pluginRoot);
34
+ if (!command.value || command.removed === true || !memoraxCodeCommandAvailable(command.value)) return;
35
+ const result = await runMemoraxCode(
36
+ command.value,
37
+ options.buildStartArgs(homes, recoveryArguments),
38
+ parsePositiveInt(options.startTimeoutValue, DEFAULT_ENSURE_BACKEND_START_TIMEOUT_MS),
39
+ );
40
+ if (result.code !== 0) {
41
+ options.debug?.(
42
+ `MemoraX Code backend start failed with code ${result.code}${result.stderr ? `: ${result.stderr}` : ""}`,
43
+ );
44
+ }
45
+ }
46
+
47
+ export function stringValue(value) {
48
+ return typeof value === "string" && value.trim() ? value.trim() : undefined;
49
+ }
50
+
51
+ function ensureDisabled(value) {
52
+ return ["0", "false", "no", "off", "disabled"].includes(String(value ?? "").trim().toLowerCase());
53
+ }
54
+
55
+ async function backendHealthy(connection, timeoutMs) {
56
+ const controller = new AbortController();
57
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
58
+ try {
59
+ const response = await fetch(new URL("/health", connection.url), {
60
+ signal: controller.signal,
61
+ headers: {
62
+ connection: "close",
63
+ ...(connection.token ? { "x-memorax-code-backend-token": connection.token } : {}),
64
+ },
65
+ });
66
+ if (!response.ok) return false;
67
+ const body = await response.json().catch(() => undefined);
68
+ return body?.ok === true && body.service === "memorax-code-backend";
69
+ } catch {
70
+ return false;
71
+ } finally {
72
+ clearTimeout(timer);
73
+ }
74
+ }
75
+
76
+ function memoraxCodeCommandInfo(explicitCommand, pluginRoot) {
77
+ const explicit = stringValue(explicitCommand);
78
+ if (explicit) return { value: explicit, removed: pathLooksRemoved(explicit) };
79
+ const metadata = metadataCommand(pluginRoot);
80
+ if (metadata) return { value: metadata, removed: pathLooksRemoved(metadata) };
81
+ return { value: "memorax-code", removed: false };
82
+ }
83
+
84
+ function metadataCommand(pluginRoot) {
85
+ const root = stringValue(pluginRoot);
86
+ if (!root) return undefined;
87
+ const path = join(root, ".memorax-code-package.json");
88
+ if (!existsSync(path)) return undefined;
89
+ try {
90
+ const metadata = JSON.parse(readFileSync(path, "utf8"));
91
+ return stringValue(metadata.memoraxCodeCommand);
92
+ } catch {
93
+ return undefined;
94
+ }
95
+ }
96
+
97
+ function pathLooksRemoved(command) {
98
+ return (command.includes("/") || command.includes("\\")) && !existsSync(command);
99
+ }
100
+
101
+ function memoraxCodeCommandAvailable(command) {
102
+ if (!command) return false;
103
+ if (command.includes("/") || command.includes("\\")) return existsSync(command);
104
+ const path = process.env.PATH ?? "";
105
+ return path.split(delimiter).some((dir) => dir && existsSync(join(dir, command)));
106
+ }
107
+
108
+ function runMemoraxCode(command, args, timeoutMs) {
109
+ return new Promise((resolve) => {
110
+ const childArgs = nodeEntrypoint(command) ? [command, ...args] : args;
111
+ const childCommand = nodeEntrypoint(command) ? process.execPath : command;
112
+ let stderr = "";
113
+ let settled = false;
114
+ const child = spawn(childCommand, childArgs, {
115
+ env: process.env,
116
+ stdio: ["ignore", "ignore", "pipe"],
117
+ });
118
+ const finish = (result) => {
119
+ if (settled) return;
120
+ settled = true;
121
+ clearTimeout(timer);
122
+ resolve(result);
123
+ };
124
+ const timer = setTimeout(() => {
125
+ child.kill("SIGTERM");
126
+ finish({ code: 124, stderr: "timed out" });
127
+ }, timeoutMs);
128
+ child.stderr.on("data", (chunk) => { stderr += String(chunk); });
129
+ child.on("error", (error) => finish({ code: 127, stderr: error.message }));
130
+ child.on("close", (code) => finish({ code: code ?? 0, stderr }));
131
+ });
132
+ }
133
+
134
+ function nodeEntrypoint(command) {
135
+ const name = basename(command).toLowerCase();
136
+ return name.endsWith(".mjs") || name.endsWith(".js");
137
+ }
138
+
139
+ function parsePositiveInt(value, fallback) {
140
+ const parsed = Number(value);
141
+ return Number.isInteger(parsed) && parsed > 0 ? parsed : fallback;
142
+ }
@@ -0,0 +1,38 @@
1
+ export type ClientHookRuntimeGeneration = Readonly<{
2
+ version: number;
3
+ runtimeAbi: number;
4
+ generationId: string;
5
+ packageVersion: string;
6
+ contentDigest: string;
7
+ createdAt: string;
8
+ generationPath?: string;
9
+ reused?: boolean;
10
+ }>;
11
+
12
+ export type ActivatedClientHookRuntimeGeneration = Readonly<{
13
+ version: number;
14
+ runtimeAbi: number;
15
+ generationId: string;
16
+ packageVersion: string;
17
+ contentDigest: string;
18
+ activatedAt: string;
19
+ generationPath: string;
20
+ durability: "confirmed" | "uncertain";
21
+ durabilityErrorCode?: string;
22
+ }>;
23
+
24
+ export const CLIENT_HOOK_RUNTIME_ABI: number;
25
+
26
+ export function stageClientHookRuntimeGeneration(options: {
27
+ packageRoot: string;
28
+ memoraxCodeHome: string;
29
+ now?: () => Date;
30
+ syncFile?: (path: string) => void;
31
+ syncDirectory?: (path: string) => void;
32
+ }): ClientHookRuntimeGeneration;
33
+
34
+ export function activateClientHookRuntimeGeneration(options: {
35
+ memoraxCodeHome: string;
36
+ generation: ClientHookRuntimeGeneration;
37
+ now?: () => Date;
38
+ }): ActivatedClientHookRuntimeGeneration;