@chipschat/protocol 0.0.0-stage → 1.0.1
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/LICENSE +201 -0
- package/README.md +56 -2
- package/dist/generated/types.d.ts +4052 -0
- package/dist/generated/types.d.ts.map +1 -0
- package/dist/generated/types.js +7 -0
- package/dist/generated/types.js.map +1 -0
- package/dist/src/address.d.ts +106 -0
- package/dist/src/address.d.ts.map +1 -0
- package/dist/src/address.js +141 -0
- package/dist/src/address.js.map +1 -0
- package/dist/src/agent-context-windows.d.ts +235 -0
- package/dist/src/agent-context-windows.d.ts.map +1 -0
- package/dist/src/agent-context-windows.js +213 -0
- package/dist/src/agent-context-windows.js.map +1 -0
- package/dist/src/agent-heartbeats.d.ts +106 -0
- package/dist/src/agent-heartbeats.d.ts.map +1 -0
- package/dist/src/agent-heartbeats.js +111 -0
- package/dist/src/agent-heartbeats.js.map +1 -0
- package/dist/src/agent-models.d.ts +158 -0
- package/dist/src/agent-models.d.ts.map +1 -0
- package/dist/src/agent-models.js +171 -0
- package/dist/src/agent-models.js.map +1 -0
- package/dist/src/agent-place.d.ts +76 -0
- package/dist/src/agent-place.d.ts.map +1 -0
- package/dist/src/agent-place.js +80 -0
- package/dist/src/agent-place.js.map +1 -0
- package/dist/src/agents.d.ts +24 -0
- package/dist/src/agents.d.ts.map +1 -0
- package/dist/src/agents.js +58 -0
- package/dist/src/agents.js.map +1 -0
- package/dist/src/capabilities.d.ts +121 -0
- package/dist/src/capabilities.d.ts.map +1 -0
- package/dist/src/capabilities.js +120 -0
- package/dist/src/capabilities.js.map +1 -0
- package/dist/src/checklist.d.ts +19 -0
- package/dist/src/checklist.d.ts.map +1 -0
- package/dist/src/checklist.js +22 -0
- package/dist/src/checklist.js.map +1 -0
- package/dist/src/commands.d.ts +50 -0
- package/dist/src/commands.d.ts.map +1 -0
- package/dist/src/commands.js +274 -0
- package/dist/src/commands.js.map +1 -0
- package/dist/src/connectors.d.ts +90 -0
- package/dist/src/connectors.d.ts.map +1 -0
- package/dist/src/connectors.js +119 -0
- package/dist/src/connectors.js.map +1 -0
- package/dist/src/context-files.d.ts +304 -0
- package/dist/src/context-files.d.ts.map +1 -0
- package/dist/src/context-files.js +247 -0
- package/dist/src/context-files.js.map +1 -0
- package/dist/src/context.d.ts +369 -0
- package/dist/src/context.d.ts.map +1 -0
- package/dist/src/context.js +526 -0
- package/dist/src/context.js.map +1 -0
- package/dist/src/direct-asks.d.ts +36 -0
- package/dist/src/direct-asks.d.ts.map +1 -0
- package/dist/src/direct-asks.js +43 -0
- package/dist/src/direct-asks.js.map +1 -0
- package/dist/src/envelope.d.ts +70 -0
- package/dist/src/envelope.d.ts.map +1 -0
- package/dist/src/envelope.js +46 -0
- package/dist/src/envelope.js.map +1 -0
- package/dist/src/events/catalogue.d.ts +50 -0
- package/dist/src/events/catalogue.d.ts.map +1 -0
- package/dist/src/events/catalogue.js +70 -0
- package/dist/src/events/catalogue.js.map +1 -0
- package/dist/src/events/chips-to-harness.d.ts +37 -0
- package/dist/src/events/chips-to-harness.d.ts.map +1 -0
- package/dist/src/events/chips-to-harness.js +511 -0
- package/dist/src/events/chips-to-harness.js.map +1 -0
- package/dist/src/events/harness-to-chips.d.ts +38 -0
- package/dist/src/events/harness-to-chips.d.ts.map +1 -0
- package/dist/src/events/harness-to-chips.js +593 -0
- package/dist/src/events/harness-to-chips.js.map +1 -0
- package/dist/src/events/index.d.ts +6 -0
- package/dist/src/events/index.d.ts.map +1 -0
- package/dist/src/events/index.js +5 -0
- package/dist/src/events/index.js.map +1 -0
- package/dist/src/events/workspace.d.ts +222 -0
- package/dist/src/events/workspace.d.ts.map +1 -0
- package/dist/src/events/workspace.js +1039 -0
- package/dist/src/events/workspace.js.map +1 -0
- package/dist/src/exchange.d.ts +262 -0
- package/dist/src/exchange.d.ts.map +1 -0
- package/dist/src/exchange.js +413 -0
- package/dist/src/exchange.js.map +1 -0
- package/dist/src/first-names.d.ts +29 -0
- package/dist/src/first-names.d.ts.map +1 -0
- package/dist/src/first-names.js +80 -0
- package/dist/src/first-names.js.map +1 -0
- package/dist/src/frames.d.ts +526 -0
- package/dist/src/frames.d.ts.map +1 -0
- package/dist/src/frames.js +346 -0
- package/dist/src/frames.js.map +1 -0
- package/dist/src/harness-jobs.d.ts +313 -0
- package/dist/src/harness-jobs.d.ts.map +1 -0
- package/dist/src/harness-jobs.js +210 -0
- package/dist/src/harness-jobs.js.map +1 -0
- package/dist/src/ids/index.d.ts +3 -0
- package/dist/src/ids/index.d.ts.map +1 -0
- package/dist/src/ids/index.js +2 -0
- package/dist/src/ids/index.js.map +1 -0
- package/dist/src/ids/ulid.d.ts +96 -0
- package/dist/src/ids/ulid.d.ts.map +1 -0
- package/dist/src/ids/ulid.js +212 -0
- package/dist/src/ids/ulid.js.map +1 -0
- package/dist/src/index.d.ts +81 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +47 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/invite-link.d.ts +64 -0
- package/dist/src/invite-link.d.ts.map +1 -0
- package/dist/src/invite-link.js +99 -0
- package/dist/src/invite-link.js.map +1 -0
- package/dist/src/join.d.ts +188 -0
- package/dist/src/join.d.ts.map +1 -0
- package/dist/src/join.js +190 -0
- package/dist/src/join.js.map +1 -0
- package/dist/src/limits.d.ts +50 -0
- package/dist/src/limits.d.ts.map +1 -0
- package/dist/src/limits.js +106 -0
- package/dist/src/limits.js.map +1 -0
- package/dist/src/matters.d.ts +22 -0
- package/dist/src/matters.d.ts.map +1 -0
- package/dist/src/matters.js +26 -0
- package/dist/src/matters.js.map +1 -0
- package/dist/src/mentions.d.ts +63 -0
- package/dist/src/mentions.d.ts.map +1 -0
- package/dist/src/mentions.js +129 -0
- package/dist/src/mentions.js.map +1 -0
- package/dist/src/names.d.ts +58 -0
- package/dist/src/names.d.ts.map +1 -0
- package/dist/src/names.js +192 -0
- package/dist/src/names.js.map +1 -0
- package/dist/src/no-reply.d.ts +17 -0
- package/dist/src/no-reply.d.ts.map +1 -0
- package/dist/src/no-reply.js +48 -0
- package/dist/src/no-reply.js.map +1 -0
- package/dist/src/notifications.d.ts +81 -0
- package/dist/src/notifications.d.ts.map +1 -0
- package/dist/src/notifications.js +65 -0
- package/dist/src/notifications.js.map +1 -0
- package/dist/src/pages.d.ts +32 -0
- package/dist/src/pages.d.ts.map +1 -0
- package/dist/src/pages.js +32 -0
- package/dist/src/pages.js.map +1 -0
- package/dist/src/pairing.d.ts +99 -0
- package/dist/src/pairing.d.ts.map +1 -0
- package/dist/src/pairing.js +163 -0
- package/dist/src/pairing.js.map +1 -0
- package/dist/src/primitives.d.ts +267 -0
- package/dist/src/primitives.d.ts.map +1 -0
- package/dist/src/primitives.js +279 -0
- package/dist/src/primitives.js.map +1 -0
- package/dist/src/project.d.ts +335 -0
- package/dist/src/project.d.ts.map +1 -0
- package/dist/src/project.js +499 -0
- package/dist/src/project.js.map +1 -0
- package/dist/src/ranges.d.ts +31 -0
- package/dist/src/ranges.d.ts.map +1 -0
- package/dist/src/ranges.js +51 -0
- package/dist/src/ranges.js.map +1 -0
- package/dist/src/relay.d.ts +177 -0
- package/dist/src/relay.d.ts.map +1 -0
- package/dist/src/relay.js +147 -0
- package/dist/src/relay.js.map +1 -0
- package/dist/src/room-files.d.ts +146 -0
- package/dist/src/room-files.d.ts.map +1 -0
- package/dist/src/room-files.js +135 -0
- package/dist/src/room-files.js.map +1 -0
- package/dist/src/room-note.d.ts +213 -0
- package/dist/src/room-note.d.ts.map +1 -0
- package/dist/src/room-note.js +457 -0
- package/dist/src/room-note.js.map +1 -0
- package/dist/src/space-icons.d.ts +68 -0
- package/dist/src/space-icons.d.ts.map +1 -0
- package/dist/src/space-icons.js +142 -0
- package/dist/src/space-icons.js.map +1 -0
- package/dist/src/spend.d.ts +57 -0
- package/dist/src/spend.d.ts.map +1 -0
- package/dist/src/spend.js +94 -0
- package/dist/src/spend.js.map +1 -0
- package/dist/src/visibility.d.ts +170 -0
- package/dist/src/visibility.d.ts.map +1 -0
- package/dist/src/visibility.js +218 -0
- package/dist/src/visibility.js.map +1 -0
- package/fixtures/agent.asked.json +15 -0
- package/fixtures/agent.attached.json +15 -0
- package/fixtures/agent.deleted.json +16 -0
- package/fixtures/agent.fork.json +14 -0
- package/fixtures/agent.lock_set.json +13 -0
- package/fixtures/agent.registered.json +17 -0
- package/fixtures/agent.released.json +16 -0
- package/fixtures/agent.updated.json +14 -0
- package/fixtures/approval.executed.json +16 -0
- package/fixtures/approval.request.json +45 -0
- package/fixtures/approval.resolved.json +20 -0
- package/fixtures/approval.routed.json +20 -0
- package/fixtures/artifact.create.json +18 -0
- package/fixtures/attachment.fetched.json +15 -0
- package/fixtures/attachment.limits_set.json +15 -0
- package/fixtures/budget.warning.json +20 -0
- package/fixtures/checkpoint.json +16 -0
- package/fixtures/context.compacted.json +16 -0
- package/fixtures/context.usage.json +17 -0
- package/fixtures/exchange.limits_set.json +15 -0
- package/fixtures/exchange.set.json +13 -0
- package/fixtures/feedback.json +21 -0
- package/fixtures/frames/ack.json +6 -0
- package/fixtures/frames/context.edit.json +11 -0
- package/fixtures/frames/context_window.change.json +9 -0
- package/fixtures/frames/context_window.compact.json +8 -0
- package/fixtures/frames/error.json +6 -0
- package/fixtures/frames/event.json +20 -0
- package/fixtures/frames/events.json +39 -0
- package/fixtures/frames/folder.open.json +6 -0
- package/fixtures/frames/folder.open.page.json +7 -0
- package/fixtures/frames/folder.run.json +8 -0
- package/fixtures/frames/folder.run_state.json +12 -0
- package/fixtures/frames/heartbeat.change.json +10 -0
- package/fixtures/frames/hello.json +18 -0
- package/fixtures/frames/job.change.json +9 -0
- package/fixtures/frames/join.json +19 -0
- package/fixtures/frames/model.change.json +10 -0
- package/fixtures/frames/ping.json +4 -0
- package/fixtures/frames/pong.json +4 -0
- package/fixtures/frames/presence.json +12 -0
- package/fixtures/frames/receipt.json +5 -0
- package/fixtures/frames/restart.json +5 -0
- package/fixtures/frames/subscribe.json +6 -0
- package/fixtures/handoff.json +20 -0
- package/fixtures/harness.removed.json +15 -0
- package/fixtures/harness.transferred.json +15 -0
- package/fixtures/hello.json +61 -0
- package/fixtures/join.allowed.json +20 -0
- package/fixtures/join.denied.json +17 -0
- package/fixtures/lane.updated.json +17 -0
- package/fixtures/membership.added.json +16 -0
- package/fixtures/membership.removed.json +14 -0
- package/fixtures/membership.replaced.json +15 -0
- package/fixtures/message.deleted.json +15 -0
- package/fixtures/message.edited.json +15 -0
- package/fixtures/message.handed.json +14 -0
- package/fixtures/message.heard.json +14 -0
- package/fixtures/message.held.json +14 -0
- package/fixtures/message.hidden.json +14 -0
- package/fixtures/message.new.json +96 -0
- package/fixtures/message.overheard.json +22 -0
- package/fixtures/message.pinned.json +14 -0
- package/fixtures/message.post.json +14 -0
- package/fixtures/message.shown.json +14 -0
- package/fixtures/message.unpinned.json +14 -0
- package/fixtures/person.face_set.json +17 -0
- package/fixtures/person.joined.json +16 -0
- package/fixtures/person.removed.json +16 -0
- package/fixtures/person.renamed.json +14 -0
- package/fixtures/policy.updated.json +30 -0
- package/fixtures/project.changed.json +21 -0
- package/fixtures/question.answered.json +23 -0
- package/fixtures/question.ask.json +37 -0
- package/fixtures/receipt.json +15 -0
- package/fixtures/relay.set.json +12 -0
- package/fixtures/role.changed.json +15 -0
- package/fixtures/run.cancel.json +15 -0
- package/fixtures/run.completed.json +20 -0
- package/fixtures/run.failed.json +20 -0
- package/fixtures/run.pause.json +15 -0
- package/fixtures/run.plan.json +24 -0
- package/fixtures/run.requested.json +34 -0
- package/fixtures/run.resume.json +15 -0
- package/fixtures/run.started.json +33 -0
- package/fixtures/run.status.json +17 -0
- package/fixtures/run.steer.json +21 -0
- package/fixtures/session.ended.json +15 -0
- package/fixtures/session.renamed.json +15 -0
- package/fixtures/session.started.json +17 -0
- package/fixtures/space.claimed.json +15 -0
- package/fixtures/space.created.json +14 -0
- package/fixtures/space.erased.json +13 -0
- package/fixtures/space.lead_set.json +13 -0
- package/fixtures/space.lock_set.json +13 -0
- package/fixtures/space.spend_ceiling_set.json +13 -0
- package/fixtures/space.updated.json +14 -0
- package/fixtures/step.log.json +26 -0
- package/fixtures/task.json +22 -0
- package/fixtures/turn.passed.json +14 -0
- package/fixtures/usage.json +21 -0
- package/fixtures/workspace.renamed.json +13 -0
- package/generated/agent-connect.json +13966 -0
- package/generated/schema/agent.asked.json +114 -0
- package/generated/schema/agent.attached.json +465 -0
- package/generated/schema/agent.deleted.json +127 -0
- package/generated/schema/agent.fork.json +107 -0
- package/generated/schema/agent.lock_set.json +105 -0
- package/generated/schema/agent.registered.json +130 -0
- package/generated/schema/agent.released.json +129 -0
- package/generated/schema/agent.updated.json +151 -0
- package/generated/schema/approval.executed.json +125 -0
- package/generated/schema/approval.request.json +279 -0
- package/generated/schema/approval.resolved.json +162 -0
- package/generated/schema/approval.routed.json +185 -0
- package/generated/schema/artifact.create.json +206 -0
- package/generated/schema/attachment.fetched.json +114 -0
- package/generated/schema/attachment.limits_set.json +136 -0
- package/generated/schema/budget.warning.json +152 -0
- package/generated/schema/checkpoint.json +111 -0
- package/generated/schema/context.compacted.json +124 -0
- package/generated/schema/context.usage.json +120 -0
- package/generated/schema/exchange.limits_set.json +127 -0
- package/generated/schema/exchange.set.json +144 -0
- package/generated/schema/feedback.json +173 -0
- package/generated/schema/handoff.json +122 -0
- package/generated/schema/harness.removed.json +122 -0
- package/generated/schema/harness.transferred.json +117 -0
- package/generated/schema/hello.json +509 -0
- package/generated/schema/join.allowed.json +176 -0
- package/generated/schema/join.denied.json +150 -0
- package/generated/schema/lane.updated.json +223 -0
- package/generated/schema/membership.added.json +153 -0
- package/generated/schema/membership.removed.json +126 -0
- package/generated/schema/membership.replaced.json +106 -0
- package/generated/schema/message.deleted.json +105 -0
- package/generated/schema/message.edited.json +107 -0
- package/generated/schema/message.handed.json +111 -0
- package/generated/schema/message.heard.json +100 -0
- package/generated/schema/message.held.json +181 -0
- package/generated/schema/message.hidden.json +100 -0
- package/generated/schema/message.new.json +1369 -0
- package/generated/schema/message.overheard.json +701 -0
- package/generated/schema/message.pinned.json +100 -0
- package/generated/schema/message.post.json +290 -0
- package/generated/schema/message.shown.json +100 -0
- package/generated/schema/message.unpinned.json +100 -0
- package/generated/schema/person.face_set.json +134 -0
- package/generated/schema/person.joined.json +128 -0
- package/generated/schema/person.removed.json +133 -0
- package/generated/schema/person.renamed.json +114 -0
- package/generated/schema/policy.updated.json +277 -0
- package/generated/schema/project.changed.json +199 -0
- package/generated/schema/question.answered.json +154 -0
- package/generated/schema/question.ask.json +194 -0
- package/generated/schema/receipt.json +109 -0
- package/generated/schema/relay.set.json +99 -0
- package/generated/schema/role.changed.json +116 -0
- package/generated/schema/run.cancel.json +106 -0
- package/generated/schema/run.completed.json +139 -0
- package/generated/schema/run.failed.json +135 -0
- package/generated/schema/run.pause.json +106 -0
- package/generated/schema/run.plan.json +128 -0
- package/generated/schema/run.requested.json +309 -0
- package/generated/schema/run.resume.json +106 -0
- package/generated/schema/run.started.json +142 -0
- package/generated/schema/run.status.json +120 -0
- package/generated/schema/run.steer.json +163 -0
- package/generated/schema/session.ended.json +106 -0
- package/generated/schema/session.renamed.json +108 -0
- package/generated/schema/session.started.json +116 -0
- package/generated/schema/space.claimed.json +107 -0
- package/generated/schema/space.created.json +148 -0
- package/generated/schema/space.erased.json +129 -0
- package/generated/schema/space.lead_set.json +108 -0
- package/generated/schema/space.lock_set.json +99 -0
- package/generated/schema/space.spend_ceiling_set.json +102 -0
- package/generated/schema/space.updated.json +112 -0
- package/generated/schema/step.log.json +187 -0
- package/generated/schema/task.json +268 -0
- package/generated/schema/turn.passed.json +99 -0
- package/generated/schema/usage.json +155 -0
- package/generated/schema/workspace.renamed.json +107 -0
- package/generated/types.ts +4178 -0
- package/package.json +38 -3
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"properties": {
|
|
5
|
+
"v": {
|
|
6
|
+
"type": "number",
|
|
7
|
+
"const": 1,
|
|
8
|
+
"description": "Protocol major version."
|
|
9
|
+
},
|
|
10
|
+
"type": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"const": "harness.transferred"
|
|
13
|
+
},
|
|
14
|
+
"id": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
|
|
17
|
+
"description": "The event's own id. Stable across a retry of the same event."
|
|
18
|
+
},
|
|
19
|
+
"ts": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"format": "date-time",
|
|
22
|
+
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
|
|
23
|
+
"description": "When it happened, by Chips' clock. Stamped on the way in; a value the sender writes is replaced."
|
|
24
|
+
},
|
|
25
|
+
"workspace_id": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"pattern": "^ws_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
|
|
28
|
+
"description": "A workspace identifier: `ws_` followed by a ULID."
|
|
29
|
+
},
|
|
30
|
+
"space_id": {
|
|
31
|
+
"description": "The space, when the event belongs to one.",
|
|
32
|
+
"type": "string",
|
|
33
|
+
"pattern": "^spc_[0-7][0-9A-HJKMNP-TV-Z]{25}$"
|
|
34
|
+
},
|
|
35
|
+
"run_id": {
|
|
36
|
+
"description": "The run, when the event belongs to one.",
|
|
37
|
+
"type": "string",
|
|
38
|
+
"pattern": "^run_[0-7][0-9A-HJKMNP-TV-Z]{25}$"
|
|
39
|
+
},
|
|
40
|
+
"seq": {
|
|
41
|
+
"description": "Assigned by the server on append, monotonic per workspace. Absent on the way in.",
|
|
42
|
+
"type": "integer",
|
|
43
|
+
"exclusiveMinimum": 0,
|
|
44
|
+
"maximum": 9007199254740991
|
|
45
|
+
},
|
|
46
|
+
"idempotency_key": {
|
|
47
|
+
"description": "Required on every client-originated write. Sending the same key twice is a no-op.",
|
|
48
|
+
"type": "string",
|
|
49
|
+
"minLength": 1,
|
|
50
|
+
"maxLength": 200
|
|
51
|
+
},
|
|
52
|
+
"actor": {
|
|
53
|
+
"type": "object",
|
|
54
|
+
"properties": {
|
|
55
|
+
"kind": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"enum": [
|
|
58
|
+
"person",
|
|
59
|
+
"harness",
|
|
60
|
+
"agent",
|
|
61
|
+
"system"
|
|
62
|
+
],
|
|
63
|
+
"description": "Whether a person, a harness, one of a harness's agents or Chips itself acted."
|
|
64
|
+
},
|
|
65
|
+
"id": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"minLength": 1,
|
|
68
|
+
"description": "The participant id, or `system` for Chips."
|
|
69
|
+
},
|
|
70
|
+
"harness_id": {
|
|
71
|
+
"description": "For an agent: the harness it speaks through, whose budget and runs are the agent's (ADR 0087). Filled in by Chips.",
|
|
72
|
+
"type": "string",
|
|
73
|
+
"pattern": "^hrn_[0-7][0-9A-HJKMNP-TV-Z]{25}$"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"required": [
|
|
77
|
+
"kind",
|
|
78
|
+
"id"
|
|
79
|
+
],
|
|
80
|
+
"description": "The participant an event is attributed to."
|
|
81
|
+
},
|
|
82
|
+
"harness_id": {
|
|
83
|
+
"type": "string",
|
|
84
|
+
"pattern": "^hrn_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
|
|
85
|
+
"description": "The harness handed over."
|
|
86
|
+
},
|
|
87
|
+
"from_owner_id": {
|
|
88
|
+
"type": "string",
|
|
89
|
+
"pattern": "^usr_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
|
|
90
|
+
"description": "Who owned it until now."
|
|
91
|
+
},
|
|
92
|
+
"to_owner_id": {
|
|
93
|
+
"type": "string",
|
|
94
|
+
"pattern": "^usr_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
|
|
95
|
+
"description": "Who owns it from here."
|
|
96
|
+
},
|
|
97
|
+
"reason": {
|
|
98
|
+
"description": "Why, for the audit.",
|
|
99
|
+
"type": "string",
|
|
100
|
+
"maxLength": 400
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"required": [
|
|
104
|
+
"v",
|
|
105
|
+
"type",
|
|
106
|
+
"id",
|
|
107
|
+
"ts",
|
|
108
|
+
"workspace_id",
|
|
109
|
+
"actor",
|
|
110
|
+
"harness_id",
|
|
111
|
+
"from_owner_id",
|
|
112
|
+
"to_owner_id"
|
|
113
|
+
],
|
|
114
|
+
"description": "A harness was handed to another person, who is accountable for it from here: its approvals default to them, and its tokens are theirs.",
|
|
115
|
+
"$id": "https://chipschat.ai/schema/v1/harness.transferred.json",
|
|
116
|
+
"title": "HarnessTransferred"
|
|
117
|
+
}
|
|
@@ -0,0 +1,509 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"properties": {
|
|
5
|
+
"v": {
|
|
6
|
+
"type": "number",
|
|
7
|
+
"const": 1,
|
|
8
|
+
"description": "Protocol major version."
|
|
9
|
+
},
|
|
10
|
+
"type": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"const": "hello"
|
|
13
|
+
},
|
|
14
|
+
"id": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
|
|
17
|
+
"description": "The event's own id. Stable across a retry of the same event."
|
|
18
|
+
},
|
|
19
|
+
"ts": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"format": "date-time",
|
|
22
|
+
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
|
|
23
|
+
"description": "When it happened, by Chips' clock. Stamped on the way in; a value the sender writes is replaced."
|
|
24
|
+
},
|
|
25
|
+
"workspace_id": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"pattern": "^ws_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
|
|
28
|
+
"description": "A workspace identifier: `ws_` followed by a ULID."
|
|
29
|
+
},
|
|
30
|
+
"space_id": {
|
|
31
|
+
"description": "The space, when the event belongs to one.",
|
|
32
|
+
"type": "string",
|
|
33
|
+
"pattern": "^spc_[0-7][0-9A-HJKMNP-TV-Z]{25}$"
|
|
34
|
+
},
|
|
35
|
+
"run_id": {
|
|
36
|
+
"description": "The run, when the event belongs to one.",
|
|
37
|
+
"type": "string",
|
|
38
|
+
"pattern": "^run_[0-7][0-9A-HJKMNP-TV-Z]{25}$"
|
|
39
|
+
},
|
|
40
|
+
"seq": {
|
|
41
|
+
"description": "Assigned by the server on append, monotonic per workspace. Absent on the way in.",
|
|
42
|
+
"type": "integer",
|
|
43
|
+
"exclusiveMinimum": 0,
|
|
44
|
+
"maximum": 9007199254740991
|
|
45
|
+
},
|
|
46
|
+
"idempotency_key": {
|
|
47
|
+
"description": "Required on every client-originated write. Sending the same key twice is a no-op.",
|
|
48
|
+
"type": "string",
|
|
49
|
+
"minLength": 1,
|
|
50
|
+
"maxLength": 200
|
|
51
|
+
},
|
|
52
|
+
"actor": {
|
|
53
|
+
"type": "object",
|
|
54
|
+
"properties": {
|
|
55
|
+
"kind": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"enum": [
|
|
58
|
+
"person",
|
|
59
|
+
"harness",
|
|
60
|
+
"agent",
|
|
61
|
+
"system"
|
|
62
|
+
],
|
|
63
|
+
"description": "Whether a person, a harness, one of a harness's agents or Chips itself acted."
|
|
64
|
+
},
|
|
65
|
+
"id": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"minLength": 1,
|
|
68
|
+
"description": "The participant id, or `system` for Chips."
|
|
69
|
+
},
|
|
70
|
+
"harness_id": {
|
|
71
|
+
"description": "For an agent: the harness it speaks through, whose budget and runs are the agent's (ADR 0087). Filled in by Chips.",
|
|
72
|
+
"type": "string",
|
|
73
|
+
"pattern": "^hrn_[0-7][0-9A-HJKMNP-TV-Z]{25}$"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"required": [
|
|
77
|
+
"kind",
|
|
78
|
+
"id"
|
|
79
|
+
],
|
|
80
|
+
"description": "The participant an event is attributed to."
|
|
81
|
+
},
|
|
82
|
+
"protocol": {
|
|
83
|
+
"type": "object",
|
|
84
|
+
"properties": {
|
|
85
|
+
"min": {
|
|
86
|
+
"type": "integer",
|
|
87
|
+
"exclusiveMinimum": 0,
|
|
88
|
+
"maximum": 9007199254740991,
|
|
89
|
+
"description": "Oldest major version the server accepts."
|
|
90
|
+
},
|
|
91
|
+
"max": {
|
|
92
|
+
"type": "integer",
|
|
93
|
+
"exclusiveMinimum": 0,
|
|
94
|
+
"maximum": 9007199254740991,
|
|
95
|
+
"description": "Newest major version the server speaks."
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"required": [
|
|
99
|
+
"min",
|
|
100
|
+
"max"
|
|
101
|
+
],
|
|
102
|
+
"description": "The negotiated range. A client picks a version inside it or is refused."
|
|
103
|
+
},
|
|
104
|
+
"server": {
|
|
105
|
+
"type": "object",
|
|
106
|
+
"properties": {
|
|
107
|
+
"name": {
|
|
108
|
+
"type": "string",
|
|
109
|
+
"minLength": 1,
|
|
110
|
+
"maxLength": 120,
|
|
111
|
+
"description": "Usually `chipsd`."
|
|
112
|
+
},
|
|
113
|
+
"version": {
|
|
114
|
+
"type": "string",
|
|
115
|
+
"minLength": 1,
|
|
116
|
+
"maxLength": 60,
|
|
117
|
+
"description": "The server's own version."
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"required": [
|
|
121
|
+
"name",
|
|
122
|
+
"version"
|
|
123
|
+
],
|
|
124
|
+
"description": "Who the client is talking to."
|
|
125
|
+
},
|
|
126
|
+
"harnesses": {
|
|
127
|
+
"minItems": 1,
|
|
128
|
+
"maxItems": 64,
|
|
129
|
+
"type": "array",
|
|
130
|
+
"items": {
|
|
131
|
+
"type": "object",
|
|
132
|
+
"properties": {
|
|
133
|
+
"harness_id": {
|
|
134
|
+
"type": "string",
|
|
135
|
+
"pattern": "^hrn_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
|
|
136
|
+
"description": "A harness identifier: `hrn_` followed by a ULID."
|
|
137
|
+
},
|
|
138
|
+
"display_name": {
|
|
139
|
+
"type": "string",
|
|
140
|
+
"minLength": 1,
|
|
141
|
+
"maxLength": 120,
|
|
142
|
+
"description": "The harness's name in the workspace."
|
|
143
|
+
},
|
|
144
|
+
"owner_id": {
|
|
145
|
+
"type": "string",
|
|
146
|
+
"pattern": "^usr_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
|
|
147
|
+
"description": "The person accountable for this harness."
|
|
148
|
+
},
|
|
149
|
+
"capabilities": {
|
|
150
|
+
"description": "What the harness can do.",
|
|
151
|
+
"maxItems": 64,
|
|
152
|
+
"type": "array",
|
|
153
|
+
"items": {
|
|
154
|
+
"type": "string",
|
|
155
|
+
"maxLength": 120
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
"ephemeral": {
|
|
159
|
+
"default": false,
|
|
160
|
+
"description": "True for a transient child minted for one lane, which inherits its lead's settings.",
|
|
161
|
+
"type": "boolean"
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
"required": [
|
|
165
|
+
"harness_id",
|
|
166
|
+
"display_name",
|
|
167
|
+
"owner_id"
|
|
168
|
+
],
|
|
169
|
+
"description": "The harness this connection is, as Chips knows it."
|
|
170
|
+
},
|
|
171
|
+
"description": "The harness the token belongs to, and only that one. One connection speaks for all of the harness's agents (ADR 0087), which `agents` lists. A harness running inside another is a lane, not a duplicate."
|
|
172
|
+
},
|
|
173
|
+
"harness": {
|
|
174
|
+
"description": "The harness this connection is: `harnesses[0]`, said once. Read this rather than the list.",
|
|
175
|
+
"type": "object",
|
|
176
|
+
"properties": {
|
|
177
|
+
"harness_id": {
|
|
178
|
+
"type": "string",
|
|
179
|
+
"pattern": "^hrn_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
|
|
180
|
+
"description": "A harness identifier: `hrn_` followed by a ULID."
|
|
181
|
+
},
|
|
182
|
+
"display_name": {
|
|
183
|
+
"type": "string",
|
|
184
|
+
"minLength": 1,
|
|
185
|
+
"maxLength": 120,
|
|
186
|
+
"description": "The harness's name in the workspace."
|
|
187
|
+
},
|
|
188
|
+
"owner_id": {
|
|
189
|
+
"type": "string",
|
|
190
|
+
"pattern": "^usr_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
|
|
191
|
+
"description": "The person accountable for this harness."
|
|
192
|
+
},
|
|
193
|
+
"capabilities": {
|
|
194
|
+
"description": "What the harness can do.",
|
|
195
|
+
"maxItems": 64,
|
|
196
|
+
"type": "array",
|
|
197
|
+
"items": {
|
|
198
|
+
"type": "string",
|
|
199
|
+
"maxLength": 120
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
"ephemeral": {
|
|
203
|
+
"default": false,
|
|
204
|
+
"description": "True for a transient child minted for one lane, which inherits its lead's settings.",
|
|
205
|
+
"type": "boolean"
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
"required": [
|
|
209
|
+
"harness_id",
|
|
210
|
+
"display_name",
|
|
211
|
+
"owner_id"
|
|
212
|
+
]
|
|
213
|
+
},
|
|
214
|
+
"agents": {
|
|
215
|
+
"description": "The harness's agents, each with its rooms (ADR 0087). Everything the connection sends names one of them as `actor`; a harness's own id is read as its one agent in the room. Sent only to a harness that declares `agents`.",
|
|
216
|
+
"maxItems": 10000,
|
|
217
|
+
"type": "array",
|
|
218
|
+
"items": {
|
|
219
|
+
"type": "object",
|
|
220
|
+
"properties": {
|
|
221
|
+
"agent_id": {
|
|
222
|
+
"type": "string",
|
|
223
|
+
"pattern": "^agt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
|
|
224
|
+
"description": "A agent identifier: `agt_` followed by a ULID."
|
|
225
|
+
},
|
|
226
|
+
"key": {
|
|
227
|
+
"type": "string",
|
|
228
|
+
"minLength": 1,
|
|
229
|
+
"maxLength": 400,
|
|
230
|
+
"description": "The harness's own name for it."
|
|
231
|
+
},
|
|
232
|
+
"name": {
|
|
233
|
+
"type": "string",
|
|
234
|
+
"minLength": 1,
|
|
235
|
+
"maxLength": 120,
|
|
236
|
+
"description": "What it is called, and so its @handle."
|
|
237
|
+
},
|
|
238
|
+
"lead": {
|
|
239
|
+
"type": "boolean",
|
|
240
|
+
"description": "Whether it is the harness's Main agent."
|
|
241
|
+
},
|
|
242
|
+
"state": {
|
|
243
|
+
"type": "string",
|
|
244
|
+
"enum": [
|
|
245
|
+
"active",
|
|
246
|
+
"archived"
|
|
247
|
+
],
|
|
248
|
+
"description": "Archived when its thing was put away."
|
|
249
|
+
},
|
|
250
|
+
"spaces": {
|
|
251
|
+
"maxItems": 10000,
|
|
252
|
+
"type": "array",
|
|
253
|
+
"items": {
|
|
254
|
+
"type": "string",
|
|
255
|
+
"pattern": "^spc_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
|
|
256
|
+
"description": "A space identifier: `spc_` followed by a ULID."
|
|
257
|
+
},
|
|
258
|
+
"description": "The rooms it is in. One at most, once one room per agent is the rule."
|
|
259
|
+
},
|
|
260
|
+
"room": {
|
|
261
|
+
"description": "The open room it is in (ADR 0087: one at a time), or `null` while it is free. What it says while free is held.",
|
|
262
|
+
"anyOf": [
|
|
263
|
+
{
|
|
264
|
+
"type": "string",
|
|
265
|
+
"pattern": "^spc_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
|
|
266
|
+
"description": "A space identifier: `spc_` followed by a ULID."
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"type": "null"
|
|
270
|
+
}
|
|
271
|
+
]
|
|
272
|
+
},
|
|
273
|
+
"held": {
|
|
274
|
+
"description": "How many of its words Chips is holding, said while it was in no room.",
|
|
275
|
+
"type": "integer",
|
|
276
|
+
"minimum": 0,
|
|
277
|
+
"maximum": 9007199254740991
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
"required": [
|
|
281
|
+
"agent_id",
|
|
282
|
+
"key",
|
|
283
|
+
"name",
|
|
284
|
+
"lead",
|
|
285
|
+
"state",
|
|
286
|
+
"spaces"
|
|
287
|
+
],
|
|
288
|
+
"description": "An agent the harness speaks for."
|
|
289
|
+
}
|
|
290
|
+
},
|
|
291
|
+
"autonomy": {
|
|
292
|
+
"anyOf": [
|
|
293
|
+
{
|
|
294
|
+
"type": "number",
|
|
295
|
+
"const": 0
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"type": "number",
|
|
299
|
+
"const": 1
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"type": "number",
|
|
303
|
+
"const": 2
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"type": "number",
|
|
307
|
+
"const": 3
|
|
308
|
+
}
|
|
309
|
+
],
|
|
310
|
+
"description": "The level in force for this connection."
|
|
311
|
+
},
|
|
312
|
+
"policy": {
|
|
313
|
+
"description": "The rules that fill in the details.",
|
|
314
|
+
"type": "object",
|
|
315
|
+
"properties": {
|
|
316
|
+
"autonomy": {
|
|
317
|
+
"anyOf": [
|
|
318
|
+
{
|
|
319
|
+
"type": "number",
|
|
320
|
+
"const": 0
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"type": "number",
|
|
324
|
+
"const": 1
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
"type": "number",
|
|
328
|
+
"const": 2
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
"type": "number",
|
|
332
|
+
"const": 3
|
|
333
|
+
}
|
|
334
|
+
],
|
|
335
|
+
"description": "0 observe, 1 ask first, 2 ask when it matters, 3 autonomous and report back. Presets that expand to rules."
|
|
336
|
+
},
|
|
337
|
+
"rules": {
|
|
338
|
+
"maxItems": 200,
|
|
339
|
+
"type": "array",
|
|
340
|
+
"items": {
|
|
341
|
+
"type": "object",
|
|
342
|
+
"properties": {
|
|
343
|
+
"match": {
|
|
344
|
+
"type": "string",
|
|
345
|
+
"minLength": 1,
|
|
346
|
+
"maxLength": 120,
|
|
347
|
+
"description": "A glob over action kinds, for example `payment.*`."
|
|
348
|
+
},
|
|
349
|
+
"when": {
|
|
350
|
+
"description": "Extra conditions on the action's flags, and for a command, how its parts start.",
|
|
351
|
+
"type": "object",
|
|
352
|
+
"properties": {
|
|
353
|
+
"external": {
|
|
354
|
+
"type": "boolean"
|
|
355
|
+
},
|
|
356
|
+
"irreversible": {
|
|
357
|
+
"type": "boolean"
|
|
358
|
+
},
|
|
359
|
+
"money_usd_over": {
|
|
360
|
+
"type": "number",
|
|
361
|
+
"minimum": 0
|
|
362
|
+
},
|
|
363
|
+
"risk": {
|
|
364
|
+
"maxItems": 8,
|
|
365
|
+
"type": "array",
|
|
366
|
+
"items": {
|
|
367
|
+
"type": "string",
|
|
368
|
+
"enum": [
|
|
369
|
+
"external",
|
|
370
|
+
"external_communication",
|
|
371
|
+
"irreversible",
|
|
372
|
+
"destructive",
|
|
373
|
+
"financial",
|
|
374
|
+
"credential",
|
|
375
|
+
"privacy",
|
|
376
|
+
"legal"
|
|
377
|
+
],
|
|
378
|
+
"description": "A risk class the policy engine can match a rule against."
|
|
379
|
+
}
|
|
380
|
+
},
|
|
381
|
+
"starts_with": {
|
|
382
|
+
"description": "For an action that carries a command (ADR 0239): the words a part of it starts with. A command goes ahead on such rules only when every part starts with one that allows it.",
|
|
383
|
+
"minItems": 1,
|
|
384
|
+
"maxItems": 8,
|
|
385
|
+
"type": "array",
|
|
386
|
+
"items": {
|
|
387
|
+
"type": "string",
|
|
388
|
+
"minLength": 1,
|
|
389
|
+
"maxLength": 400
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
},
|
|
394
|
+
"decision": {
|
|
395
|
+
"type": "string",
|
|
396
|
+
"enum": [
|
|
397
|
+
"allow",
|
|
398
|
+
"ask",
|
|
399
|
+
"deny"
|
|
400
|
+
],
|
|
401
|
+
"description": "What to do when the rule matches."
|
|
402
|
+
},
|
|
403
|
+
"approvers": {
|
|
404
|
+
"description": "Who may answer, when the decision is `ask`.",
|
|
405
|
+
"maxItems": 16,
|
|
406
|
+
"type": "array",
|
|
407
|
+
"items": {
|
|
408
|
+
"type": "string",
|
|
409
|
+
"pattern": "^(owner|any|lead|role:[a-z][a-z0-9_]*|usr_[0-9A-HJKMNP-TV-Z]{26}|hrn_[0-9A-HJKMNP-TV-Z]{26})$",
|
|
410
|
+
"description": "`owner`, `any`, `lead`, `role:<name>`, or a specific person id; a lead harness's id once resolved."
|
|
411
|
+
}
|
|
412
|
+
},
|
|
413
|
+
"reason": {
|
|
414
|
+
"description": "Shown to the harness, and recorded in the audit log.",
|
|
415
|
+
"type": "string",
|
|
416
|
+
"maxLength": 400
|
|
417
|
+
},
|
|
418
|
+
"off": {
|
|
419
|
+
"description": "Turned off by a person (ADR 0195): kept in the list to turn back on, and skipped by the policy engine until then.",
|
|
420
|
+
"type": "boolean"
|
|
421
|
+
},
|
|
422
|
+
"made_by": {
|
|
423
|
+
"description": "Who made it by answering an ask with Always (ADR 0195). Filled in by Chips.",
|
|
424
|
+
"type": "string",
|
|
425
|
+
"minLength": 1,
|
|
426
|
+
"maxLength": 120
|
|
427
|
+
},
|
|
428
|
+
"made_at": {
|
|
429
|
+
"description": "When a person's answer made it (ADR 0195): Always, or This session. Filled in by Chips. A rule a person's answer made never allows an action that matters.",
|
|
430
|
+
"type": "string",
|
|
431
|
+
"format": "date-time",
|
|
432
|
+
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
|
|
433
|
+
}
|
|
434
|
+
},
|
|
435
|
+
"required": [
|
|
436
|
+
"match",
|
|
437
|
+
"decision"
|
|
438
|
+
],
|
|
439
|
+
"description": "A rule the policy engine evaluates."
|
|
440
|
+
},
|
|
441
|
+
"description": "Evaluated in order; the workspace cap always wins."
|
|
442
|
+
}
|
|
443
|
+
},
|
|
444
|
+
"required": [
|
|
445
|
+
"autonomy",
|
|
446
|
+
"rules"
|
|
447
|
+
]
|
|
448
|
+
},
|
|
449
|
+
"budget": {
|
|
450
|
+
"description": "The ceiling, and what has been spent.",
|
|
451
|
+
"type": "object",
|
|
452
|
+
"properties": {
|
|
453
|
+
"limit_usd": {
|
|
454
|
+
"type": "number",
|
|
455
|
+
"minimum": 0,
|
|
456
|
+
"description": "The ceiling for this harness."
|
|
457
|
+
},
|
|
458
|
+
"spent_usd": {
|
|
459
|
+
"type": "number",
|
|
460
|
+
"minimum": 0,
|
|
461
|
+
"description": "Spent so far, estimated."
|
|
462
|
+
}
|
|
463
|
+
},
|
|
464
|
+
"required": [
|
|
465
|
+
"limit_usd",
|
|
466
|
+
"spent_usd"
|
|
467
|
+
]
|
|
468
|
+
},
|
|
469
|
+
"spaces": {
|
|
470
|
+
"description": "The spaces this credential is a member of as it connects. A client that kept a cache drops what is not here: a membership it lost while away is the one event a replay can never bring it, because it is no longer in the space that event belongs to.",
|
|
471
|
+
"maxItems": 10000,
|
|
472
|
+
"type": "array",
|
|
473
|
+
"items": {
|
|
474
|
+
"type": "string",
|
|
475
|
+
"pattern": "^spc_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
|
|
476
|
+
"description": "A space identifier: `spc_` followed by a ULID."
|
|
477
|
+
}
|
|
478
|
+
},
|
|
479
|
+
"workspace": {
|
|
480
|
+
"description": "The workspace as it is called now. A device keeps the name it was told when it paired and takes this one when they differ, so a workspace renamed since is called by its new name without pairing again. Absent when the workspace has no name.",
|
|
481
|
+
"type": "object",
|
|
482
|
+
"properties": {
|
|
483
|
+
"name": {
|
|
484
|
+
"type": "string",
|
|
485
|
+
"minLength": 1,
|
|
486
|
+
"maxLength": 120
|
|
487
|
+
}
|
|
488
|
+
},
|
|
489
|
+
"required": [
|
|
490
|
+
"name"
|
|
491
|
+
]
|
|
492
|
+
}
|
|
493
|
+
},
|
|
494
|
+
"required": [
|
|
495
|
+
"v",
|
|
496
|
+
"type",
|
|
497
|
+
"id",
|
|
498
|
+
"ts",
|
|
499
|
+
"workspace_id",
|
|
500
|
+
"actor",
|
|
501
|
+
"protocol",
|
|
502
|
+
"server",
|
|
503
|
+
"harnesses",
|
|
504
|
+
"autonomy"
|
|
505
|
+
],
|
|
506
|
+
"description": "The server's half of the handshake: the protocol range it speaks, and who this connection is.",
|
|
507
|
+
"$id": "https://chipschat.ai/schema/v1/hello.json",
|
|
508
|
+
"title": "Hello"
|
|
509
|
+
}
|