@aopslabs/aops 0.3.9 → 0.3.11

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 (67) hide show
  1. package/agent-assets-release/agent-assets/core/{0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706 → 070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5}/files/SKILL.md +3 -4
  2. package/agent-assets-release/agent-assets/core/{0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706 → 070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5}/files/references/agentspace/SKILL.md +4 -4
  3. package/agent-assets-release/agent-assets/core/070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5/files/references/chatv3/SKILL.md +59 -0
  4. package/agent-assets-release/agent-assets/core/{0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706 → 070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5}/files/references/collaborative-work/SKILL.md +10 -13
  5. package/agent-assets-release/agent-assets/core/{0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706 → 070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5}/files/references/discuss/SKILL.md +2 -2
  6. package/agent-assets-release/agent-assets/core/{0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706 → 070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5}/files/references/docman/SKILL.md +6 -0
  7. package/agent-assets-release/agent-assets/core/{0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706 → 070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5}/files/references/projectman/SKILL.md +6 -0
  8. package/agent-assets-release/agent-assets/core/{0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706 → 070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5}/files/references/working-disciplines/SKILL.md +1 -1
  9. package/agent-assets-release/agent-assets/core/070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5/files/user-guides/agentspace.md +198 -0
  10. package/agent-assets-release/agent-assets/core/{0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706 → 070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5}/files/user-guides/aops-cli.md +25 -24
  11. package/agent-assets-release/agent-assets/core/070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5/files/user-guides/chatv3.md +98 -0
  12. package/agent-assets-release/agent-assets/core/{0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706 → 070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5}/files/user-guides/docman.md +16 -0
  13. package/agent-assets-release/agent-assets/core/{0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706 → 070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5}/files/user-guides/projectman.md +7 -0
  14. package/agent-assets-release/agent-assets/core/{0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706 → 070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5}/files/user-guides/working-disciplines.md +2 -2
  15. package/agent-assets-release/agent-assets/core/{0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706 → 070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5}/manifest.json +31 -36
  16. package/agent-assets-release/agent-assets/inventory.json +5 -5
  17. package/agent-assets-release/agent-assets/projection.json +1 -1
  18. package/agent-assets-release/agent-assets-release.json +64 -69
  19. package/agent-assets-release/agent-assets-release.sigstore.json +25 -26
  20. package/assets/agent-assets/core/SKILL.md +3 -4
  21. package/assets/agent-assets/core/references/agentspace/SKILL.md +4 -4
  22. package/assets/agent-assets/core/references/chatv3/SKILL.md +36 -26
  23. package/assets/agent-assets/core/references/collaborative-work/SKILL.md +10 -13
  24. package/assets/agent-assets/core/references/discuss/SKILL.md +2 -2
  25. package/assets/agent-assets/core/references/docman/SKILL.md +6 -0
  26. package/assets/agent-assets/core/references/projectman/SKILL.md +6 -0
  27. package/assets/agent-assets/core/references/working-disciplines/SKILL.md +1 -1
  28. package/assets/agent-assets/core/user-guides/agentspace.md +135 -1035
  29. package/assets/agent-assets/core/user-guides/aops-cli.md +25 -24
  30. package/assets/agent-assets/core/user-guides/chatv3.md +82 -97
  31. package/assets/agent-assets/core/user-guides/docman.md +16 -0
  32. package/assets/agent-assets/core/user-guides/projectman.md +7 -0
  33. package/assets/agent-assets/core/user-guides/working-disciplines.md +2 -2
  34. package/dist/commands/chatv3.js +81 -46
  35. package/dist/commands/doc.js +16 -8
  36. package/dist/commands/pm/index.js +2 -5
  37. package/dist/commands/pm/projectman.js +36 -95
  38. package/dist/lib/agent-assets/native-fs.js +2 -2
  39. package/dist/main.js +2 -3
  40. package/dist/seeds/agents-md.js +1 -1
  41. package/dist/utils/chatv3-cursor.js +41 -0
  42. package/dist/utils/chatv3-session-store.js +166 -36
  43. package/launchers/aops-cockpit.sh +0 -0
  44. package/launchers/aops-server.sh +0 -0
  45. package/native/bin/darwin-arm64/aops-agent-assets-fs +0 -0
  46. package/native/bin/darwin-x64/aops-agent-assets-fs +0 -0
  47. package/native/bin/linux-arm64/aops-agent-assets-fs +0 -0
  48. package/native/bin/linux-x64/aops-agent-assets-fs +0 -0
  49. package/native/bin/win32-x64/aops-agent-assets-fs.exe +0 -0
  50. package/native/manifest.json +6 -6
  51. package/native/qualifications/win32-x64.json +1 -1
  52. package/native/tui/darwin-arm64/aops-tui +0 -0
  53. package/native/tui/win32-x64/aops-tui.exe +0 -0
  54. package/package.json +6 -4
  55. package/agent-assets-release/agent-assets/core/0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706/files/references/chatv3/SKILL.md +0 -49
  56. package/agent-assets-release/agent-assets/core/0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706/files/references/hosted-chat/SKILL.md +0 -64
  57. package/agent-assets-release/agent-assets/core/0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706/files/user-guides/agentspace.md +0 -1098
  58. package/agent-assets-release/agent-assets/core/0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706/files/user-guides/chatv3.md +0 -113
  59. package/assets/agent-assets/core/references/hosted-chat/SKILL.md +0 -64
  60. package/dist/commands/chat.js +0 -1363
  61. /package/agent-assets-release/agent-assets/core/{0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706 → 070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5}/files/references/aops-cli-core/SKILL.md +0 -0
  62. /package/agent-assets-release/agent-assets/core/{0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706 → 070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5}/files/references/mission/SKILL.md +0 -0
  63. /package/agent-assets-release/agent-assets/core/{0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706 → 070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5}/files/references/sys/SKILL.md +0 -0
  64. /package/agent-assets-release/agent-assets/core/{0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706 → 070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5}/files/references/view/SKILL.md +0 -0
  65. /package/agent-assets-release/agent-assets/core/{0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706 → 070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5}/files/user-guides/agent-assets.md +0 -0
  66. /package/agent-assets-release/agent-assets/core/{0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706 → 070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5}/files/user-guides/aops-system.md +0 -0
  67. /package/agent-assets-release/agent-assets/core/{0ffc854a8e32500f3d82c10a1e1ee6376d57e616201a323638f0f9caf8fb2706 → 070b0d3126c645890845791b67157fdd9f43a482fda66583e84fb159b30689a5}/files/user-guides/sys.md +0 -0
@@ -24,16 +24,15 @@ this gateway loaded.
24
24
  | durable session intent and resume packs | `references/mission/SKILL.md` |
25
25
  | boards, tasks, sprints/plans, issues, feedback, reviews, handoffs | `references/projectman/SKILL.md` |
26
26
  | versioned documents, sections, links, search, answer, mirrors | `references/docman/SKILL.md` |
27
- | hosted coordination rooms, messages, inbox/listen/catchup | `references/hosted-chat/SKILL.md` |
27
+ | encrypted coordination rooms, foreground listen, messages, membership | `references/chatv3/SKILL.md` |
28
28
  | structured multi-agent decision/consensus topics | `references/discuss/SKILL.md` |
29
- | encrypted ChatV3 product channels, invites, sessions, membership | `references/chatv3/SKILL.md` |
30
29
  | counters, countries, event store, rate limits | `references/sys/SKILL.md` |
31
30
  | choose or explain a working method | `references/working-disciplines/SKILL.md` |
32
31
  | run the full optional collaborative session playbook | `references/collaborative-work/SKILL.md` |
33
32
  | another installed/custom domain | `aops agent tools --domain <domain> --summary --json` |
34
33
 
35
- `aops chat` is hosted coordination. `aops chatv3` is the encrypted product
36
- channel surface. Do not merge those models. Fileman, Tasker/Runner, and the
34
+ `aops chat` is the canonical ChatV3 surface; `aops chatv3` is a compatibility
35
+ alias for the same command tree. Fileman, Tasker/Runner, and the
37
36
  interactive loop are not part of the default Community capability closure;
38
37
  discover them only if the connected server actually advertises them.
39
38
 
@@ -7,7 +7,7 @@ description: Use for durable memory, synopsis, reusable prompts/skills/resources
7
7
 
8
8
  Agentspace owns durable agent/operator context and reusable hosted assets.
9
9
  Project execution belongs to Projectman; versioned documents belong to Docman.
10
- Hosted coordination and structured decisions have their own references.
10
+ ChatV3 coordination and structured decisions have their own references.
11
11
 
12
12
  Read only the needed section of `../../user-guides/agentspace.md`. Exact flags
13
13
  come from live nested help.
@@ -53,7 +53,7 @@ context. Artifact records are metadata/pointers, not a large binary store.
53
53
 
54
54
  For durable session intent and resume packs, load `../mission/SKILL.md` rather
55
55
  than the full Agentspace guide. For rooms/messages load
56
- `../hosted-chat/SKILL.md`; for structured consensus load
56
+ `../chatv3/SKILL.md`; for structured consensus load
57
57
  `../discuss/SKILL.md`.
58
58
 
59
59
  ## Raw discovery fallback
@@ -72,7 +72,7 @@ supported. Read back the exact record after mutation.
72
72
 
73
73
  - Planning, tasks, sprints, issues, feedback, reviews: Projectman.
74
74
  - Document graphs, page content, publish/search/answer: Docman.
75
- - Hosted coordination/wake: `aops chat`.
75
+ - ChatV3 coordination/wake: `aops chat`.
76
76
  - Structured decision transcript: `aops discuss`.
77
- - Encrypted product channel: `aops chatv3`.
77
+ - `aops chatv3`: compatibility alias for `aops chat`.
78
78
  - Repo `.aops/**`: derived cache, never the canonical authoring source.
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: aops-cli-chat
3
+ description: Use for ChatV3 encrypted channels, invitations, agent-owned local sessions, membership, presence, bindings, messages, cursors, and foreground listening through aops chat.
4
+ ---
5
+
6
+ # AOPS Chat (ChatV3)
7
+
8
+ `aops chat` is the canonical encrypted ChatV3 channel/room surface for agent
9
+ coordination and product-room work. `aops chatv3` is a compatibility alias for
10
+ the same command tree; it is not a second messaging system.
11
+
12
+ Read only the relevant section of `../../user-guides/chatv3.md`. Exact flags
13
+ come from nested help; direct payloads come from live schema.
14
+
15
+ ## Common entry points
16
+
17
+ ```bash
18
+ aops chat --help
19
+ aops chat channel --help
20
+ aops chat session --help
21
+ aops chat member --help
22
+ aops chat send --help
23
+ aops chat read --help
24
+ aops chat listen --help
25
+ ```
26
+
27
+ Typical foreground coordination:
28
+
29
+ ```bash
30
+ aops chat session list --json
31
+ aops chat listen --session <id> --room general --after-seq <n> --timeout-sec 60 --json
32
+ aops chat send --session <id> --room general "<message>" --json
33
+ aops chat read --session <id> --room general --after-seq <n> --mark-delivered --mark-read --json
34
+ ```
35
+
36
+ Keep foreground listening active while work remains. A listen timeout means
37
+ only “no message in this bounded interval”; it does not end the task.
38
+
39
+ Local sessions are isolated by detected agent owner (for example a Codex
40
+ thread), or by `AOPS_CHATV3_SESSION_OWNER` / `--session-owner`. Session ids,
41
+ member tokens, and room keys must never be copied between agent owners or
42
+ pasted into chat, logs, source, or shell history. Legacy shared stores are
43
+ claimed once and migrated into the first local owner that uses that session.
44
+
45
+ `send --mark-read` and `send --mark-delivered` advance cursors only when the
46
+ pre-send cursor is exactly caught up. If another message arrived first, the
47
+ send succeeds but the cursor advance is skipped; read the gap explicitly.
48
+
49
+ For a write not exposed by sugar, inspect the exact live schema first:
50
+
51
+ ```bash
52
+ aops agent tools --domain chatv3 --summary --json
53
+ aops agent schema --tool chatv3.<operation> --summary --json
54
+ aops agent invoke --tool chatv3.<operation> --input '@payload.json' --preview --json
55
+ ```
56
+
57
+ ChatV3 is coordination/wake truth, not the durable Projectman review record or
58
+ the structured `discuss` transcript. Bind or summarize outcomes into the
59
+ correct owner when durability matters.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: aops-collaborative-work
3
- description: Use when the operator explicitly wants the full AOPS session playbook for solo work, async review, or hosted chat-room collaboration with Projectman-backed execution.
3
+ description: Use when the operator explicitly wants the full AOPS session playbook for solo work, async review, or ChatV3 room collaboration with Projectman-backed execution.
4
4
  ---
5
5
 
6
6
  # AOPS collaborative work
@@ -53,23 +53,20 @@ The reviewer records the result in Projectman. Material findings become
53
53
  Projectman issues or bounded fix slices; chat is only the optional wake channel.
54
54
  Do not claim review completion from a message alone.
55
55
 
56
- ## Mode 3: hosted chat room
56
+ ## Mode 3: ChatV3 room
57
57
 
58
58
  ```bash
59
- aops chat room create --slug <slug> --title "<purpose>" \
60
- --created-by <lead> --member "<lead>:<role>" \
61
- --member "<peer>:<role>" --apply --json
62
- aops chat binding add --room-id <id> \
63
- --binding-type projectman.board --ref-id <board-id> \
64
- --created-by <lead> --apply --json
65
- aops chat room brief --room-id <id> --for <peer>
66
- aops chat listen --for <agent> --room-id <id> --timeout-sec 570 --json
59
+ aops chat join "<invite>" --handle <agent> --save-session --json
60
+ aops chat binding add --session <id> --room general \
61
+ --binding-type projectman.kanban-task --ref-id <task-id> --json
62
+ aops chat room brief --session <id> --room general --for <peer> --json
63
+ aops chat listen --session <id> --room general \
64
+ --after-seq <last-seq> --timeout-sec 60 --json
67
65
  ```
68
66
 
69
67
  Each participant owns a non-overlapping slice and reports completion with
70
- validation evidence. Use `aops discuss` only for a material consensus decision;
71
- use `aops chatv3` only when encrypted product-channel behavior is the actual
72
- task.
68
+ validation evidence. Use `aops discuss` only for a material consensus decision.
69
+ `aops chatv3` remains an alias for this same ChatV3 surface.
73
70
 
74
71
  ## During work
75
72
 
@@ -6,7 +6,7 @@ description: Use for a structured server-canonical design decision or consensus
6
6
  # AOPS Discuss
7
7
 
8
8
  `aops discuss` owns a durable decision transcript and conclusion. Use hosted
9
- `aops chat` to wake/coordinate peers and Projectman to track review/execution.
9
+ `aops chat` (ChatV3) to wake/coordinate peers and Projectman to track review/execution.
10
10
  Do not start a discussion ritual for a small reversible implementation choice.
11
11
 
12
12
  The complete owner and troubleshooting model is in the Discuss sections of
@@ -52,7 +52,7 @@ reports no missing final stances. Outputs must contain real decisions and
52
52
  follow-ups, not `_TBD_` placeholders.
53
53
 
54
54
  There is no automatic bridge: explicitly reference the concluded topic from a
55
- Projectman task/review/issue or durable memory, then send a short hosted-chat
55
+ Projectman task/review/issue or durable memory, then send a short ChatV3
56
56
  wake if another agent must act.
57
57
 
58
58
  For raw operations:
@@ -40,6 +40,12 @@ import for intentional bulk import, not for a one-page edit. Every mutation is
40
40
  preview/apply guarded where supported; read back the current version after
41
41
  publishing.
42
42
 
43
+ Compose or materialize the exact candidate before review and retain its
44
+ version ids plus `contentHash`. Put the complete immutable evidence reference
45
+ in both the Projectman review request and an approved review result. Saving a
46
+ mutable draft changes its hash and requires a linked re-review; a page-version
47
+ id alone is not approval evidence.
48
+
43
49
  ## Search, answer, publish, and mirrors
44
50
 
45
51
  ```bash
@@ -65,6 +65,12 @@ Use an issue for a material blocker/defect, feedback for observations or
65
65
  suggestions, and review-request/result for an auditable review gate. A chat
66
66
  message may wake a reviewer but is not the review record.
67
67
 
68
+ For mutable Docman drafts, bind the review request to the exact composed
69
+ evidence reference containing the page/document version id and its
70
+ `contentHash=sha256:<digest>`. An approved result must repeat that complete
71
+ reference exactly. A later draft edit changes the hash, so the earlier approval
72
+ does not cover the new bytes; open a linked re-review.
73
+
68
74
  ## Status discipline
69
75
 
70
76
  1. Inspect the record before changing status.
@@ -50,7 +50,7 @@ aops mission create --objective "<objective>" \
50
50
  1. Put every implementation slice in Projectman before or at kickoff.
51
51
  2. Read live help/schema instead of guessing flags or payloads.
52
52
  3. Validate in proportion to risk and record only evidence actually produced.
53
- 4. Use hosted chat for coordination/wake, Discuss for consensus, and
53
+ 4. Use ChatV3 (`aops chat`) for coordination/wake, Discuss for consensus, and
54
54
  Projectman review-request/result for review truth.
55
55
  5. Keep scope changes and blockers explicit; do not fabricate peer approval.
56
56
  6. Ordinary stop writes status/handoff and keeps mission/board/room open.
@@ -0,0 +1,198 @@
1
+ <!-- Public packaged Agentspace guide. Current nested help and live schema win on drift. -->
2
+
3
+ # Agentspace User Guide
4
+
5
+ ## 1 Ownership model
6
+
7
+ Agentspace owns durable agent/operator context and reusable hosted assets:
8
+ memory, synopsis, prompts, skills, resources, artifacts, activity, experience,
9
+ agent profiles, missions, and structured discussion topics.
10
+
11
+ It does not own every part of a work session:
12
+
13
+ | Need | Canonical owner |
14
+ | --- | --- |
15
+ | task, sprint, issue, review request/result, handoff | Projectman |
16
+ | versioned page/document content and retrieval | Docman |
17
+ | encrypted coordination room, messages, cursors, foreground listen | ChatV3 via `aops chat` |
18
+ | structured decision stances and conclusion | Agentspace Discuss via `aops discuss` |
19
+ | repository files and commits | Git/source repository |
20
+
21
+ The former Agentspace hosted-chat sugar and its `room/inbox/catchup` command
22
+ shape are retired from `aops chat`. Existing server data may remain for
23
+ historical readback, but new coordination uses ChatV3. `aops chatv3` is only a
24
+ compatibility alias for `aops chat`.
25
+
26
+ ## 2 Startup and resume ladder
27
+
28
+ Prefer small, token-efficient reads:
29
+
30
+ ```bash
31
+ aops mem brief --subject project --json
32
+ aops mem search --q "<decision or constraint>" --limit 10 --json
33
+ aops mission resume --id <mission-id> --json
34
+ aops view digest --task <task-id> --depth shallow
35
+ aops pm review-request list --status open --json
36
+ aops chat session list --json
37
+ ```
38
+
39
+ Do not preload every memory, guide, room transcript, or PM record. Resolve
40
+ references only when the current task needs them.
41
+
42
+ ## 3 Durable memory and synopsis
43
+
44
+ Memory is for facts that must survive the current context: decisions,
45
+ constraints, bounded handoffs, blockers, validation state, and the next safe
46
+ action. It is not a duplicate task tracker and must not contain secrets, large
47
+ logs, raw chat transcripts, or full documents.
48
+
49
+ ```bash
50
+ aops mem list --durability sticky --json
51
+ aops mem search --q "migration decision" --limit 10 --json
52
+ aops mem write --mode decision --subject project \
53
+ --content "<bounded evidence and decision>" --apply --json
54
+ aops mem checkpoint --help
55
+ aops mem synopsis --subject project --json
56
+ ```
57
+
58
+ A good checkpoint contains the request/purpose, PM and repository refs,
59
+ concrete outcome, validation/review evidence, open risk, and next action.
60
+ Write at meaningful milestones—not after every message or small edit.
61
+
62
+ Generated synopsis is a read model over durable context. Rebuild/read it when
63
+ resume quality is poor; do not treat it as an independent source of truth.
64
+
65
+ ## 4 Reusable hosted assets
66
+
67
+ ```bash
68
+ aops prompt list --json
69
+ aops skill list --json
70
+ aops resource list --json
71
+ aops artifact list --json
72
+ aops exp list --json
73
+ ```
74
+
75
+ Prompts and skills are versioned server records. Resources point to knowledge;
76
+ artifacts describe or reference outputs and are not an unlimited binary store.
77
+ Create/update/version/publish commands are guarded writes. Inspect help first,
78
+ use idempotency for retries, and read back the exact version after mutation.
79
+
80
+ ```bash
81
+ aops skill version create --help
82
+ aops prompt version create --help
83
+ aops resource create --help
84
+ aops artifact create --help
85
+ ```
86
+
87
+ Never put credentials, private keys, bearer/member tokens, or machine-local
88
+ secret paths into hosted assets.
89
+
90
+ ## 5 Structured discussions
91
+
92
+ Use `aops discuss` only when a material decision needs independent stances and
93
+ a durable conclusion. Small reversible implementation choices do not need a
94
+ discussion ritual.
95
+
96
+ ```bash
97
+ aops discuss start --title "<decision>" --question "<question>" \
98
+ --participant <agent-a> --participant <agent-b> --apply --json
99
+ aops discuss turn --topic <topic> --agent <agent> \
100
+ --kind statement --from-file ./turn.md --apply --json
101
+ aops discuss wait --topic <topic> --agent <agent> \
102
+ --timeout-sec 540 --interval-sec 5 --json
103
+ aops discuss turn --topic <topic> --agent <agent> \
104
+ --kind final-stance --from-file ./final.md --apply --json
105
+ aops discuss conclude --topic <topic> --apply --json
106
+ ```
107
+
108
+ Never invent another participant's stance. Conclude only after every required
109
+ participant recorded a final stance and the status readback reports no missing
110
+ finals. Link the conclusion into Projectman or memory.
111
+
112
+ Discussion waits and ChatV3 listeners are separate mechanisms. A Discuss turn
113
+ does not wake a ChatV3 listener automatically. Send a short `aops chat send`
114
+ message with the topic/turn reference when a peer must act.
115
+
116
+ ## 6 ChatV3 coordination
117
+
118
+ ChatV3 owns coordination and wake traffic:
119
+
120
+ ```bash
121
+ aops chat join "<invite>" --handle <agent> --save-session --json
122
+ aops chat binding add --session <session> --room general \
123
+ --binding-type projectman.review-request --ref-id <rr-id> --json
124
+ aops chat send --session <session> --room general \
125
+ "REVIEW READY: <rr-id>" --json
126
+ aops chat listen --session <session> --room general \
127
+ --after-seq <last-seq> --timeout-sec 60 --json
128
+ aops chat read --session <session> --room general \
129
+ --after-seq <last-seq> --mark-delivered --mark-read --json
130
+ ```
131
+
132
+ Keep foreground listening while room-owned work remains. Timeout exit `22`
133
+ means only that the bounded interval was quiet. Read PM/RR/Docman/Discuss refs
134
+ before acting, post a short ACK, and advance cursors only for messages actually
135
+ consumed.
136
+
137
+ Session credentials are isolated by local agent owner. Do not share a session
138
+ id or store between agents. See the ChatV3 guide for migration and cursor-gap
139
+ rules.
140
+
141
+ ## 7 Review pairing
142
+
143
+ Projectman is the review truth:
144
+
145
+ ```bash
146
+ aops pm review-request create --help
147
+ aops pm review-request get --id <rr-id> --json
148
+ aops pm review-request result --help
149
+ ```
150
+
151
+ Use ChatV3 only to wake the reviewer and point to the canonical RR. Material
152
+ review findings become Projectman issues. Re-review is a child RR, not an edit
153
+ of the prior immutable result.
154
+
155
+ For Docman drafts, include document/page identifiers plus the compose or
156
+ materialize `contentHash` in the RR reference. The result must repeat the exact
157
+ same evidence reference. If the draft hash changes, the old acceptance covers
158
+ only the old bytes and a new re-review is required.
159
+
160
+ ## 8 Missions and closeout
161
+
162
+ Missions preserve objective and policy; Projectman preserves implementation
163
+ state. Ordinary stop writes a bounded handoff and keeps the mission/task/room
164
+ open. Operator-approved closeout verifies:
165
+
166
+ 1. source and PM state are consistent;
167
+ 2. requested tests and independent reviews are recorded;
168
+ 3. material findings are resolved or explicitly deferred;
169
+ 4. the final ChatV3 message points to durable records;
170
+ 5. only then are task/mission/room lifecycle states closed as authorized.
171
+
172
+ Do not archive a room merely because one listener timed out. Do not mark a
173
+ review accepted from a chat message alone.
174
+
175
+ ## 9 Raw discovery and troubleshooting
176
+
177
+ ```bash
178
+ aops agent tools --domain agentspace --summary --json
179
+ aops agent schema --tool agentspace.<operation> --summary --json
180
+ aops agent invoke --tool agentspace.<operation> \
181
+ --input '@payload.json' --preview --json
182
+ ```
183
+
184
+ Use the detail ladder: this guide → nested help → live schema → guarded raw
185
+ invoke. If the connected server advertises capabilities absent from this
186
+ public core, trust the live catalog for availability but keep owner and secret
187
+ boundaries intact.
188
+
189
+ Common failures:
190
+
191
+ - quiet listener: continue from the last acknowledged sequence; timeout is not
192
+ completion;
193
+ - PM record changed but peer slept: send a ChatV3 wake with the PM ref;
194
+ - send succeeded but cursor did not advance: read the reported unseen gap;
195
+ - local session not found after upgrade: load the exact legacy session once so
196
+ it can be claimed by the current agent owner;
197
+ - owner mismatch: use the correct agent session or explicit owner; never copy
198
+ another agent's credential store.
@@ -577,39 +577,38 @@ Kural:
577
577
 
578
578
  #### 16.2.1 Overview
579
579
 
580
- `discuss`, `chat` ve `pm review-request` ayri koordinasyon yuzeyleridir: karar/konsensus `discuss`, koordinasyon/uyandirma hosted chat odalari (`chat`), review ise Projectman (`pm review-request`). Yanlis yazici/dinleyici eslesmesi sessiz trafik kaybinin en sik sebebi; koordinasyon mesaji ile dinleyici ayni hosted chat odasinda olmali (`aops-cli-chat` skill'ine bak).
580
+ `discuss`, `chat` ve `pm review-request` ayri sahiplik yuzeyleridir: karar/konsensus `discuss`, koordinasyon/uyandirma ChatV3 (`chat`), review ise Projectman (`pm review-request`). `aops chatv3`, ayni ChatV3 komut agacinin compatibility alias'idir; ikinci bir chat sistemi degildir.
581
581
 
582
582
  | Ihtiyac | Komut | Skill |
583
583
  |--------------------------------------------------------|--------------------------------|------------------|
584
584
  | Yapilandirilmis karar transcript'i + sonuc kararlari | `aops discuss start` | `aops-cli-discuss` |
585
585
  | Agent sirasi/lifecycle icin karar dongusu | `aops discuss wait`, `aops discuss turn`, `aops discuss conclude` | `aops-cli-discuss` |
586
- | Multi-agent koordinasyon/uyandirma odasi | `aops chat room create`, `aops chat message send` | `aops-cli-chat` |
587
- | Agent'in bekleyen oda/mesaj islerini kesfetmesi | `aops chat inbox --for <agent>` | `aops-cli-chat` |
588
- | Oda trafigini dinleme / unread okuma | `aops chat listen`, `aops chat catchup` | `aops-cli-chat` |
586
+ | Multi-agent koordinasyon/uyandirma odasi | `aops chat join`, `aops chat send` | `aops-cli-chat` |
587
+ | Oda trafigini foreground dinleme / unread okuma | `aops chat listen`, `aops chat read` | `aops-cli-chat` |
589
588
  | Review iste / sonucla / re-review | `aops pm review-request create`, `aops pm review-request result` | `aops-cli-projectman` |
590
589
 
591
- Koordinasyon (uyandirma, oda mesajlasmasi, listener) hosted chat odalarinda yasar; karar ritueli `discuss` tarafindadir. Yapilandirilmis bir karar/stance `discuss turn`/`conclude` ile transcript'e yazilir; karsi agent'i uyandirmak icin ayni isi bagli hosted chat odasina kisa bir `chat message send` ile duyur (oda mesaji uyandirma sinyali, discuss transcript kanonik kayit). Davet/dinleyici beklentisini de chat odasinda netlestir. Detaylar icin `aops-cli-chat` (oda lifecycle, members, `chat send/listen/catchup`) ve `aops-cli-discuss` (karar ritueli, `discuss wait` exit kodlari) skillerine bak. Review akisi (RR/RRR, re-review, material issue) `aops-cli-projectman` tarafindadir.
590
+ Yapilandirilmis stance `discuss turn`/`conclude` ile transcript'e yazilir; karsi agent'i uyandirmak icin bagli ChatV3 odasina topic/RR ref'i tasiyan kisa bir `aops chat send` mesaji yazilir. Chat mesaji wake sinyalidir; karar ve review kaydinin yerine gecmez.
592
591
 
593
592
  Slug-first operator contract:
594
593
 
595
- 1. `discuss start --slug <slug>` topic frontmatter'ina canonical slug yazar. Slug verilmezse title'dan derive edilir ve JSON'da `topicSlug` olarak doner. Hosted chat odalari da `chat room create --slug <slug>` ile slug tasir.
594
+ 1. `discuss start --slug <slug>` topic frontmatter'ina canonical slug yazar. ChatV3 channel/room slug'lari join/create sonucu okunur.
596
595
  2. Selector'lar artik exact slug'i operator-facing varsayilan kabul eder; legacy folder name ve short id debug/legacy fallback'tir. Operator-facing komut, handoff ve chat ping'lerde slug kullan; raw UUID'i debug/JSON disinda tasima.
597
596
  3. Legacy folder-name veya implicit short-id match kazanirsa JSON envelope `cliDeprecationWarnings` dondurur. Debug ihtiyaci disinda bu uyarilar "slug'a gec" sinyali sayilir.
598
597
  4. Explicit debug selector gereken yerde `--short-id <8char>` kullan; bu explicit yol warning uretmez, implicit short-id ise `cliDeprecationWarnings` uretir. Ambiguous slug/folder/short-id durumunda yalniz tek active kayit varsa `--prefer-active` onu secer; kalici handoff'larda yine slug yazilir. Discuss komutlarinda `--short-id` topic selector'udur.
599
- 5. Yeni agent bootstrap'i: once `aops chat inbox --for <agent> --json`, sonra bagli odadaki unread'i `chat catchup --for <agent> --apply --json` ile oku; aktif uyandirma icin `chat listen --for <agent> --max-loops 1 --json`. Bekleyen review icin `aops pm review-request list --json`.
598
+ 5. Yeni agent bootstrap'i: `aops chat session list`, `room brief`, sonra `listen --after-seq <cursor>`; bekleyen review icin `aops pm review-request list --json`.
600
599
  6. `discuss conclude`, `consensus.md`, agent final stance, `disagreement.md` ve `open-questions.md` dosyalarini `_TBD_` placeholder olarak birakmaz. Topic'i baslatan agent output owner'dir; finalize/closeout oncesi bu dosyalari review edip gerekiyorsa zenginlestirir.
601
600
 
602
601
  ### 16.3 PM window + chat-room baglama ve active window
603
602
 
604
603
  #### 16.3.1 Overview
605
604
 
606
- Iki ajanli execution pencerelerinde Projectman window'u tek olsun. Board kickoff acildiysa ayni board'un aktif task/sprint'i varsayilan olarak reuse edilir; yeni task ve sprint ancak aktif pencere yoksa olusturulur. (Repo-first `collab pm-bind` komutu emekliye ayrildi; PM penceresi dogrudan `pm` ile yonetilir, koordinasyon ise board'a bagli hosted chat odasinda yapilir.)
605
+ Iki ajanli execution pencerelerinde Projectman window'u tek olsun. Board kickoff acildiysa ayni board'un aktif task/sprint'i varsayilan olarak reuse edilir; yeni task ve sprint ancak aktif pencere yoksa olusturulur. Koordinasyon, PM ref'i baglanmis ChatV3 odasinda yapilir.
607
606
 
608
607
  ```bash
609
608
  aops pm board kickoff --board ops --title "AOPS PM tooling triage" --goal "..." --apply --json
610
- # Koordinasyon odasini board'a bagla (uyandirma/akis hosted chat'te):
611
- aops chat room create --slug ops-room --title "Ops" --created-by <agent> --apply --json
612
- aops chat binding add --room-id <room-id> --binding-type projectman.board --binding-id <board-id> --label "Active board" --created-by <agent> --apply --json
609
+ # Koordinasyon odasini PM ref'ine bagla:
610
+ aops chat binding add --session <session> --room general \
611
+ --binding-type projectman.board --ref-id <board-id> --title "Active board" --json
613
612
  ```
614
613
 
615
614
  Explicit task/sprint secimi gerektiğinde ilgili `pm sprint`/`pm utask` komutlarini
@@ -621,17 +620,17 @@ aktif board referanslari tercih edilir.
621
620
 
622
621
  #### 16.4.1 Overview
623
622
 
624
- Operator "tartisin", "Claude ile konusup plan koyun", "beraber arastirin" gibi bir istek verdiginde ana ajan tek basina plan yazip sonradan review istemez. Varsayilan akis iki tarafin da bagimsiz context uretmesi, sonra discuss topic'i (karar) + hosted chat odasi (uyandirma) uzerinden yakinsamasidir. Review tarafi Projectman'dedir.
623
+ Operator "tartisin" veya "beraber arastirin" dediginde iki taraf bagimsiz context uretir, `discuss` topic'inde yakinsar ve ChatV3 ile uyanir. Review tarafi Projectman'dedir.
625
624
 
626
625
  Ana ajan akisi:
627
626
 
628
- 1. `aops discuss start --slug <slug>` ile hedefi/agent'lari tasiyan bir karar topic'i ac; koordinasyon icin `aops chat room create` ile bagli bir oda ac.
627
+ 1. `aops discuss start --slug <slug>` ile hedefi/agent'lari tasiyan bir karar topic'i ac; mevcut ChatV3 odasina topic binding ekle.
629
628
  2. Operator istegini, repo root'larini, kisitlari ve beklenen deliverable'lari topic'in ilk turn'une (veya odaya context mesaji olarak) yaz.
630
629
  3. Karsi ajana net bir directive ver (oda mesaji veya `pm review-request`): "bagimsiz arastir, sadece benim draft'imi review etme" acik olsun. Beklenen ciktida current-state map, oneriler, tradeoff'lar, riskler ve acik sorular yer alsin.
631
- 4. Directive'i odaya `chat message send` ile duyur; karsi ajan manuel baslatilacaksa hangi odayi/topic'i dinleyecegini operator'e bildir.
630
+ 4. Directive'i odaya `aops chat send` ile duyur; hangi session/room/topic'in dinlenecegini netlestir.
632
631
  5. Ana ajan kendi arastirmasini paralel yapar ve kendi stance'ini `discuss turn` ile topic'e yazar.
633
- 6. Karar turn'unu odaya kisa bir `chat message send` ile duyur; topic id/turn ve karsi ajandan istenen review sorulari yazilsin.
634
- 7. Cevap icin karar dongusunu `aops discuss wait --topic <topic> --agent <agent> --timeout-sec 540 --interval-sec 5 --json`, koordinasyon uyandirmasini `aops chat listen --for <agent> --max-loops 1 --json` ile bekle. Discuss icin `--id` ve `--for` yalnizca geriye uyumlu alias'lardir.
632
+ 6. Karar turn'unu odaya kisa bir `aops chat send` ile duyur; topic id/turn ve istenen sorular yazilsin.
633
+ 7. Cevap icin `aops discuss wait ...` ve `aops chat listen --session <session> --room general --after-seq <cursor> --timeout-sec 60 --json` dongulerini dogru cursor ile surdur.
635
634
  8. Cevap gelince sadece oda TL;DR'ini degil, karsi ajanin full `discuss turn`/scratch dosyasini oku. Agreement, correction, pushback ve operator karari isteyen noktalar icin yeni bir `discuss turn` yaz; odaya ping at.
636
635
  9. Ciddi ayrilik varsa bir bounded loop daha ver. Mimari/yuksek etki konularda tek oda cevabindan sonra final plan yazma.
637
636
  10. Implementasyona gecmeden once en az iki realtime tur tamamlanmis olmali ve sonuc `discuss conclude` ile final-stance/consensus olarak yazilmali. Direkt implementasyon + sonradan review yalniz operator bunu acikca override/urgent mod olarak isterse uygulanir; override da kaydedilir.
@@ -639,27 +638,27 @@ Ana ajan akisi:
639
638
 
640
639
  Karsi ajan akisi:
641
640
 
642
- 1. Directive'i ele al ve odaya "arastiriyorum, sonuc donecegim" notu yaz; `chat catchup --apply` ile read cursor'u ilerlet.
641
+ 1. Directive'i ele al, odaya ACK yaz ve yalniz okudugun mesaja kadar cursor'u `chat read --mark-delivered --mark-read` ile ilerlet.
643
642
  2. Istenen kaynaklardan bagimsiz arastirma yap; ana ajanin draft'ini tek truth sayma.
644
643
  3. Kendi research/stance'ini `discuss turn` ile yaz ve oda cevabinda topic id/turn ile kisa ozet ver.
645
644
  4. Ana ajan kanitli pushback verirse yeni bir `discuss turn` ile hangi noktalari kabul ettigini, hangilerini surdurdugunu ve hangilerini operator'e biraktigini belirt.
646
645
 
647
646
  Minimum kalite kapisi: iki ajanin da en az bir bagimsiz context/research turn'u olur; ya da ana ajan bounded timeout'u ve "karsi cevap beklenmeden ilerleniyor" notunu operator'e acikca yazar.
648
647
 
649
- ### 16.5 ChatV3 product-channel room context
648
+ ### 16.5 ChatV3 agent-owned room context
650
649
 
651
650
  #### 16.5.1 Overview
652
651
 
653
- `aops chatv3`, hosted `aops chat` odasi degildir; encrypted product-channel/session CLI'idir. Invite/session/member token ve room epoch key context'i local ChatV3 session store uzerinden calisir. Hosted AOPS coordination icin `aops chat`, aktif product-room takibi icin `aops chatv3` kullanilir.
652
+ `aops chat` canonical ChatV3 surface'idir; `aops chatv3` ayni komut agacinin compatibility alias'idir. Invite/session/member token ve room epoch key context'i agent-owner bazli local store'da sifreli tutulur.
654
653
 
655
654
  Common commands:
656
655
 
657
656
  ```bash
658
- aops chatv3 listen --session codex --room general --after-seq <last-seq> --timeout-sec 60 --json
659
- aops chatv3 binding add --session codex --room general --binding-type projectman.review-request --ref-id <rr-id> --title "Slice review" --json
660
- aops chatv3 binding list --session codex --room general --json
661
- aops chatv3 room brief --session codex --room general --for claude --json
662
- aops chatv3 room summary --session codex --room general --after-seq <last-seq> --json
657
+ aops chat listen --session codex --room general --after-seq <last-seq> --timeout-sec 60 --json
658
+ aops chat binding add --session codex --room general --binding-type projectman.review-request --ref-id <rr-id> --title "Slice review" --json
659
+ aops chat binding list --session codex --room general --json
660
+ aops chat room brief --session codex --room general --for claude --json
661
+ aops chat room summary --session codex --room general --after-seq <last-seq> --json
663
662
  ```
664
663
 
665
664
  Kural:
@@ -669,6 +668,8 @@ Kural:
669
668
  3. `room brief` guidance, members, presence, bindings, cursor refs ve recommended next reads iceren read-only onboarding pack'tir.
670
669
  4. `room summary` agent-composed narrative digest pack'tir; `sourceRef.type=chatv3.room`, seq range, nextReadRefs, summarization-only sourceMessages ve `NARRATIVE-DIGEST` slot'lu memoryWrite recipe verir.
671
670
  5. `sourceMessages` yalniz ozetleme girdisidir; memory'ye aynen yazilmaz. Agent once abstractive narrative digest uretir, sonra digest + refs + seq range'i explicit `mem checkpoint` veya `mem summary` ile yazar.
671
+ 6. Default store agent owner'a gore ayrilir. Baska agent'in session/store'unu secmek fail-closed olur; legacy shared session ilk owner tarafindan tek sefer claim edilir.
672
+ 7. `send --mark-read/--mark-delivered`, arada unseen mesaj varsa cursor'u ilerletmez; `result.cursorAdvance` gap'i aciklar.
672
673
 
673
674
  ## 17 Resource sugar
674
675
 
@@ -0,0 +1,98 @@
1
+ <!-- Public packaged snapshot from canonical slug:aops ChatV3 guidance. Installed command --help and live schema win on drift. -->
2
+
3
+ # ChatV3 User Guide
4
+
5
+ ## 1 Canonical CLI surface
6
+
7
+ `aops chat` is the canonical ChatV3 command tree. `aops chatv3` is retained as
8
+ a compatibility alias and exposes the same behavior. The former Agentspace
9
+ hosted-chat sugar is no longer projected as a second `aops chat` system.
10
+
11
+ | Need | Command |
12
+ | --- | --- |
13
+ | Join from an invite | `aops chat join "<invite>" --handle <agent> --save-session --json` |
14
+ | Send text | `aops chat send --session <id> --room <slug> "<text>" --json` |
15
+ | Read once | `aops chat read --session <id> --room <slug> --after-seq <n> --json` |
16
+ | Foreground wait | `aops chat listen --session <id> --room <slug> --after-seq <n> --timeout-sec 60 --json` |
17
+ | Bind PM/doc refs | `aops chat binding add --session <id> --room <slug> --binding-type <type> --ref-id <id> --json` |
18
+ | Roster/presence | `aops chat member list ...`, `aops chat presence set ...` |
19
+ | Local sessions | `aops chat session list|get|forget ... --json` |
20
+
21
+ `read` and `listen` return `messages`, `messageCount`, `latestSeq`, and
22
+ `caughtUp`. `listen` exits `0` when it finds messages and `22` on timeout. A
23
+ timeout is not task completion: continue bounded foreground listening while
24
+ the room still owns active work.
25
+
26
+ ## 2 Agent-owned local session store
27
+
28
+ ChatV3 session records include encrypted member tokens plus either E2E wrap
29
+ material or server-managed room epoch keys. They are local credentials and
30
+ must never appear in messages, source files, logs, PM records, or shell
31
+ history.
32
+
33
+ The default store is isolated by local agent owner under
34
+ `~/.aops/chatv3/<owner-hash>/sessions.json`. Owner selection is:
35
+
36
+ 1. explicit `--session-owner <id>`;
37
+ 2. `AOPS_CHATV3_SESSION_OWNER`;
38
+ 3. detected Codex or Claude session identity;
39
+ 4. the local interactive operator identity.
40
+
41
+ The raw identity is hashed before it is persisted or shown. Each owner also
42
+ has a separate encryption key file. Passing a store owned by a different
43
+ agent fails closed. A legacy `~/.aops/chatv3-sessions.json` session is claimed
44
+ once and copied into the first owner that loads it; another owner cannot claim
45
+ that same legacy session afterward.
46
+
47
+ `--store-path` remains an advanced exact-path override. Even with that
48
+ override, the store header must match the current owner.
49
+
50
+ ## 3 Cursor safety
51
+
52
+ Use `read` or `listen` to consume messages and then advance delivered/read
53
+ cursors to the highest message actually returned.
54
+
55
+ `send --mark-delivered --mark-read` is guarded. Before sending, the CLI reads
56
+ the current member receipt. It advances to the sent sequence only when the
57
+ previous cursor is exactly `sentSeq - 1`. If another message arrived in the
58
+ gap, the message is still sent but `result.cursorAdvance` reports
59
+ `unseen_message_gap` and the cursor is not advanced. Read the missing range,
60
+ then mark it explicitly. This prevents a concurrent sender from making an
61
+ unseen peer message appear read.
62
+
63
+ ## 4 Encryption modes and invites
64
+
65
+ | Mode | Cipher suite | Invite fragment | Content access model |
66
+ | --- | --- | --- | --- |
67
+ | `e2e` | `v0-shared-epoch` | `#<keyId>.<accessSecret>.<wrapSecret>` | server-blind content; clients require wrap/recovery material |
68
+ | `server-encrypted` | `v1-server-managed` | `#srv.<keyId>.<accessSecret>` | server-managed encryption; server can access message content |
69
+
70
+ Cockpit creates `server-encrypted` channels by default and offers `e2e` as the
71
+ stricter client-managed option. Documentation must not describe
72
+ `server-encrypted` as E2E.
73
+
74
+ Removing a member blocks future member-auth reads, re-mint, and managed epoch
75
+ key reads. It cannot erase material already fetched by that member; rotate keys
76
+ when stronger post-removal secrecy is required.
77
+
78
+ ## 5 Coordination boundaries
79
+
80
+ ChatV3 messages wake and coordinate agents. Durable execution/review truth
81
+ lives in Projectman; structured design stances and conclusions live in
82
+ `aops discuss`; durable narrative handoff belongs in memory. Bind the relevant
83
+ PM, Docman, Discuss, or repository reference to the room, and include the same
84
+ reference in review requests/results.
85
+
86
+ Room summaries expose source messages only as summarization input. Persist an
87
+ abstractive digest plus refs and sequence range, never a verbatim transcript.
88
+
89
+ ## 6 Membership and Cockpit
90
+
91
+ Members are `active` or `removed`; standard roles are `owner`, `member`,
92
+ `operator`, and `observer`. Presence is room-scoped and uses `active`, `idle`,
93
+ `working`, `reviewing`, `blocked`, or `offline`.
94
+
95
+ `aops chat leave` is the self-removal path. Owners/operators may remove other
96
+ active members. Cockpit must keep bearer/member tokens out of local storage
97
+ and visible text, expose room guidance and cursor state, and preserve honest
98
+ copy for each encryption mode.