@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.
- package/LICENSE +21 -0
- package/README.md +53 -0
- package/bin/memorax-cli.mjs +28 -0
- package/bin/memorax-code-backend.mjs +4 -0
- package/bin/memorax-code-claude.mjs +4 -0
- package/bin/memorax-code-codex.mjs +4 -0
- package/bin/memorax-code-npm-preinstall.mjs +55 -0
- package/bin/memorax-code-plugin-postinstall.mjs +1236 -0
- package/bin/memorax-code.mjs +204 -0
- package/docs/configuration.md +232 -0
- package/docs/troubleshooting.md +179 -0
- package/lib/client-hook-runtime.mjs +32 -0
- package/lib/memorax-code-adapter-common/src/backend-connection.d.mts +111 -0
- package/lib/memorax-code-adapter-common/src/backend-connection.mjs +304 -0
- package/lib/memorax-code-adapter-common/src/clients/claude-command.mjs +38 -0
- package/lib/memorax-code-adapter-common/src/clients/codex-command.mjs +41 -0
- package/lib/memorax-code-adapter-common/src/clients/codex-plugin-artifact.d.mts +3 -0
- package/lib/memorax-code-adapter-common/src/clients/codex-plugin-artifact.mjs +38 -0
- package/lib/memorax-code-adapter-common/src/config-utils.d.mts +27 -0
- package/lib/memorax-code-adapter-common/src/config-utils.mjs +391 -0
- package/lib/memorax-code-adapter-common/src/hooks/capture-cwd-hook.mjs +137 -0
- package/lib/memorax-code-adapter-common/src/hooks/client-hook-launcher.mjs +324 -0
- package/lib/memorax-code-adapter-common/src/hooks/ensure-backend-runner.mjs +142 -0
- package/lib/memorax-code-adapter-common/src/hooks/hook-runtime-generation.d.mts +38 -0
- package/lib/memorax-code-adapter-common/src/hooks/hook-runtime-generation.mjs +501 -0
- package/lib/memorax-code-adapter-common/src/hooks/memory-skill-reminder-hook.mjs +277 -0
- package/lib/memorax-code-adapter-common/src/memorax-code-config-file.d.mts +28 -0
- package/lib/memorax-code-adapter-common/src/memorax-code-config-file.mjs +296 -0
- package/lib/memorax-code-adapter-common/src/memorax-defaults.d.mts +10 -0
- package/lib/memorax-code-adapter-common/src/memorax-defaults.mjs +12 -0
- package/lib/memorax-code-adapter-common/src/repo-memory/repo-memory-job-context.mjs +28 -0
- package/lib/memorax-code-adapter-common/src/repo-memory/repo-memory-job-marker.mjs +252 -0
- package/lib/memorax-code-adapter-common/src/repo-memory/repo-memory-job-supervisor.mjs +559 -0
- package/lib/memorax-code-adapter-common/src/repo-memory/repo-memory-job-worker.mjs +411 -0
- package/lib/memorax-code-adapter-common/src/repo-memory/repo-memory-update-policy-evaluator.mjs +185 -0
- package/lib/memorax-code-adapter-common/src/repo-memory/repo-memory-update-policy.mjs +165 -0
- package/lib/memorax-code-adapter-common/src/repo-memory/repo-procedure-memory-context.mjs +181 -0
- package/lib/memorax-code-adapter-common/src/repo-memory/repo-user-profile-context.mjs +251 -0
- package/lib/memorax-code-adapter-common/src/runtime-record.d.mts +55 -0
- package/lib/memorax-code-adapter-common/src/runtime-record.mjs +152 -0
- package/lib/memorax-code-adapter-common/src/windows-cli-invocation.mjs +100 -0
- package/lib/memorax-code-backend/dist/active-client-selection.js +35 -0
- package/lib/memorax-code-backend/dist/adapter-lifecycle-participant.js +1 -0
- package/lib/memorax-code-backend/dist/automatic-memory-retrieval.js +113 -0
- package/lib/memorax-code-backend/dist/automatic-memory-writeback.js +297 -0
- package/lib/memorax-code-backend/dist/backend-env.js +13 -0
- package/lib/memorax-code-backend/dist/backend-lifecycle-lock.js +42 -0
- package/lib/memorax-code-backend/dist/backend-process.js +147 -0
- package/lib/memorax-code-backend/dist/backend-service-cleanup.js +18 -0
- package/lib/memorax-code-backend/dist/backend-service-record.js +206 -0
- package/lib/memorax-code-backend/dist/backend-service-result.js +37 -0
- package/lib/memorax-code-backend/dist/backend-service-token.js +11 -0
- package/lib/memorax-code-backend/dist/backend-shutdown-request.js +133 -0
- package/lib/memorax-code-backend/dist/backend-state.js +58 -0
- package/lib/memorax-code-backend/dist/backend-status.js +53 -0
- package/lib/memorax-code-backend/dist/backend-token-record.js +79 -0
- package/lib/memorax-code-backend/dist/claude-adapter-lifecycle.js +134 -0
- package/lib/memorax-code-backend/dist/claude-local-transcript.js +648 -0
- package/lib/memorax-code-backend/dist/claude-memory-hook-runtime.js +472 -0
- package/lib/memorax-code-backend/dist/claude-transcript-turn.js +876 -0
- package/lib/memorax-code-backend/dist/client-plugin-removal.js +67 -0
- package/lib/memorax-code-backend/dist/client-selection.js +36 -0
- package/lib/memorax-code-backend/dist/codex-adapter-lifecycle.js +131 -0
- package/lib/memorax-code-backend/dist/codex-effective-prompt.js +54 -0
- package/lib/memorax-code-backend/dist/codex-memory-hook-runtime.js +541 -0
- package/lib/memorax-code-backend/dist/codex-plugin-hooks.js +421 -0
- package/lib/memorax-code-backend/dist/codex-plugin-install.js +523 -0
- package/lib/memorax-code-backend/dist/codex-rollout-turn.js +402 -0
- package/lib/memorax-code-backend/dist/codex-session-turn-index.js +88 -0
- package/lib/memorax-code-backend/dist/codex-workspace-links.js +55 -0
- package/lib/memorax-code-backend/dist/debug-log.js +21 -0
- package/lib/memorax-code-backend/dist/entrypoint.js +14 -0
- package/lib/memorax-code-backend/dist/incremental-jsonl-projection.js +271 -0
- package/lib/memorax-code-backend/dist/install-watchdog.js +71 -0
- package/lib/memorax-code-backend/dist/jsonl-append.js +75 -0
- package/lib/memorax-code-backend/dist/memorax-adapter.js +451 -0
- package/lib/memorax-code-backend/dist/memorax-cli.js +14 -0
- package/lib/memorax-code-backend/dist/memorax-code-config.js +279 -0
- package/lib/memorax-code-backend/dist/memorax-code-lifecycle.js +523 -0
- package/lib/memorax-code-backend/dist/memorax-code.js +3 -0
- package/lib/memorax-code-backend/dist/memorax-config.js +283 -0
- package/lib/memorax-code-backend/dist/memorax-http.js +142 -0
- package/lib/memorax-code-backend/dist/memory-cli.js +345 -0
- package/lib/memorax-code-backend/dist/memory-hook-command.js +200 -0
- package/lib/memorax-code-backend/dist/memory-observability.js +1 -0
- package/lib/memorax-code-backend/dist/memory-project.js +89 -0
- package/lib/memorax-code-backend/dist/memory-reminder-trace-recorder.js +58 -0
- package/lib/memorax-code-backend/dist/memory-service.js +66 -0
- package/lib/memorax-code-backend/dist/memory-turn-coordinator.js +139 -0
- package/lib/memorax-code-backend/dist/memory-viewer-activity.js +113 -0
- package/lib/memorax-code-backend/dist/memory-viewer-data-projection-cache.js +69 -0
- package/lib/memorax-code-backend/dist/memory-viewer-event-identity.js +3 -0
- package/lib/memorax-code-backend/dist/memory-viewer-history-projection.js +79 -0
- package/lib/memorax-code-backend/dist/memory-viewer-logo.js +1 -0
- package/lib/memorax-code-backend/dist/memory-viewer-observability.js +8 -0
- package/lib/memorax-code-backend/dist/memory-viewer-redaction.js +52 -0
- package/lib/memorax-code-backend/dist/memory-viewer-session-title.js +93 -0
- package/lib/memorax-code-backend/dist/memory-viewer-store.js +964 -0
- package/lib/memorax-code-backend/dist/memory-viewer-turn-reference.js +12 -0
- package/lib/memorax-code-backend/dist/memory-viewer-user-html.js +115 -0
- package/lib/memorax-code-backend/dist/memory-viewer-user-projection.js +168 -0
- package/lib/memorax-code-backend/dist/memory-viewer-writeback-status.js +97 -0
- package/lib/memorax-code-backend/dist/memory-writeback-buffer.js +217 -0
- package/lib/memorax-code-backend/dist/memory-writeback-chunk.js +120 -0
- package/lib/memorax-code-backend/dist/memory-writeback-reconciler.js +244 -0
- package/lib/memorax-code-backend/dist/memory-writeback-task-projection.js +377 -0
- package/lib/memorax-code-backend/dist/proxy-env.js +54 -0
- package/lib/memorax-code-backend/dist/repo-memory-readiness.js +188 -0
- package/lib/memorax-code-backend/dist/repository-memory-context.js +134 -0
- package/lib/memorax-code-backend/dist/repository-memory-scope.js +490 -0
- package/lib/memorax-code-backend/dist/server-cli.js +787 -0
- package/lib/memorax-code-backend/dist/server-health.js +16 -0
- package/lib/memorax-code-backend/dist/server-http.js +110 -0
- package/lib/memorax-code-backend/dist/server-json.js +4 -0
- package/lib/memorax-code-backend/dist/server-memory-hook.js +32 -0
- package/lib/memorax-code-backend/dist/server-memory-viewer.js +135 -0
- package/lib/memorax-code-backend/dist/server-observability.js +102 -0
- package/lib/memorax-code-backend/dist/server.js +220 -0
- package/lib/memorax-code-backend/dist/service-entrypoint.js +10 -0
- package/lib/memorax-code-backend/dist/service.js +567 -0
- package/lib/memorax-code-backend/dist/trace-config.js +112 -0
- package/lib/memorax-code-backend/dist/trace-context.js +111 -0
- package/lib/memorax-code-backend/dist/trace-store.js +571 -0
- package/lib/memorax-code-backend/dist/utils.js +3 -0
- package/lib/memorax-code-backend/dist/windows-cli-invocation.js +148 -0
- package/lib/memorax-code-backend/package.json +26 -0
- package/lib/memorax-code-claude-adapter/.claude-plugin/plugin.json +15 -0
- package/lib/memorax-code-claude-adapter/hooks/hook-launcher.mjs +27 -0
- package/lib/memorax-code-claude-adapter/hooks/hooks.json +66 -0
- package/lib/memorax-code-claude-adapter/hooks/repo-memory-job.mjs +37 -0
- package/lib/memorax-code-claude-adapter/hooks/runtime-hook.mjs +4 -0
- package/lib/memorax-code-claude-adapter/hooks/runtime-shell.json +5 -0
- package/lib/memorax-code-claude-adapter/package.json +13 -0
- package/lib/memorax-code-claude-adapter/runtime-hooks/capture-cwd.mjs +17 -0
- package/lib/memorax-code-claude-adapter/runtime-hooks/ensure-backend.mjs +59 -0
- package/lib/memorax-code-claude-adapter/runtime-hooks/memory-cli-session.mjs +33 -0
- package/lib/memorax-code-claude-adapter/runtime-hooks/memory-skill-reminder.mjs +73 -0
- package/lib/memorax-code-claude-adapter/runtime-hooks/memory-turn.mjs +91 -0
- package/lib/memorax-code-claude-adapter/scripts/build-marketplace.mjs +99 -0
- package/lib/memorax-code-claude-adapter/skills/memorax-code/SKILL.md +83 -0
- package/lib/memorax-code-claude-adapter/skills/memorax-code/agents/claude.yaml +10 -0
- package/lib/memorax-code-claude-adapter/skills/memorax-code/agents/openai.yaml +7 -0
- package/lib/memorax-code-claude-adapter/skills/memorax-code/defaults.json +9 -0
- package/lib/memorax-code-claude-adapter/skills/memorax-code/references/memorax-add.md +82 -0
- package/lib/memorax-code-claude-adapter/skills/memorax-code/references/memorax-search.md +61 -0
- package/lib/memorax-code-claude-adapter/skills/memorax-code/references/personal-read.md +46 -0
- package/lib/memorax-code-claude-adapter/skills/memorax-code/references/personal-write.md +100 -0
- package/lib/memorax-code-claude-adapter/skills/memorax-code/references/repo-build.md +270 -0
- package/lib/memorax-code-claude-adapter/skills/memorax-code/references/repo-read.md +96 -0
- package/lib/memorax-code-claude-adapter/skills/memorax-code/references/repo-templates.md +270 -0
- package/lib/memorax-code-claude-adapter/skills/memorax-code/references/repo-update.md +116 -0
- package/lib/memorax-code-claude-adapter/skills/memorax-code/scripts/collect_all.py +496 -0
- package/lib/memorax-code-claude-adapter/skills/memorax-code/scripts/detect_updates.py +856 -0
- package/lib/memorax-code-claude-adapter/skills/memorax-code/scripts/git_commit_facets.py +222 -0
- package/lib/memorax-code-claude-adapter/skills/memorax-code/scripts/github_resource_facets.py +504 -0
- package/lib/memorax-code-claude-adapter/skills/memorax-code/scripts/gitlab_resource_facets.py +509 -0
- package/lib/memorax-code-claude-adapter/skills/memorax-code/scripts/prepare_repo_memory.py +411 -0
- package/lib/memorax-code-claude-adapter/skills/memorax-code/scripts/user_profile_memory.py +528 -0
- package/lib/memorax-code-claude-adapter/skills/memorax-code/scripts/validate_memory.py +226 -0
- package/lib/memorax-code-claude-adapter/src/adapter-paths.mjs +46 -0
- package/lib/memorax-code-claude-adapter/src/cli.mjs +363 -0
- package/lib/memorax-code-claude-adapter/src/config-utils.mjs +1 -0
- package/lib/memorax-code-claude-adapter/src/config.mjs +544 -0
- package/lib/memorax-code-claude-adapter/src/plugin-artifact-contract.mjs +148 -0
- package/lib/memorax-code-claude-adapter/src/plugin-install.mjs +566 -0
- package/lib/memorax-code-claude-marketplace/.claude-plugin/marketplace.json +15 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/.claude-plugin/plugin.json +15 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/hooks/hook-launcher.mjs +27 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/hooks/hooks.json +66 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/hooks/repo-memory-job.mjs +37 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/hooks/runtime-hook.mjs +4 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/hooks/runtime-shell.json +5 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/backend-connection.d.mts +111 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/backend-connection.mjs +304 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/clients/claude-command.mjs +38 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/clients/codex-command.mjs +41 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/clients/codex-plugin-artifact.d.mts +3 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/clients/codex-plugin-artifact.mjs +38 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/config-utils.d.mts +27 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/config-utils.mjs +391 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/hooks/capture-cwd-hook.mjs +137 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/hooks/client-hook-launcher.mjs +324 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/hooks/ensure-backend-runner.mjs +142 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/hooks/hook-runtime-generation.d.mts +38 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/hooks/hook-runtime-generation.mjs +501 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/hooks/memory-skill-reminder-hook.mjs +277 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/memorax-code-config-file.d.mts +28 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/memorax-code-config-file.mjs +296 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/memorax-defaults.d.mts +10 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/memorax-defaults.mjs +12 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/runtime-record.d.mts +55 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/runtime-record.mjs +152 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/windows-cli-invocation.mjs +100 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/package.json +13 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/runtime-hooks/capture-cwd.mjs +17 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/runtime-hooks/ensure-backend.mjs +59 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/runtime-hooks/memory-cli-session.mjs +33 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/runtime-hooks/memory-skill-reminder.mjs +73 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/runtime-hooks/memory-turn.mjs +91 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/scripts/build-marketplace.mjs +99 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/SKILL.md +83 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/agents/claude.yaml +10 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/agents/openai.yaml +7 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/defaults.json +9 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/memorax-add.md +82 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/memorax-search.md +61 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/personal-read.md +46 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/personal-write.md +100 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/repo-build.md +270 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/repo-read.md +96 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/repo-templates.md +270 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/repo-update.md +116 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/scripts/collect_all.py +496 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/scripts/detect_updates.py +856 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/scripts/git_commit_facets.py +222 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/scripts/github_resource_facets.py +504 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/scripts/gitlab_resource_facets.py +509 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/scripts/prepare_repo_memory.py +411 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/scripts/user_profile_memory.py +528 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/scripts/validate_memory.py +226 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/src/adapter-paths.mjs +46 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/src/cli.mjs +363 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/src/config-utils.mjs +1 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/src/config.mjs +544 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/src/plugin-artifact-contract.mjs +148 -0
- package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/src/plugin-install.mjs +566 -0
- package/lib/memorax-code-codex-adapter/.codex-plugin/plugin.json +33 -0
- package/lib/memorax-code-codex-adapter/assets/composer-icon.png +0 -0
- package/lib/memorax-code-codex-adapter/assets/logo.png +0 -0
- package/lib/memorax-code-codex-adapter/hooks/hook-launcher.mjs +26 -0
- package/lib/memorax-code-codex-adapter/hooks/hooks.json +61 -0
- package/lib/memorax-code-codex-adapter/hooks/repo-memory-job.mjs +38 -0
- package/lib/memorax-code-codex-adapter/hooks/repo-memory-update-policy.mjs +10 -0
- package/lib/memorax-code-codex-adapter/hooks/runtime-hook.mjs +4 -0
- package/lib/memorax-code-codex-adapter/hooks/runtime-shell.json +5 -0
- package/lib/memorax-code-codex-adapter/package.json +13 -0
- package/lib/memorax-code-codex-adapter/runtime-hooks/capture-cwd.mjs +18 -0
- package/lib/memorax-code-codex-adapter/runtime-hooks/ensure-backend.mjs +82 -0
- package/lib/memorax-code-codex-adapter/runtime-hooks/memory-skill-reminder.mjs +125 -0
- package/lib/memorax-code-codex-adapter/runtime-hooks/memory-writeback.mjs +52 -0
- package/lib/memorax-code-codex-adapter/skills/memorax-code/SKILL.md +83 -0
- package/lib/memorax-code-codex-adapter/skills/memorax-code/agents/claude.yaml +10 -0
- package/lib/memorax-code-codex-adapter/skills/memorax-code/agents/openai.yaml +7 -0
- package/lib/memorax-code-codex-adapter/skills/memorax-code/defaults.json +9 -0
- package/lib/memorax-code-codex-adapter/skills/memorax-code/references/memorax-add.md +82 -0
- package/lib/memorax-code-codex-adapter/skills/memorax-code/references/memorax-search.md +61 -0
- package/lib/memorax-code-codex-adapter/skills/memorax-code/references/personal-read.md +46 -0
- package/lib/memorax-code-codex-adapter/skills/memorax-code/references/personal-write.md +100 -0
- package/lib/memorax-code-codex-adapter/skills/memorax-code/references/repo-build.md +270 -0
- package/lib/memorax-code-codex-adapter/skills/memorax-code/references/repo-read.md +96 -0
- package/lib/memorax-code-codex-adapter/skills/memorax-code/references/repo-templates.md +270 -0
- package/lib/memorax-code-codex-adapter/skills/memorax-code/references/repo-update.md +116 -0
- package/lib/memorax-code-codex-adapter/skills/memorax-code/scripts/collect_all.py +496 -0
- package/lib/memorax-code-codex-adapter/skills/memorax-code/scripts/detect_updates.py +856 -0
- package/lib/memorax-code-codex-adapter/skills/memorax-code/scripts/git_commit_facets.py +222 -0
- package/lib/memorax-code-codex-adapter/skills/memorax-code/scripts/github_resource_facets.py +504 -0
- package/lib/memorax-code-codex-adapter/skills/memorax-code/scripts/gitlab_resource_facets.py +509 -0
- package/lib/memorax-code-codex-adapter/skills/memorax-code/scripts/prepare_repo_memory.py +411 -0
- package/lib/memorax-code-codex-adapter/skills/memorax-code/scripts/user_profile_memory.py +528 -0
- package/lib/memorax-code-codex-adapter/skills/memorax-code/scripts/validate_memory.py +226 -0
- package/lib/memorax-code-codex-adapter/src/adapter-paths.mjs +29 -0
- package/lib/memorax-code-codex-adapter/src/cli.mjs +368 -0
- package/lib/memorax-code-codex-adapter/src/config-utils.mjs +1 -0
- package/lib/memorax-code-codex-adapter/src/config.mjs +226 -0
- package/lib/memorax-code-codex-adapter/src/session-registry.mjs +331 -0
- package/lib/memorax-code-codex-adapter/src/workspace-kind.mjs +68 -0
- package/lib/node-version.mjs +11 -0
- package/lib/npm-invocation.mjs +31 -0
- package/lib/resolve-claude-command.mjs +47 -0
- package/lib/resolve-codex-command.mjs +94 -0
- package/lib/run-entrypoint.mjs +83 -0
- package/lib/vscode-extension-command.mjs +119 -0
- package/lib/windows-cli-invocation.mjs +100 -0
- package/package.json +45 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { dirname, resolve } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { resolveHookCodexCommand } from "../../memorax-code-adapter-common/src/clients/codex-command.mjs";
|
|
5
|
+
import { runRepoMemoryJob } from "../../memorax-code-adapter-common/src/repo-memory/repo-memory-job-supervisor.mjs";
|
|
6
|
+
import { evaluateRepository } from "../../memorax-code-adapter-common/src/repo-memory/repo-memory-update-policy-evaluator.mjs";
|
|
7
|
+
|
|
8
|
+
const hookDir = dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
const pluginRoot = dirname(hookDir);
|
|
10
|
+
|
|
11
|
+
try {
|
|
12
|
+
const payload = runRepoMemoryJob(process.argv.slice(2), {
|
|
13
|
+
runner: "codex",
|
|
14
|
+
finalMessageSource: "file",
|
|
15
|
+
validatorPath: resolve(pluginRoot, "skills/memorax-code/scripts/validate_memory.py"),
|
|
16
|
+
evaluateRepository,
|
|
17
|
+
createCommand({ finalMessagePath, prompt, repo }) {
|
|
18
|
+
const codex = resolveHookCodexCommand({
|
|
19
|
+
pluginRoot: process.env.PLUGIN_ROOT || pluginRoot,
|
|
20
|
+
});
|
|
21
|
+
return [
|
|
22
|
+
codex,
|
|
23
|
+
"exec",
|
|
24
|
+
"--cd",
|
|
25
|
+
repo,
|
|
26
|
+
"--sandbox",
|
|
27
|
+
"danger-full-access",
|
|
28
|
+
"--output-last-message",
|
|
29
|
+
finalMessagePath,
|
|
30
|
+
prompt,
|
|
31
|
+
];
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
process.stdout.write(`${JSON.stringify(payload)}\n`);
|
|
35
|
+
} catch (error) {
|
|
36
|
+
process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { runRepoMemoryUpdatePolicy } from "../../memorax-code-adapter-common/src/repo-memory/repo-memory-update-policy-evaluator.mjs";
|
|
3
|
+
|
|
4
|
+
try {
|
|
5
|
+
const payload = runRepoMemoryUpdatePolicy(process.argv.slice(2));
|
|
6
|
+
process.stdout.write(`${JSON.stringify(payload)}\n`);
|
|
7
|
+
} catch (error) {
|
|
8
|
+
process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
|
|
9
|
+
process.exit(1);
|
|
10
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@memorax-code/codex-adapter",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"description": "Codex Hook and memory integration for MemoraX Code.",
|
|
7
|
+
"bin": {
|
|
8
|
+
"memorax-code-codex": "src/cli.mjs"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"test": "node --test test/*.test.mjs"
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { runCaptureCwdHook } from "../../memorax-code-adapter-common/src/hooks/capture-cwd-hook.mjs";
|
|
3
|
+
import { markSupplementalReminderAfterCompact } from "../../memorax-code-adapter-common/src/hooks/memory-skill-reminder-hook.mjs";
|
|
4
|
+
import { isRepoMemoryJobWorker } from "../../memorax-code-adapter-common/src/repo-memory/repo-memory-job-context.mjs";
|
|
5
|
+
|
|
6
|
+
if (isRepoMemoryJobWorker()) process.exit(0);
|
|
7
|
+
|
|
8
|
+
const options = {
|
|
9
|
+
adapterDir: "codex",
|
|
10
|
+
debugEnv: "MEMORAX_CODE_CODEX_HOOK_DEBUG",
|
|
11
|
+
requireTranscriptPathForTurnEvents: true,
|
|
12
|
+
runtime: "codex",
|
|
13
|
+
sessionIdField: "codexSessionId",
|
|
14
|
+
sessionKeyPrefix: "codex",
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const input = await runCaptureCwdHook(options);
|
|
18
|
+
markSupplementalReminderAfterCompact(options, input);
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import {
|
|
6
|
+
runEnsureBackendHook,
|
|
7
|
+
stringValue,
|
|
8
|
+
} from "../../memorax-code-adapter-common/src/hooks/ensure-backend-runner.mjs";
|
|
9
|
+
|
|
10
|
+
const DEBUG = process.env.MEMORAX_CODE_CODEX_HOOK_DEBUG === "1";
|
|
11
|
+
|
|
12
|
+
try {
|
|
13
|
+
await runEnsureBackendHook({
|
|
14
|
+
ensureBackendValue: process.env.MEMORAX_CODE_CODEX_ENSURE_BACKEND
|
|
15
|
+
?? process.env.MEMORAX_CODE_CODEX_HOOK_ENSURE_BACKEND,
|
|
16
|
+
healthTimeoutValue: process.env.MEMORAX_CODE_CODEX_ENSURE_TIMEOUT_MS,
|
|
17
|
+
startTimeoutValue: process.env.MEMORAX_CODE_CODEX_START_TIMEOUT_MS,
|
|
18
|
+
memoraxCodeCommand: stringValue(process.env.MEMORAX_CODE_CODEX_LIFECYCLE_COMMAND)
|
|
19
|
+
?? stringValue(process.env.MEMORAX_CODE_COMMAND),
|
|
20
|
+
pluginRoot: pluginRoot(),
|
|
21
|
+
resolveHomes: hookHomes,
|
|
22
|
+
buildStartArgs: startArgs,
|
|
23
|
+
onHealthy: async ({ homes, backendUrl }) => {
|
|
24
|
+
const reconciled = await reconcileAdapter(homes, backendUrl);
|
|
25
|
+
if (!reconciled.ok) {
|
|
26
|
+
debug(`Codex Hook adapter reconcile failed: ${reconciled.error ?? reconciled.reason ?? "unknown error"}`);
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
debug,
|
|
30
|
+
});
|
|
31
|
+
} catch (error) {
|
|
32
|
+
debug(error instanceof Error ? error.message : String(error));
|
|
33
|
+
}
|
|
34
|
+
process.exit(0);
|
|
35
|
+
|
|
36
|
+
async function reconcileAdapter(homes, backendUrl) {
|
|
37
|
+
try {
|
|
38
|
+
const config = await import(new URL("../src/config.mjs", import.meta.url).href);
|
|
39
|
+
const status = config.readCodexAdapterStatus({
|
|
40
|
+
codexHome: homes.codexHome,
|
|
41
|
+
memoraxCodeHome: homes.memoraxCodeHome,
|
|
42
|
+
backendUrl,
|
|
43
|
+
codexPluginSkillsRoot: join(pluginRoot(), "skills"),
|
|
44
|
+
});
|
|
45
|
+
if (status.enabled === true && status.codexSkills?.ok === true) return { ok: true, skipped: true };
|
|
46
|
+
const result = config.enableCodexAdapter({
|
|
47
|
+
codexHome: homes.codexHome,
|
|
48
|
+
memoraxCodeHome: homes.memoraxCodeHome,
|
|
49
|
+
backendUrl,
|
|
50
|
+
codexPluginSkillsRoot: join(pluginRoot(), "skills"),
|
|
51
|
+
});
|
|
52
|
+
return result?.ok === false ? result : { ok: true };
|
|
53
|
+
} catch (error) {
|
|
54
|
+
return { ok: false, error: error instanceof Error ? error.message : String(error) };
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function pluginRoot() {
|
|
59
|
+
return stringValue(process.env.PLUGIN_ROOT) ?? dirname(dirname(fileURLToPath(import.meta.url)));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function hookHomes(input = {}) {
|
|
63
|
+
const memoraxCodeHome = stringValue(process.env.MEMORAX_CODE_HOME) ?? join(homedir(), ".memorax-code");
|
|
64
|
+
const codexHome = stringValue(process.env.CODEX_HOME)
|
|
65
|
+
?? stringValue(input.codex_home)
|
|
66
|
+
?? stringValue(input.codexHome)
|
|
67
|
+
?? join(homedir(), ".codex");
|
|
68
|
+
return { memoraxCodeHome, codexHome };
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function startArgs(homes, recoveryArguments) {
|
|
72
|
+
return [
|
|
73
|
+
"start",
|
|
74
|
+
"--home", homes.memoraxCodeHome,
|
|
75
|
+
"--codex-home", homes.codexHome,
|
|
76
|
+
...recoveryArguments,
|
|
77
|
+
];
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function debug(message) {
|
|
81
|
+
if (DEBUG) console.error(message);
|
|
82
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
PERSONAL_MEMORY_REMINDER_CONTEXT,
|
|
4
|
+
runMemorySkillReminderHook,
|
|
5
|
+
} from "../../memorax-code-adapter-common/src/hooks/memory-skill-reminder-hook.mjs";
|
|
6
|
+
import { resolveBackendConnection } from "../../memorax-code-adapter-common/src/backend-connection.mjs";
|
|
7
|
+
import { readStdinJson, stringOption } from "../../memorax-code-adapter-common/src/config-utils.mjs";
|
|
8
|
+
import { isRepoMemoryJobWorker } from "../../memorax-code-adapter-common/src/repo-memory/repo-memory-job-context.mjs";
|
|
9
|
+
import { buildRepoProcedureMemoryContext } from "../../memorax-code-adapter-common/src/repo-memory/repo-procedure-memory-context.mjs";
|
|
10
|
+
import { buildRepoUserProfilePreferencesContext } from "../../memorax-code-adapter-common/src/repo-memory/repo-user-profile-context.mjs";
|
|
11
|
+
import { resolveCodexWorkspaceKind } from "../src/workspace-kind.mjs";
|
|
12
|
+
|
|
13
|
+
if (isRepoMemoryJobWorker()) process.exit(0);
|
|
14
|
+
|
|
15
|
+
const personalMemoryContextOptions = {
|
|
16
|
+
adapterDir: "codex",
|
|
17
|
+
debugEnv: "MEMORAX_CODE_CODEX_HOOK_DEBUG",
|
|
18
|
+
sessionKeyPrefix: "codex",
|
|
19
|
+
};
|
|
20
|
+
const RETRIEVAL_BACKEND_TIMEOUT_MS = 12_000;
|
|
21
|
+
const DEFAULT_BACKEND_TIMEOUT_MS = 5_000;
|
|
22
|
+
|
|
23
|
+
try {
|
|
24
|
+
const input = await readStdinJson();
|
|
25
|
+
const turnStart = turnStartBody(input);
|
|
26
|
+
if (turnStart) {
|
|
27
|
+
const turnStartResult = await recordTurnStart(turnStart);
|
|
28
|
+
const normalizedInput = turnStart.workspaceKind
|
|
29
|
+
? { ...input, workspaceKind: turnStart.workspaceKind }
|
|
30
|
+
: input;
|
|
31
|
+
await runMemorySkillReminderHook({
|
|
32
|
+
additionalReminderContext: PERSONAL_MEMORY_REMINDER_CONTEXT,
|
|
33
|
+
adapterDir: "codex",
|
|
34
|
+
baseAdditionalContext: turnStartResult.additionalContext,
|
|
35
|
+
buildCadenceReminderContext: (hookInput) => buildRepoProcedureMemoryContext(hookInput, personalMemoryContextOptions),
|
|
36
|
+
buildPersonalMemoryContext: (hookInput) => buildRepoUserProfilePreferencesContext(hookInput, personalMemoryContextOptions),
|
|
37
|
+
debugEnv: "MEMORAX_CODE_CODEX_HOOK_DEBUG",
|
|
38
|
+
onReminder: turnStartResult.recorded ? recordReminder : undefined,
|
|
39
|
+
remindOnFirstTurn: true,
|
|
40
|
+
requireTranscriptPath: true,
|
|
41
|
+
runtime: "codex",
|
|
42
|
+
supplementalReminderAfterCompact: true,
|
|
43
|
+
}, normalizedInput);
|
|
44
|
+
}
|
|
45
|
+
} catch (error) {
|
|
46
|
+
debugHookError(error);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function turnStartBody(input) {
|
|
50
|
+
const sessionId = stringOption(input.session_id) ?? stringOption(input.sessionId);
|
|
51
|
+
const prompt = stringOption(input.prompt) ?? stringOption(input.user_prompt) ?? stringOption(input.userPrompt);
|
|
52
|
+
const transcriptPath = stringOption(input.transcript_path) ?? stringOption(input.transcriptPath);
|
|
53
|
+
if (!sessionId || !prompt || !transcriptPath) return undefined;
|
|
54
|
+
return {
|
|
55
|
+
version: 1,
|
|
56
|
+
client: "codex",
|
|
57
|
+
sessionId,
|
|
58
|
+
turnId: stringOption(input.turn_id) ?? stringOption(input.turnId),
|
|
59
|
+
prompt,
|
|
60
|
+
cwd: stringOption(input.cwd),
|
|
61
|
+
workspaceKind: resolveCodexWorkspaceKind(input),
|
|
62
|
+
transcriptPath,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
async function recordTurnStart(body) {
|
|
67
|
+
try {
|
|
68
|
+
const response = await postBackend("/memory/turn-start", body);
|
|
69
|
+
return {
|
|
70
|
+
recorded: true,
|
|
71
|
+
additionalContext: stringValue(response?.additionalContext),
|
|
72
|
+
};
|
|
73
|
+
} catch (error) {
|
|
74
|
+
debugHookError(error);
|
|
75
|
+
return { recorded: false };
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
async function recordReminder(reminder) {
|
|
80
|
+
if (!reminder.turnId || !reminder.transcriptPath) return;
|
|
81
|
+
await postBackend("/memory/skill-reminder", {
|
|
82
|
+
version: 1,
|
|
83
|
+
client: "codex",
|
|
84
|
+
sessionId: reminder.sessionId,
|
|
85
|
+
turnId: reminder.turnId,
|
|
86
|
+
transcriptPath: reminder.transcriptPath,
|
|
87
|
+
cwd: reminder.cwd,
|
|
88
|
+
workspaceKind: reminder.workspaceKind,
|
|
89
|
+
content: reminder.content,
|
|
90
|
+
triggers: reminder.triggers,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
async function postBackend(path, body) {
|
|
95
|
+
const connection = resolveBackendConnection();
|
|
96
|
+
const timeoutMs = parsePositiveInt(
|
|
97
|
+
process.env.MEMORAX_CODE_CODEX_MEMORY_HOOK_TIMEOUT_MS,
|
|
98
|
+
path === "/memory/turn-start" ? RETRIEVAL_BACKEND_TIMEOUT_MS : DEFAULT_BACKEND_TIMEOUT_MS,
|
|
99
|
+
);
|
|
100
|
+
const headers = { "content-type": "application/json", connection: "close" };
|
|
101
|
+
if (connection.token) headers["x-memorax-code-backend-token"] = connection.token;
|
|
102
|
+
const response = await fetch(new URL(path, connection.url), {
|
|
103
|
+
method: "POST",
|
|
104
|
+
headers,
|
|
105
|
+
body: JSON.stringify(body),
|
|
106
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
107
|
+
});
|
|
108
|
+
if (!response.ok) throw new Error(`Backend ${path} returned HTTP ${response.status}`);
|
|
109
|
+
return await response.json().catch(() => undefined);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function debugHookError(error) {
|
|
113
|
+
if (process.env.MEMORAX_CODE_CODEX_HOOK_DEBUG === "1") {
|
|
114
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function parsePositiveInt(value, fallback) {
|
|
119
|
+
const parsed = Number(value);
|
|
120
|
+
return Number.isInteger(parsed) && parsed > 0 ? parsed : fallback;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function stringValue(value) {
|
|
124
|
+
return typeof value === "string" && value.trim() ? value.trim() : undefined;
|
|
125
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { resolveBackendConnection } from "../../memorax-code-adapter-common/src/backend-connection.mjs";
|
|
3
|
+
import { readStdinJson } from "../../memorax-code-adapter-common/src/config-utils.mjs";
|
|
4
|
+
import { isRepoMemoryJobWorker } from "../../memorax-code-adapter-common/src/repo-memory/repo-memory-job-context.mjs";
|
|
5
|
+
import { resolveCodexWorkspaceKind } from "../src/workspace-kind.mjs";
|
|
6
|
+
|
|
7
|
+
if (isRepoMemoryJobWorker()) process.exit(0);
|
|
8
|
+
|
|
9
|
+
try {
|
|
10
|
+
const input = await readStdinJson();
|
|
11
|
+
const sessionId = stringValue(input.session_id) ?? stringValue(input.sessionId);
|
|
12
|
+
const lastAssistantMessage = stringValue(input.last_assistant_message) ?? stringValue(input.lastAssistantMessage);
|
|
13
|
+
const transcriptPath = stringValue(input.transcript_path) ?? stringValue(input.transcriptPath);
|
|
14
|
+
if (!sessionId || !lastAssistantMessage) process.exit(0);
|
|
15
|
+
|
|
16
|
+
await postBackend("/memory/writeback", {
|
|
17
|
+
version: 1,
|
|
18
|
+
client: "codex",
|
|
19
|
+
sessionId,
|
|
20
|
+
turnId: stringValue(input.turn_id) ?? stringValue(input.turnId),
|
|
21
|
+
lastAssistantMessage,
|
|
22
|
+
cwd: stringValue(input.cwd),
|
|
23
|
+
workspaceKind: resolveCodexWorkspaceKind(input),
|
|
24
|
+
transcriptPath,
|
|
25
|
+
});
|
|
26
|
+
} catch {
|
|
27
|
+
// Hooks must not block Codex turns when the local Backend is unavailable.
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
process.exit(0);
|
|
31
|
+
|
|
32
|
+
async function postBackend(path, body) {
|
|
33
|
+
const connection = resolveBackendConnection();
|
|
34
|
+
const timeoutMs = parsePositiveInt(process.env.MEMORAX_CODE_CODEX_MEMORY_HOOK_TIMEOUT_MS, 5000);
|
|
35
|
+
const headers = { "content-type": "application/json", connection: "close" };
|
|
36
|
+
if (connection.token) headers["x-memorax-code-backend-token"] = connection.token;
|
|
37
|
+
await fetch(new URL(path, connection.url), {
|
|
38
|
+
method: "POST",
|
|
39
|
+
headers,
|
|
40
|
+
body: JSON.stringify(body),
|
|
41
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function parsePositiveInt(value, fallback) {
|
|
46
|
+
const parsed = Number(value);
|
|
47
|
+
return Number.isInteger(parsed) && parsed > 0 ? parsed : fallback;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function stringValue(value) {
|
|
51
|
+
return typeof value === "string" && value.trim() ? value.trim() : undefined;
|
|
52
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: memorax-code
|
|
3
|
+
description: >-
|
|
4
|
+
Use this skill as the single entry point for persistent coding and
|
|
5
|
+
repository-local memory work, regardless of type, wording, or operation. Use
|
|
6
|
+
it whenever a request may involve information that should persist beyond the
|
|
7
|
+
current task,
|
|
8
|
+
knowledge remembered from prior work, repository memory,
|
|
9
|
+
reusable procedures or working rules, or durable user profile and interaction
|
|
10
|
+
preferences. This applies even when the user does not call it memory,
|
|
11
|
+
including naturally stated habits, preferences,
|
|
12
|
+
checklists, action sequences, prerequisites, gates, exceptions, validation
|
|
13
|
+
rules, communication style, preferred language, or result presentation.
|
|
14
|
+
Determine whether the request belongs to MemoraX Code coding memory,
|
|
15
|
+
repository memory, personal procedure memory, personal profile
|
|
16
|
+
memory, or no persistent memory, then route it to the appropriate operation.
|
|
17
|
+
Prefer this router over any underlying memory workflow. Ask one focused
|
|
18
|
+
question only when the memory authority remains ambiguous after routing.
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# MemoraX Code
|
|
22
|
+
|
|
23
|
+
Classify the requested memory authority first, then its operation. Load only the matching reference unless the request genuinely spans authorities or operations.
|
|
24
|
+
|
|
25
|
+
## Authority Router
|
|
26
|
+
|
|
27
|
+
### MemoraX Code Coding Memory
|
|
28
|
+
|
|
29
|
+
Use MemoraX Code coding memory for reusable engineering knowledge learned across coding work: prior fixes, failed approaches, coding conventions, implementation pitfalls, validation patterns, and design rationale.
|
|
30
|
+
|
|
31
|
+
- Read [references/memorax-search.md](references/memorax-search.md) to recall or search coding memory.
|
|
32
|
+
- Read [references/memorax-add.md](references/memorax-add.md) to save a grounded reusable coding lesson.
|
|
33
|
+
|
|
34
|
+
### Repo Memory
|
|
35
|
+
|
|
36
|
+
Use repo memory for repository identity, architecture maps, module routing, local commit history, and GitHub or GitLab PR, MR, and issue evidence stored under `.repo_memory/PROFILE.md`, `.repo_memory/resources/`, and `.repo_memory/raw/`.
|
|
37
|
+
|
|
38
|
+
- Read [references/repo-read.md](references/repo-read.md) to inspect existing repo memory.
|
|
39
|
+
- Read [references/repo-build.md](references/repo-build.md) for first-time creation, full rebuilds, or full refreshes.
|
|
40
|
+
- Read [references/repo-update.md](references/repo-update.md) for incremental updates to an existing bundle.
|
|
41
|
+
- Read [references/repo-templates.md](references/repo-templates.md) only when the build or update operation needs to author repo memory files.
|
|
42
|
+
|
|
43
|
+
### Personal Memory
|
|
44
|
+
|
|
45
|
+
Use personal memory for user-owned repository procedures and durable profile or interaction preferences stored under `.repo_memory/procedure-memory/` and `.repo_memory/user-profile/`.
|
|
46
|
+
|
|
47
|
+
- Read [references/personal-read.md](references/personal-read.md) to list, recall, or apply personal memory.
|
|
48
|
+
- Read [references/personal-write.md](references/personal-write.md) to save, update, forget, or delete personal memory.
|
|
49
|
+
|
|
50
|
+
## Tie Breakers
|
|
51
|
+
|
|
52
|
+
- Route ordered actions, checklists, prerequisites, gates, exceptions, and validation rules to personal procedure memory, even when phrased as "I prefer", "I like", "我的习惯", or "我喜欢".
|
|
53
|
+
- Route preferred name, answer language, tone, verbosity, explanation style, and result presentation to personal profile memory.
|
|
54
|
+
- Route task-learned repairs, coding pitfalls, project engineering conventions, and reusable design lessons to MemoraX Code coding memory.
|
|
55
|
+
- Route repository architecture, module maps, commit history, PRs, MRs, and issues to repo memory. Verify claims about current behavior against live code.
|
|
56
|
+
- Route current-task instructions and temporary plans to the current task only; do not persist them.
|
|
57
|
+
- Do not infer an authority from verbs such as "remember", "recall", "refresh", or "update" alone. Ask one focused question when the target remains ambiguous.
|
|
58
|
+
|
|
59
|
+
Examples:
|
|
60
|
+
|
|
61
|
+
- "先测试再提 PR,帮我记住" routes to personal procedure write.
|
|
62
|
+
- "我喜欢中文简短回答" routes to personal profile write.
|
|
63
|
+
- "之前这个 bug 怎么修的?" routes to MemoraX Code coding memory search unless the user asks for commit or PR evidence.
|
|
64
|
+
- "这个仓库的架构是什么?" routes to repo memory read.
|
|
65
|
+
- "重新生成仓库 memory" routes to repo memory build.
|
|
66
|
+
- "更新一下 memory" requires clarification when no authority is identifiable.
|
|
67
|
+
|
|
68
|
+
## Shared Rules
|
|
69
|
+
|
|
70
|
+
For MemoraX Code coding memory, run `memorax-cli` from the active task workspace. The installed Hook and session binding supply the authoritative workspace root; do not run Git commands to discover or replace it. The Backend resolves repository scope from that trusted workspace and read-only filesystem Git metadata.
|
|
71
|
+
|
|
72
|
+
Repo memory and personal memory remain local `.repo_memory` authorities. Resolve their repository root exactly as described by the selected reference, including its Git requirements.
|
|
73
|
+
|
|
74
|
+
Apply instructions in this order: system and developer instructions, `AGENTS.md`, the current user request, then stored memory. Memory is guidance or historical context, not proof of current repository behavior.
|
|
75
|
+
|
|
76
|
+
For MemoraX Code coding memory, use `memorax-cli` exactly as described by the selected reference. Invoke this skill as `$memorax-code` in Codex or `/memorax-code` in Claude Code; neither invocation is a shell command. `memorax-code` is the lifecycle CLI and must not be used for memory search or add. Do not call MemoraX HTTP endpoints directly.
|
|
77
|
+
|
|
78
|
+
When explaining Memory Viewer, describe only `/memory-viewer`. It is a
|
|
79
|
+
content-free local summary and must not expose conversation or memory text,
|
|
80
|
+
session or turn identifiers, paths, or trace details. The page never queries
|
|
81
|
+
MemoraX directly; client Hooks are the trace ingress authority.
|
|
82
|
+
|
|
83
|
+
Never store secrets, credentials, `.env` content, sensitive personal data, raw transcripts, hidden tests, exact patches, temporary target commits, or unsafe destructive commands. Do not announce internal routing or reference loading.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "MemoraX Code"
|
|
3
|
+
short_description: "Route coding, repo, and personal memory"
|
|
4
|
+
default_prompt: "Use /memorax-code-claude-adapter:memorax-code to route a coding-memory, repo-memory, or personal-memory request to the correct operation."
|
|
5
|
+
|
|
6
|
+
policy:
|
|
7
|
+
allow_implicit_invocation: true
|
|
8
|
+
install_targets:
|
|
9
|
+
- "~/.claude/skills/memorax-code"
|
|
10
|
+
- ".claude/skills/memorax-code"
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "MemoraX Code"
|
|
3
|
+
short_description: "Route coding, repo, and personal memory"
|
|
4
|
+
default_prompt: "Use $memorax-code to route a coding-memory, repo-memory, or personal-memory request to the correct operation."
|
|
5
|
+
|
|
6
|
+
policy:
|
|
7
|
+
allow_implicit_invocation: true
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# MemoraX Code Coding Memory Add
|
|
2
|
+
|
|
3
|
+
Use these instructions only to add reusable coding knowledge through `memorax-cli`. Invoke the skill as `$memorax-code` in Codex or `/memorax-code` in Claude Code; do not route memory operations through the lifecycle-only `memorax-code` CLI. Do not use this authority for personal procedures, interaction preferences, generated repository facts, or one-off task details.
|
|
4
|
+
|
|
5
|
+
## Eligible Knowledge
|
|
6
|
+
|
|
7
|
+
Add a coding memory only when the task yields stable, grounded, reusable engineering knowledge, such as:
|
|
8
|
+
|
|
9
|
+
- a verified repair invariant or validation pattern;
|
|
10
|
+
- a reusable failed-attempt lesson;
|
|
11
|
+
- a confirmed coding convention, lifecycle boundary, or implementation pitfall;
|
|
12
|
+
- durable design rationale that will help future coding work.
|
|
13
|
+
|
|
14
|
+
Route user-owned ordered actions, checklists, gates, and work rules to personal procedure memory. Route preferred language, tone, verbosity, name, and presentation to personal profile memory. Route commit, PR, issue, architecture-map, and repository-history facts to repo memory.
|
|
15
|
+
|
|
16
|
+
Do not add positive repair lessons based only on unverified edits or assistant self-report. Verification may come from a focused test, evaluator, CI check, accepted review, manual reproduction, or deployed behavior. A failed attempt may be saved as negative evidence when the failure itself is clear and reusable.
|
|
17
|
+
|
|
18
|
+
## Add Workflow
|
|
19
|
+
|
|
20
|
+
For a proactive add, write all generated prose in `--memory`, `--reason`, and the confirmation in the language of the user's current request; preserve exact code, API, path, workflow, and project identifiers.
|
|
21
|
+
|
|
22
|
+
Run from the active task workspace. Pass the memory and reason directly. Put every dynamically generated `--memory` and `--reason` value in single quotes, never double quotes. Treat `$HOME`, backticks, and `$(command)` as literal text inside those quotes. Replace each literal single quote in a value with the exact POSIX sequence `'\''`.
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
memorax-cli add \
|
|
26
|
+
--memory 'Concise reusable memory.' \
|
|
27
|
+
--type procedural \
|
|
28
|
+
--reason 'Capture reusable coding memory.'
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Use an appropriate supported type such as `core`, `semantic`, `procedural`, `episodic`, or `unclassified`. Use `preference` only for an engineering convention owned by MemoraX Code coding memory, not for a personal interaction preference.
|
|
32
|
+
|
|
33
|
+
For a complex verified repair or failed approach, use this compact card when it improves later retrieval:
|
|
34
|
+
|
|
35
|
+
```text
|
|
36
|
+
CODE_AGENT_MEMORY
|
|
37
|
+
repo: <repository or product area>
|
|
38
|
+
scope: <module/path::symbol/API or lifecycle boundary>
|
|
39
|
+
status: <verified|failed_attempt|candidate>
|
|
40
|
+
signal: <test, CI, review, reproduction, deployment, failure, or unknown>
|
|
41
|
+
problem: <small behavioral symptom or engineering situation>
|
|
42
|
+
technical_context: <stable API, lifecycle, state owner, or data-shape detail>
|
|
43
|
+
surfaces: <observable producer/consumer or setup/runtime/cleanup boundaries>
|
|
44
|
+
failed_shape: <reusable wrong assumption or unsafe patch shape, or none>
|
|
45
|
+
validation: <small reusable check contract>
|
|
46
|
+
principle: <abstract invariant or decision rule>
|
|
47
|
+
anchors: <stable repository source, tests, or public docs>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Keep the card under 1,100 characters when practical. It must guide future investigation while still requiring live-code inspection.
|
|
51
|
+
|
|
52
|
+
Pass a completed multi-line card as one single-quoted `--memory` argument:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
memorax-cli add \
|
|
56
|
+
--memory 'CODE_AGENT_MEMORY
|
|
57
|
+
repo: owner/name
|
|
58
|
+
scope: module/path::symbol
|
|
59
|
+
status: verified
|
|
60
|
+
signal: focused test passed
|
|
61
|
+
problem: concise reusable symptom
|
|
62
|
+
technical_context: stable implementation fact
|
|
63
|
+
surfaces: affected boundary
|
|
64
|
+
failed_shape: reusable pitfall or none
|
|
65
|
+
validation: smallest reusable check
|
|
66
|
+
principle: reusable invariant
|
|
67
|
+
anchors: stable/source/path' \
|
|
68
|
+
--type procedural \
|
|
69
|
+
--reason 'Capture verified reusable coding memory.'
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
If add fails, report the exact failure and do not retry automatically, bypass the CLI, or call MemoraX directly.
|
|
73
|
+
|
|
74
|
+
## Exclusions
|
|
75
|
+
|
|
76
|
+
Do not add secrets, credentials, private URLs, raw authorization headers, exact patches, target commits, hidden tests, target diffs, vulnerability details, exploit steps, copied source, long logs, stack traces, raw transcripts, temporary errors, or facts directly recoverable from current files and git history.
|
|
77
|
+
|
|
78
|
+
Do not add speculation, assistant-only praise, or a current instruction merely because it contains "remember". Return to `SKILL.md` when the content belongs to personal memory or repo memory.
|
|
79
|
+
|
|
80
|
+
## Output
|
|
81
|
+
|
|
82
|
+
After an add request is accepted, confirm briefly that it was submitted for processing and identify the reusable coding lesson at a high level. If add is disabled or fails, report the issue and continue without bypassing the CLI.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# MemoraX Code Coding Memory Search
|
|
2
|
+
|
|
3
|
+
Use these instructions only to search reusable coding memory through `memorax-cli`. Invoke the skill as `$memorax-code` in Codex or `/memorax-code` in Claude Code; do not route memory operations through the lifecycle-only `memorax-code` CLI. Do not call MemoraX HTTP endpoints directly, print credentials, or edit memory storage by hand.
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
Run the CLI from the active task workspace. The installed Hook and session binding supply the authoritative workspace root; do not run `git rev-parse`, infer the root from Git metadata, or substitute an unrelated working directory. Do not make `memorax-cli status` a mandatory preflight; use it only to diagnose a configuration or scope failure.
|
|
8
|
+
|
|
9
|
+
Coding memory uses `<MemoraX base user ID>@<normalized repository name>` for Git workspaces and the normalized folder name for genuine non-Git directories. MemoraX Code resolves `.git`, `gitdir`, and `commondir` without executing Git. Linked worktrees share one repository scope; another clone, repository, or non-Git directory retains a different local session key even when its readable name matches.
|
|
10
|
+
|
|
11
|
+
Require a readable active workspace binding. A CLI command from a linked worktree of the bound repository is valid. If the CLI reports `workspace_scope_mismatch`, ask the user to start a task in the target repository or local workspace. Do not retry from an unrelated scope or fall back to an unscoped user id.
|
|
12
|
+
|
|
13
|
+
If `memorax-cli` is not on `PATH`, or memory is disabled, unconfigured, or unavailable, report that briefly and continue with live code or documentation. Authenticate through MemoraX Code configuration; never recover credentials from shell history or place tokens in prompts. Treat injected memory as a hypothesis and verify it against the current checkout.
|
|
14
|
+
|
|
15
|
+
## Search Decision
|
|
16
|
+
|
|
17
|
+
Search when prior coding memory may change localization, implementation, review, validation, or explanation. Typical triggers include:
|
|
18
|
+
|
|
19
|
+
- a request for a previous fix, failed approach, coding convention, design decision, or reusable lesson;
|
|
20
|
+
- implementation, review, planning, API, schema, parser, workflow-contract, or migration work where prior project guidance may matter;
|
|
21
|
+
- explicit instructions to follow previous agreements or remembered engineering conventions.
|
|
22
|
+
|
|
23
|
+
Skip search for simple current-code facts, tiny edits, typo fixes, one-shot commands, or behavior directly established by a clear live source.
|
|
24
|
+
|
|
25
|
+
Choose the closest coding scene to shape the query:
|
|
26
|
+
|
|
27
|
+
- **Development:** implementation, debugging, refactoring, test repair, build failures, feature work, API design, or migration planning.
|
|
28
|
+
- **Review:** diff, commit, PR, patch, audit, risk assessment, or review-comment handling.
|
|
29
|
+
- **Understanding:** implementation location, module explanation, architecture rationale, or repository comprehension when repo memory is not the requested authority.
|
|
30
|
+
|
|
31
|
+
If the user asks for commit, PR, MR, issue, or repository architecture evidence, return to `SKILL.md` and route to repo memory instead.
|
|
32
|
+
|
|
33
|
+
## Query Workflow
|
|
34
|
+
|
|
35
|
+
Run at most one focused search before answering or editing. A development task may run one additional materially different search only after a failed test or dead-end investigation.
|
|
36
|
+
|
|
37
|
+
Write each query as one short natural-language question or intent statement, not a keyword list. Derive it from the user's retrieval goal instead of copying or concatenating nouns from the prompt. Follow the user's language for the prose while preserving exact code, API, path, workflow, and project identifiers. State what prior knowledge is needed and the relationship, decision, constraint, behavior, or risk being investigated. Include 2-5 stable exact identifiers when they are relevant and known, but integrate them grammatically instead of appending search tags or filler.
|
|
38
|
+
|
|
39
|
+
Pass the query directly with `--query`. Put every dynamically generated query in single quotes, never double quotes. Treat `$HOME`, backticks, and `$(command)` as literal text inside those quotes. Replace each literal single quote in the value with the exact POSIX sequence `'\''`.
|
|
40
|
+
|
|
41
|
+
For example:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
memorax-cli search --query 'What prior decisions define the memorax-code parser API failure boundary for malformed input?'
|
|
45
|
+
memorax-cli search --query 'What prior review policies and regression risks apply to the memorax-code parser API cleanup boundary?'
|
|
46
|
+
memorax-cli search --query 'memorax-code 中 Backend、Codex adapter 与 memory 层的职责如何衔接,之前为什么这样划分?'
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Keep queries under 25 words when practical for the language, but do not shorten them into ungrammatical fragments. Exclude secrets, private URLs, full prompts, raw transcripts, copied files, long logs, stack traces, and one-off task details.
|
|
50
|
+
|
|
51
|
+
Read or summarize at most two relevant items. Prefer memories matching the current repository, module, API, lifecycle surface, ownership boundary, behavior, and failure mode. Treat verified memories as routing and validation hints, not patch recipes. Treat failed-attempt memories as negative evidence. Ignore stale or unrelated items and anything conflicting with current source, tests, or durable documentation.
|
|
52
|
+
|
|
53
|
+
## Transport Failures
|
|
54
|
+
|
|
55
|
+
If search fails with `fetch failed`, `This operation was aborted`, a timeout, DNS failure, `ENOTFOUND`, `EAI_AGAIN`, or a similar transport or sandbox error, retry the same `memorax-cli search` once in an approved network-enabled execution mode when one is available. Preserve the same query, workspace, and environment variables.
|
|
56
|
+
|
|
57
|
+
Do not apply this retry to `memorax-cli add`, authentication or configuration failures, or HTTP errors. If no approved mode is available or the one retry fails, report the exact CLI failure and continue with live evidence. Do not interpret a transport failure as an empty result, bypass the CLI, or call MemoraX directly.
|
|
58
|
+
|
|
59
|
+
## Output
|
|
60
|
+
|
|
61
|
+
Mention only an invariant, pitfall, convention, or validation idea that materially affects the answer. Ground claims about current implementation behavior in live code and checks.
|