@ours.network/codex 0.18.0-nightly.2 → 0.18.0-nightly.3
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/.codex-plugin/plugin.json +1 -1
- package/AGENTS.snippet.md +2 -1
- package/README.md +2 -2
- package/package.json +3 -3
- package/skills/ours/SKILL.md +25 -21
package/AGENTS.snippet.md
CHANGED
|
@@ -12,5 +12,6 @@ to arm monitoring; call `arm_monitor` only after an explicit yes. In standard `c
|
|
|
12
12
|
foreground fallback. Explicitly tell the user that `ours-codex` provides background
|
|
13
13
|
monitoring before offering that fallback; never omit this recommendation. Ask separately
|
|
14
14
|
before calling `foreground_monitor`; never start the blocking fallback automatically.
|
|
15
|
-
`get_messages`
|
|
15
|
+
`get_messages` drains bounded unread batches; persistent message bodies are also available
|
|
16
|
+
through the explicit history tools.
|
|
16
17
|
<!-- <<< ours.network plugin -->
|
package/README.md
CHANGED
|
@@ -35,8 +35,8 @@ when you also want the `ours-codex` live-mode launcher.
|
|
|
35
35
|
Live monitoring is never automatic. After successfully binding or creating an identity,
|
|
36
36
|
Codex must ask whether to arm monitoring. Only an explicit yes authorizes
|
|
37
37
|
`arm_monitor({ identity })`. Switching identity disarms the previous monitor. The wake
|
|
38
|
-
event contains no message body; the resulting fixed turn calls `get_messages
|
|
39
|
-
|
|
38
|
+
event contains no message body; the resulting fixed turn calls `get_messages` to drain a
|
|
39
|
+
bounded unread batch. Explicit history tools can retrieve persistent bodies later.
|
|
40
40
|
|
|
41
41
|
In standard mode, `arm_monitor` detects that the private live control channel is absent.
|
|
42
42
|
It tells the user that `ours-codex` provides background wake, explains that the available
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ours.network/codex",
|
|
3
|
-
"version": "0.18.0-nightly.
|
|
3
|
+
"version": "0.18.0-nightly.3",
|
|
4
4
|
"description": "Native Codex plugin for secure ours.network messaging and explicitly armed, session-scoped live mail wake.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "FSL-1.1-Apache-2.0",
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
49
|
-
"@ours.network/mcp": "0.18.0-nightly.
|
|
50
|
-
"@ours.network/sdk": "
|
|
49
|
+
"@ours.network/mcp": "0.18.0-nightly.3",
|
|
50
|
+
"@ours.network/sdk": "3.0.1",
|
|
51
51
|
"ws": "^8.21.0",
|
|
52
52
|
"zod": "^3.25.76"
|
|
53
53
|
},
|
package/skills/ours/SKILL.md
CHANGED
|
@@ -310,21 +310,23 @@ automatically (cert- or registrar-verified introduction + key exchange) and the
|
|
|
310
310
|
delivered with it — no invite ceremony.
|
|
311
311
|
|
|
312
312
|
### Reply to a specific message
|
|
313
|
-
Every message carries a stable cross-side `wire_id`, shown by `get_messages`
|
|
313
|
+
Every message carries a stable cross-side `wire_id`, shown by `get_messages` and
|
|
314
|
+
`list_history`. To
|
|
314
315
|
answer one precisely: `send_message({ contact: "Bob", text: "…", reply_to_wire_id:
|
|
315
316
|
"<wire_id>" })`, optionally `reply_to_sentence: <n>` (1-based) to point at a sentence. The
|
|
316
317
|
recipient sees `↳re <wire_id>·s<n>`. It's a lightweight reference, not a thread object.
|
|
317
318
|
|
|
318
319
|
### Check / read messages
|
|
319
|
-
- "check messages" / "any new messages" → `get_messages()` returns the
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
-
|
|
320
|
+
- "check messages" / "any new messages" → `get_messages()` returns the oldest 50 unread
|
|
321
|
+
messages with bodies, marks that batch `read`, and reports how many remain. Use
|
|
322
|
+
`get_messages({ limit: 200 })` for a larger bounded drain. There is no defer operation;
|
|
323
|
+
persistent history remains available after the read commit.
|
|
324
|
+
- "show/search message history" → `list_history({ peer_cid, direction, before_seq, limit })`.
|
|
325
|
+
Results are newest first; pass `next_cursor` back as `before_seq`. Filter by authenticated
|
|
326
|
+
`peer_cid`, not a display name. Use `get_history_item({ wire_id })` for one exact message.
|
|
327
|
+
These calls are read-only and include bodies plus local read and remote delivery state.
|
|
328
|
+
- History storage and protocol receipts are not transactional. There is no packet fallback,
|
|
329
|
+
outbox, hidden retry queue, automatic receipt retry, or defer path.
|
|
328
330
|
- The SessionStart hook surfaces body-free unread counts and sender metadata. It never
|
|
329
331
|
returns message text. In live mode an explicitly armed watcher starts a fixed drain turn;
|
|
330
332
|
otherwise **check `get_messages` when you go live and whenever you expect a reply** — the daemon holds
|
|
@@ -343,10 +345,13 @@ tools, a separate store. To caption a file, also `send_message`.
|
|
|
343
345
|
- "show received files" → `list_incoming_files()` — structured metadata only: authenticated
|
|
344
346
|
sender CID in `from.id`, untrusted display label in `from.name`, file/wire IDs, filename,
|
|
345
347
|
MIME, size, date and status; no bytes and no status change. Authorize by CID, not name.
|
|
346
|
-
- "get approved files" → `get_files({ wire_ids: ["<approved 64-hex id>"] })`
|
|
347
|
-
unread
|
|
348
|
-
|
|
349
|
-
`
|
|
348
|
+
- "get approved unread files" → `get_files({ wire_ids: ["<approved 64-hex id>"] })` marks
|
|
349
|
+
only those unread rows read and returns immutable blob paths, hashes, provenance and
|
|
350
|
+
status. Invalid/duplicate/unknown/stale IDs fail closed. Omitting `wire_ids` retrieves the
|
|
351
|
+
oldest 50 unread files; pass `limit` from 1 to 200 for another bounded batch.
|
|
352
|
+
- "show/search file history" → `list_files({ peer_cid, direction, before_seq, limit })`;
|
|
353
|
+
use `get_file_info({ wire_id })` for exact metadata. Both return no bytes. Use
|
|
354
|
+
`save_file({ wire_id, dest_path })` to stream any stored file daemon→disk without chat bytes.
|
|
350
355
|
- Voice records also carry structured transcription configuration/attempt/status, provider,
|
|
351
356
|
transcript or categorized fallback, and their audio-path association; prose remains intact.
|
|
352
357
|
- The wake signal stays **body-free** but carries authenticated sender CID, file/wire IDs,
|
|
@@ -420,20 +425,19 @@ release, and do not improvise a substitute. Per-identity wake-on-mail is a **dif
|
|
|
420
425
|
feature and still works; it is described above.
|
|
421
426
|
## Notes
|
|
422
427
|
|
|
423
|
-
- Identities and their state (contacts,
|
|
428
|
+
- Identities and their state (contacts, history, keys) persist under the selected daemon's
|
|
424
429
|
state directory and survive restarts. Multiple daemon profiles can coexist when their
|
|
425
430
|
ports and state directories differ.
|
|
426
431
|
- Inbound messages from unknown (non-contact) senders are rejected — only peers added via an
|
|
427
432
|
invite handshake, same-host agents under the same Human identity, or registrar-verified
|
|
428
433
|
local-contact-book introductions can reach you.
|
|
429
|
-
- Message
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
packet and leaves it solely via `get_messages`.
|
|
434
|
+
- Message bodies persist in owner-private, mode-0600 `history.sqlite3`; file bytes persist
|
|
435
|
+
as immutable content-addressed blobs. The wake path remains body-free:
|
|
436
|
+
`notifications.log` and `unread.json` contain metadata only, never bodies or bytes.
|
|
433
437
|
- **Codex monitoring uses capability detection.** `ours-codex` owns the App Server and
|
|
434
438
|
watcher for exactly one TUI session. The launcher observes that session's thread
|
|
435
439
|
directly; monitor MCP tools carry explicit arm/disarm consent, while trusted hooks add
|
|
436
440
|
defensive identity-state synchronization. Standard `codex` falls back, after separate
|
|
437
441
|
consent, to a foreground `ours-mcp watch` call that returns on the next body-free event.
|
|
438
|
-
Authenticated daemon notification endpoints remain body-free.
|
|
439
|
-
|
|
442
|
+
Authenticated daemon notification endpoints remain body-free. Message text is returned
|
|
443
|
+
only by the explicit unread-drain and history tools.
|