memorix 1.1.7 → 1.1.8
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/CHANGELOG.md +13 -0
- package/CLAUDE.md +6 -1
- package/README.md +21 -0
- package/README.zh-CN.md +21 -0
- package/TEAM.md +86 -86
- package/dist/cli/index.js +730 -150
- package/dist/cli/index.js.map +1 -1
- package/dist/dashboard/static/index.html +201 -201
- package/dist/dashboard/static/style.css +3584 -3584
- package/dist/index.js +15 -8
- package/dist/index.js.map +1 -1
- package/dist/memcode-runtime/CHANGELOG.md +13 -0
- package/dist/memcode-runtime/package.json +4 -4
- package/dist/sdk.js +15 -8
- package/dist/sdk.js.map +1 -1
- package/docs/AGENT_OPERATOR_PLAYBOOK.md +18 -0
- package/docs/DESIGN_DECISIONS.md +357 -357
- package/docs/SETUP.md +10 -0
- package/docs/dev-log/progress.txt +35 -26
- package/package.json +1 -1
- package/src/audit/index.ts +156 -156
- package/src/cli/commands/agent-integrations.ts +623 -0
- package/src/cli/commands/audit-list.ts +89 -89
- package/src/cli/commands/background.ts +659 -659
- package/src/cli/commands/cleanup.ts +255 -255
- package/src/cli/commands/doctor.ts +23 -0
- package/src/cli/commands/formation.ts +48 -48
- package/src/cli/commands/git-hook-install.ts +111 -111
- package/src/cli/commands/handoff.ts +66 -66
- package/src/cli/commands/hooks-status.ts +63 -63
- package/src/cli/commands/ingest-commit.ts +153 -153
- package/src/cli/commands/ingest-image.ts +73 -73
- package/src/cli/commands/ingest-log.ts +180 -180
- package/src/cli/commands/ingest.ts +44 -44
- package/src/cli/commands/integrate-shared.ts +15 -15
- package/src/cli/commands/lock.ts +96 -96
- package/src/cli/commands/message.ts +121 -121
- package/src/cli/commands/poll.ts +70 -70
- package/src/cli/commands/purge-all-memory.ts +85 -85
- package/src/cli/commands/purge-project-memory.ts +83 -83
- package/src/cli/commands/reasoning.ts +132 -132
- package/src/cli/commands/repair.ts +60 -0
- package/src/cli/commands/retention.ts +108 -108
- package/src/cli/commands/serve-shared.ts +118 -118
- package/src/cli/commands/setup.ts +3 -3
- package/src/cli/commands/skills.ts +123 -123
- package/src/cli/commands/task.ts +192 -192
- package/src/cli/commands/transfer.ts +73 -73
- package/src/cli/commands/uninstall-project-artifacts.ts +85 -85
- package/src/cli/index.ts +3 -1
- package/src/cli/tui/ChatView.tsx +234 -234
- package/src/cli/tui/CommandBar.tsx +312 -312
- package/src/cli/tui/ContextRail.tsx +118 -118
- package/src/cli/tui/HeaderBar.tsx +72 -72
- package/src/cli/tui/LogoBanner.tsx +51 -51
- package/src/cli/tui/Panels.tsx +632 -632
- package/src/cli/tui/Sidebar.tsx +179 -179
- package/src/cli/tui/chat-service.ts +742 -742
- package/src/cli/tui/data.ts +547 -547
- package/src/cli/tui/index.ts +41 -41
- package/src/cli/tui/markdown-render.tsx +371 -371
- package/src/cli/tui/theme.ts +178 -178
- package/src/cli/tui/use-mouse.ts +157 -157
- package/src/cli/tui/useNavigation.ts +56 -56
- package/src/cli/update-checker.ts +211 -211
- package/src/cli/version.ts +7 -7
- package/src/cli/workbench.ts +1 -1
- package/src/codegraph/context-pack.ts +5 -1
- package/src/codegraph/lite-provider.ts +5 -1
- package/src/codegraph/project-context.ts +5 -1
- package/src/compact/token-budget.ts +74 -74
- package/src/config/behavior.ts +59 -59
- package/src/dashboard/project-classification.ts +64 -64
- package/src/dashboard/static/index.html +201 -201
- package/src/dashboard/static/style.css +3584 -3584
- package/src/embedding/fastembed-provider.ts +142 -142
- package/src/embedding/transformers-provider.ts +111 -111
- package/src/git/extractor.ts +209 -209
- package/src/git/hooks-path.ts +85 -85
- package/src/git/noise-filter.ts +210 -210
- package/src/hooks/installers/index.ts +4 -4
- package/src/hooks/official-skills.ts +1 -1
- package/src/hooks/pattern-detector.ts +173 -173
- package/src/hooks/rules/memorix-agent-rules.md +2 -2
- package/src/hooks/significance-filter.ts +250 -250
- package/src/llm/memory-manager.ts +328 -328
- package/src/llm/provider.ts +885 -885
- package/src/llm/quality.ts +248 -248
- package/src/memory/attribution-guard.ts +249 -249
- package/src/memory/auto-relations.ts +107 -107
- package/src/memory/consolidation.ts +302 -302
- package/src/memory/disclosure-policy.ts +141 -141
- package/src/memory/entity-extractor.ts +197 -197
- package/src/memory/formation/evaluate.ts +217 -217
- package/src/memory/formation/extract.ts +361 -361
- package/src/memory/formation/index.ts +417 -417
- package/src/memory/formation/resolve.ts +344 -344
- package/src/memory/formation/types.ts +315 -315
- package/src/memory/freshness.ts +122 -122
- package/src/memory/graph.ts +197 -197
- package/src/memory/refs.ts +94 -94
- package/src/memory/retention.ts +433 -433
- package/src/memory/secret-filter.ts +79 -79
- package/src/memory/session.ts +523 -523
- package/src/multimodal/image-loader.ts +143 -143
- package/src/orchestrate/adapters/claude-stream.ts +192 -192
- package/src/orchestrate/adapters/claude.ts +111 -111
- package/src/orchestrate/adapters/codex-stream.ts +134 -134
- package/src/orchestrate/adapters/codex.ts +41 -41
- package/src/orchestrate/adapters/gemini-stream.ts +166 -166
- package/src/orchestrate/adapters/gemini.ts +42 -42
- package/src/orchestrate/adapters/index.ts +73 -73
- package/src/orchestrate/adapters/opencode-stream.ts +143 -143
- package/src/orchestrate/adapters/opencode.ts +47 -47
- package/src/orchestrate/adapters/spawn-helper.ts +286 -286
- package/src/orchestrate/adapters/types.ts +77 -77
- package/src/orchestrate/capability-router.ts +284 -284
- package/src/orchestrate/context-compact.ts +188 -188
- package/src/orchestrate/cost-tracker.ts +219 -219
- package/src/orchestrate/error-recovery.ts +191 -191
- package/src/orchestrate/evidence.ts +140 -140
- package/src/orchestrate/ledger.ts +110 -110
- package/src/orchestrate/memorix-bridge.ts +380 -380
- package/src/orchestrate/output-budget.ts +80 -80
- package/src/orchestrate/permission.ts +152 -152
- package/src/orchestrate/pipeline-trace.ts +131 -131
- package/src/orchestrate/prompt-builder.ts +155 -155
- package/src/orchestrate/ring-buffer.ts +37 -37
- package/src/orchestrate/task-graph.ts +389 -389
- package/src/orchestrate/verify-gate.ts +219 -219
- package/src/orchestrate/worktree.ts +232 -232
- package/src/project/aliases.ts +374 -374
- package/src/project/detector.ts +268 -268
- package/src/rules/adapters/claude-code.ts +99 -99
- package/src/rules/adapters/codex.ts +97 -97
- package/src/rules/adapters/copilot.ts +124 -124
- package/src/rules/adapters/cursor.ts +114 -114
- package/src/rules/adapters/kiro.ts +126 -126
- package/src/rules/adapters/trae.ts +56 -56
- package/src/rules/adapters/windsurf.ts +83 -83
- package/src/rules/syncer.ts +235 -235
- package/src/sdk.ts +327 -327
- package/src/search/intent-detector.ts +289 -289
- package/src/search/query-expansion.ts +52 -52
- package/src/server/formation-timeout.ts +27 -27
- package/src/skills/mini-skills.ts +386 -386
- package/src/store/chat-store.ts +119 -119
- package/src/store/file-lock.ts +100 -100
- package/src/store/graph-store.ts +249 -249
- package/src/store/mini-skill-store.ts +349 -349
- package/src/store/obs-store.ts +255 -255
- package/src/store/persistence-json.ts +212 -212
- package/src/store/persistence.ts +291 -291
- package/src/store/project-affinity.ts +195 -195
- package/src/store/session-store.ts +259 -259
- package/src/store/sqlite-store.ts +339 -339
- package/src/team/event-bus.ts +76 -76
- package/src/team/file-locks.ts +173 -173
- package/src/team/handoff.ts +167 -167
- package/src/team/messages.ts +203 -203
- package/src/team/poll.ts +132 -132
- package/src/team/tasks.ts +211 -211
- package/src/wiki/generator.ts +237 -237
- package/src/wiki/knowledge-graph.ts +334 -334
- package/src/wiki/types.ts +85 -85
- package/src/workspace/mcp-adapters/codex.ts +191 -191
- package/src/workspace/mcp-adapters/copilot.ts +105 -105
- package/src/workspace/mcp-adapters/cursor.ts +53 -53
- package/src/workspace/mcp-adapters/kiro.ts +64 -64
- package/src/workspace/mcp-adapters/opencode.ts +123 -123
- package/src/workspace/mcp-adapters/trae.ts +134 -134
- package/src/workspace/mcp-adapters/windsurf.ts +91 -91
- package/src/workspace/sanitizer.ts +60 -60
- package/src/workspace/workflow-sync.ts +131 -131
package/src/memory/refs.ts
CHANGED
|
@@ -1,94 +1,94 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Typed Memory Reference Protocol (Phase 3a)
|
|
3
|
-
*
|
|
4
|
-
* Provides a formal, unambiguous way to reference memory objects
|
|
5
|
-
* (observations and mini-skills) across internal code and the MCP API.
|
|
6
|
-
*
|
|
7
|
-
* String format:
|
|
8
|
-
* obs:42 — observation #42
|
|
9
|
-
* skill:3 — mini-skill #3
|
|
10
|
-
* obs:42@org/proj — observation #42 in project org/proj
|
|
11
|
-
*
|
|
12
|
-
* Legacy support:
|
|
13
|
-
* 42 (bare number) → obs:42
|
|
14
|
-
* "42" (bare string) → obs:42
|
|
15
|
-
*
|
|
16
|
-
* Display short forms (presentation only):
|
|
17
|
-
* #42 — observation
|
|
18
|
-
* S3 — mini-skill
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
import type { MemoryRef } from '../types.js';
|
|
22
|
-
|
|
23
|
-
// ── Parsing ──────────────────────────────────────────────────────
|
|
24
|
-
|
|
25
|
-
const TYPED_REF_RE = /^(obs|skill):(\d+)(?:@(.+))?$/;
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Parse a typed memory reference from a string or number.
|
|
29
|
-
*
|
|
30
|
-
* Accepts:
|
|
31
|
-
* - "obs:42", "skill:3", "obs:42@org/proj"
|
|
32
|
-
* - 42 (bare number → obs:42)
|
|
33
|
-
* - "42" (bare numeric string → obs:42)
|
|
34
|
-
*
|
|
35
|
-
* Throws on invalid input.
|
|
36
|
-
*/
|
|
37
|
-
export function parseMemoryRef(input: string | number): MemoryRef {
|
|
38
|
-
// Bare number → legacy observation ref
|
|
39
|
-
if (typeof input === 'number') {
|
|
40
|
-
if (!Number.isInteger(input) || input < 0) {
|
|
41
|
-
throw new Error(`Invalid memory ref: ${input} (must be a non-negative integer)`);
|
|
42
|
-
}
|
|
43
|
-
return { kind: 'obs', id: input };
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const trimmed = input.trim();
|
|
47
|
-
|
|
48
|
-
// Bare numeric string → legacy observation ref
|
|
49
|
-
if (/^\d+$/.test(trimmed)) {
|
|
50
|
-
return { kind: 'obs', id: parseInt(trimmed, 10) };
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// Typed ref: obs:42 or skill:3 or obs:42@org/proj
|
|
54
|
-
const match = trimmed.match(TYPED_REF_RE);
|
|
55
|
-
if (!match) {
|
|
56
|
-
throw new Error(
|
|
57
|
-
`Invalid memory ref: "${input}". Expected format: obs:<id>, skill:<id>, obs:<id>@<projectId>, or a bare number.`,
|
|
58
|
-
);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
const kind = match[1] as 'obs' | 'skill';
|
|
62
|
-
const id = parseInt(match[2], 10);
|
|
63
|
-
const projectId = match[3] || undefined;
|
|
64
|
-
|
|
65
|
-
return { kind, id, projectId };
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// ── Serialization ────────────────────────────────────────────────
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Serialize a MemoryRef to its canonical string form.
|
|
72
|
-
*
|
|
73
|
-
* Examples:
|
|
74
|
-
* { kind: 'obs', id: 42 } → "obs:42"
|
|
75
|
-
* { kind: 'skill', id: 3 } → "skill:3"
|
|
76
|
-
* { kind: 'obs', id: 42, projectId: 'o/p' } → "obs:42@o/p"
|
|
77
|
-
*/
|
|
78
|
-
export function serializeMemoryRef(ref: MemoryRef): string {
|
|
79
|
-
const base = `${ref.kind}:${ref.id}`;
|
|
80
|
-
return ref.projectId ? `${base}@${ref.projectId}` : base;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
// ── Display ──────────────────────────────────────────────────────
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Format a MemoryRef for human-readable display.
|
|
87
|
-
*
|
|
88
|
-
* Short forms:
|
|
89
|
-
* obs:42 → "#42"
|
|
90
|
-
* skill:3 → "S3"
|
|
91
|
-
*/
|
|
92
|
-
export function displayRef(ref: MemoryRef): string {
|
|
93
|
-
return ref.kind === 'obs' ? `#${ref.id}` : `S${ref.id}`;
|
|
94
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Typed Memory Reference Protocol (Phase 3a)
|
|
3
|
+
*
|
|
4
|
+
* Provides a formal, unambiguous way to reference memory objects
|
|
5
|
+
* (observations and mini-skills) across internal code and the MCP API.
|
|
6
|
+
*
|
|
7
|
+
* String format:
|
|
8
|
+
* obs:42 — observation #42
|
|
9
|
+
* skill:3 — mini-skill #3
|
|
10
|
+
* obs:42@org/proj — observation #42 in project org/proj
|
|
11
|
+
*
|
|
12
|
+
* Legacy support:
|
|
13
|
+
* 42 (bare number) → obs:42
|
|
14
|
+
* "42" (bare string) → obs:42
|
|
15
|
+
*
|
|
16
|
+
* Display short forms (presentation only):
|
|
17
|
+
* #42 — observation
|
|
18
|
+
* S3 — mini-skill
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import type { MemoryRef } from '../types.js';
|
|
22
|
+
|
|
23
|
+
// ── Parsing ──────────────────────────────────────────────────────
|
|
24
|
+
|
|
25
|
+
const TYPED_REF_RE = /^(obs|skill):(\d+)(?:@(.+))?$/;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Parse a typed memory reference from a string or number.
|
|
29
|
+
*
|
|
30
|
+
* Accepts:
|
|
31
|
+
* - "obs:42", "skill:3", "obs:42@org/proj"
|
|
32
|
+
* - 42 (bare number → obs:42)
|
|
33
|
+
* - "42" (bare numeric string → obs:42)
|
|
34
|
+
*
|
|
35
|
+
* Throws on invalid input.
|
|
36
|
+
*/
|
|
37
|
+
export function parseMemoryRef(input: string | number): MemoryRef {
|
|
38
|
+
// Bare number → legacy observation ref
|
|
39
|
+
if (typeof input === 'number') {
|
|
40
|
+
if (!Number.isInteger(input) || input < 0) {
|
|
41
|
+
throw new Error(`Invalid memory ref: ${input} (must be a non-negative integer)`);
|
|
42
|
+
}
|
|
43
|
+
return { kind: 'obs', id: input };
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const trimmed = input.trim();
|
|
47
|
+
|
|
48
|
+
// Bare numeric string → legacy observation ref
|
|
49
|
+
if (/^\d+$/.test(trimmed)) {
|
|
50
|
+
return { kind: 'obs', id: parseInt(trimmed, 10) };
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Typed ref: obs:42 or skill:3 or obs:42@org/proj
|
|
54
|
+
const match = trimmed.match(TYPED_REF_RE);
|
|
55
|
+
if (!match) {
|
|
56
|
+
throw new Error(
|
|
57
|
+
`Invalid memory ref: "${input}". Expected format: obs:<id>, skill:<id>, obs:<id>@<projectId>, or a bare number.`,
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const kind = match[1] as 'obs' | 'skill';
|
|
62
|
+
const id = parseInt(match[2], 10);
|
|
63
|
+
const projectId = match[3] || undefined;
|
|
64
|
+
|
|
65
|
+
return { kind, id, projectId };
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// ── Serialization ────────────────────────────────────────────────
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Serialize a MemoryRef to its canonical string form.
|
|
72
|
+
*
|
|
73
|
+
* Examples:
|
|
74
|
+
* { kind: 'obs', id: 42 } → "obs:42"
|
|
75
|
+
* { kind: 'skill', id: 3 } → "skill:3"
|
|
76
|
+
* { kind: 'obs', id: 42, projectId: 'o/p' } → "obs:42@o/p"
|
|
77
|
+
*/
|
|
78
|
+
export function serializeMemoryRef(ref: MemoryRef): string {
|
|
79
|
+
const base = `${ref.kind}:${ref.id}`;
|
|
80
|
+
return ref.projectId ? `${base}@${ref.projectId}` : base;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// ── Display ──────────────────────────────────────────────────────
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Format a MemoryRef for human-readable display.
|
|
87
|
+
*
|
|
88
|
+
* Short forms:
|
|
89
|
+
* obs:42 → "#42"
|
|
90
|
+
* skill:3 → "S3"
|
|
91
|
+
*/
|
|
92
|
+
export function displayRef(ref: MemoryRef): string {
|
|
93
|
+
return ref.kind === 'obs' ? `#${ref.id}` : `S${ref.id}`;
|
|
94
|
+
}
|