memorix 1.6.0 → 1.6.1

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 (119) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/TEAM.md +86 -86
  3. package/dist/cli/index.js +317 -62
  4. package/dist/cli/memcode.js +12 -1
  5. package/dist/index.js +56 -9
  6. package/dist/maintenance-runner.js +54 -7
  7. package/dist/media-audio-runner.js +54 -7
  8. package/dist/media-video-runner.js +54 -7
  9. package/dist/memcode-runtime/CHANGELOG.md +24 -0
  10. package/dist/sdk.js +55 -8
  11. package/dist/vector-backfill-runner.js +54 -7
  12. package/docs/AGENT_OPERATOR_PLAYBOOK.md +11 -3
  13. package/docs/API_REFERENCE.md +1 -1
  14. package/docs/DESIGN_DECISIONS.md +357 -357
  15. package/docs/DOCKER.md +5 -1
  16. package/docs/PERFORMANCE.md +2 -2
  17. package/docs/README.md +3 -1
  18. package/docs/SETUP.md +8 -2
  19. package/package.json +1 -1
  20. package/plugins/claude/memorix/.claude-plugin/plugin.json +1 -1
  21. package/plugins/codebuddy/memorix/.codebuddy-plugin/plugin.json +1 -1
  22. package/plugins/codex/memorix/.codex-plugin/plugin.json +1 -1
  23. package/plugins/copilot/memorix/plugin.json +1 -1
  24. package/plugins/gemini/memorix/gemini-extension.json +1 -1
  25. package/plugins/omp/memorix/package.json +1 -1
  26. package/plugins/openclaw/memorix/.codex-plugin/plugin.json +1 -1
  27. package/plugins/pi/memorix/package.json +1 -1
  28. package/server.json +2 -2
  29. package/src/audit/index.ts +156 -156
  30. package/src/cli/commands/agent-integrations.ts +9 -3
  31. package/src/cli/commands/doctor.ts +46 -15
  32. package/src/cli/commands/formation.ts +48 -48
  33. package/src/cli/commands/git-hook-install.ts +111 -111
  34. package/src/cli/commands/handoff.ts +54 -54
  35. package/src/cli/commands/hook.ts +13 -1
  36. package/src/cli/commands/hooks-status.ts +63 -63
  37. package/src/cli/commands/ingest.ts +44 -44
  38. package/src/cli/commands/integrate-shared.ts +15 -15
  39. package/src/cli/commands/lock.ts +82 -82
  40. package/src/cli/commands/message.ts +104 -104
  41. package/src/cli/commands/poll.ts +58 -58
  42. package/src/cli/commands/reasoning.ts +118 -118
  43. package/src/cli/commands/serve-http.ts +68 -7
  44. package/src/cli/commands/skills.ts +114 -114
  45. package/src/cli/commands/task.ts +167 -167
  46. package/src/cli/commands/transfer.ts +47 -47
  47. package/src/cli/heap.ts +76 -0
  48. package/src/cli/index.ts +406 -406
  49. package/src/cli/invocation.ts +7 -4
  50. package/src/cli/tui/ChatView.tsx +234 -234
  51. package/src/cli/tui/CommandBar.tsx +312 -312
  52. package/src/cli/tui/ContextRail.tsx +118 -118
  53. package/src/cli/tui/HeaderBar.tsx +72 -72
  54. package/src/cli/tui/LogoBanner.tsx +51 -51
  55. package/src/cli/tui/index.ts +41 -41
  56. package/src/cli/version.ts +7 -7
  57. package/src/cli/workbench.ts +1 -1
  58. package/src/dashboard/project-classification.ts +64 -64
  59. package/src/embedding/provider.ts +76 -6
  60. package/src/git/hooks-path.ts +85 -85
  61. package/src/hooks/handler.ts +9 -18
  62. package/src/hooks/lifecycle.ts +173 -0
  63. package/src/hooks/pattern-detector.ts +173 -173
  64. package/src/hooks/significance-filter.ts +250 -250
  65. package/src/llm/memory-manager.ts +328 -328
  66. package/src/llm/quality.ts +248 -248
  67. package/src/memory/attribution-guard.ts +249 -249
  68. package/src/memory/disclosure-policy.ts +135 -135
  69. package/src/memory/entity-extractor.ts +197 -197
  70. package/src/memory/formation/evaluate.ts +217 -217
  71. package/src/memory/freshness.ts +122 -122
  72. package/src/memory/graph.ts +197 -197
  73. package/src/memory/refs.ts +94 -94
  74. package/src/memory/secret-filter.ts +79 -79
  75. package/src/orchestrate/adapters/claude-stream.ts +192 -192
  76. package/src/orchestrate/adapters/claude.ts +111 -111
  77. package/src/orchestrate/adapters/codex-stream.ts +134 -134
  78. package/src/orchestrate/adapters/codex.ts +41 -41
  79. package/src/orchestrate/adapters/gemini-stream.ts +166 -166
  80. package/src/orchestrate/adapters/gemini.ts +42 -42
  81. package/src/orchestrate/adapters/index.ts +73 -73
  82. package/src/orchestrate/adapters/opencode-stream.ts +143 -143
  83. package/src/orchestrate/adapters/opencode.ts +47 -47
  84. package/src/orchestrate/adapters/types.ts +77 -77
  85. package/src/orchestrate/capability-router.ts +284 -284
  86. package/src/orchestrate/cost-tracker.ts +219 -219
  87. package/src/orchestrate/error-recovery.ts +191 -191
  88. package/src/orchestrate/evidence.ts +140 -140
  89. package/src/orchestrate/ledger.ts +110 -110
  90. package/src/orchestrate/memorix-bridge.ts +343 -343
  91. package/src/orchestrate/output-budget.ts +80 -80
  92. package/src/orchestrate/permission.ts +152 -152
  93. package/src/orchestrate/pipeline-trace.ts +131 -131
  94. package/src/orchestrate/prompt-builder.ts +155 -155
  95. package/src/orchestrate/ring-buffer.ts +37 -37
  96. package/src/orchestrate/task-graph.ts +389 -389
  97. package/src/project/aliases.ts +374 -374
  98. package/src/rules/adapters/trae.ts +56 -56
  99. package/src/rules/syncer.ts +235 -235
  100. package/src/search/query-expansion.ts +52 -52
  101. package/src/server/formation-timeout.ts +27 -27
  102. package/src/skills/mini-skills.ts +386 -386
  103. package/src/store/chat-store.ts +119 -119
  104. package/src/store/graph-store.ts +249 -249
  105. package/src/store/mini-skill-store.ts +349 -349
  106. package/src/store/persistence-json.ts +212 -212
  107. package/src/store/persistence.ts +291 -291
  108. package/src/store/project-affinity.ts +195 -195
  109. package/src/team/event-bus.ts +76 -76
  110. package/src/team/handoff.ts +161 -161
  111. package/src/team/poll.ts +132 -132
  112. package/src/workspace/mcp-adapters/codex.ts +191 -191
  113. package/src/workspace/mcp-adapters/copilot.ts +105 -105
  114. package/src/workspace/mcp-adapters/cursor.ts +53 -53
  115. package/src/workspace/mcp-adapters/kiro.ts +64 -64
  116. package/src/workspace/mcp-adapters/opencode.ts +123 -123
  117. package/src/workspace/mcp-adapters/trae.ts +134 -134
  118. package/src/workspace/mcp-adapters/windsurf.ts +91 -91
  119. package/src/workspace/sanitizer.ts +60 -60
@@ -1,52 +1,52 @@
1
- import { callLLM, initLLM, isLLMEnabled } from '../llm/provider.js';
2
-
3
- const CJK_PATTERN = /[\u4e00-\u9fff\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af]/g;
4
- const COMMAND_LIKE_QUERY = /\b(git|npm|npx|pnpm|yarn|node|bash|powershell|curl|memorix)\b/i;
5
-
6
- const QUERY_EXPANSION_PROMPT = `You rewrite coding-memory search queries for retrieval.
7
-
8
- Rules:
9
- - Input may be Chinese, Japanese, or Korean
10
- - Output one short English search phrase only
11
- - Keep the technical meaning
12
- - Prefer wording that would match engineering notes or memory titles
13
- - No bullets, no JSON, no explanation, no quotes
14
- - 4 to 12 words is ideal`;
15
-
16
- function isCjkHeavy(query: string): boolean {
17
- const cjkCount = (query.match(CJK_PATTERN) || []).length;
18
- return query.length > 0 && cjkCount / query.length > 0.3;
19
- }
20
-
21
- function normalizeExpansion(text: string): string {
22
- return text
23
- .trim()
24
- .replace(/^[-*]\s*/, '')
25
- .replace(/^["'`]+|["'`]+$/g, '')
26
- .split(/\r?\n/)[0]
27
- .trim();
28
- }
29
-
30
- export async function maybeExpandSearchQuery(query: string): Promise<string> {
31
- if (!query || !isCjkHeavy(query) || COMMAND_LIKE_QUERY.test(query)) {
32
- return query;
33
- }
34
-
35
- if (!isLLMEnabled()) {
36
- initLLM();
37
- }
38
-
39
- if (!isLLMEnabled()) {
40
- return query;
41
- }
42
-
43
- try {
44
- const response = await callLLM(QUERY_EXPANSION_PROMPT, query);
45
- const expanded = normalizeExpansion(response.content);
46
- if (!expanded) return query;
47
- if (expanded.toLowerCase() === query.toLowerCase()) return query;
48
- return `${query} ${expanded}`.slice(0, 500);
49
- } catch {
50
- return query;
51
- }
52
- }
1
+ import { callLLM, initLLM, isLLMEnabled } from '../llm/provider.js';
2
+
3
+ const CJK_PATTERN = /[\u4e00-\u9fff\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af]/g;
4
+ const COMMAND_LIKE_QUERY = /\b(git|npm|npx|pnpm|yarn|node|bash|powershell|curl|memorix)\b/i;
5
+
6
+ const QUERY_EXPANSION_PROMPT = `You rewrite coding-memory search queries for retrieval.
7
+
8
+ Rules:
9
+ - Input may be Chinese, Japanese, or Korean
10
+ - Output one short English search phrase only
11
+ - Keep the technical meaning
12
+ - Prefer wording that would match engineering notes or memory titles
13
+ - No bullets, no JSON, no explanation, no quotes
14
+ - 4 to 12 words is ideal`;
15
+
16
+ function isCjkHeavy(query: string): boolean {
17
+ const cjkCount = (query.match(CJK_PATTERN) || []).length;
18
+ return query.length > 0 && cjkCount / query.length > 0.3;
19
+ }
20
+
21
+ function normalizeExpansion(text: string): string {
22
+ return text
23
+ .trim()
24
+ .replace(/^[-*]\s*/, '')
25
+ .replace(/^["'`]+|["'`]+$/g, '')
26
+ .split(/\r?\n/)[0]
27
+ .trim();
28
+ }
29
+
30
+ export async function maybeExpandSearchQuery(query: string): Promise<string> {
31
+ if (!query || !isCjkHeavy(query) || COMMAND_LIKE_QUERY.test(query)) {
32
+ return query;
33
+ }
34
+
35
+ if (!isLLMEnabled()) {
36
+ initLLM();
37
+ }
38
+
39
+ if (!isLLMEnabled()) {
40
+ return query;
41
+ }
42
+
43
+ try {
44
+ const response = await callLLM(QUERY_EXPANSION_PROMPT, query);
45
+ const expanded = normalizeExpansion(response.content);
46
+ if (!expanded) return query;
47
+ if (expanded.toLowerCase() === query.toLowerCase()) return query;
48
+ return `${query} ${expanded}`.slice(0, 500);
49
+ } catch {
50
+ return query;
51
+ }
52
+ }
@@ -1,27 +1,27 @@
1
- export const DEFAULT_FORMATION_TIMEOUT_MS = 12_000;
2
- export const FORMATION_TIMEOUT_MIN_MS = 1_000;
3
- export const FORMATION_TIMEOUT_MAX_MS = 300_000;
4
-
5
- /**
6
- * Parse and validate MEMORIX_FORMATION_TIMEOUT_MS.
7
- * - Must be a valid integer in the range 1000-300000ms.
8
- * - Invalid values fall back to the default and log a warning.
9
- * - Out-of-range values are clamped to the nearest bound.
10
- * Default: 12000ms (12s).
11
- */
12
- export function parseFormationTimeoutMs(raw: string | undefined): number {
13
- const value = raw?.trim();
14
- if (!value) return DEFAULT_FORMATION_TIMEOUT_MS;
15
-
16
- const parsed = Number(value);
17
- if (!Number.isInteger(parsed) || Number.isNaN(parsed)) {
18
- console.warn(
19
- `[memorix] MEMORIX_FORMATION_TIMEOUT_MS="${raw}" is invalid (must be a positive integer between ${FORMATION_TIMEOUT_MIN_MS}-${FORMATION_TIMEOUT_MAX_MS}ms). Using default ${DEFAULT_FORMATION_TIMEOUT_MS}ms.`,
20
- );
21
- return DEFAULT_FORMATION_TIMEOUT_MS;
22
- }
23
-
24
- if (parsed < FORMATION_TIMEOUT_MIN_MS) return FORMATION_TIMEOUT_MIN_MS;
25
- if (parsed > FORMATION_TIMEOUT_MAX_MS) return FORMATION_TIMEOUT_MAX_MS;
26
- return parsed;
27
- }
1
+ export const DEFAULT_FORMATION_TIMEOUT_MS = 12_000;
2
+ export const FORMATION_TIMEOUT_MIN_MS = 1_000;
3
+ export const FORMATION_TIMEOUT_MAX_MS = 300_000;
4
+
5
+ /**
6
+ * Parse and validate MEMORIX_FORMATION_TIMEOUT_MS.
7
+ * - Must be a valid integer in the range 1000-300000ms.
8
+ * - Invalid values fall back to the default and log a warning.
9
+ * - Out-of-range values are clamped to the nearest bound.
10
+ * Default: 12000ms (12s).
11
+ */
12
+ export function parseFormationTimeoutMs(raw: string | undefined): number {
13
+ const value = raw?.trim();
14
+ if (!value) return DEFAULT_FORMATION_TIMEOUT_MS;
15
+
16
+ const parsed = Number(value);
17
+ if (!Number.isInteger(parsed) || Number.isNaN(parsed)) {
18
+ console.warn(
19
+ `[memorix] MEMORIX_FORMATION_TIMEOUT_MS="${raw}" is invalid (must be a positive integer between ${FORMATION_TIMEOUT_MIN_MS}-${FORMATION_TIMEOUT_MAX_MS}ms). Using default ${DEFAULT_FORMATION_TIMEOUT_MS}ms.`,
20
+ );
21
+ return DEFAULT_FORMATION_TIMEOUT_MS;
22
+ }
23
+
24
+ if (parsed < FORMATION_TIMEOUT_MIN_MS) return FORMATION_TIMEOUT_MIN_MS;
25
+ if (parsed > FORMATION_TIMEOUT_MAX_MS) return FORMATION_TIMEOUT_MAX_MS;
26
+ return parsed;
27
+ }