@memorax/memorax-code 0.1.5 → 0.1.7

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 (86) hide show
  1. package/README.md +7 -18
  2. package/bin/memorax-code-npm-preinstall.mjs +28 -39
  3. package/bin/memorax-code-plugin-postinstall.mjs +23 -1537
  4. package/bin/memorax-code-setup.mjs +1615 -0
  5. package/bin/memorax-code.mjs +289 -5
  6. package/docs/configuration.md +66 -17
  7. package/docs/troubleshooting.md +123 -7
  8. package/lib/memorax-code-adapter-common/src/config-utils.d.mts +5 -1
  9. package/lib/memorax-code-adapter-common/src/config-utils.mjs +36 -3
  10. package/lib/memorax-code-adapter-common/src/credentials/linux-secret-service.mjs +110 -0
  11. package/lib/memorax-code-adapter-common/src/credentials/macos-keychain.mjs +224 -0
  12. package/lib/memorax-code-adapter-common/src/credentials/secure-command.mjs +340 -0
  13. package/lib/memorax-code-adapter-common/src/credentials/trial-credential-record.d.mts +82 -0
  14. package/lib/memorax-code-adapter-common/src/credentials/trial-credential-record.mjs +183 -0
  15. package/lib/memorax-code-adapter-common/src/credentials/trial-credential-store.d.mts +82 -0
  16. package/lib/memorax-code-adapter-common/src/credentials/trial-credential-store.mjs +271 -0
  17. package/lib/memorax-code-adapter-common/src/credentials/windows-dpapi.mjs +440 -0
  18. package/lib/memorax-code-adapter-common/src/hooks/memory-skill-reminder-hook.mjs +7 -4
  19. package/lib/memorax-code-adapter-common/src/setup-completion.d.mts +81 -0
  20. package/lib/memorax-code-adapter-common/src/setup-completion.mjs +154 -0
  21. package/lib/memorax-code-backend/dist/clients/claude/memory-hook-runtime.js +21 -2
  22. package/lib/memorax-code-backend/dist/clients/codex/memory-hook-runtime.js +23 -3
  23. package/lib/memorax-code-backend/dist/clients/opencode/memory-hook-runtime.js +19 -1
  24. package/lib/memorax-code-backend/dist/entrypoints/backend-cli.js +17 -16
  25. package/lib/memorax-code-backend/dist/lifecycle/backend/service.js +1 -0
  26. package/lib/memorax-code-backend/dist/lifecycle/orchestrator.js +81 -22
  27. package/lib/memorax-code-backend/dist/memorax-cli.js +3 -0
  28. package/lib/memorax-code-backend/dist/memory/automatic-retrieval.js +8 -2
  29. package/lib/memorax-code-backend/dist/memory/automatic-writeback.js +13 -1
  30. package/lib/memorax-code-backend/dist/memory/cli.js +10 -0
  31. package/lib/memorax-code-backend/dist/memory/quota-notice.js +208 -0
  32. package/lib/memorax-code-backend/dist/memory/service.js +11 -0
  33. package/lib/memorax-code-backend/dist/provider/memorax/adapter.js +4 -2
  34. package/lib/memorax-code-backend/dist/provider/memorax/http.js +10 -3
  35. package/lib/memorax-code-backend/dist/provider/memorax/quota.js +26 -0
  36. package/lib/memorax-code-backend/package.json +1 -1
  37. package/lib/memorax-code-claude-adapter/.claude-plugin/plugin.json +1 -1
  38. package/lib/memorax-code-claude-adapter/hooks/runtime-shell.json +1 -1
  39. package/lib/memorax-code-claude-adapter/package.json +1 -1
  40. package/lib/memorax-code-claude-adapter/runtime-hooks/memory-turn.mjs +5 -3
  41. package/lib/memorax-code-claude-adapter/skills/memorax-code/references/memorax-add.md +2 -0
  42. package/lib/memorax-code-claude-adapter/skills/memorax-code/references/memorax-search.md +4 -2
  43. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/.claude-plugin/plugin.json +1 -1
  44. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/hooks/runtime-shell.json +1 -1
  45. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/config-utils.d.mts +5 -1
  46. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/config-utils.mjs +36 -3
  47. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/credentials/linux-secret-service.mjs +110 -0
  48. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/credentials/macos-keychain.mjs +224 -0
  49. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/credentials/secure-command.mjs +340 -0
  50. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/credentials/trial-credential-record.d.mts +82 -0
  51. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/credentials/trial-credential-record.mjs +183 -0
  52. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/credentials/trial-credential-store.d.mts +82 -0
  53. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/credentials/trial-credential-store.mjs +271 -0
  54. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/credentials/windows-dpapi.mjs +440 -0
  55. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/hooks/memory-skill-reminder-hook.mjs +7 -4
  56. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/setup-completion.d.mts +81 -0
  57. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/memorax-code-adapter-common/src/setup-completion.mjs +154 -0
  58. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/package.json +1 -1
  59. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/runtime-hooks/memory-turn.mjs +5 -3
  60. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/memorax-add.md +2 -0
  61. package/lib/memorax-code-claude-marketplace/plugins/memorax-code-claude-adapter/skills/memorax-code/references/memorax-search.md +4 -2
  62. package/lib/memorax-code-codex-adapter/.codex-plugin/plugin.json +1 -1
  63. package/lib/memorax-code-codex-adapter/hooks/runtime-shell.json +1 -1
  64. package/lib/memorax-code-codex-adapter/package.json +1 -1
  65. package/lib/memorax-code-codex-adapter/runtime-hooks/memory-skill-reminder.mjs +2 -0
  66. package/lib/memorax-code-codex-adapter/skills/memorax-code/references/memorax-add.md +2 -0
  67. package/lib/memorax-code-codex-adapter/skills/memorax-code/references/memorax-search.md +4 -2
  68. package/lib/memorax-code-dsh-adapter/hooks/repo-memory-job.mjs +5 -2
  69. package/lib/memorax-code-dsh-adapter/package.json +1 -1
  70. package/lib/memorax-code-dsh-adapter/skills/memorax-code/references/memorax-add.md +2 -0
  71. package/lib/memorax-code-dsh-adapter/skills/memorax-code/references/memorax-search.md +4 -2
  72. package/lib/memorax-code-dsh-adapter/src/profile-lifecycle.mjs +158 -7
  73. package/lib/memorax-code-dsh-adapter/src/runtime-state.mjs +21 -0
  74. package/lib/memorax-code-opencode-adapter/package.json +1 -1
  75. package/lib/memorax-code-opencode-adapter/skills/memorax-code/references/memorax-add.md +2 -0
  76. package/lib/memorax-code-opencode-adapter/skills/memorax-code/references/memorax-search.md +4 -2
  77. package/lib/memorax-code-opencode-adapter/src/plugin.mjs +20 -0
  78. package/lib/package-transition.mjs +312 -0
  79. package/lib/resolve-codex-command.mjs +32 -6
  80. package/lib/setup-memory-preferences.mjs +113 -0
  81. package/lib/setup-reconcile.mjs +128 -0
  82. package/lib/trial-plugin-mark.mjs +171 -0
  83. package/lib/trial-provision-client.mjs +307 -0
  84. package/lib/trial-provision-flow.mjs +215 -0
  85. package/lib/trial-setup.mjs +53 -0
  86. package/package.json +1 -1
package/README.md CHANGED
@@ -8,31 +8,20 @@ Harness, and OpenCode.
8
8
  - Node.js 20 or newer (Node.js 24 LTS recommended) and npm.
9
9
  - At least one of Codex, Claude Code, DeepSeek Harness, OpenCode Desktop, or
10
10
  the OpenCode CLI.
11
- - A MemoraX account, Base User ID, and API key for memory features.
12
11
  - Python 3 only for Repo Memory operations.
13
12
 
14
13
  ## Install
15
14
 
16
- Create an API key in
17
- [MemoraX Console](https://platform.memorax.net/), then run:
18
-
19
15
  ```bash
20
- npm install -g @memorax/memorax-code --foreground-scripts
16
+ npm install -g @memorax/memorax-code
17
+ memorax-code setup
21
18
  ```
22
19
 
23
- Keep `--foreground-scripts` so npm displays the complete setup.
24
-
25
- The installer automatically detects available Codex, Claude Code, DeepSeek
26
- Harness, and OpenCode installations and configures those it finds. Follow the
27
- prompts to enter your MemoraX user ID, preferred language, and API key. On an
28
- interactive first install, a non-empty user ID and API key are required unless
29
- the effective configuration already supplies both. When Codex is detected,
30
- review and approve its Hook activation.
31
-
32
- Entering the MemoraX credentials after the installer's disclosure enables the
33
- core memory features and automatic writeback. If installation cannot prompt
34
- and effective credentials are not already configured, the package remains
35
- installed, but MemoraX-backed memory is not configured.
20
+ Setup automatically detects supported coding agents and completes an
21
+ account-free connection. If you already have a MemoraX account, run
22
+ `memorax-code setup --existing-account` instead. Later setup runs reuse a
23
+ complete saved configuration; use `memorax-code setup --reconfigure` to
24
+ replace it.
36
25
 
37
26
  After the first installation, restart or refresh the detected coding agents
38
27
  before opening a new session. In Codex, enable **MemoraX Code Codex Adapter**
@@ -1,60 +1,49 @@
1
1
  #!/usr/bin/env node
2
- import { spawnSync } from "node:child_process";
3
- import { existsSync } from "node:fs";
2
+ import { readFileSync } from "node:fs";
4
3
  import { homedir } from "node:os";
5
4
  import { dirname, join } from "node:path";
6
5
  import { fileURLToPath } from "node:url";
7
6
  import { unsupportedNodeVersionMessage } from "../lib/node-version.mjs";
7
+ import { runNpmPreinstallPackageTransition } from "../lib/package-transition.mjs";
8
8
 
9
9
  const PREFIX = "[MemoraX Code Install]:";
10
- const PREINSTALL_STOP_TIMEOUT_MS = 45_000;
11
10
  const nodeVersionError = unsupportedNodeVersionMessage();
12
11
  if (nodeVersionError) {
13
12
  console.error(`${PREFIX} ${nodeVersionError}`);
14
13
  process.exit(1);
15
14
  }
15
+
16
16
  const scriptDir = dirname(fileURLToPath(import.meta.url));
17
- const memoraxCodeBin = join(scriptDir, "memorax-code.mjs");
17
+ const packageRoot = dirname(scriptDir);
18
18
  const memoraxCodeHome = process.env.MEMORAX_CODE_HOME?.trim() || join(homedir(), ".memorax-code");
19
- const pidPath = join(memoraxCodeHome, "runtime", "backend", "backend.pid.json");
20
- const dshStatePath = join(memoraxCodeHome, "adapters", "dsh", "state.json");
21
-
22
- if (!existsSync(pidPath) && !existsSync(dshStatePath)) process.exit(0);
23
-
24
- console.warn(`${PREFIX} Stopping the existing managed Backend before postinstall setup...`);
25
- const result = spawnSync(
26
- process.execPath,
27
- [memoraxCodeBin, "stop", "--home", memoraxCodeHome, "--clients", "none", "--json"],
28
- {
29
- encoding: "utf8",
30
- env: {
31
- ...process.env,
32
- MEMORAX_CODE_HOME: memoraxCodeHome,
33
- MEMORAX_CODE_PACKAGE_REPLACEMENT: "1",
34
- },
35
- stdio: ["ignore", "pipe", "pipe"],
36
- timeout: PREINSTALL_STOP_TIMEOUT_MS,
37
- killSignal: "SIGKILL",
38
- },
39
- );
40
19
 
41
- if (result.status !== 0 || result.error || existsSync(pidPath)) {
42
- printOutput(result.stdout);
43
- printOutput(result.stderr);
44
- const detail = result.error?.code === "ETIMEDOUT"
45
- ? `memorax-code stop timed out after ${PREINSTALL_STOP_TIMEOUT_MS} ms`
46
- : result.error?.message
47
- ?? (existsSync(pidPath)
48
- ? `managed Backend PID authority still exists at ${pidPath}`
49
- : `memorax-code stop exited with status ${result.status ?? "unknown"}`);
50
- console.error(`${PREFIX} Package setup was stopped because the existing Backend could not be retired safely: ${detail}`);
20
+ try {
21
+ const result = runNpmPreinstallPackageTransition({
22
+ memoraxCodeHome,
23
+ memoraxCodeBin: join(scriptDir, "memorax-code.mjs"),
24
+ packageVersion: packageVersion(packageRoot),
25
+ });
26
+ if (result.disposition === "retired") {
27
+ console.warn(`${PREFIX} Existing managed Backend retired for package replacement.`);
28
+ }
29
+ } catch (error) {
30
+ printCommandOutput(error?.command);
31
+ console.error(`${PREFIX} Package replacement stopped: ${error instanceof Error ? error.message : String(error)}`);
51
32
  process.exit(1);
52
33
  }
53
34
 
54
- console.warn(`${PREFIX} Existing managed Backend stopped; postinstall will start the updated Backend after setup succeeds.`);
35
+ function packageVersion(root) {
36
+ const pkg = JSON.parse(readFileSync(join(root, "package.json"), "utf8"));
37
+ if (typeof pkg.version !== "string" || !pkg.version.trim()) {
38
+ throw new Error("package metadata does not contain a version");
39
+ }
40
+ return pkg.version.trim();
41
+ }
55
42
 
56
- function printOutput(output) {
57
- for (const line of String(output ?? "").split(/\r?\n/)) {
58
- if (line) console.warn(`${PREFIX} ${line}`);
43
+ function printCommandOutput(command) {
44
+ for (const output of [command?.stdout, command?.stderr]) {
45
+ for (const line of String(output ?? "").split(/\r?\n/)) {
46
+ if (line) console.warn(`${PREFIX} ${line}`);
47
+ }
59
48
  }
60
49
  }