@ours.network/cowork 0.3.7-nightly.20260815.80ea770 → 0.4.0
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/README.md +8 -6
- package/dist/cli.js +6 -12
- package/dist/daemon.js +2236 -722
- package/dist/mufl_code/BBAE58CF78DEE59692F456EAFFA9A6109835B66846FC3989F6D201B8F4523A55.muflo +0 -0
- package/docs/01-prerequisites.md +1 -1
- package/docs/02-installation.md +1 -1
- package/docs/05-room-workflow.md +2 -2
- package/docs/06-invites.md +0 -2
- package/docs/07-messaging-history.md +2 -2
- package/docs/08-backup-restore.md +2 -2
- package/docs/09-service-management.md +1 -1
- package/docs/10-limitations.md +2 -3
- package/docs/11-web-console.md +12 -1
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ours-cowork
|
|
2
2
|
|
|
3
|
-
`ours-cowork` is a standalone
|
|
3
|
+
`ours-cowork` is a standalone daemon for durable ours mission rooms. It owns one ordinary packet per room, an ordered local archive, a private Unix management socket, and a localhost web console with room RPC.
|
|
4
4
|
|
|
5
5
|
```sh
|
|
6
6
|
ours-cowork web
|
|
@@ -9,21 +9,23 @@ ours-cowork docs
|
|
|
9
9
|
|
|
10
10
|
`ours-cowork web` starts the daemon if it is absent, waits for the console, and opens `http://127.0.0.1:3052/`. Create a room with a friendly display name first, then add each invitation requirement from its Invite panel. Names are trimmed, normalized to Unicode NFC, and may contain 1–64 Unicode characters excluding control and format characters. Duplicate names are allowed. The Communication view contains the human-readable room chat; operational records remain in Events and the complete ordered stream remains in Archive.
|
|
11
11
|
|
|
12
|
-
The friendly `room_name` is presentation metadata. New rooms
|
|
12
|
+
The friendly `room_name` is presentation metadata. New rooms announce the technical identity `ours-cowork-room:<initial room_name>`; that authenticated announced name is frozen when the display name later changes. Duplicate display and announced names are allowed because identity CIDs, not names, are the authorization and routing keys. The opaque `room_id` remains the stable key for URLs, storage, and identity correlation. Existing `cowork-room-<room_id>` identities are never renamed or recreated, and rooms created before friendly names existed migrate only their display metadata to `Room <first 8 room_id characters>`.
|
|
13
13
|
|
|
14
14
|
The localhost HTTP console has no authentication. Keep it bound to `127.0.0.1`; do not proxy, forward, or expose the port to other hosts. Room state is refreshed by periodic polling, not pushed to the browser.
|
|
15
15
|
|
|
16
|
+
The same listener describes its own room management REST API: `http://127.0.0.1:3052/openapi.json` is the OpenAPI 3.1 document and `http://127.0.0.1:3052/docs` is the browser UI for it. Both are read-only, load no remote assets, and follow the console's loopback-only exposure rules.
|
|
17
|
+
|
|
16
18
|
The package runs independently with its own config and state directory. Operator room commands use one JSONL request over `management.sock`. Use `--json` for automation; its stdout is a single JSON value and diagnostics are included in that value.
|
|
17
19
|
|
|
18
20
|
Ordinary ours-mcp identities can join only as remote participants over the ours protocol.
|
|
19
21
|
|
|
20
|
-
Active participants can also send files through the room
|
|
21
|
-
them as opaque bytes, archives them before consuming
|
|
22
|
-
|
|
22
|
+
Active participants can also send files through the room packet. Cowork treats
|
|
23
|
+
them as opaque bytes, archives them before consuming packet state, and relays a
|
|
24
|
+
signed metadata envelope plus the core binary file to every other active seat.
|
|
23
25
|
Files are limited to 2 MiB; larger inputs fail loudly instead of weakening
|
|
24
26
|
crash recovery guarantees.
|
|
25
27
|
|
|
26
|
-
The release package contains the standalone daemon, operator CLI, deterministic web assets, and all eleven offline operator topics.
|
|
28
|
+
The release package contains the standalone daemon, operator CLI, compiled room packet, deterministic web assets, and all eleven offline operator topics. It has no dependency on another agent daemon.
|
|
27
29
|
|
|
28
30
|
Licensed under [FSL-1.1-Apache-2.0](./LICENSE).
|
|
29
31
|
|
package/dist/cli.js
CHANGED
|
@@ -4328,9 +4328,9 @@ var RoomNameSchema = external_exports.string().refine(
|
|
|
4328
4328
|
});
|
|
4329
4329
|
}
|
|
4330
4330
|
});
|
|
4331
|
-
var ROOM_IDENTITY_PREFIX = "ours-cowork-";
|
|
4332
|
-
function roomIdentityName(
|
|
4333
|
-
return `${ROOM_IDENTITY_PREFIX}${
|
|
4331
|
+
var ROOM_IDENTITY_PREFIX = "ours-cowork-room:";
|
|
4332
|
+
function roomIdentityName(roomName) {
|
|
4333
|
+
return `${ROOM_IDENTITY_PREFIX}${RoomNameSchema.parse(roomName)}`;
|
|
4334
4334
|
}
|
|
4335
4335
|
function legacyRoomIdentityName(roomId) {
|
|
4336
4336
|
return `cowork-room-${LowerCrockfordUlidSchema.parse(roomId)}`;
|
|
@@ -4510,7 +4510,7 @@ var RoleBriefingSchema = external_exports.object({
|
|
|
4510
4510
|
}).strict();
|
|
4511
4511
|
function refineRoomLineage(room, context) {
|
|
4512
4512
|
const pendingIdentityName = legacyRoomIdentityName(room.room_id);
|
|
4513
|
-
const currentPendingIdentityName = roomIdentityName(room.
|
|
4513
|
+
const currentPendingIdentityName = room.room_name === void 0 ? void 0 : roomIdentityName(room.room_name);
|
|
4514
4514
|
const exactPacketPending = room.state === "provisioning" && room.status === "packet_pending" && (room.identity_name === pendingIdentityName || room.identity_name === currentPendingIdentityName) && room.invites.length === 0 && room.seats.length === 0 && room.activated_at === void 0 && room.closed_at === void 0;
|
|
4515
4515
|
if (room.identity_cid === "" && !exactPacketPending) {
|
|
4516
4516
|
context.addIssue({
|
|
@@ -4738,10 +4738,6 @@ var AuthorAliasSchema = external_exports.object({
|
|
|
4738
4738
|
participant_id: LowerCrockfordUlidSchema,
|
|
4739
4739
|
alias: NonEmptyStringSchema
|
|
4740
4740
|
}).strict();
|
|
4741
|
-
var ReplyReferenceSchema = external_exports.object({
|
|
4742
|
-
wire_id: NonEmptyStringSchema,
|
|
4743
|
-
sentence: PositiveSafeIntegerSchema.optional()
|
|
4744
|
-
}).strict();
|
|
4745
4741
|
var MessageShape = {
|
|
4746
4742
|
kind: external_exports.literal("message"),
|
|
4747
4743
|
message_id: LowerCrockfordUlidSchema,
|
|
@@ -4766,8 +4762,7 @@ var MessageShape = {
|
|
|
4766
4762
|
}
|
|
4767
4763
|
}),
|
|
4768
4764
|
source_msg_id: external_exports.number().int().nonnegative().safe().optional(),
|
|
4769
|
-
source_wire_id: NonEmptyStringSchema.optional()
|
|
4770
|
-
source_reply_to: ReplyReferenceSchema.optional()
|
|
4765
|
+
source_wire_id: NonEmptyStringSchema.optional()
|
|
4771
4766
|
};
|
|
4772
4767
|
var RelayIntentShape = {
|
|
4773
4768
|
kind: external_exports.literal("relay_intent"),
|
|
@@ -4810,8 +4805,7 @@ var FileShape = {
|
|
|
4810
4805
|
}
|
|
4811
4806
|
}),
|
|
4812
4807
|
source_file_id: external_exports.number().int().nonnegative().safe(),
|
|
4813
|
-
source_wire_id: NonEmptyStringSchema.optional()
|
|
4814
|
-
source_reply_to: ReplyReferenceSchema.optional()
|
|
4808
|
+
source_wire_id: NonEmptyStringSchema.optional()
|
|
4815
4809
|
};
|
|
4816
4810
|
var MembershipIntentShape = {
|
|
4817
4811
|
kind: external_exports.literal("membership_intent"),
|