@chipschat/protocol 0.0.0-stage → 1.0.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.
Files changed (423) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +56 -2
  3. package/dist/envelope.d.ts +54 -0
  4. package/dist/envelope.d.ts.map +1 -0
  5. package/dist/envelope.js +48 -0
  6. package/dist/envelope.js.map +1 -0
  7. package/dist/events/agent-to-chips.d.ts +27 -0
  8. package/dist/events/agent-to-chips.d.ts.map +1 -0
  9. package/dist/events/agent-to-chips.js +392 -0
  10. package/dist/events/agent-to-chips.js.map +1 -0
  11. package/dist/events/catalogue.d.ts +48 -0
  12. package/dist/events/catalogue.d.ts.map +1 -0
  13. package/dist/events/catalogue.js +67 -0
  14. package/dist/events/catalogue.js.map +1 -0
  15. package/dist/events/chips-to-agent.d.ts +24 -0
  16. package/dist/events/chips-to-agent.d.ts.map +1 -0
  17. package/dist/events/chips-to-agent.js +324 -0
  18. package/dist/events/chips-to-agent.js.map +1 -0
  19. package/dist/events/chips-to-harness.d.ts +24 -0
  20. package/dist/events/chips-to-harness.d.ts.map +1 -0
  21. package/dist/events/chips-to-harness.js +324 -0
  22. package/dist/events/chips-to-harness.js.map +1 -0
  23. package/dist/events/harness-to-chips.d.ts +27 -0
  24. package/dist/events/harness-to-chips.d.ts.map +1 -0
  25. package/dist/events/harness-to-chips.js +390 -0
  26. package/dist/events/harness-to-chips.js.map +1 -0
  27. package/dist/events/index.d.ts +6 -0
  28. package/dist/events/index.d.ts.map +1 -0
  29. package/dist/events/index.js +5 -0
  30. package/dist/events/index.js.map +1 -0
  31. package/dist/events/workspace.d.ts +19 -0
  32. package/dist/events/workspace.d.ts.map +1 -0
  33. package/dist/events/workspace.js +79 -0
  34. package/dist/events/workspace.js.map +1 -0
  35. package/dist/frames.d.ts +175 -0
  36. package/dist/frames.d.ts.map +1 -0
  37. package/dist/frames.js +161 -0
  38. package/dist/frames.js.map +1 -0
  39. package/dist/generated/types.d.ts +4052 -0
  40. package/dist/generated/types.d.ts.map +1 -0
  41. package/dist/generated/types.js +7 -0
  42. package/dist/generated/types.js.map +1 -0
  43. package/dist/ids/index.d.ts +3 -0
  44. package/dist/ids/index.d.ts.map +1 -0
  45. package/dist/ids/index.js +2 -0
  46. package/dist/ids/index.js.map +1 -0
  47. package/dist/ids/ulid.d.ts +83 -0
  48. package/dist/ids/ulid.d.ts.map +1 -0
  49. package/dist/ids/ulid.js +199 -0
  50. package/dist/ids/ulid.js.map +1 -0
  51. package/dist/index.d.ts +18 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +13 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/primitives.d.ts +194 -0
  56. package/dist/primitives.d.ts.map +1 -0
  57. package/dist/primitives.js +193 -0
  58. package/dist/primitives.js.map +1 -0
  59. package/dist/src/address.d.ts +106 -0
  60. package/dist/src/address.d.ts.map +1 -0
  61. package/dist/src/address.js +141 -0
  62. package/dist/src/address.js.map +1 -0
  63. package/dist/src/agent-context-windows.d.ts +235 -0
  64. package/dist/src/agent-context-windows.d.ts.map +1 -0
  65. package/dist/src/agent-context-windows.js +213 -0
  66. package/dist/src/agent-context-windows.js.map +1 -0
  67. package/dist/src/agent-heartbeats.d.ts +106 -0
  68. package/dist/src/agent-heartbeats.d.ts.map +1 -0
  69. package/dist/src/agent-heartbeats.js +111 -0
  70. package/dist/src/agent-heartbeats.js.map +1 -0
  71. package/dist/src/agent-models.d.ts +158 -0
  72. package/dist/src/agent-models.d.ts.map +1 -0
  73. package/dist/src/agent-models.js +171 -0
  74. package/dist/src/agent-models.js.map +1 -0
  75. package/dist/src/agent-place.d.ts +76 -0
  76. package/dist/src/agent-place.d.ts.map +1 -0
  77. package/dist/src/agent-place.js +80 -0
  78. package/dist/src/agent-place.js.map +1 -0
  79. package/dist/src/agents.d.ts +24 -0
  80. package/dist/src/agents.d.ts.map +1 -0
  81. package/dist/src/agents.js +58 -0
  82. package/dist/src/agents.js.map +1 -0
  83. package/dist/src/capabilities.d.ts +121 -0
  84. package/dist/src/capabilities.d.ts.map +1 -0
  85. package/dist/src/capabilities.js +120 -0
  86. package/dist/src/capabilities.js.map +1 -0
  87. package/dist/src/checklist.d.ts +19 -0
  88. package/dist/src/checklist.d.ts.map +1 -0
  89. package/dist/src/checklist.js +22 -0
  90. package/dist/src/checklist.js.map +1 -0
  91. package/dist/src/commands.d.ts +50 -0
  92. package/dist/src/commands.d.ts.map +1 -0
  93. package/dist/src/commands.js +274 -0
  94. package/dist/src/commands.js.map +1 -0
  95. package/dist/src/connectors.d.ts +90 -0
  96. package/dist/src/connectors.d.ts.map +1 -0
  97. package/dist/src/connectors.js +119 -0
  98. package/dist/src/connectors.js.map +1 -0
  99. package/dist/src/context-files.d.ts +304 -0
  100. package/dist/src/context-files.d.ts.map +1 -0
  101. package/dist/src/context-files.js +247 -0
  102. package/dist/src/context-files.js.map +1 -0
  103. package/dist/src/context.d.ts +369 -0
  104. package/dist/src/context.d.ts.map +1 -0
  105. package/dist/src/context.js +526 -0
  106. package/dist/src/context.js.map +1 -0
  107. package/dist/src/direct-asks.d.ts +36 -0
  108. package/dist/src/direct-asks.d.ts.map +1 -0
  109. package/dist/src/direct-asks.js +43 -0
  110. package/dist/src/direct-asks.js.map +1 -0
  111. package/dist/src/envelope.d.ts +70 -0
  112. package/dist/src/envelope.d.ts.map +1 -0
  113. package/dist/src/envelope.js +46 -0
  114. package/dist/src/envelope.js.map +1 -0
  115. package/dist/src/events/catalogue.d.ts +50 -0
  116. package/dist/src/events/catalogue.d.ts.map +1 -0
  117. package/dist/src/events/catalogue.js +70 -0
  118. package/dist/src/events/catalogue.js.map +1 -0
  119. package/dist/src/events/chips-to-harness.d.ts +37 -0
  120. package/dist/src/events/chips-to-harness.d.ts.map +1 -0
  121. package/dist/src/events/chips-to-harness.js +511 -0
  122. package/dist/src/events/chips-to-harness.js.map +1 -0
  123. package/dist/src/events/harness-to-chips.d.ts +38 -0
  124. package/dist/src/events/harness-to-chips.d.ts.map +1 -0
  125. package/dist/src/events/harness-to-chips.js +593 -0
  126. package/dist/src/events/harness-to-chips.js.map +1 -0
  127. package/dist/src/events/index.d.ts +6 -0
  128. package/dist/src/events/index.d.ts.map +1 -0
  129. package/dist/src/events/index.js +5 -0
  130. package/dist/src/events/index.js.map +1 -0
  131. package/dist/src/events/workspace.d.ts +222 -0
  132. package/dist/src/events/workspace.d.ts.map +1 -0
  133. package/dist/src/events/workspace.js +1039 -0
  134. package/dist/src/events/workspace.js.map +1 -0
  135. package/dist/src/exchange.d.ts +262 -0
  136. package/dist/src/exchange.d.ts.map +1 -0
  137. package/dist/src/exchange.js +413 -0
  138. package/dist/src/exchange.js.map +1 -0
  139. package/dist/src/first-names.d.ts +29 -0
  140. package/dist/src/first-names.d.ts.map +1 -0
  141. package/dist/src/first-names.js +80 -0
  142. package/dist/src/first-names.js.map +1 -0
  143. package/dist/src/frames.d.ts +526 -0
  144. package/dist/src/frames.d.ts.map +1 -0
  145. package/dist/src/frames.js +346 -0
  146. package/dist/src/frames.js.map +1 -0
  147. package/dist/src/harness-jobs.d.ts +313 -0
  148. package/dist/src/harness-jobs.d.ts.map +1 -0
  149. package/dist/src/harness-jobs.js +210 -0
  150. package/dist/src/harness-jobs.js.map +1 -0
  151. package/dist/src/ids/index.d.ts +3 -0
  152. package/dist/src/ids/index.d.ts.map +1 -0
  153. package/dist/src/ids/index.js +2 -0
  154. package/dist/src/ids/index.js.map +1 -0
  155. package/dist/src/ids/ulid.d.ts +96 -0
  156. package/dist/src/ids/ulid.d.ts.map +1 -0
  157. package/dist/src/ids/ulid.js +212 -0
  158. package/dist/src/ids/ulid.js.map +1 -0
  159. package/dist/src/index.d.ts +81 -0
  160. package/dist/src/index.d.ts.map +1 -0
  161. package/dist/src/index.js +47 -0
  162. package/dist/src/index.js.map +1 -0
  163. package/dist/src/invite-link.d.ts +64 -0
  164. package/dist/src/invite-link.d.ts.map +1 -0
  165. package/dist/src/invite-link.js +99 -0
  166. package/dist/src/invite-link.js.map +1 -0
  167. package/dist/src/join.d.ts +188 -0
  168. package/dist/src/join.d.ts.map +1 -0
  169. package/dist/src/join.js +190 -0
  170. package/dist/src/join.js.map +1 -0
  171. package/dist/src/limits.d.ts +50 -0
  172. package/dist/src/limits.d.ts.map +1 -0
  173. package/dist/src/limits.js +106 -0
  174. package/dist/src/limits.js.map +1 -0
  175. package/dist/src/matters.d.ts +22 -0
  176. package/dist/src/matters.d.ts.map +1 -0
  177. package/dist/src/matters.js +26 -0
  178. package/dist/src/matters.js.map +1 -0
  179. package/dist/src/mentions.d.ts +63 -0
  180. package/dist/src/mentions.d.ts.map +1 -0
  181. package/dist/src/mentions.js +129 -0
  182. package/dist/src/mentions.js.map +1 -0
  183. package/dist/src/names.d.ts +58 -0
  184. package/dist/src/names.d.ts.map +1 -0
  185. package/dist/src/names.js +192 -0
  186. package/dist/src/names.js.map +1 -0
  187. package/dist/src/no-reply.d.ts +17 -0
  188. package/dist/src/no-reply.d.ts.map +1 -0
  189. package/dist/src/no-reply.js +48 -0
  190. package/dist/src/no-reply.js.map +1 -0
  191. package/dist/src/notifications.d.ts +81 -0
  192. package/dist/src/notifications.d.ts.map +1 -0
  193. package/dist/src/notifications.js +65 -0
  194. package/dist/src/notifications.js.map +1 -0
  195. package/dist/src/pages.d.ts +32 -0
  196. package/dist/src/pages.d.ts.map +1 -0
  197. package/dist/src/pages.js +32 -0
  198. package/dist/src/pages.js.map +1 -0
  199. package/dist/src/pairing.d.ts +99 -0
  200. package/dist/src/pairing.d.ts.map +1 -0
  201. package/dist/src/pairing.js +163 -0
  202. package/dist/src/pairing.js.map +1 -0
  203. package/dist/src/primitives.d.ts +267 -0
  204. package/dist/src/primitives.d.ts.map +1 -0
  205. package/dist/src/primitives.js +279 -0
  206. package/dist/src/primitives.js.map +1 -0
  207. package/dist/src/project.d.ts +335 -0
  208. package/dist/src/project.d.ts.map +1 -0
  209. package/dist/src/project.js +499 -0
  210. package/dist/src/project.js.map +1 -0
  211. package/dist/src/ranges.d.ts +31 -0
  212. package/dist/src/ranges.d.ts.map +1 -0
  213. package/dist/src/ranges.js +51 -0
  214. package/dist/src/ranges.js.map +1 -0
  215. package/dist/src/relay.d.ts +177 -0
  216. package/dist/src/relay.d.ts.map +1 -0
  217. package/dist/src/relay.js +147 -0
  218. package/dist/src/relay.js.map +1 -0
  219. package/dist/src/room-files.d.ts +146 -0
  220. package/dist/src/room-files.d.ts.map +1 -0
  221. package/dist/src/room-files.js +135 -0
  222. package/dist/src/room-files.js.map +1 -0
  223. package/dist/src/room-note.d.ts +213 -0
  224. package/dist/src/room-note.d.ts.map +1 -0
  225. package/dist/src/room-note.js +457 -0
  226. package/dist/src/room-note.js.map +1 -0
  227. package/dist/src/space-icons.d.ts +68 -0
  228. package/dist/src/space-icons.d.ts.map +1 -0
  229. package/dist/src/space-icons.js +142 -0
  230. package/dist/src/space-icons.js.map +1 -0
  231. package/dist/src/spend.d.ts +57 -0
  232. package/dist/src/spend.d.ts.map +1 -0
  233. package/dist/src/spend.js +94 -0
  234. package/dist/src/spend.js.map +1 -0
  235. package/dist/src/visibility.d.ts +170 -0
  236. package/dist/src/visibility.d.ts.map +1 -0
  237. package/dist/src/visibility.js +218 -0
  238. package/dist/src/visibility.js.map +1 -0
  239. package/fixtures/agent.asked.json +15 -0
  240. package/fixtures/agent.attached.json +15 -0
  241. package/fixtures/agent.deleted.json +16 -0
  242. package/fixtures/agent.fork.json +14 -0
  243. package/fixtures/agent.lock_set.json +13 -0
  244. package/fixtures/agent.registered.json +17 -0
  245. package/fixtures/agent.released.json +16 -0
  246. package/fixtures/agent.updated.json +14 -0
  247. package/fixtures/approval.executed.json +16 -0
  248. package/fixtures/approval.request.json +45 -0
  249. package/fixtures/approval.resolved.json +20 -0
  250. package/fixtures/approval.routed.json +20 -0
  251. package/fixtures/artifact.create.json +18 -0
  252. package/fixtures/attachment.fetched.json +15 -0
  253. package/fixtures/attachment.limits_set.json +15 -0
  254. package/fixtures/budget.warning.json +20 -0
  255. package/fixtures/checkpoint.json +16 -0
  256. package/fixtures/context.compacted.json +16 -0
  257. package/fixtures/context.usage.json +17 -0
  258. package/fixtures/exchange.limits_set.json +15 -0
  259. package/fixtures/exchange.set.json +13 -0
  260. package/fixtures/feedback.json +21 -0
  261. package/fixtures/frames/ack.json +6 -0
  262. package/fixtures/frames/context.edit.json +11 -0
  263. package/fixtures/frames/context_window.change.json +9 -0
  264. package/fixtures/frames/context_window.compact.json +8 -0
  265. package/fixtures/frames/error.json +6 -0
  266. package/fixtures/frames/event.json +20 -0
  267. package/fixtures/frames/events.json +39 -0
  268. package/fixtures/frames/folder.open.json +6 -0
  269. package/fixtures/frames/folder.open.page.json +7 -0
  270. package/fixtures/frames/folder.run.json +8 -0
  271. package/fixtures/frames/folder.run_state.json +12 -0
  272. package/fixtures/frames/heartbeat.change.json +10 -0
  273. package/fixtures/frames/hello.json +18 -0
  274. package/fixtures/frames/job.change.json +9 -0
  275. package/fixtures/frames/join.json +19 -0
  276. package/fixtures/frames/model.change.json +10 -0
  277. package/fixtures/frames/ping.json +4 -0
  278. package/fixtures/frames/pong.json +4 -0
  279. package/fixtures/frames/presence.json +12 -0
  280. package/fixtures/frames/receipt.json +5 -0
  281. package/fixtures/frames/restart.json +5 -0
  282. package/fixtures/frames/subscribe.json +6 -0
  283. package/fixtures/handoff.json +20 -0
  284. package/fixtures/harness.removed.json +15 -0
  285. package/fixtures/harness.transferred.json +15 -0
  286. package/fixtures/hello.json +61 -0
  287. package/fixtures/join.allowed.json +20 -0
  288. package/fixtures/join.denied.json +17 -0
  289. package/fixtures/lane.updated.json +17 -0
  290. package/fixtures/membership.added.json +16 -0
  291. package/fixtures/membership.removed.json +14 -0
  292. package/fixtures/membership.replaced.json +15 -0
  293. package/fixtures/message.deleted.json +15 -0
  294. package/fixtures/message.edited.json +15 -0
  295. package/fixtures/message.handed.json +14 -0
  296. package/fixtures/message.heard.json +14 -0
  297. package/fixtures/message.held.json +14 -0
  298. package/fixtures/message.hidden.json +14 -0
  299. package/fixtures/message.new.json +96 -0
  300. package/fixtures/message.overheard.json +22 -0
  301. package/fixtures/message.pinned.json +14 -0
  302. package/fixtures/message.post.json +14 -0
  303. package/fixtures/message.shown.json +14 -0
  304. package/fixtures/message.unpinned.json +14 -0
  305. package/fixtures/person.face_set.json +17 -0
  306. package/fixtures/person.joined.json +16 -0
  307. package/fixtures/person.removed.json +16 -0
  308. package/fixtures/person.renamed.json +14 -0
  309. package/fixtures/policy.updated.json +30 -0
  310. package/fixtures/project.changed.json +21 -0
  311. package/fixtures/question.answered.json +23 -0
  312. package/fixtures/question.ask.json +37 -0
  313. package/fixtures/receipt.json +15 -0
  314. package/fixtures/relay.set.json +12 -0
  315. package/fixtures/role.changed.json +15 -0
  316. package/fixtures/run.cancel.json +15 -0
  317. package/fixtures/run.completed.json +20 -0
  318. package/fixtures/run.failed.json +20 -0
  319. package/fixtures/run.pause.json +15 -0
  320. package/fixtures/run.plan.json +24 -0
  321. package/fixtures/run.requested.json +34 -0
  322. package/fixtures/run.resume.json +15 -0
  323. package/fixtures/run.started.json +33 -0
  324. package/fixtures/run.status.json +17 -0
  325. package/fixtures/run.steer.json +21 -0
  326. package/fixtures/session.ended.json +15 -0
  327. package/fixtures/session.renamed.json +15 -0
  328. package/fixtures/session.started.json +17 -0
  329. package/fixtures/space.claimed.json +15 -0
  330. package/fixtures/space.created.json +14 -0
  331. package/fixtures/space.erased.json +13 -0
  332. package/fixtures/space.lead_set.json +13 -0
  333. package/fixtures/space.lock_set.json +13 -0
  334. package/fixtures/space.spend_ceiling_set.json +13 -0
  335. package/fixtures/space.updated.json +14 -0
  336. package/fixtures/step.log.json +26 -0
  337. package/fixtures/task.json +22 -0
  338. package/fixtures/turn.passed.json +14 -0
  339. package/fixtures/usage.json +21 -0
  340. package/fixtures/workspace.renamed.json +13 -0
  341. package/generated/agent-connect.json +13966 -0
  342. package/generated/schema/agent.asked.json +114 -0
  343. package/generated/schema/agent.attached.json +465 -0
  344. package/generated/schema/agent.deleted.json +127 -0
  345. package/generated/schema/agent.fork.json +107 -0
  346. package/generated/schema/agent.lock_set.json +105 -0
  347. package/generated/schema/agent.registered.json +130 -0
  348. package/generated/schema/agent.released.json +129 -0
  349. package/generated/schema/agent.updated.json +151 -0
  350. package/generated/schema/approval.executed.json +125 -0
  351. package/generated/schema/approval.request.json +279 -0
  352. package/generated/schema/approval.resolved.json +162 -0
  353. package/generated/schema/approval.routed.json +185 -0
  354. package/generated/schema/artifact.create.json +206 -0
  355. package/generated/schema/attachment.fetched.json +114 -0
  356. package/generated/schema/attachment.limits_set.json +136 -0
  357. package/generated/schema/budget.warning.json +152 -0
  358. package/generated/schema/checkpoint.json +111 -0
  359. package/generated/schema/context.compacted.json +124 -0
  360. package/generated/schema/context.usage.json +120 -0
  361. package/generated/schema/exchange.limits_set.json +127 -0
  362. package/generated/schema/exchange.set.json +144 -0
  363. package/generated/schema/feedback.json +173 -0
  364. package/generated/schema/handoff.json +122 -0
  365. package/generated/schema/harness.removed.json +122 -0
  366. package/generated/schema/harness.transferred.json +117 -0
  367. package/generated/schema/hello.json +509 -0
  368. package/generated/schema/join.allowed.json +176 -0
  369. package/generated/schema/join.denied.json +150 -0
  370. package/generated/schema/lane.updated.json +223 -0
  371. package/generated/schema/membership.added.json +153 -0
  372. package/generated/schema/membership.removed.json +126 -0
  373. package/generated/schema/membership.replaced.json +106 -0
  374. package/generated/schema/message.deleted.json +105 -0
  375. package/generated/schema/message.edited.json +107 -0
  376. package/generated/schema/message.handed.json +111 -0
  377. package/generated/schema/message.heard.json +100 -0
  378. package/generated/schema/message.held.json +181 -0
  379. package/generated/schema/message.hidden.json +100 -0
  380. package/generated/schema/message.new.json +1369 -0
  381. package/generated/schema/message.overheard.json +701 -0
  382. package/generated/schema/message.pinned.json +100 -0
  383. package/generated/schema/message.post.json +290 -0
  384. package/generated/schema/message.shown.json +100 -0
  385. package/generated/schema/message.unpinned.json +100 -0
  386. package/generated/schema/person.face_set.json +134 -0
  387. package/generated/schema/person.joined.json +128 -0
  388. package/generated/schema/person.removed.json +133 -0
  389. package/generated/schema/person.renamed.json +114 -0
  390. package/generated/schema/policy.updated.json +277 -0
  391. package/generated/schema/project.changed.json +199 -0
  392. package/generated/schema/question.answered.json +154 -0
  393. package/generated/schema/question.ask.json +194 -0
  394. package/generated/schema/receipt.json +109 -0
  395. package/generated/schema/relay.set.json +99 -0
  396. package/generated/schema/role.changed.json +116 -0
  397. package/generated/schema/run.cancel.json +106 -0
  398. package/generated/schema/run.completed.json +139 -0
  399. package/generated/schema/run.failed.json +135 -0
  400. package/generated/schema/run.pause.json +106 -0
  401. package/generated/schema/run.plan.json +128 -0
  402. package/generated/schema/run.requested.json +309 -0
  403. package/generated/schema/run.resume.json +106 -0
  404. package/generated/schema/run.started.json +142 -0
  405. package/generated/schema/run.status.json +120 -0
  406. package/generated/schema/run.steer.json +163 -0
  407. package/generated/schema/session.ended.json +106 -0
  408. package/generated/schema/session.renamed.json +108 -0
  409. package/generated/schema/session.started.json +116 -0
  410. package/generated/schema/space.claimed.json +107 -0
  411. package/generated/schema/space.created.json +148 -0
  412. package/generated/schema/space.erased.json +129 -0
  413. package/generated/schema/space.lead_set.json +108 -0
  414. package/generated/schema/space.lock_set.json +99 -0
  415. package/generated/schema/space.spend_ceiling_set.json +102 -0
  416. package/generated/schema/space.updated.json +112 -0
  417. package/generated/schema/step.log.json +187 -0
  418. package/generated/schema/task.json +268 -0
  419. package/generated/schema/turn.passed.json +99 -0
  420. package/generated/schema/usage.json +155 -0
  421. package/generated/schema/workspace.renamed.json +107 -0
  422. package/generated/types.ts +4178 -0
  423. package/package.json +37 -3
@@ -0,0 +1,136 @@
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": "attachment.limits_set"
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
+ "image_bytes": {
83
+ "anyOf": [
84
+ {
85
+ "type": "integer",
86
+ "minimum": 1,
87
+ "maximum": 9007199254740991
88
+ },
89
+ {
90
+ "type": "null"
91
+ }
92
+ ],
93
+ "description": "The most a photo may be, in bytes. `null` leaves it to the server's own limit."
94
+ },
95
+ "video_bytes": {
96
+ "anyOf": [
97
+ {
98
+ "type": "integer",
99
+ "minimum": 1,
100
+ "maximum": 9007199254740991
101
+ },
102
+ {
103
+ "type": "null"
104
+ }
105
+ ],
106
+ "description": "The most a video may be, in bytes, or `null`."
107
+ },
108
+ "file_bytes": {
109
+ "anyOf": [
110
+ {
111
+ "type": "integer",
112
+ "minimum": 1,
113
+ "maximum": 9007199254740991
114
+ },
115
+ {
116
+ "type": "null"
117
+ }
118
+ ],
119
+ "description": "The most anything else may be — a document, an archive, a voice note — or `null`."
120
+ }
121
+ },
122
+ "required": [
123
+ "v",
124
+ "type",
125
+ "id",
126
+ "ts",
127
+ "workspace_id",
128
+ "actor",
129
+ "image_bytes",
130
+ "video_bytes",
131
+ "file_bytes"
132
+ ],
133
+ "description": "An owner or an admin capped how big a photo, a video or a file may be here (ADR 0047). Everyone's, and the server refuses an upload over it.",
134
+ "$id": "https://chipschat.ai/schema/v1/attachment.limits_set.json",
135
+ "title": "AttachmentLimitsSet"
136
+ }
@@ -0,0 +1,152 @@
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": "budget.warning"
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
+ "budget": {
83
+ "type": "object",
84
+ "properties": {
85
+ "limit_usd": {
86
+ "type": "number",
87
+ "minimum": 0,
88
+ "description": "The ceiling for this harness."
89
+ },
90
+ "spent_usd": {
91
+ "type": "number",
92
+ "minimum": 0,
93
+ "description": "Spent so far, estimated."
94
+ }
95
+ },
96
+ "required": [
97
+ "limit_usd",
98
+ "spent_usd"
99
+ ],
100
+ "description": "The ceiling and what was spent against it: the harness's budget, or for a job the room's ceiling and the job's spend."
101
+ },
102
+ "threshold": {
103
+ "anyOf": [
104
+ {
105
+ "type": "number",
106
+ "const": 80
107
+ },
108
+ {
109
+ "type": "number",
110
+ "const": 100
111
+ }
112
+ ],
113
+ "description": "Which ceiling was crossed, as a percentage."
114
+ },
115
+ "action": {
116
+ "type": "string",
117
+ "enum": [
118
+ "warn",
119
+ "pause"
120
+ ],
121
+ "description": "`warn` at eighty, `pause` at a hundred."
122
+ },
123
+ "scope": {
124
+ "description": "Whose ceiling: the harness's own budget (absent says the same), or the job in the room named by `space_id` (ADR 0118).",
125
+ "type": "string",
126
+ "enum": [
127
+ "harness",
128
+ "job"
129
+ ]
130
+ },
131
+ "since_seq": {
132
+ "description": "For a job: where it began, as `context.spend.since_seq` says it. A later job in the room is a new allowance.",
133
+ "type": "integer",
134
+ "minimum": 0,
135
+ "maximum": 9007199254740991
136
+ }
137
+ },
138
+ "required": [
139
+ "v",
140
+ "type",
141
+ "id",
142
+ "ts",
143
+ "workspace_id",
144
+ "actor",
145
+ "budget",
146
+ "threshold",
147
+ "action"
148
+ ],
149
+ "description": "Eighty percent spent. At a hundred the run pauses rather than warning again; for a room's job, the room's agents pause.",
150
+ "$id": "https://chipschat.ai/schema/v1/budget.warning.json",
151
+ "title": "BudgetWarning"
152
+ }
@@ -0,0 +1,111 @@
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": "checkpoint"
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
+ "label": {
83
+ "type": "string",
84
+ "minLength": 1,
85
+ "maxLength": 300,
86
+ "description": "The milestone reached."
87
+ },
88
+ "next": {
89
+ "description": "What the harness will do next.",
90
+ "type": "string",
91
+ "maxLength": 300
92
+ },
93
+ "compacted": {
94
+ "default": false,
95
+ "description": "True when the harness just compacted its context.",
96
+ "type": "boolean"
97
+ }
98
+ },
99
+ "required": [
100
+ "v",
101
+ "type",
102
+ "id",
103
+ "ts",
104
+ "workspace_id",
105
+ "actor",
106
+ "label"
107
+ ],
108
+ "description": "A milestone reached and what is next. Compaction is a checkpoint. FYI tier.",
109
+ "$id": "https://chipschat.ai/schema/v1/checkpoint.json",
110
+ "title": "Checkpoint"
111
+ }
@@ -0,0 +1,124 @@
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": "context.compacted"
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
+ "from": {
83
+ "type": "integer",
84
+ "minimum": 0,
85
+ "maximum": 9007199254740991,
86
+ "description": "The tokens it held before."
87
+ },
88
+ "to": {
89
+ "type": "integer",
90
+ "minimum": 0,
91
+ "maximum": 9007199254740991,
92
+ "description": "The tokens it held after."
93
+ },
94
+ "window": {
95
+ "type": "integer",
96
+ "exclusiveMinimum": 0,
97
+ "maximum": 9007199254740991,
98
+ "description": "Its model's context window, in tokens."
99
+ },
100
+ "by": {
101
+ "type": "string",
102
+ "enum": [
103
+ "asked",
104
+ "itself"
105
+ ],
106
+ "description": "`asked`: a person asked. `itself`: at its limit, or full."
107
+ }
108
+ },
109
+ "required": [
110
+ "v",
111
+ "type",
112
+ "id",
113
+ "ts",
114
+ "workspace_id",
115
+ "actor",
116
+ "from",
117
+ "to",
118
+ "window",
119
+ "by"
120
+ ],
121
+ "description": "An agent's context compacted, as its harness said: one quiet line in its room.",
122
+ "$id": "https://chipschat.ai/schema/v1/context.compacted.json",
123
+ "title": "ContextCompacted"
124
+ }
@@ -0,0 +1,120 @@
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": "context.usage"
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
+ "used_tokens": {
83
+ "type": "integer",
84
+ "minimum": 0,
85
+ "maximum": 9007199254740991,
86
+ "description": "Tokens currently held."
87
+ },
88
+ "limit_tokens": {
89
+ "type": "integer",
90
+ "exclusiveMinimum": 0,
91
+ "maximum": 9007199254740991,
92
+ "description": "The window size."
93
+ },
94
+ "model": {
95
+ "type": "string",
96
+ "minLength": 1,
97
+ "maxLength": 120,
98
+ "description": "The model whose window this is."
99
+ },
100
+ "compacted": {
101
+ "default": false,
102
+ "description": "True when the harness just compacted.",
103
+ "type": "boolean"
104
+ }
105
+ },
106
+ "required": [
107
+ "v",
108
+ "type",
109
+ "id",
110
+ "ts",
111
+ "workspace_id",
112
+ "actor",
113
+ "used_tokens",
114
+ "limit_tokens",
115
+ "model"
116
+ ],
117
+ "description": "How full the harness's context is. Drives the context ring; context stays per harness, never rolled up.",
118
+ "$id": "https://chipschat.ai/schema/v1/context.usage.json",
119
+ "title": "ContextUsage"
120
+ }