memorix 1.2.1 → 1.2.2
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 +16 -0
- package/README.md +14 -2
- package/README.zh-CN.md +14 -2
- package/TEAM.md +86 -86
- package/dist/cli/index.js +15407 -13779
- package/dist/cli/index.js.map +1 -1
- package/dist/index.js +1321 -529
- package/dist/index.js.map +1 -1
- package/dist/maintenance-runner.d.ts +1 -1
- package/dist/maintenance-runner.js +8458 -8087
- package/dist/maintenance-runner.js.map +1 -1
- package/dist/memcode-runtime/CHANGELOG.md +16 -0
- package/dist/sdk.d.ts +7 -2
- package/dist/sdk.js +1349 -535
- package/dist/sdk.js.map +1 -1
- package/dist/types.d.ts +49 -1
- package/dist/types.js.map +1 -1
- package/docs/1.2.2-MEMORY-CONTROL-PLANE.md +434 -0
- package/docs/AGENT_OPERATOR_PLAYBOOK.md +4 -0
- package/docs/API_REFERENCE.md +24 -4
- package/docs/DESIGN_DECISIONS.md +357 -357
- package/docs/README.md +1 -1
- package/docs/dev-log/progress.txt +91 -11
- package/package.json +1 -1
- package/plugins/codex/memorix/.codex-plugin/plugin.json +1 -1
- package/src/audit/index.ts +156 -156
- package/src/cli/command-guide.ts +192 -0
- package/src/cli/commands/audit-list.ts +89 -89
- package/src/cli/commands/audit.ts +9 -4
- package/src/cli/commands/background.ts +659 -659
- package/src/cli/commands/cleanup.ts +5 -1
- package/src/cli/commands/codegraph.ts +15 -5
- package/src/cli/commands/context.ts +3 -2
- package/src/cli/commands/doctor.ts +4 -2
- package/src/cli/commands/explain.ts +9 -3
- package/src/cli/commands/formation.ts +48 -48
- package/src/cli/commands/git-hook-install.ts +111 -111
- package/src/cli/commands/handoff.ts +75 -61
- package/src/cli/commands/hooks-status.ts +63 -63
- package/src/cli/commands/identity.ts +116 -0
- package/src/cli/commands/ingest-commit.ts +153 -153
- package/src/cli/commands/ingest-image.ts +71 -69
- 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 +93 -92
- package/src/cli/commands/memory.ts +58 -21
- package/src/cli/commands/message.ts +123 -118
- package/src/cli/commands/operator-shared.ts +98 -3
- package/src/cli/commands/poll.ts +74 -64
- 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 +135 -121
- package/src/cli/commands/retention.ts +9 -4
- package/src/cli/commands/serve-http.ts +8 -2
- package/src/cli/commands/serve-shared.ts +118 -118
- package/src/cli/commands/session.ts +29 -3
- package/src/cli/commands/skills.ts +124 -119
- package/src/cli/commands/status.ts +4 -3
- package/src/cli/commands/task.ts +193 -184
- package/src/cli/commands/team.ts +14 -10
- package/src/cli/commands/transfer.ts +108 -55
- package/src/cli/commands/uninstall-project-artifacts.ts +85 -85
- package/src/cli/identity.ts +89 -0
- package/src/cli/index.ts +96 -19
- package/src/cli/invocation.ts +115 -0
- 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/Sidebar.tsx +179 -179
- package/src/cli/tui/chat-service.ts +41 -18
- package/src/cli/tui/data.ts +23 -44
- package/src/cli/tui/index.ts +41 -41
- package/src/cli/tui/markdown-render.tsx +371 -371
- package/src/cli/tui/operator-context.ts +60 -0
- package/src/cli/tui/use-mouse.ts +157 -157
- package/src/cli/tui/useNavigation.ts +56 -56
- package/src/cli/tui/views/MemoryView.tsx +10 -8
- 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/auto-context.ts +31 -2
- package/src/codegraph/context-pack.ts +1 -0
- package/src/codegraph/project-context.ts +2 -0
- package/src/compact/engine.ts +26 -10
- package/src/compact/index-format.ts +25 -2
- package/src/compact/token-budget.ts +74 -74
- package/src/dashboard/project-classification.ts +64 -64
- package/src/dashboard/server.ts +46 -9
- 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/hooks/admission.ts +117 -0
- package/src/hooks/handler.ts +98 -91
- package/src/hooks/pattern-detector.ts +173 -173
- package/src/hooks/significance-filter.ts +250 -250
- package/src/knowledge/context-assembly.ts +97 -0
- package/src/knowledge/workset.ts +179 -10
- 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/admission.ts +57 -0
- package/src/memory/attribution-guard.ts +249 -249
- package/src/memory/consolidation.ts +13 -2
- package/src/memory/disclosure-policy.ts +140 -135
- package/src/memory/entity-extractor.ts +197 -197
- package/src/memory/export-import.ts +11 -3
- 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-context.ts +8 -2
- package/src/memory/graph.ts +197 -197
- package/src/memory/observations.ts +162 -4
- package/src/memory/quality-audit.ts +2 -0
- package/src/memory/refs.ts +94 -94
- package/src/memory/retention.ts +22 -2
- package/src/memory/secret-filter.ts +79 -79
- package/src/memory/session.ts +5 -2
- package/src/memory/visibility.ts +80 -0
- 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 +378 -340
- 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/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/runtime/control-plane-maintenance.ts +1 -0
- package/src/runtime/isolated-maintenance.ts +1 -0
- package/src/runtime/lifecycle.ts +18 -0
- package/src/runtime/maintenance-jobs.ts +1 -0
- package/src/runtime/maintenance-runner.ts +2 -0
- package/src/runtime/project-maintenance.ts +89 -0
- package/src/sdk.ts +334 -304
- 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/server.ts +260 -81
- package/src/skills/mini-skills.ts +386 -386
- package/src/store/chat-store.ts +119 -119
- package/src/store/graph-store.ts +249 -249
- package/src/store/mini-skill-store.ts +349 -349
- package/src/store/orama-store.ts +61 -6
- 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/sqlite-db.ts +23 -1
- package/src/store/sqlite-store.ts +12 -2
- package/src/team/event-bus.ts +76 -76
- package/src/team/file-locks.ts +173 -173
- package/src/team/handoff.ts +168 -161
- package/src/team/messages.ts +203 -203
- package/src/team/poll.ts +132 -132
- package/src/team/tasks.ts +211 -211
- package/src/types.ts +51 -0
- package/src/wiki/generator.ts +2 -0
- 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/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.2.2] - 2026-07-25
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- **Direct CLI control plane** -- Added a consistent terminal surface for memory, context, Code State, knowledge, coordination, audit, and transfer work. `--cwd` selects the Git project from any shell, `memorix workbench` explicitly opens the interactive terminal UI, and every action group now has task-oriented help.
|
|
9
|
+
- **Explicit local CLI identity** -- Added `memorix identity status|join|use|clear`. A user can deliberately activate one project coordination identity for personal/team memory and task, message, lock, handoff, and poll commands without needing an MCP connection.
|
|
10
|
+
- **Automation-friendly transfer** -- Memory exports can write directly to a file, and imports accept `--file` or `--stdin` as well as existing inline JSON.
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- **One visibility reader across terminal surfaces** -- CLI commands, Workbench search, recents, health, graph, knowledge, and chat now resolve the same project/actor reader. An unbound terminal remains project-scoped by default.
|
|
14
|
+
- **CLI ergonomics** -- Root `search`, `remember`, and `recent` aliases now use the canonical memory commands; kebab-case flags are accepted alongside the existing camelCase forms.
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
- **Private evidence cannot become public indirectly** -- Personal and team observations are rejected when promoting shared skills or generating project skills.
|
|
18
|
+
- **TUI visibility mismatch** -- The interactive terminal UI no longer falls back to an unbound reader after an explicit local identity has been activated.
|
|
19
|
+
- **Transfer visibility bypass** -- CLI and MCP exports now include only observations readable by the current caller, rather than exporting personal/team records from the same project by default.
|
|
20
|
+
|
|
5
21
|
## [1.2.1] - 2026-07-19
|
|
6
22
|
|
|
7
23
|
### Added
|
package/README.md
CHANGED
|
@@ -317,14 +317,25 @@ npm uninstall -g memorix
|
|
|
317
317
|
### Work from the CLI
|
|
318
318
|
|
|
319
319
|
```bash
|
|
320
|
-
memorix context --task "continue release blocker"
|
|
320
|
+
memorix --cwd /path/to/repo context --task "continue release blocker"
|
|
321
321
|
memorix memory search --query "release blocker"
|
|
322
|
+
memorix memory --help
|
|
323
|
+
|
|
324
|
+
# Optional: activate one local agent identity for personal/team records and coordination.
|
|
325
|
+
memorix identity join --agent-type codex --name codex-main
|
|
326
|
+
memorix memory store --text "private investigation note" --visibility personal
|
|
327
|
+
memorix task create --description "verify the release package"
|
|
328
|
+
|
|
329
|
+
memorix transfer export --format json --out ./.memorix-export.json
|
|
330
|
+
memorix transfer import --file ./.memorix-export.json
|
|
322
331
|
memorix reasoning search --query "why sqlite"
|
|
323
332
|
memorix git-hook --force
|
|
324
333
|
memorix ingest log --count 20
|
|
325
|
-
memorix
|
|
334
|
+
memorix workbench
|
|
326
335
|
```
|
|
327
336
|
|
|
337
|
+
The CLI is direct and does not depend on an MCP session. It binds to the current Git project, or to the project supplied with `--cwd`. Without an active identity it reads, writes, and exports project-visible memory only. Use `memorix identity join` or `memorix identity use --agent-id <id>` only when you intentionally need personal/team memory or coordinated task actions; `memorix identity clear` returns the terminal to project scope. `--as <active-agent-id>` is the one-command alternative for scripts. Both camelCase and kebab-case flags are accepted.
|
|
338
|
+
|
|
328
339
|
### Use the bundled terminal agent
|
|
329
340
|
|
|
330
341
|
```bash
|
|
@@ -358,6 +369,7 @@ Search is project-scoped by default. `scope="global"` searches across projects.
|
|
|
358
369
|
| Run shared HTTP MCP plus dashboard | `memorix background start` |
|
|
359
370
|
| Debug HTTP MCP in the foreground | `memorix serve-http --port 3211` |
|
|
360
371
|
| Inspect or manage memory directly | `memorix memory`, `memorix reasoning`, `memorix session`, `memorix ingest` |
|
|
372
|
+
| Use the interactive terminal memory control plane | `memorix workbench` |
|
|
361
373
|
| Use the bundled terminal agent | `memorix` or `memcode` |
|
|
362
374
|
| Run orchestrated subagent work | `memorix orchestrate --goal "..."` |
|
|
363
375
|
|
package/README.zh-CN.md
CHANGED
|
@@ -317,14 +317,25 @@ npm uninstall -g memorix
|
|
|
317
317
|
### 从 CLI 管理记忆
|
|
318
318
|
|
|
319
319
|
```bash
|
|
320
|
-
memorix context --task "
|
|
320
|
+
memorix --cwd /path/to/repo context --task "继续处理发布阻塞问题"
|
|
321
321
|
memorix memory search --query "release blocker"
|
|
322
|
+
memorix memory --help
|
|
323
|
+
|
|
324
|
+
# 可选:只在需要个人/团队记忆或协同时激活本地身份。
|
|
325
|
+
memorix identity join --agent-type codex --name codex-main
|
|
326
|
+
memorix memory store --text "个人排查笔记" --visibility personal
|
|
327
|
+
memorix task create --description "验证发布包"
|
|
328
|
+
|
|
329
|
+
memorix transfer export --format json --out ./.memorix-export.json
|
|
330
|
+
memorix transfer import --file ./.memorix-export.json
|
|
322
331
|
memorix reasoning search --query "why sqlite"
|
|
323
332
|
memorix git-hook --force
|
|
324
333
|
memorix ingest log --count 20
|
|
325
|
-
memorix
|
|
334
|
+
memorix workbench
|
|
326
335
|
```
|
|
327
336
|
|
|
337
|
+
CLI 是直接入口,不依赖 MCP 会话。它默认绑定当前 Git 项目,也可以用 `--cwd` 指定项目。没有激活身份时,只会读写和导出项目公开记忆;只有明确需要个人/团队记忆或协同任务时,才运行 `memorix identity join` 或 `memorix identity use --agent-id <id>`。`memorix identity clear` 会回到项目公开范围;脚本可用一次性的 `--as <active-agent-id>`。已有 camelCase 参数仍兼容,kebab-case 也可直接使用。
|
|
338
|
+
|
|
328
339
|
### 使用内置终端 Agent
|
|
329
340
|
|
|
330
341
|
```bash
|
|
@@ -358,6 +369,7 @@ memcode
|
|
|
358
369
|
| 启动共享 HTTP MCP 和 Dashboard | `memorix background start` |
|
|
359
370
|
| 前台调试 HTTP MCP | `memorix serve-http --port 3211` |
|
|
360
371
|
| 直接检查或管理记忆 | `memorix memory`、`memorix reasoning`、`memorix session`、`memorix ingest` |
|
|
372
|
+
| 使用交互式终端记忆控制台 | `memorix workbench` |
|
|
361
373
|
| 使用内置终端 Agent | `memorix` 或 `memcode` |
|
|
362
374
|
| 运行编排式 subagent 工作 | `memorix orchestrate --goal "..."` |
|
|
363
375
|
|
package/TEAM.md
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
# Memorix Team Protocol
|
|
2
|
-
|
|
1
|
+
# Memorix Team Protocol
|
|
2
|
+
|
|
3
3
|
Rules for project-scoped autonomous-agent coordination via Memorix team tools. The Team page is an **Agent Team status surface** — it shows explicitly joined autonomous agents, open tasks, locks, messages, handoffs, and what needs attention. It is NOT an organization backend, staffing admin tool, or automatic chat room between separate IDE windows.
|
|
4
4
|
|
|
5
5
|
Only agents that are intentionally participating in team/task/message/lock workflows need this protocol. Memory-only sessions should stay lightweight and do not need a team identity.
|
|
6
6
|
|
|
7
7
|
For real autonomous multi-agent development, prefer `memorix orchestrate`: it launches and supervises CLI agent workers through Memorix tasks, context, verification, and fix loops. The team tools support that workflow; they should not be interpreted as proof that unrelated IDE conversation windows can autonomously contact each other.
|
|
8
|
-
|
|
9
|
-
There are 4 team tools, each with an `action` parameter:
|
|
10
|
-
|
|
11
|
-
- `team_manage` — action: join / leave / status
|
|
12
|
-
- `team_file_lock` — action: lock / unlock / status
|
|
13
|
-
- `team_task` — action: create / claim / complete / list
|
|
14
|
-
- `team_message` — action: send / broadcast / inbox
|
|
15
|
-
|
|
8
|
+
|
|
9
|
+
There are 4 team tools, each with an `action` parameter:
|
|
10
|
+
|
|
11
|
+
- `team_manage` — action: join / leave / status
|
|
12
|
+
- `team_file_lock` — action: lock / unlock / status
|
|
13
|
+
- `team_task` — action: create / claim / complete / list
|
|
14
|
+
- `team_message` — action: send / broadcast / inbox
|
|
15
|
+
|
|
16
16
|
## RULE 1: Start Lightweight, Join Team Explicitly
|
|
17
17
|
|
|
18
18
|
At the **beginning of every memory session**, before project-scoped memory work:
|
|
@@ -25,82 +25,82 @@ At the **beginning of every memory session**, before project-scoped memory work:
|
|
|
25
25
|
4. Store the returned **agent ID** only after an explicit join — you will need it for subsequent team operations.
|
|
26
26
|
5. Call `memorix_poll` with your agent ID to see current autonomous agents, check available tasks, and read unread messages.
|
|
27
27
|
6. If you need a custom role or capabilities, use explicit `team_manage(join)` so the role overrides the default mapping cleanly.
|
|
28
|
-
|
|
29
|
-
## RULE 2: Lock Before Edit
|
|
30
|
-
|
|
31
|
-
Before modifying any file that another agent might also be working on:
|
|
32
|
-
|
|
33
|
-
1. Call `team_file_lock` with `action: "status"` and the file path to check if it is already locked.
|
|
34
|
-
2. If unlocked, call `team_file_lock` with `action: "lock"`, the file path, and your agent ID.
|
|
35
|
-
3. If locked by another agent, **do not edit that file**. Either:
|
|
36
|
-
- Work on a different file.
|
|
37
|
-
- Send a `request` message to the lock owner asking them to release it.
|
|
38
|
-
- Wait and re-check later.
|
|
39
|
-
4. When you are done editing, call `team_file_lock` with `action: "unlock"` to release the lock.
|
|
40
|
-
|
|
41
|
-
**Never edit a file locked by another agent.** Lock violations cause merge conflicts and data loss.
|
|
42
|
-
|
|
43
|
-
Locks auto-expire after 10 minutes. If you hold a lock for extended work, re-lock periodically to refresh the TTL.
|
|
44
|
-
|
|
45
|
-
## RULE 3: Use Tasks for Work Coordination
|
|
46
|
-
|
|
47
|
-
When the user assigns work that involves multiple agents or multiple steps:
|
|
48
|
-
|
|
49
|
-
1. Call `team_task` with `action: "create"` to break the work into discrete tasks with clear descriptions.
|
|
50
|
-
2. Use `deps` to declare dependencies between tasks (a task cannot be claimed until its dependencies are completed).
|
|
51
|
-
3. Call `team_task` with `action: "claim"` to assign a task to yourself before starting work on it.
|
|
52
|
-
4. Call `team_task` with `action: "complete"` and a `result` summary when the task is done.
|
|
53
|
-
5. Call `team_task` with `action: "list"` to see overall progress and find available work.
|
|
54
|
-
|
|
55
|
-
Rules:
|
|
56
|
-
- Only claim tasks whose dependencies are all completed.
|
|
57
|
-
- Only one agent may claim a given task.
|
|
58
|
-
- If you cannot complete a claimed task, leave the team so the task returns to pending and another agent can pick it up.
|
|
59
|
-
|
|
60
|
-
## RULE 4: Communication Protocol
|
|
61
|
-
|
|
62
|
-
Use `team_message` with `action: "send"` for direct messages and `action: "broadcast"` for announcements. Message types and their intended use:
|
|
63
|
-
|
|
64
|
-
| Type | Use |
|
|
65
|
-
|------|-----|
|
|
66
|
-
| `request` | Ask another agent to do something, release a lock, or provide information. |
|
|
67
|
-
| `response` | Reply to a prior request. |
|
|
68
|
-
| `info` | Share context: discoveries, status updates, warnings about tricky code. |
|
|
69
|
-
| `announcement` | Broadcast to all agents: major state changes, deployment events, breaking changes. |
|
|
70
|
-
| `contract` | Propose or agree on a division of work. Both agents should acknowledge. |
|
|
71
|
-
| `error` | Report a blocking issue that requires another agent's attention. |
|
|
72
|
-
|
|
73
|
-
Rules:
|
|
74
|
-
- `action: "send"` requires the full UUID of the target agent. Get it from `team_manage` with `action: "status"`.
|
|
75
|
-
- Check your inbox (`action: "inbox"`) at least once before starting new work and once before ending a session.
|
|
76
|
-
- Keep message content under 10KB. Be concise and actionable.
|
|
77
|
-
|
|
78
|
-
## RULE 5: Leave on Session End
|
|
79
|
-
|
|
80
|
-
When the session is ending:
|
|
81
|
-
|
|
82
|
-
1. Call `team_file_lock` with `action: "unlock"` for every file you have locked, or they will remain locked until TTL expiry (10 min).
|
|
83
|
-
2. If you have in-progress tasks you cannot finish, leave them — leaving releases your tasks back to pending.
|
|
84
|
-
3. Call `team_manage` with `action: "leave"` and your agent ID. This marks you inactive, releases all your locks, and clears your inbox.
|
|
85
|
-
|
|
86
|
-
## RULE 6: Conflict Prevention
|
|
87
|
-
|
|
88
|
-
- **Check before acting.** Always check team status and file lock status before starting work to understand the current state.
|
|
89
|
-
- **Communicate before diverging.** If you plan to refactor shared code, broadcast an `announcement` first so other agents can save their work.
|
|
90
|
-
- **Respect lock ownership.** The lock holder has exclusive write access. No exceptions.
|
|
91
|
-
- **Prefer small, scoped changes.** Large cross-cutting changes increase conflict risk. Coordinate via tasks and messages if a change touches files other agents are working on.
|
|
92
|
-
- **Do not duplicate work.** Check the task list before creating new tasks. If a similar task exists, claim it instead of creating a duplicate.
|
|
93
|
-
|
|
94
|
-
## Summary of Required Calls
|
|
95
|
-
|
|
96
|
-
| When | Tool Call |
|
|
97
|
-
|------|-----------|
|
|
28
|
+
|
|
29
|
+
## RULE 2: Lock Before Edit
|
|
30
|
+
|
|
31
|
+
Before modifying any file that another agent might also be working on:
|
|
32
|
+
|
|
33
|
+
1. Call `team_file_lock` with `action: "status"` and the file path to check if it is already locked.
|
|
34
|
+
2. If unlocked, call `team_file_lock` with `action: "lock"`, the file path, and your agent ID.
|
|
35
|
+
3. If locked by another agent, **do not edit that file**. Either:
|
|
36
|
+
- Work on a different file.
|
|
37
|
+
- Send a `request` message to the lock owner asking them to release it.
|
|
38
|
+
- Wait and re-check later.
|
|
39
|
+
4. When you are done editing, call `team_file_lock` with `action: "unlock"` to release the lock.
|
|
40
|
+
|
|
41
|
+
**Never edit a file locked by another agent.** Lock violations cause merge conflicts and data loss.
|
|
42
|
+
|
|
43
|
+
Locks auto-expire after 10 minutes. If you hold a lock for extended work, re-lock periodically to refresh the TTL.
|
|
44
|
+
|
|
45
|
+
## RULE 3: Use Tasks for Work Coordination
|
|
46
|
+
|
|
47
|
+
When the user assigns work that involves multiple agents or multiple steps:
|
|
48
|
+
|
|
49
|
+
1. Call `team_task` with `action: "create"` to break the work into discrete tasks with clear descriptions.
|
|
50
|
+
2. Use `deps` to declare dependencies between tasks (a task cannot be claimed until its dependencies are completed).
|
|
51
|
+
3. Call `team_task` with `action: "claim"` to assign a task to yourself before starting work on it.
|
|
52
|
+
4. Call `team_task` with `action: "complete"` and a `result` summary when the task is done.
|
|
53
|
+
5. Call `team_task` with `action: "list"` to see overall progress and find available work.
|
|
54
|
+
|
|
55
|
+
Rules:
|
|
56
|
+
- Only claim tasks whose dependencies are all completed.
|
|
57
|
+
- Only one agent may claim a given task.
|
|
58
|
+
- If you cannot complete a claimed task, leave the team so the task returns to pending and another agent can pick it up.
|
|
59
|
+
|
|
60
|
+
## RULE 4: Communication Protocol
|
|
61
|
+
|
|
62
|
+
Use `team_message` with `action: "send"` for direct messages and `action: "broadcast"` for announcements. Message types and their intended use:
|
|
63
|
+
|
|
64
|
+
| Type | Use |
|
|
65
|
+
|------|-----|
|
|
66
|
+
| `request` | Ask another agent to do something, release a lock, or provide information. |
|
|
67
|
+
| `response` | Reply to a prior request. |
|
|
68
|
+
| `info` | Share context: discoveries, status updates, warnings about tricky code. |
|
|
69
|
+
| `announcement` | Broadcast to all agents: major state changes, deployment events, breaking changes. |
|
|
70
|
+
| `contract` | Propose or agree on a division of work. Both agents should acknowledge. |
|
|
71
|
+
| `error` | Report a blocking issue that requires another agent's attention. |
|
|
72
|
+
|
|
73
|
+
Rules:
|
|
74
|
+
- `action: "send"` requires the full UUID of the target agent. Get it from `team_manage` with `action: "status"`.
|
|
75
|
+
- Check your inbox (`action: "inbox"`) at least once before starting new work and once before ending a session.
|
|
76
|
+
- Keep message content under 10KB. Be concise and actionable.
|
|
77
|
+
|
|
78
|
+
## RULE 5: Leave on Session End
|
|
79
|
+
|
|
80
|
+
When the session is ending:
|
|
81
|
+
|
|
82
|
+
1. Call `team_file_lock` with `action: "unlock"` for every file you have locked, or they will remain locked until TTL expiry (10 min).
|
|
83
|
+
2. If you have in-progress tasks you cannot finish, leave them — leaving releases your tasks back to pending.
|
|
84
|
+
3. Call `team_manage` with `action: "leave"` and your agent ID. This marks you inactive, releases all your locks, and clears your inbox.
|
|
85
|
+
|
|
86
|
+
## RULE 6: Conflict Prevention
|
|
87
|
+
|
|
88
|
+
- **Check before acting.** Always check team status and file lock status before starting work to understand the current state.
|
|
89
|
+
- **Communicate before diverging.** If you plan to refactor shared code, broadcast an `announcement` first so other agents can save their work.
|
|
90
|
+
- **Respect lock ownership.** The lock holder has exclusive write access. No exceptions.
|
|
91
|
+
- **Prefer small, scoped changes.** Large cross-cutting changes increase conflict risk. Coordinate via tasks and messages if a change touches files other agents are working on.
|
|
92
|
+
- **Do not duplicate work.** Check the task list before creating new tasks. If a similar task exists, claim it instead of creating a duplicate.
|
|
93
|
+
|
|
94
|
+
## Summary of Required Calls
|
|
95
|
+
|
|
96
|
+
| When | Tool Call |
|
|
97
|
+
|------|-----------|
|
|
98
98
|
| Session start | `memorix_session_start` (lightweight) |
|
|
99
99
|
| Join Agent Team | `memorix_session_start(joinTeam=true)` or `team_manage(join)` |
|
|
100
100
|
| After joining | `memorix_poll` (check status + inbox) |
|
|
101
|
-
| Before editing a shared file | `team_file_lock(status)`, `team_file_lock(lock)` |
|
|
102
|
-
| After editing | `team_file_lock(unlock)` |
|
|
103
|
-
| Starting a unit of work | `team_task(claim)` or `team_task(create)` + `team_task(claim)` |
|
|
104
|
-
| Finishing a unit of work | `team_task(complete)` |
|
|
105
|
-
| Need to coordinate | `team_message(send)` or `team_message(broadcast)` |
|
|
106
|
-
| Session end | `team_file_lock(unlock)` (all), `team_manage(leave)` |
|
|
101
|
+
| Before editing a shared file | `team_file_lock(status)`, `team_file_lock(lock)` |
|
|
102
|
+
| After editing | `team_file_lock(unlock)` |
|
|
103
|
+
| Starting a unit of work | `team_task(claim)` or `team_task(create)` + `team_task(claim)` |
|
|
104
|
+
| Finishing a unit of work | `team_task(complete)` |
|
|
105
|
+
| Need to coordinate | `team_message(send)` or `team_message(broadcast)` |
|
|
106
|
+
| Session end | `team_file_lock(unlock)` (all), `team_manage(leave)` |
|