@intentic/sandbox-contract 1.307.0 → 1.308.2

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 (260) hide show
  1. package/README.md +12 -0
  2. package/dist/contracts/accounts.contract.d.ts +6 -6
  3. package/dist/contracts/accounts.contract.js +7 -7
  4. package/dist/contracts/accounts.contract.js.map +1 -1
  5. package/dist/contracts/activity.contract.d.ts +2 -2
  6. package/dist/contracts/activity.contract.js +3 -3
  7. package/dist/contracts/activity.contract.js.map +1 -1
  8. package/dist/contracts/agent.contract.d.ts +10 -10
  9. package/dist/contracts/agent.contract.d.ts.map +1 -1
  10. package/dist/contracts/agent.contract.js +21 -11
  11. package/dist/contracts/agent.contract.js.map +1 -1
  12. package/dist/contracts/agents.contract.d.ts +41 -27
  13. package/dist/contracts/agents.contract.d.ts.map +1 -1
  14. package/dist/contracts/agents.contract.js +44 -28
  15. package/dist/contracts/agents.contract.js.map +1 -1
  16. package/dist/contracts/approvals.contract.d.ts +3 -3
  17. package/dist/contracts/approvals.contract.js +4 -4
  18. package/dist/contracts/approvals.contract.js.map +1 -1
  19. package/dist/contracts/areas.contract.d.ts +3 -3
  20. package/dist/contracts/areas.contract.d.ts.map +1 -1
  21. package/dist/contracts/areas.contract.js +5 -4
  22. package/dist/contracts/areas.contract.js.map +1 -1
  23. package/dist/contracts/automations.contract.d.ts +11 -11
  24. package/dist/contracts/automations.contract.js +12 -12
  25. package/dist/contracts/automations.contract.js.map +1 -1
  26. package/dist/contracts/capabilities.contract.d.ts +13 -13
  27. package/dist/contracts/capabilities.contract.d.ts.map +1 -1
  28. package/dist/contracts/capabilities.contract.js +18 -14
  29. package/dist/contracts/capabilities.contract.js.map +1 -1
  30. package/dist/contracts/chores.contract.d.ts +3 -3
  31. package/dist/contracts/chores.contract.js +4 -4
  32. package/dist/contracts/chores.contract.js.map +1 -1
  33. package/dist/contracts/ci.contract.d.ts +5 -5
  34. package/dist/contracts/ci.contract.js +6 -6
  35. package/dist/contracts/ci.contract.js.map +1 -1
  36. package/dist/contracts/diff.contract.d.ts +1 -1
  37. package/dist/contracts/diff.contract.js +2 -2
  38. package/dist/contracts/diff.contract.js.map +1 -1
  39. package/dist/contracts/endpoints.contract.d.ts +4 -4
  40. package/dist/contracts/endpoints.contract.js +5 -5
  41. package/dist/contracts/endpoints.contract.js.map +1 -1
  42. package/dist/contracts/exit.contract.d.ts +7 -7
  43. package/dist/contracts/exit.contract.d.ts.map +1 -1
  44. package/dist/contracts/exit.contract.js +9 -8
  45. package/dist/contracts/exit.contract.js.map +1 -1
  46. package/dist/contracts/extensions.contract.d.ts +17 -17
  47. package/dist/contracts/extensions.contract.js +18 -18
  48. package/dist/contracts/extensions.contract.js.map +1 -1
  49. package/dist/contracts/git.contract.d.ts +47 -45
  50. package/dist/contracts/git.contract.d.ts.map +1 -1
  51. package/dist/contracts/git.contract.js +46 -46
  52. package/dist/contracts/git.contract.js.map +1 -1
  53. package/dist/contracts/history.contract.d.ts +4 -4
  54. package/dist/contracts/history.contract.js +5 -5
  55. package/dist/contracts/history.contract.js.map +1 -1
  56. package/dist/contracts/intentic.contract.d.ts +3 -3
  57. package/dist/contracts/intentic.contract.d.ts.map +1 -1
  58. package/dist/contracts/intentic.contract.js +5 -4
  59. package/dist/contracts/intentic.contract.js.map +1 -1
  60. package/dist/contracts/inventory.contract.d.ts +3 -3
  61. package/dist/contracts/inventory.contract.js +4 -4
  62. package/dist/contracts/inventory.contract.js.map +1 -1
  63. package/dist/contracts/issues.contract.d.ts +5 -5
  64. package/dist/contracts/issues.contract.js +6 -6
  65. package/dist/contracts/issues.contract.js.map +1 -1
  66. package/dist/contracts/logs.contract.d.ts +3 -3
  67. package/dist/contracts/logs.contract.d.ts.map +1 -1
  68. package/dist/contracts/logs.contract.js +6 -4
  69. package/dist/contracts/logs.contract.js.map +1 -1
  70. package/dist/contracts/loops.contract.d.ts +6 -6
  71. package/dist/contracts/loops.contract.js +7 -7
  72. package/dist/contracts/loops.contract.js.map +1 -1
  73. package/dist/contracts/netdisk.contract.d.ts +3 -3
  74. package/dist/contracts/netdisk.contract.d.ts.map +1 -1
  75. package/dist/contracts/netdisk.contract.js +5 -4
  76. package/dist/contracts/netdisk.contract.js.map +1 -1
  77. package/dist/contracts/panels.contract.d.ts +3 -3
  78. package/dist/contracts/panels.contract.js +4 -4
  79. package/dist/contracts/panels.contract.js.map +1 -1
  80. package/dist/contracts/personas.contract.d.ts +8 -8
  81. package/dist/contracts/personas.contract.d.ts.map +1 -1
  82. package/dist/contracts/personas.contract.js +10 -9
  83. package/dist/contracts/personas.contract.js.map +1 -1
  84. package/dist/contracts/ports.contract.d.ts +3 -3
  85. package/dist/contracts/ports.contract.d.ts.map +1 -1
  86. package/dist/contracts/ports.contract.js +5 -4
  87. package/dist/contracts/ports.contract.js.map +1 -1
  88. package/dist/contracts/prepush.contract.d.ts +3 -3
  89. package/dist/contracts/prepush.contract.js +4 -4
  90. package/dist/contracts/prepush.contract.js.map +1 -1
  91. package/dist/contracts/providers.contract.d.ts +2 -2
  92. package/dist/contracts/providers.contract.d.ts.map +1 -1
  93. package/dist/contracts/providers.contract.js +5 -3
  94. package/dist/contracts/providers.contract.js.map +1 -1
  95. package/dist/contracts/public.contract.d.ts +3 -3
  96. package/dist/contracts/public.contract.js +4 -4
  97. package/dist/contracts/public.contract.js.map +1 -1
  98. package/dist/contracts/push.contract.d.ts +4 -4
  99. package/dist/contracts/push.contract.d.ts.map +1 -1
  100. package/dist/contracts/push.contract.js +9 -5
  101. package/dist/contracts/push.contract.js.map +1 -1
  102. package/dist/contracts/safety.contract.d.ts +3 -3
  103. package/dist/contracts/safety.contract.js +4 -4
  104. package/dist/contracts/safety.contract.js.map +1 -1
  105. package/dist/contracts/secrets.contract.d.ts +9 -9
  106. package/dist/contracts/secrets.contract.d.ts.map +1 -1
  107. package/dist/contracts/secrets.contract.js +13 -10
  108. package/dist/contracts/secrets.contract.js.map +1 -1
  109. package/dist/contracts/sessions.contract.d.ts +2 -2
  110. package/dist/contracts/sessions.contract.d.ts.map +1 -1
  111. package/dist/contracts/sessions.contract.js +5 -3
  112. package/dist/contracts/sessions.contract.js.map +1 -1
  113. package/dist/contracts/settings.contract.d.ts +11 -9
  114. package/dist/contracts/settings.contract.d.ts.map +1 -1
  115. package/dist/contracts/settings.contract.js +11 -10
  116. package/dist/contracts/settings.contract.js.map +1 -1
  117. package/dist/contracts/share.contract.d.ts +4 -4
  118. package/dist/contracts/share.contract.js +5 -5
  119. package/dist/contracts/share.contract.js.map +1 -1
  120. package/dist/contracts/skills.contract.d.ts +5 -5
  121. package/dist/contracts/skills.contract.js +6 -6
  122. package/dist/contracts/skills.contract.js.map +1 -1
  123. package/dist/contracts/system.contract.d.ts +22 -19
  124. package/dist/contracts/system.contract.d.ts.map +1 -1
  125. package/dist/contracts/system.contract.js +27 -20
  126. package/dist/contracts/system.contract.js.map +1 -1
  127. package/dist/contracts/translator.contract.d.ts +5 -5
  128. package/dist/contracts/translator.contract.js +6 -6
  129. package/dist/contracts/translator.contract.js.map +1 -1
  130. package/dist/contracts/usage.contract.d.ts +4 -4
  131. package/dist/contracts/usage.contract.js +5 -5
  132. package/dist/contracts/usage.contract.js.map +1 -1
  133. package/dist/contracts/vpn.contract.d.ts +4 -4
  134. package/dist/contracts/vpn.contract.d.ts.map +1 -1
  135. package/dist/contracts/vpn.contract.js +6 -5
  136. package/dist/contracts/vpn.contract.js.map +1 -1
  137. package/dist/contracts/workflows.contract.d.ts +9 -9
  138. package/dist/contracts/workflows.contract.js +10 -10
  139. package/dist/contracts/workflows.contract.js.map +1 -1
  140. package/dist/contracts/workspace.contract.d.ts +30 -30
  141. package/dist/contracts/workspace.contract.d.ts.map +1 -1
  142. package/dist/contracts/workspace.contract.js +46 -31
  143. package/dist/contracts/workspace.contract.js.map +1 -1
  144. package/dist/events/land-breakage.d.ts +4 -0
  145. package/dist/events/land-breakage.d.ts.map +1 -0
  146. package/dist/events/land-breakage.js +4 -0
  147. package/dist/events/land-breakage.js.map +1 -0
  148. package/dist/events/system-events.d.ts +2 -0
  149. package/dist/events/system-events.d.ts.map +1 -1
  150. package/dist/index.d.ts +9379 -9350
  151. package/dist/index.d.ts.map +1 -1
  152. package/dist/index.js +13 -1
  153. package/dist/index.js.map +1 -1
  154. package/dist/protocol/procedure-types.d.ts +10 -0
  155. package/dist/protocol/procedure-types.d.ts.map +1 -0
  156. package/dist/protocol/procedure-types.js +2 -0
  157. package/dist/protocol/procedure-types.js.map +1 -0
  158. package/dist/protocol/raw-routes.d.ts +417 -0
  159. package/dist/protocol/raw-routes.d.ts.map +1 -0
  160. package/dist/protocol/raw-routes.js +140 -0
  161. package/dist/protocol/raw-routes.js.map +1 -0
  162. package/dist/protocol/route-meta.d.ts +18 -0
  163. package/dist/protocol/route-meta.d.ts.map +1 -0
  164. package/dist/protocol/route-meta.js +3 -0
  165. package/dist/protocol/route-meta.js.map +1 -0
  166. package/dist/protocol/routes.d.ts +3 -0
  167. package/dist/protocol/routes.d.ts.map +1 -1
  168. package/dist/protocol/routes.js +47 -14
  169. package/dist/protocol/routes.js.map +1 -1
  170. package/dist/schemas/agent.d.ts +33 -0
  171. package/dist/schemas/agent.d.ts.map +1 -1
  172. package/dist/schemas/agent.js +22 -3
  173. package/dist/schemas/agent.js.map +1 -1
  174. package/dist/schemas/agents.d.ts +4 -0
  175. package/dist/schemas/agents.d.ts.map +1 -1
  176. package/dist/schemas/agents.js +4 -0
  177. package/dist/schemas/agents.js.map +1 -1
  178. package/dist/schemas/automations.d.ts +1 -0
  179. package/dist/schemas/automations.d.ts.map +1 -1
  180. package/dist/schemas/devices.d.ts.map +1 -1
  181. package/dist/schemas/devices.js +2 -2
  182. package/dist/schemas/devices.js.map +1 -1
  183. package/dist/schemas/git/git.d.ts +3 -0
  184. package/dist/schemas/git/git.d.ts.map +1 -1
  185. package/dist/schemas/hosts.d.ts +1 -0
  186. package/dist/schemas/hosts.d.ts.map +1 -1
  187. package/dist/schemas/hosts.js +1 -0
  188. package/dist/schemas/hosts.js.map +1 -1
  189. package/dist/schemas/settings.d.ts +1 -0
  190. package/dist/schemas/settings.d.ts.map +1 -1
  191. package/dist/schemas/settings.js +4 -0
  192. package/dist/schemas/settings.js.map +1 -1
  193. package/dist/state/definition.d.ts +4 -0
  194. package/dist/state/definition.d.ts.map +1 -1
  195. package/dist/state/history-state.d.ts.map +1 -1
  196. package/dist/state/history-state.js +2 -12
  197. package/dist/state/history-state.js.map +1 -1
  198. package/dist/state/landed-commit.d.ts +4 -0
  199. package/dist/state/landed-commit.d.ts.map +1 -0
  200. package/dist/state/landed-commit.js +12 -0
  201. package/dist/state/landed-commit.js.map +1 -0
  202. package/package.json +5 -5
  203. package/src/contracts/accounts.contract.ts +7 -7
  204. package/src/contracts/activity.contract.ts +3 -3
  205. package/src/contracts/agent.contract.ts +25 -11
  206. package/src/contracts/agents.contract.ts +48 -30
  207. package/src/contracts/approvals.contract.ts +4 -4
  208. package/src/contracts/areas.contract.ts +5 -4
  209. package/src/contracts/automations.contract.ts +12 -12
  210. package/src/contracts/capabilities.contract.ts +23 -14
  211. package/src/contracts/chores.contract.ts +4 -4
  212. package/src/contracts/ci.contract.ts +6 -6
  213. package/src/contracts/diff.contract.ts +2 -2
  214. package/src/contracts/endpoints.contract.ts +5 -5
  215. package/src/contracts/exit.contract.ts +11 -8
  216. package/src/contracts/extensions.contract.ts +18 -18
  217. package/src/contracts/git.contract.ts +46 -46
  218. package/src/contracts/history.contract.ts +5 -5
  219. package/src/contracts/intentic.contract.ts +5 -4
  220. package/src/contracts/inventory.contract.ts +4 -4
  221. package/src/contracts/issues.contract.ts +6 -6
  222. package/src/contracts/logs.contract.ts +8 -4
  223. package/src/contracts/loops.contract.ts +7 -7
  224. package/src/contracts/netdisk.contract.ts +7 -4
  225. package/src/contracts/panels.contract.ts +4 -4
  226. package/src/contracts/personas.contract.ts +10 -9
  227. package/src/contracts/ports.contract.ts +6 -4
  228. package/src/contracts/prepush.contract.ts +4 -4
  229. package/src/contracts/providers.contract.ts +5 -3
  230. package/src/contracts/public.contract.ts +4 -4
  231. package/src/contracts/push.contract.ts +12 -5
  232. package/src/contracts/safety.contract.ts +4 -4
  233. package/src/contracts/secrets.contract.ts +16 -10
  234. package/src/contracts/sessions.contract.ts +6 -3
  235. package/src/contracts/settings.contract.ts +11 -10
  236. package/src/contracts/share.contract.ts +5 -5
  237. package/src/contracts/skills.contract.ts +6 -6
  238. package/src/contracts/system.contract.ts +32 -20
  239. package/src/contracts/translator.contract.ts +6 -6
  240. package/src/contracts/usage.contract.ts +5 -5
  241. package/src/contracts/vpn.contract.ts +8 -5
  242. package/src/contracts/workflows.contract.ts +10 -10
  243. package/src/contracts/workspace.contract.ts +49 -31
  244. package/src/events/land-breakage.ts +11 -0
  245. package/src/index.ts +23 -1
  246. package/src/models/capability-ledger.test.ts +1 -1
  247. package/src/protocol/procedure-types.ts +24 -0
  248. package/src/protocol/raw-routes.ts +191 -0
  249. package/src/protocol/route-meta.ts +39 -0
  250. package/src/protocol/routes.test.ts +65 -2
  251. package/src/protocol/routes.ts +88 -27
  252. package/src/schemas/agent.test.ts +66 -0
  253. package/src/schemas/agent.ts +184 -154
  254. package/src/schemas/agents.ts +6 -0
  255. package/src/schemas/devices.ts +2 -2
  256. package/src/schemas/hosts.ts +4 -0
  257. package/src/schemas/settings.ts +9 -0
  258. package/src/state/history-state.ts +14 -29
  259. package/src/state/landed-commit.test.ts +18 -0
  260. package/src/state/landed-commit.ts +17 -0
@@ -1,4 +1,4 @@
1
- import { oc } from "@orpc/contract";
1
+ import { procedure } from "../protocol/route-meta.js";
2
2
  import {
3
3
  CommitResultSchema,
4
4
  CommitSchema,
@@ -52,7 +52,7 @@ import { OkSchema, RepoParamSchema } from "../schemas/shared.js";
52
52
  // root-relative dir, URL-encoded. Unknown {repo} throws NOT_FOUND, an escaping path throws BAD_REQUEST. `changes` is
53
53
  // the workspace-wide review set; commit/discard take optional `paths`.
54
54
  export const gitContract = {
55
- changes: oc
55
+ changes: procedure
56
56
  .route({
57
57
  method: "GET",
58
58
  path: "/git/changes",
@@ -62,7 +62,7 @@ export const gitContract = {
62
62
  })
63
63
  .output(GitChangesSchema),
64
64
  // Read-only: repo list, commit log, lazy per-commit diff; commit/discard on the tree are a separate write path.
65
- repos: oc
65
+ repos: procedure
66
66
  .route({
67
67
  method: "GET",
68
68
  path: "/git/repos",
@@ -72,7 +72,7 @@ export const gitContract = {
72
72
  })
73
73
  .output(GitReposSchema),
74
74
  // Same repos with the remote's host and `owner/name`; kept off `repos` since it costs a lookup per repo.
75
- remoteRepos: oc
75
+ remoteRepos: procedure
76
76
  .route({
77
77
  method: "GET",
78
78
  path: "/git/remote-repos",
@@ -81,7 +81,7 @@ export const gitContract = {
81
81
  "The same repo list, but with the forge host and `owner/name` each one's remote points at. Use it to recognise a workspace repo in a list of names that came from somewhere else, such as a set of pull requests. Costs a remote lookup per repo, which is why it is separate from the plain repo list.",
82
82
  })
83
83
  .output(GitRemoteReposSchema),
84
- log: oc
84
+ log: procedure
85
85
  .route({
86
86
  method: "GET",
87
87
  path: "/git/{repo}/log",
@@ -91,7 +91,7 @@ export const gitContract = {
91
91
  })
92
92
  .input(GitLogQuerySchema)
93
93
  .output(GitLogSchema),
94
- commitDiff: oc
94
+ commitDiff: procedure
95
95
  .route({
96
96
  method: "GET",
97
97
  path: "/git/{repo}/commit-diff",
@@ -101,7 +101,7 @@ export const gitContract = {
101
101
  })
102
102
  .input(GitCommitDiffQuerySchema)
103
103
  .output(GitCommitDiffSchema),
104
- commitFileDiff: oc
104
+ commitFileDiff: procedure
105
105
  .route({
106
106
  method: "GET",
107
107
  path: "/git/{repo}/commit-file-diff",
@@ -113,7 +113,7 @@ export const gitContract = {
113
113
  .output(FileDiffSchema),
114
114
  // Non-destructive writes return Ok; HEAD-moving ops return a GitActionResult, a conflict is a value not 500.
115
115
  // `abort` is git's own `--abort`, the only way out of what `operation` reports; daemon verbs self-abort.
116
- operation: oc
116
+ operation: procedure
117
117
  .route({
118
118
  method: "GET",
119
119
  path: "/git/{repo}/operation",
@@ -123,7 +123,7 @@ export const gitContract = {
123
123
  })
124
124
  .input(RepoParamSchema)
125
125
  .output(GitOperationStateSchema),
126
- abort: oc
126
+ abort: procedure
127
127
  .route({
128
128
  method: "POST",
129
129
  path: "/git/{repo}/abort",
@@ -134,7 +134,7 @@ export const gitContract = {
134
134
  .input(RepoParamSchema)
135
135
  .output(GitActionResultSchema),
136
136
  // Moves the branch ref via reflog; requires `previousSha` from the matching read as a concurrency token.
137
- undoable: oc
137
+ undoable: procedure
138
138
  .route({
139
139
  method: "GET",
140
140
  path: "/git/{repo}/undo",
@@ -144,7 +144,7 @@ export const gitContract = {
144
144
  })
145
145
  .input(RepoParamSchema)
146
146
  .output(GitUndoStateSchema),
147
- undo: oc
147
+ undo: procedure
148
148
  .route({
149
149
  method: "POST",
150
150
  path: "/git/{repo}/undo",
@@ -155,7 +155,7 @@ export const gitContract = {
155
155
  .input(GitUndoSchema)
156
156
  .output(GitActionResultSchema),
157
157
  // A stash entry is a commit, read like the log/diff pair; only `drop` is unrecoverable and checkpoints first.
158
- stashes: oc
158
+ stashes: procedure
159
159
  .route({
160
160
  method: "GET",
161
161
  path: "/git/{repo}/stashes",
@@ -165,7 +165,7 @@ export const gitContract = {
165
165
  })
166
166
  .input(RepoParamSchema)
167
167
  .output(StashListSchema),
168
- stashDiff: oc
168
+ stashDiff: procedure
169
169
  .route({
170
170
  method: "GET",
171
171
  path: "/git/{repo}/stash-diff",
@@ -175,7 +175,7 @@ export const gitContract = {
175
175
  })
176
176
  .input(StashDiffQuerySchema)
177
177
  .output(GitCommitDiffSchema),
178
- stashPush: oc
178
+ stashPush: procedure
179
179
  .route({
180
180
  method: "POST",
181
181
  path: "/git/{repo}/stash",
@@ -185,7 +185,7 @@ export const gitContract = {
185
185
  })
186
186
  .input(StashPushSchema)
187
187
  .output(GitActionResultSchema),
188
- stashApply: oc
188
+ stashApply: procedure
189
189
  .route({
190
190
  method: "POST",
191
191
  path: "/git/{repo}/stash/apply",
@@ -195,7 +195,7 @@ export const gitContract = {
195
195
  })
196
196
  .input(StashApplySchema)
197
197
  .output(GitActionResultSchema),
198
- stashDrop: oc
198
+ stashDrop: procedure
199
199
  .route({
200
200
  method: "POST",
201
201
  path: "/git/{repo}/stash/drop",
@@ -205,7 +205,7 @@ export const gitContract = {
205
205
  })
206
206
  .input(StashRefParamSchema)
207
207
  .output(OkSchema),
208
- createBranch: oc
208
+ createBranch: procedure
209
209
  .route({
210
210
  method: "POST",
211
211
  path: "/git/{repo}/branch",
@@ -214,7 +214,7 @@ export const gitContract = {
214
214
  })
215
215
  .input(GitBranchCreateSchema)
216
216
  .output(OkSchema),
217
- createTag: oc
217
+ createTag: procedure
218
218
  .route({
219
219
  method: "POST",
220
220
  path: "/git/{repo}/tag",
@@ -223,7 +223,7 @@ export const gitContract = {
223
223
  })
224
224
  .input(GitTagCreateSchema)
225
225
  .output(OkSchema),
226
- deleteTag: oc
226
+ deleteTag: procedure
227
227
  .route({
228
228
  method: "POST",
229
229
  path: "/git/{repo}/tag/delete",
@@ -232,7 +232,7 @@ export const gitContract = {
232
232
  })
233
233
  .input(GitTagDeleteSchema)
234
234
  .output(OkSchema),
235
- pushTag: oc
235
+ pushTag: procedure
236
236
  .route({
237
237
  method: "POST",
238
238
  path: "/git/{repo}/tag/push",
@@ -242,7 +242,7 @@ export const gitContract = {
242
242
  })
243
243
  .input(GitTagPushSchema)
244
244
  .output(GitActionResultSchema),
245
- checkout: oc
245
+ checkout: procedure
246
246
  .route({
247
247
  method: "POST",
248
248
  path: "/git/{repo}/checkout",
@@ -252,7 +252,7 @@ export const gitContract = {
252
252
  })
253
253
  .input(GitCheckoutSchema)
254
254
  .output(GitActionResultSchema),
255
- cherryPick: oc
255
+ cherryPick: procedure
256
256
  .route({
257
257
  method: "POST",
258
258
  path: "/git/{repo}/cherry-pick",
@@ -262,7 +262,7 @@ export const gitContract = {
262
262
  })
263
263
  .input(GitCommitActionSchema)
264
264
  .output(GitActionResultSchema),
265
- revert: oc
265
+ revert: procedure
266
266
  .route({
267
267
  method: "POST",
268
268
  path: "/git/{repo}/revert",
@@ -272,7 +272,7 @@ export const gitContract = {
272
272
  })
273
273
  .input(GitCommitActionSchema)
274
274
  .output(GitActionResultSchema),
275
- drop: oc
275
+ drop: procedure
276
276
  .route({
277
277
  method: "POST",
278
278
  path: "/git/{repo}/drop",
@@ -282,7 +282,7 @@ export const gitContract = {
282
282
  })
283
283
  .input(GitCommitActionSchema)
284
284
  .output(GitActionResultSchema),
285
- merge: oc
285
+ merge: procedure
286
286
  .route({
287
287
  method: "POST",
288
288
  path: "/git/{repo}/merge",
@@ -292,7 +292,7 @@ export const gitContract = {
292
292
  })
293
293
  .input(GitCommitActionSchema)
294
294
  .output(GitActionResultSchema),
295
- rebase: oc
295
+ rebase: procedure
296
296
  .route({
297
297
  method: "POST",
298
298
  path: "/git/{repo}/rebase",
@@ -302,7 +302,7 @@ export const gitContract = {
302
302
  })
303
303
  .input(GitCommitActionSchema)
304
304
  .output(GitActionResultSchema),
305
- reset: oc
305
+ reset: procedure
306
306
  .route({
307
307
  method: "POST",
308
308
  path: "/git/{repo}/reset",
@@ -312,7 +312,7 @@ export const gitContract = {
312
312
  })
313
313
  .input(GitResetSchema)
314
314
  .output(GitActionResultSchema),
315
- fileDiff: oc
315
+ fileDiff: procedure
316
316
  .route({
317
317
  method: "GET",
318
318
  path: "/git/{repo}/file-diff",
@@ -322,7 +322,7 @@ export const gitContract = {
322
322
  })
323
323
  .input(GitFileDiffQuerySchema)
324
324
  .output(FileDiffSchema),
325
- status: oc
325
+ status: procedure
326
326
  .route({
327
327
  method: "GET",
328
328
  path: "/git/{repo}/status",
@@ -332,7 +332,7 @@ export const gitContract = {
332
332
  })
333
333
  .input(RepoParamSchema)
334
334
  .output(GitStatusSchema),
335
- commit: oc
335
+ commit: procedure
336
336
  .route({
337
337
  method: "POST",
338
338
  path: "/git/{repo}/commit",
@@ -342,7 +342,7 @@ export const gitContract = {
342
342
  })
343
343
  .input(CommitSchema)
344
344
  .output(CommitResultSchema),
345
- discard: oc
345
+ discard: procedure
346
346
  .route({
347
347
  method: "POST",
348
348
  path: "/git/{repo}/discard",
@@ -353,7 +353,7 @@ export const gitContract = {
353
353
  .input(DiscardSchema)
354
354
  .output(OkSchema),
355
355
  // Take a scope, not a path list, so it covers files the caller never enumerated; the worktree is untouched.
356
- stage: oc
356
+ stage: procedure
357
357
  .route({
358
358
  method: "POST",
359
359
  path: "/git/{repo}/stage",
@@ -363,7 +363,7 @@ export const gitContract = {
363
363
  })
364
364
  .input(GitIndexMoveSchema)
365
365
  .output(OkSchema),
366
- unstage: oc
366
+ unstage: procedure
367
367
  .route({
368
368
  method: "POST",
369
369
  path: "/git/{repo}/unstage",
@@ -374,7 +374,7 @@ export const gitContract = {
374
374
  .input(GitIndexMoveSchema)
375
375
  .output(OkSchema),
376
376
  // `branches` includes per-branch ahead/behind, so the switcher renders sync state without a call per branch.
377
- branches: oc
377
+ branches: procedure
378
378
  .route({
379
379
  method: "GET",
380
380
  path: "/git/{repo}/branches",
@@ -384,7 +384,7 @@ export const gitContract = {
384
384
  })
385
385
  .input(RepoParamSchema)
386
386
  .output(GitBranchesSchema),
387
- createBranchAt: oc
387
+ createBranchAt: procedure
388
388
  .route({
389
389
  method: "POST",
390
390
  path: "/git/{repo}/branches",
@@ -394,7 +394,7 @@ export const gitContract = {
394
394
  })
395
395
  .input(GitBranchCreateAtSchema)
396
396
  .output(OkSchema),
397
- deleteBranch: oc
397
+ deleteBranch: procedure
398
398
  .route({
399
399
  method: "POST",
400
400
  path: "/git/{repo}/branches/delete",
@@ -405,7 +405,7 @@ export const gitContract = {
405
405
  .input(GitBranchDeleteSchema)
406
406
  .output(OkSchema),
407
407
  // Reflects the last fetch, not a live check; writes below report a GitActionResult, not a throw, on failure.
408
- remote: oc
408
+ remote: procedure
409
409
  .route({
410
410
  method: "GET",
411
411
  path: "/git/{repo}/remote",
@@ -415,7 +415,7 @@ export const gitContract = {
415
415
  })
416
416
  .input(RepoParamSchema)
417
417
  .output(GitRemoteStateSchema),
418
- fetch: oc
418
+ fetch: procedure
419
419
  .route({
420
420
  method: "POST",
421
421
  path: "/git/{repo}/fetch",
@@ -425,7 +425,7 @@ export const gitContract = {
425
425
  })
426
426
  .input(RepoParamSchema)
427
427
  .output(GitActionResultSchema),
428
- pull: oc
428
+ pull: procedure
429
429
  .route({
430
430
  method: "POST",
431
431
  path: "/git/{repo}/pull",
@@ -436,7 +436,7 @@ export const gitContract = {
436
436
  .input(RepoParamSchema)
437
437
  .output(GitActionResultSchema),
438
438
  // Starts the push and returns at once; poll `pushState` for the verdict, since it runs the pre-push hook.
439
- push: oc
439
+ push: procedure
440
440
  .route({
441
441
  method: "POST",
442
442
  path: "/git/{repo}/push",
@@ -446,7 +446,7 @@ export const gitContract = {
446
446
  })
447
447
  .input(PushSchema)
448
448
  .output(OkSchema),
449
- pushState: oc
449
+ pushState: procedure
450
450
  .route({
451
451
  method: "GET",
452
452
  path: "/git/{repo}/push",
@@ -456,7 +456,7 @@ export const gitContract = {
456
456
  })
457
457
  .input(RepoParamSchema)
458
458
  .output(PushRunSchema),
459
- pushCancel: oc
459
+ pushCancel: procedure
460
460
  .route({
461
461
  method: "POST",
462
462
  path: "/git/{repo}/push/cancel",
@@ -465,7 +465,7 @@ export const gitContract = {
465
465
  })
466
466
  .input(RepoParamSchema)
467
467
  .output(OkSchema),
468
- files: oc
468
+ files: procedure
469
469
  .route({
470
470
  method: "GET",
471
471
  path: "/git/{repo}/files",
@@ -475,7 +475,7 @@ export const gitContract = {
475
475
  })
476
476
  .input(RepoParamSchema)
477
477
  .output(GitFilesSchema),
478
- readFile: oc
478
+ readFile: procedure
479
479
  .route({
480
480
  method: "GET",
481
481
  path: "/git/{repo}/file",
@@ -484,7 +484,7 @@ export const gitContract = {
484
484
  })
485
485
  .input(GitFileQuerySchema)
486
486
  .output(GitFileSchema),
487
- writeFile: oc
487
+ writeFile: procedure
488
488
  .route({
489
489
  method: "PUT",
490
490
  path: "/git/{repo}/file",
@@ -495,7 +495,7 @@ export const gitContract = {
495
495
  .input(GitFileWriteSchema)
496
496
  .output(OkSchema),
497
497
  // Writes, commits only this path, and pushes in one call; no remote, no credentials, wrong branch are reported.
498
- publishFile: oc
498
+ publishFile: procedure
499
499
  .route({
500
500
  method: "POST",
501
501
  path: "/git/{repo}/publish-file",
@@ -1,4 +1,4 @@
1
- import { oc } from "@orpc/contract";
1
+ import { procedure } from "../protocol/route-meta.js";
2
2
  import { FileDiffSchema, SnapshotDiffSchema, SnapshotFileDiffQuerySchema, SnapshotIdSchema, SnapshotsListSchema } from "../schemas/history.js";
3
3
  import { OkSchema } from "../schemas/shared.js";
4
4
 
@@ -6,7 +6,7 @@ import { OkSchema } from "../schemas/shared.js";
6
6
  // the previous visible checkpoint (everything that happened since it, hidden interval captures included); an
7
7
  // unknown id is a handler-thrown NOT_FOUND.
8
8
  export const historyContract = {
9
- list: oc
9
+ list: procedure
10
10
  .route({
11
11
  method: "GET",
12
12
  path: "/history/snapshots",
@@ -15,7 +15,7 @@ export const historyContract = {
15
15
  "The saved states of the whole workspace, taken automatically as work happens. This is the timeline behind undoing a change that was never committed.",
16
16
  })
17
17
  .output(SnapshotsListSchema),
18
- diff: oc
18
+ diff: procedure
19
19
  .route({
20
20
  method: "GET",
21
21
  path: "/history/diff",
@@ -24,7 +24,7 @@ export const historyContract = {
24
24
  })
25
25
  .input(SnapshotIdSchema)
26
26
  .output(SnapshotDiffSchema),
27
- fileDiff: oc
27
+ fileDiff: procedure
28
28
  .route({
29
29
  method: "GET",
30
30
  path: "/history/file-diff",
@@ -33,7 +33,7 @@ export const historyContract = {
33
33
  })
34
34
  .input(SnapshotFileDiffQuerySchema)
35
35
  .output(FileDiffSchema),
36
- restore: oc
36
+ restore: procedure
37
37
  .route({
38
38
  method: "POST",
39
39
  path: "/history/restore",
@@ -1,4 +1,4 @@
1
- import { oc } from "@orpc/contract";
1
+ import { procedure } from "../protocol/route-meta.js";
2
2
  import { streamOf } from "../protocol/routes.js";
3
3
  import { IntenticLineSchema } from "../events/system-events.js";
4
4
  import { IntenticRunSchema } from "../schemas/intentic.js";
@@ -7,7 +7,7 @@ import { OkSchema } from "../schemas/shared.js";
7
7
  // Run the in-sandbox intentic CLI (resolve/plan/apply/deployments/…) and stream its ndjson lines as they
8
8
  // arrive, so the UI sees live progress. A non-zero exit surfaces as a thrown error once the stream ends.
9
9
  export const intenticContract = {
10
- run: oc
10
+ run: procedure
11
11
  .route({
12
12
  method: "POST",
13
13
  path: "/intentic",
@@ -19,7 +19,7 @@ export const intenticContract = {
19
19
  .output(streamOf(IntenticLineSchema)),
20
20
  // Launch the minutes-long apply → adopt reconcile as a one-shot tmux job (session panel-infra-apply) and
21
21
  // return immediately, progress is followed by attaching the terminal, not by holding this request open.
22
- apply: oc
22
+ apply: procedure
23
23
  .route({
24
24
  method: "POST",
25
25
  path: "/intentic/apply",
@@ -32,7 +32,7 @@ export const intenticContract = {
32
32
  // renders as text, persisted to a durable file so the UI shows per-resource progress that survives a page
33
33
  // refresh. Replays from the run's {kind:"start"} then follows live, closing on {kind:"exit"}. GET, like
34
34
  // /events, because it takes no input; reuses the loose IntenticLine shape so no new schema is needed.
35
- applyEvents: oc
35
+ applyEvents: procedure
36
36
  .route({
37
37
  method: "GET",
38
38
  path: "/intentic/apply/events",
@@ -40,5 +40,6 @@ export const intenticContract = {
40
40
  description:
41
41
  "The same progress the terminal shows, as structured events, kept on disk so a page refresh does not lose it. It replays from the start of the run and then follows live, closing when the run ends.",
42
42
  })
43
+ .meta({ stream: true })
43
44
  .output(streamOf(IntenticLineSchema)),
44
45
  };
@@ -1,11 +1,11 @@
1
- import { oc } from "@orpc/contract";
1
+ import { procedure } from "../protocol/route-meta.js";
2
2
  import { AddInventoryInputSchema, InventoryListSchema, InventoryNameParamSchema } from "../schemas/inventory.js";
3
3
 
4
4
  // The i.have.* / i.want.service entries in deploy.config.ts's managed region. add/remove rewrite the region and
5
5
  // commit it (mirroring an agent edit) and return the full updated list so the UI re-renders from one response.
6
6
  // Deploy-target hosts self-register out-of-band via the daemon's plain /enroll route (connect-host script).
7
7
  export const inventoryContract = {
8
- list: oc
8
+ list: procedure
9
9
  .route({
10
10
  method: "GET",
11
11
  path: "/inventory",
@@ -13,7 +13,7 @@ export const inventoryContract = {
13
13
  description: "What the deployment configuration says this setup owns and what it wants provisioned.",
14
14
  })
15
15
  .output(InventoryListSchema),
16
- add: oc
16
+ add: procedure
17
17
  .route({
18
18
  method: "POST",
19
19
  path: "/inventory",
@@ -23,7 +23,7 @@ export const inventoryContract = {
23
23
  })
24
24
  .input(AddInventoryInputSchema)
25
25
  .output(InventoryListSchema),
26
- remove: oc
26
+ remove: procedure
27
27
  .route({
28
28
  method: "DELETE",
29
29
  path: "/inventory/{name}",
@@ -1,10 +1,10 @@
1
- import { oc } from "@orpc/contract";
1
+ import { procedure } from "../protocol/route-meta.js";
2
2
  import { IssueIdParamSchema, IssueInstallsSchema, IssueIntakeIdParamSchema, IssuesListSchema, IssueStatusInputSchema } from "../schemas/issues.js";
3
3
  import { OkSchema } from "../schemas/shared.js";
4
4
 
5
5
  /* The issues inbox: bug reports that arrived from the owner's own sites and apps, grouped by fingerprint. */
6
6
  export const issuesContract = {
7
- list: oc
7
+ list: procedure
8
8
  .route({
9
9
  method: "GET",
10
10
  path: "/issues",
@@ -12,7 +12,7 @@ export const issuesContract = {
12
12
  description: "Everything that has crashed or been written in, grouped so a crash that hit a thousand people is one row with a count.",
13
13
  })
14
14
  .output(IssuesListSchema),
15
- status: oc
15
+ status: procedure
16
16
  .route({
17
17
  method: "POST",
18
18
  path: "/issues/{id}/status",
@@ -21,7 +21,7 @@ export const issuesContract = {
21
21
  })
22
22
  .input(IssueStatusInputSchema)
23
23
  .output(OkSchema),
24
- investigate: oc
24
+ investigate: procedure
25
25
  .route({
26
26
  method: "POST",
27
27
  path: "/issues/{id}/investigate",
@@ -31,7 +31,7 @@ export const issuesContract = {
31
31
  })
32
32
  .input(IssueIdParamSchema)
33
33
  .output(OkSchema),
34
- remove: oc
34
+ remove: procedure
35
35
  .route({
36
36
  method: "DELETE",
37
37
  path: "/issues/{id}",
@@ -40,7 +40,7 @@ export const issuesContract = {
40
40
  })
41
41
  .input(IssueIdParamSchema)
42
42
  .output(OkSchema),
43
- installs: oc
43
+ installs: procedure
44
44
  .route({
45
45
  method: "GET",
46
46
  path: "/issues/installs/{automationId}",
@@ -1,4 +1,4 @@
1
- import { oc } from "@orpc/contract";
1
+ import { procedure } from "../protocol/route-meta.js";
2
2
  import {
3
3
  ClientDiagnosticsAcceptedSchema,
4
4
  ClientDiagnosticsReportSchema,
@@ -7,10 +7,13 @@ import {
7
7
  LogsListSchema,
8
8
  } from "../schemas/logs.js";
9
9
 
10
+ // Daemon logs are the operator's diagnostic, not a stakeholder's feed, and no token's.
11
+ const logRoute = procedure.meta({ floor: "maintainer", control: "never" });
12
+
10
13
  // Daemon-owned debug logs (historyRoot/logs): terminal captures, CLI run logs, daemon.log; read-only, since only the
11
14
  // daemon/tmux write them. `report` is the one write, since the browser is the only witness to its own crashes.
12
15
  export const logsContract = {
13
- list: oc
16
+ list: logRoute
14
17
  .route({
15
18
  method: "GET",
16
19
  path: "/logs",
@@ -19,7 +22,7 @@ export const logsContract = {
19
22
  "Every log file the daemon owns: captured terminal output, command runs, and the daemon's own log. Read-only, because only the sandbox writes them.",
20
23
  })
21
24
  .output(LogsListSchema),
22
- read: oc
25
+ read: logRoute
23
26
  .route({
24
27
  method: "GET",
25
28
  path: "/logs/file",
@@ -29,7 +32,8 @@ export const logsContract = {
29
32
  .input(LogReadQuerySchema)
30
33
  .output(LogReadSchema),
31
34
  // The one write route; lands in its own file, never daemon.log, floored at viewer role for a crashed page.
32
- report: oc
35
+ report: procedure
36
+ .meta({ floor: "viewer", control: "never" })
33
37
  .route({
34
38
  method: "POST",
35
39
  path: "/logs/client",
@@ -1,4 +1,4 @@
1
- import { oc } from "@orpc/contract";
1
+ import { procedure } from "../protocol/route-meta.js";
2
2
  import {
3
3
  LoopDesignIdParamSchema,
4
4
  LoopDesignSaveSchema,
@@ -16,7 +16,7 @@ import { OkSchema } from "../schemas/shared.js";
16
16
  // with the design's fields. `start` acks at once and runs detached; the record comes back, not the outcome.
17
17
  export const loopsContract = {
18
18
  // Kept after the loop ends: the iteration history is the answer to why it stopped when it did.
19
- list: oc
19
+ list: procedure
20
20
  .route({
21
21
  method: "GET",
22
22
  path: "/loops",
@@ -26,7 +26,7 @@ export const loopsContract = {
26
26
  })
27
27
  .output(LoopsListSchema),
28
28
  // Rejects an already-looping conversation; a fresh conversation id opens it, like a first turn.
29
- start: oc
29
+ start: procedure
30
30
  .route({
31
31
  method: "POST",
32
32
  path: "/loops",
@@ -37,7 +37,7 @@ export const loopsContract = {
37
37
  .input(LoopSchema)
38
38
  .output(LoopRecordSchema),
39
39
  // Stops future rounds only; the round in flight keeps going. Use /agent/stop to kill it too.
40
- stop: oc
40
+ stop: procedure
41
41
  .route({
42
42
  method: "POST",
43
43
  path: "/loops/{conversationId}/stop",
@@ -49,7 +49,7 @@ export const loopsContract = {
49
49
  .output(OkSchema),
50
50
 
51
51
  // A saved loop is the same loop with its goal left blank, not a separate feature.
52
- designs: oc
52
+ designs: procedure
53
53
  .route({
54
54
  method: "GET",
55
55
  path: "/loops/designs",
@@ -59,7 +59,7 @@ export const loopsContract = {
59
59
  })
60
60
  .output(LoopDesignsListSchema),
61
61
  // Names create vs replace explicitly, rather than upserting; refuses a design with nothing to produce or check.
62
- saveDesign: oc
62
+ saveDesign: procedure
63
63
  .route({
64
64
  method: "POST",
65
65
  path: "/loops/designs",
@@ -70,7 +70,7 @@ export const loopsContract = {
70
70
  .input(LoopDesignSaveSchema)
71
71
  .output(LoopDesignSchema),
72
72
  // Deleting a design does not stop a loop running from it; it already copied the fields it needed.
73
- removeDesign: oc
73
+ removeDesign: procedure
74
74
  .route({
75
75
  method: "DELETE",
76
76
  path: "/loops/designs/{id}",