@treeseed/sdk 0.13.0-rc.12 → 0.13.0-rc.121

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 (510) hide show
  1. package/README.md +23 -9
  2. package/dist/.treeseed-build-complete.json +1 -0
  3. package/dist/accounts/account-contracts.d.ts +6 -0
  4. package/dist/agent-capacity/allocation.d.ts +0 -3
  5. package/dist/agent-capacity/allocation.js +0 -221
  6. package/dist/agent-capacity/artifact-mutation-receipt.d.ts +1 -1
  7. package/dist/agent-capacity/artifacts.d.ts +17 -1
  8. package/dist/agent-capacity/contracts/capacity/assignments/agent-execution.d.ts +4395 -0
  9. package/dist/agent-capacity/contracts/capacity/assignments/agent-execution.js +176 -0
  10. package/dist/agent-capacity/contracts/capacity/assignments/assignment-context-pack.d.ts +304 -0
  11. package/dist/agent-capacity/contracts/capacity/assignments/assignment-context-pack.js +44 -0
  12. package/dist/agent-capacity/contracts/capacity/assignments/assignment-records.d.ts +22 -2
  13. package/dist/agent-capacity/contracts/capacity/assignments/context-pack-compiler.d.ts +25 -0
  14. package/dist/agent-capacity/contracts/capacity/assignments/context-pack-compiler.js +67 -0
  15. package/dist/agent-capacity/contracts/capacity/communication/communication-records.d.ts +1 -1
  16. package/dist/agent-capacity/contracts/capacity/providers/supply-policy.d.ts +0 -2
  17. package/dist/agent-capacity/contracts/capacity/workdays/assignment-allocation.d.ts +82 -0
  18. package/dist/agent-capacity/contracts/capacity/workdays/assignment-allocation.js +115 -0
  19. package/dist/agent-capacity/contracts/capacity/workdays/capability-accounting.d.ts +142 -0
  20. package/dist/agent-capacity/contracts/capacity/workdays/capability-accounting.js +51 -0
  21. package/dist/agent-capacity/contracts/capacity/workdays/workday-allocation.d.ts +331 -0
  22. package/dist/agent-capacity/contracts/capacity/workdays/workday-allocation.js +135 -0
  23. package/dist/agent-capacity/contracts/capacity/workdays/workday-records.d.ts +3 -22
  24. package/dist/agent-capacity/contracts/configuration/configuration.js +1 -1
  25. package/dist/agent-capacity/contracts/operations/agent-team-clone.d.ts +218 -0
  26. package/dist/agent-capacity/contracts/operations/agent-team-clone.js +57 -0
  27. package/dist/agent-capacity/contracts/projects/agents/project-agent-class.d.ts +0 -1
  28. package/dist/agent-capacity/contracts/runtime/runtime-observability.d.ts +3 -3
  29. package/dist/agent-capacity/contracts/support/decision-work.d.ts +3 -27
  30. package/dist/agent-capacity/contracts/support/execution-graph.d.ts +1087 -0
  31. package/dist/agent-capacity/contracts/support/execution-graph.js +120 -0
  32. package/dist/agent-capacity/contracts/support/time-capacity.d.ts +0 -14
  33. package/dist/agent-capacity/contracts/support/time-capacity.js +1 -8
  34. package/dist/agent-capacity/validation/activity-profile.d.ts +1 -1
  35. package/dist/agent-capacity/validation/activity-profile.js +3 -259
  36. package/dist/agent-capacity/validation/agent-definition-schema.d.ts +2687 -8933
  37. package/dist/agent-capacity/validation/agent-definition-schema.js +64 -174
  38. package/dist/agent-capacity/validation/agent-lab-forensics-schema.d.ts +23 -23
  39. package/dist/agent-capacity/validation/assignment-records.js +1 -1
  40. package/dist/agent-capacity/validation/configuration.d.ts +1 -1
  41. package/dist/agent-capacity/validation/configuration.js +1 -2
  42. package/dist/agent-capacity/validation/execution/execution-graph.d.ts +1 -0
  43. package/dist/agent-capacity/validation/execution/execution-graph.js +16 -0
  44. package/dist/agent-capacity/validation/index.d.ts +2 -1
  45. package/dist/agent-capacity/validation/index.js +2 -1
  46. package/dist/capacity/agents/agent-capacity.d.ts +9 -1
  47. package/dist/capacity/agents/agent-capacity.js +8 -1
  48. package/dist/capacity-provider/capability-ontology.d.ts +1495 -0
  49. package/dist/capacity-provider/capability-ontology.js +221 -0
  50. package/dist/capacity-provider/client.d.ts +69 -0
  51. package/dist/capacity-provider/client.js +22 -1
  52. package/dist/capacity-provider/contracts/capacity-facts.d.ts +14 -0
  53. package/dist/capacity-provider/contracts/environment-profiles.d.ts +255 -0
  54. package/dist/capacity-provider/contracts/environment-profiles.js +71 -0
  55. package/dist/capacity-provider/contracts/governance.d.ts +109 -35
  56. package/dist/capacity-provider/contracts/index.d.ts +1 -0
  57. package/dist/capacity-provider/contracts/index.js +1 -0
  58. package/dist/capacity-provider/core-capability-catalog.d.ts +47 -0
  59. package/dist/capacity-provider/core-capability-catalog.js +49 -0
  60. package/dist/capacity-provider/environment-catalog.d.ts +877 -0
  61. package/dist/capacity-provider/environment-catalog.js +116 -0
  62. package/dist/capacity-provider/index.d.ts +5 -0
  63. package/dist/capacity-provider/index.js +5 -0
  64. package/dist/capacity-provider/install-configuration.d.ts +39 -0
  65. package/dist/capacity-provider/install-configuration.js +18 -0
  66. package/dist/capacity-provider/sandbox-contracts.d.ts +602 -0
  67. package/dist/capacity-provider/sandbox-contracts.js +90 -0
  68. package/dist/capacity-provider/sandbox.d.ts +2 -0
  69. package/dist/capacity-provider/sandbox.js +2 -0
  70. package/dist/capacity-provider/source-workspace.d.ts +642 -0
  71. package/dist/capacity-provider/source-workspace.js +126 -0
  72. package/dist/capacity-provider/validation.d.ts +2 -2
  73. package/dist/capacity-provider/validation.js +91 -55
  74. package/dist/configuration/secrets-capability.d.ts +5 -1
  75. package/dist/configuration/secrets-capability.js +5 -1
  76. package/dist/content/contracts.d.ts +1 -1
  77. package/dist/content/validation/agent-operational-content-schemas.d.ts +431 -780
  78. package/dist/content/validation/agent-operational-content-schemas.js +29 -57
  79. package/dist/content/validation/auxiliary-content-schemas.d.ts +208 -208
  80. package/dist/content/validation/content-model-schemas.d.ts +9362 -19159
  81. package/dist/content/validation/content-model-schemas.js +172 -43
  82. package/dist/content/validation/portable-content-data.d.ts +453 -1761
  83. package/dist/content/validation/portable-content-data.js +5 -4
  84. package/dist/deployment/ai/storage.d.ts +158 -0
  85. package/dist/deployment/ai/storage.js +32 -0
  86. package/dist/deployment/ai-hosting.d.ts +297 -0
  87. package/dist/deployment/ai-hosting.js +63 -0
  88. package/dist/deployment/ai-instance.d.ts +65 -0
  89. package/dist/deployment/ai-instance.js +30 -0
  90. package/dist/deployment/ai-mode.d.ts +454 -0
  91. package/dist/deployment/ai-mode.js +67 -0
  92. package/dist/deployment/canonical.d.ts +2 -0
  93. package/dist/deployment/canonical.js +17 -0
  94. package/dist/deployment/catalog.d.ts +16 -0
  95. package/dist/deployment/catalog.js +48 -0
  96. package/dist/deployment/hosted-topology-template.d.ts +449 -0
  97. package/dist/deployment/hosted-topology-template.js +56 -0
  98. package/dist/deployment/hosted-topology.d.ts +2698 -0
  99. package/dist/deployment/hosted-topology.js +468 -0
  100. package/dist/deployment/index.d.ts +13 -0
  101. package/dist/deployment/index.js +13 -0
  102. package/dist/deployment/postgres/contracts.d.ts +418 -0
  103. package/dist/deployment/postgres/contracts.js +83 -0
  104. package/dist/deployment/postgres/requirements.d.ts +15 -0
  105. package/dist/deployment/postgres/requirements.js +32 -0
  106. package/dist/deployment/postgres/transfer.d.ts +97 -0
  107. package/dist/deployment/postgres/transfer.js +29 -0
  108. package/dist/deployment/schemas.d.ts +8625 -0
  109. package/dist/deployment/schemas.js +455 -0
  110. package/dist/deployment/topology.d.ts +9 -0
  111. package/dist/deployment/topology.js +35 -0
  112. package/dist/development/index.d.ts +1 -0
  113. package/dist/development/index.js +1 -0
  114. package/dist/development/schemas.d.ts +3594 -0
  115. package/dist/development/schemas.js +204 -0
  116. package/dist/development/session-migration.d.ts +3 -0
  117. package/dist/development/session-migration.js +25 -0
  118. package/dist/entrypoints/clients/control-plane-client.d.ts +9 -1
  119. package/dist/entrypoints/clients/control-plane-client.js +17 -5
  120. package/dist/graph/context-query-contracts.d.ts +16 -1
  121. package/dist/graph/context-query-contracts.js +5 -0
  122. package/dist/guarantees/evidence-trust.d.ts +32 -0
  123. package/dist/guarantees/evidence-trust.js +47 -0
  124. package/dist/guarantees/index.d.ts +130 -0
  125. package/dist/guarantees/index.js +44 -0
  126. package/dist/identity/browser-session.d.ts +233 -0
  127. package/dist/identity/browser-session.js +51 -0
  128. package/dist/identity/contracts.d.ts +191 -0
  129. package/dist/identity/contracts.js +72 -0
  130. package/dist/identity/index.d.ts +3 -0
  131. package/dist/identity/index.js +3 -0
  132. package/dist/identity/runtime.d.ts +186 -0
  133. package/dist/identity/runtime.js +49 -0
  134. package/dist/model-registry/agent-operational-models.d.ts +1 -1
  135. package/dist/model-registry/agent-operational-models.js +1 -4
  136. package/dist/model-registry/build-builtin-model-registry.js +44 -72
  137. package/dist/operator-contracts/canonical-command-tree.js +397 -43
  138. package/dist/operator-contracts/catalog/admin-account-team-operations.d.ts +36 -0
  139. package/dist/operator-contracts/catalog/admin-account-team-operations.js +52 -0
  140. package/dist/operator-contracts/catalog/agents/agent-team-clone-operations.d.ts +75 -0
  141. package/dist/operator-contracts/catalog/agents/agent-team-clone-operations.js +42 -0
  142. package/dist/operator-contracts/catalog/capability-ontology-operations.d.ts +163 -0
  143. package/dist/operator-contracts/catalog/capability-ontology-operations.js +24 -0
  144. package/dist/operator-contracts/catalog/commands/command-tree-builders.d.ts +60 -0
  145. package/dist/operator-contracts/catalog/commands/command-tree-builders.js +191 -0
  146. package/dist/operator-contracts/catalog/communication-operations.d.ts +439 -0
  147. package/dist/operator-contracts/catalog/communication-operations.js +92 -0
  148. package/dist/operator-contracts/catalog/control-plane-catalog.d.ts +6 -0
  149. package/dist/operator-contracts/catalog/control-plane-catalog.js +18 -0
  150. package/dist/operator-contracts/catalog/execution/execution-operations.d.ts +36 -0
  151. package/dist/operator-contracts/catalog/execution/execution-operations.js +39 -0
  152. package/dist/operator-contracts/catalog/hosted-topology-operations.d.ts +399 -0
  153. package/dist/operator-contracts/catalog/hosted-topology-operations.js +79 -0
  154. package/dist/operator-contracts/catalog/inbox-operations.d.ts +265 -0
  155. package/dist/operator-contracts/catalog/inbox-operations.js +36 -0
  156. package/dist/operator-contracts/catalog/infrastructure/ai-instance-operations.d.ts +53 -0
  157. package/dist/operator-contracts/catalog/infrastructure/ai-instance-operations.js +23 -0
  158. package/dist/operator-contracts/catalog/infrastructure/command-tree-paths.d.ts +3 -0
  159. package/dist/operator-contracts/catalog/infrastructure/command-tree-paths.js +15 -0
  160. package/dist/operator-contracts/catalog/knowledge-share-operations.d.ts +127 -0
  161. package/dist/operator-contracts/catalog/knowledge-share-operations.js +25 -0
  162. package/dist/operator-contracts/catalog/provider-environment-commands.d.ts +4 -0
  163. package/dist/operator-contracts/catalog/provider-environment-commands.js +69 -0
  164. package/dist/operator-contracts/catalog/provider-environment-operations.d.ts +41 -0
  165. package/dist/operator-contracts/catalog/provider-environment-operations.js +61 -0
  166. package/dist/operator-contracts/catalog/services/identity-commands.d.ts +2 -0
  167. package/dist/operator-contracts/catalog/services/identity-commands.js +13 -0
  168. package/dist/operator-contracts/catalog/services/secret-commands.d.ts +2 -0
  169. package/dist/operator-contracts/catalog/services/secret-commands.js +31 -0
  170. package/dist/operator-contracts/catalog/services/secret-operations.d.ts +62 -0
  171. package/dist/operator-contracts/catalog/services/secret-operations.js +51 -0
  172. package/dist/operator-contracts/catalog/treeai-operations.d.ts +13 -0
  173. package/dist/operator-contracts/catalog/treeai-operations.js +61 -0
  174. package/dist/operator-contracts/catalog/workdays/profile-commands.d.ts +4 -0
  175. package/dist/operator-contracts/catalog/workdays/profile-commands.js +20 -0
  176. package/dist/operator-contracts/catalog/workdays/profile-operations.d.ts +41 -0
  177. package/dist/operator-contracts/catalog/workdays/profile-operations.js +50 -0
  178. package/dist/operator-contracts/catalog/workdays/selection-commands.d.ts +3 -0
  179. package/dist/operator-contracts/catalog/workdays/selection-commands.js +29 -0
  180. package/dist/operator-contracts/command-tree.d.ts +29 -0
  181. package/dist/operator-contracts/command-tree.js +50 -0
  182. package/dist/operator-contracts/communication/addressing.d.ts +8 -0
  183. package/dist/operator-contracts/communication/addressing.js +57 -0
  184. package/dist/operator-contracts/communication/contracts.d.ts +1824 -0
  185. package/dist/operator-contracts/communication/contracts.js +190 -0
  186. package/dist/operator-contracts/control-plane-operation.d.ts +9 -0
  187. package/dist/operator-contracts/control-plane-operation.js +12 -2
  188. package/dist/operator-contracts/control-plane-operations.d.ts +2356 -209
  189. package/dist/operator-contracts/control-plane-operations.js +239 -102
  190. package/dist/operator-contracts/inbox/contracts.d.ts +1111 -0
  191. package/dist/operator-contracts/inbox/contracts.js +138 -0
  192. package/dist/operator-contracts/index.d.ts +6 -1
  193. package/dist/operator-contracts/index.js +6 -1
  194. package/dist/operator-contracts/knowledge/contracts.d.ts +130 -0
  195. package/dist/operator-contracts/knowledge/contracts.js +39 -0
  196. package/dist/operator-contracts/mcp.d.ts +5 -0
  197. package/dist/operator-contracts/mcp.js +61 -0
  198. package/dist/operator-contracts/oauth.d.ts +45 -0
  199. package/dist/operator-contracts/oauth.js +7 -0
  200. package/dist/operator-contracts/operation-builder.d.ts +18 -0
  201. package/dist/operator-contracts/operation-builder.js +78 -0
  202. package/dist/operator-contracts/seed/seed-bundle.d.ts +138 -0
  203. package/dist/operator-contracts/seed/seed-bundle.js +68 -0
  204. package/dist/operator-contracts/workday-lifecycle.d.ts +21 -28
  205. package/dist/operator-contracts/workday-lifecycle.js +46 -8
  206. package/dist/platform/contracts.d.ts +429 -0
  207. package/dist/platform/contracts.js +93 -0
  208. package/dist/platform/index.d.ts +6 -0
  209. package/dist/platform/index.js +6 -0
  210. package/dist/platform/inventory.d.ts +11 -0
  211. package/dist/platform/inventory.js +53 -0
  212. package/dist/platform/project-create.d.ts +49 -0
  213. package/dist/platform/project-create.js +75 -0
  214. package/dist/platform/schemas.d.ts +986 -0
  215. package/dist/platform/schemas.js +73 -0
  216. package/dist/platform/verification.d.ts +9 -0
  217. package/dist/platform/verification.js +104 -0
  218. package/dist/platform/workset.d.ts +21 -0
  219. package/dist/platform/workset.js +106 -0
  220. package/dist/sdk-types/support/sdk-model-names.d.ts +1 -1
  221. package/dist/sdk-types/support/sdk-model-names.js +0 -3
  222. package/dist/secrets-capability/github-actions-encryption.d.ts +2 -0
  223. package/dist/secrets-capability/github-actions-encryption.js +11 -0
  224. package/dist/secrets-capability/provider-operation-contracts.d.ts +15 -1
  225. package/dist/secrets-capability/secret-contracts.d.ts +33 -0
  226. package/dist/secrets-capability/secret-contracts.js +49 -0
  227. package/dist/secrets-capability/service-provider-contracts.d.ts +5 -3
  228. package/dist/secrets-capability/service-provider-contracts.js +66 -50
  229. package/dist/secrets-capability/shared-access.d.ts +51 -0
  230. package/dist/secrets-capability/shared-access.js +36 -0
  231. package/dist/secrets-capability/shared-resources.d.ts +376 -0
  232. package/dist/secrets-capability/shared-resources.js +91 -0
  233. package/dist/secrets-capability/vault-contracts.d.ts +132 -0
  234. package/dist/secrets-capability/vault-contracts.js +56 -0
  235. package/dist/security/encrypted-envelope.d.ts +177 -0
  236. package/dist/security/encrypted-envelope.js +34 -0
  237. package/dist/security/envelope-codec.d.ts +38 -0
  238. package/dist/security/envelope-codec.js +96 -0
  239. package/dist/security/index.d.ts +2 -0
  240. package/dist/security/index.js +2 -0
  241. package/dist/site-contracts/catalog.d.ts +16 -0
  242. package/dist/site-contracts/catalog.js +19 -0
  243. package/dist/site-contracts/cloudflare.d.ts +48 -0
  244. package/dist/site-contracts/platform.d.ts +94 -0
  245. package/dist/site-contracts/plugin.d.ts +63 -0
  246. package/dist/site-contracts/plugin.js +26 -0
  247. package/dist/treeai/catalog.d.ts +1 -0
  248. package/dist/treeai/catalog.js +1 -0
  249. package/dist/treeai/client.d.ts +793 -0
  250. package/dist/treeai/client.js +44 -0
  251. package/dist/treeai/contract.d.ts +41 -0
  252. package/dist/treeai/contract.js +51 -0
  253. package/dist/treeai/generated/upstream.d.ts +770 -0
  254. package/dist/treeai/generated/upstream.js +4 -0
  255. package/dist/treeai/index.d.ts +4 -0
  256. package/dist/treeai/index.js +4 -0
  257. package/dist/treedx/client.d.ts +605 -0
  258. package/dist/treedx/client.js +39 -0
  259. package/dist/treedx/contract.d.ts +32 -0
  260. package/dist/treedx/contract.js +63 -0
  261. package/dist/treedx/index.d.ts +3 -0
  262. package/dist/treedx/index.js +2 -0
  263. package/dist/treedx/types.d.ts +8 -7
  264. package/dist/treedx/types.js +0 -7
  265. package/dist/types/agents/agent-activity-profile.d.ts +42 -98
  266. package/dist/types/agents/agent-activity-profile.js +23 -0
  267. package/dist/types/agents/agent-trigger-kinds.d.ts +3 -5
  268. package/dist/types/agents/agent-trigger-kinds.js +1 -13
  269. package/dist/types/agents/execution-run-ref.d.ts +1 -8
  270. package/package.json +64 -11
  271. package/dist/agent-capacity/authority/agent-authority-presets.d.ts +0 -13
  272. package/dist/agent-capacity/authority/agent-authority-presets.js +0 -106
  273. package/dist/agent-capacity/contracts/operations/workflow-promotion.d.ts +0 -24
  274. package/dist/agent-capacity/policy/capacity/allocations/allocation-hierarchy.d.ts +0 -29
  275. package/dist/agent-capacity/policy/capacity/allocations/allocation-hierarchy.js +0 -110
  276. package/dist/agent-capacity/validation/workflow-promotion.d.ts +0 -2
  277. package/dist/agent-capacity/validation/workflow-promotion.js +0 -34
  278. package/dist/operator-contracts/workday-profile.d.ts +0 -72
  279. package/dist/operator-contracts/workday-profile.js +0 -106
  280. package/dist/secrets-capability/service-vault-contracts.d.ts +0 -61
  281. package/dist/secrets-capability/service-vault-contracts.js +0 -39
  282. package/dist/treedx/accounts/auth.d.ts +0 -17
  283. package/dist/treedx/accounts/auth.js +0 -48
  284. package/dist/treedx/client/accounts/contracts/auth-mode.d.ts +0 -3
  285. package/dist/treedx/client/accounts/contracts/auth-mode.js +0 -6
  286. package/dist/treedx/client/build/creation/build-context.d.ts +0 -3
  287. package/dist/treedx/client/build/creation/build-context.js +0 -7
  288. package/dist/treedx/client/build/creation/build-snapshot.d.ts +0 -3
  289. package/dist/treedx/client/build/creation/build-snapshot.js +0 -8
  290. package/dist/treedx/client/capacity/allocations/contracts/put-capability-grant.d.ts +0 -3
  291. package/dist/treedx/client/capacity/allocations/contracts/put-capability-grant.js +0 -7
  292. package/dist/treedx/client/capacity/allocations/queries/list-capability-grants.d.ts +0 -6
  293. package/dist/treedx/client/capacity/allocations/queries/list-capability-grants.js +0 -10
  294. package/dist/treedx/client/methods.d.ts +0 -102
  295. package/dist/treedx/client/methods.js +0 -209
  296. package/dist/treedx/client/persistence/contracts/restore-storage.d.ts +0 -3
  297. package/dist/treedx/client/persistence/contracts/restore-storage.js +0 -6
  298. package/dist/treedx/client/persistence/lifecycle/verify-storage-restore.d.ts +0 -3
  299. package/dist/treedx/client/persistence/lifecycle/verify-storage-restore.js +0 -6
  300. package/dist/treedx/client/repositories/creation/register-repository.d.ts +0 -3
  301. package/dist/treedx/client/repositories/creation/register-repository.js +0 -7
  302. package/dist/treedx/client/repositories/queries/get-repository.d.ts +0 -3
  303. package/dist/treedx/client/repositories/queries/get-repository.js +0 -7
  304. package/dist/treedx/client/repositories/queries/list-repository-paths.d.ts +0 -3
  305. package/dist/treedx/client/repositories/queries/list-repository-paths.js +0 -7
  306. package/dist/treedx/client/repositories/queries/list-repository-refs.d.ts +0 -3
  307. package/dist/treedx/client/repositories/queries/list-repository-refs.js +0 -12
  308. package/dist/treedx/client/repositories/queries/query-repository.d.ts +0 -3
  309. package/dist/treedx/client/repositories/queries/query-repository.js +0 -7
  310. package/dist/treedx/client/repositories/queries/read-repository-file.d.ts +0 -3
  311. package/dist/treedx/client/repositories/queries/read-repository-file.js +0 -6
  312. package/dist/treedx/client/repositories/queries/read-repository-files.d.ts +0 -3
  313. package/dist/treedx/client/repositories/queries/read-repository-files.js +0 -7
  314. package/dist/treedx/client/repositories/queries/search-repository-files.d.ts +0 -3
  315. package/dist/treedx/client/repositories/queries/search-repository-files.js +0 -7
  316. package/dist/treedx/client/support/contracts/treedx/artifacts/contracts/download-artifact.d.ts +0 -3
  317. package/dist/treedx/client/support/contracts/treedx/artifacts/contracts/download-artifact.js +0 -9
  318. package/dist/treedx/client/support/contracts/treedx/authorization/contracts/whoami.d.ts +0 -3
  319. package/dist/treedx/client/support/contracts/treedx/authorization/contracts/whoami.js +0 -6
  320. package/dist/treedx/client/support/contracts/treedx/graph/contracts/parse-context-dsl.d.ts +0 -3
  321. package/dist/treedx/client/support/contracts/treedx/graph/contracts/parse-context-dsl.js +0 -7
  322. package/dist/treedx/client/support/contracts/treedx/health/contracts/deep-health.d.ts +0 -5
  323. package/dist/treedx/client/support/contracts/treedx/health/contracts/deep-health.js +0 -7
  324. package/dist/treedx/client/support/contracts/treedx/health/contracts/health.d.ts +0 -3
  325. package/dist/treedx/client/support/contracts/treedx/health/contracts/health.js +0 -6
  326. package/dist/treedx/client/support/contracts/treedx/health/contracts/metrics.d.ts +0 -3
  327. package/dist/treedx/client/support/contracts/treedx/health/contracts/metrics.js +0 -7
  328. package/dist/treedx/client/support/contracts/treedx/health/contracts/prometheus-metrics.d.ts +0 -2
  329. package/dist/treedx/client/support/contracts/treedx/health/contracts/prometheus-metrics.js +0 -19
  330. package/dist/treedx/client/support/contracts/treedx/health/contracts/ready.d.ts +0 -3
  331. package/dist/treedx/client/support/contracts/treedx/health/contracts/ready.js +0 -7
  332. package/dist/treedx/client/support/contracts/treedx/health/contracts/status.d.ts +0 -3
  333. package/dist/treedx/client/support/contracts/treedx/health/contracts/status.js +0 -6
  334. package/dist/treedx/client/support/contracts/treedx/repositories/contracts/commit.d.ts +0 -3
  335. package/dist/treedx/client/support/contracts/treedx/repositories/contracts/commit.js +0 -7
  336. package/dist/treedx/client/support/contracts/treedx/repositories/contracts/diff.d.ts +0 -3
  337. package/dist/treedx/client/support/contracts/treedx/repositories/contracts/diff.js +0 -6
  338. package/dist/treedx/client/support/contracts/treedx/repositories/contracts/fetch-remote.d.ts +0 -3
  339. package/dist/treedx/client/support/contracts/treedx/repositories/contracts/fetch-remote.js +0 -7
  340. package/dist/treedx/client/support/contracts/treedx/repositories/contracts/push.d.ts +0 -6
  341. package/dist/treedx/client/support/contracts/treedx/repositories/contracts/push.js +0 -23
  342. package/dist/treedx/client/support/contracts/treedx/search/contracts/compact-search-index.d.ts +0 -3
  343. package/dist/treedx/client/support/contracts/treedx/search/contracts/compact-search-index.js +0 -8
  344. package/dist/treedx/client/support/contracts/treedx/search/contracts/search.d.ts +0 -3
  345. package/dist/treedx/client/support/contracts/treedx/search/contracts/search.js +0 -7
  346. package/dist/treedx/client/support/contracts/treedx/storage/contracts/backup-storage.d.ts +0 -3
  347. package/dist/treedx/client/support/contracts/treedx/storage/contracts/backup-storage.js +0 -8
  348. package/dist/treedx/client/support/contracts/treedx/storage/contracts/compact-storage.d.ts +0 -3
  349. package/dist/treedx/client/support/contracts/treedx/storage/contracts/compact-storage.js +0 -8
  350. package/dist/treedx/client/support/contracts/treedx/transport/contracts/assert-binary-ok.d.ts +0 -2
  351. package/dist/treedx/client/support/contracts/treedx/transport/contracts/assert-binary-ok.js +0 -15
  352. package/dist/treedx/client/support/contracts/treedx/transport/contracts/fetch-with-timeout.d.ts +0 -2
  353. package/dist/treedx/client/support/contracts/treedx/transport/contracts/fetch-with-timeout.js +0 -38
  354. package/dist/treedx/client/support/contracts/treedx/transport/contracts/headers.d.ts +0 -2
  355. package/dist/treedx/client/support/contracts/treedx/transport/contracts/headers.js +0 -15
  356. package/dist/treedx/client/support/contracts/treedx/transport/contracts/parse-json-response.d.ts +0 -2
  357. package/dist/treedx/client/support/contracts/treedx/transport/contracts/parse-json-response.js +0 -15
  358. package/dist/treedx/client/support/contracts/treedx/transport/contracts/query.d.ts +0 -2
  359. package/dist/treedx/client/support/contracts/treedx/transport/contracts/query.js +0 -14
  360. package/dist/treedx/client/support/contracts/treedx/transport/contracts/repo-id.d.ts +0 -2
  361. package/dist/treedx/client/support/contracts/treedx/transport/contracts/repo-id.js +0 -14
  362. package/dist/treedx/client/support/contracts/treedx/transport/contracts/request.d.ts +0 -6
  363. package/dist/treedx/client/support/contracts/treedx/transport/contracts/request.js +0 -41
  364. package/dist/treedx/client/support/contracts/treedx/transport/contracts/throw-api-error.d.ts +0 -2
  365. package/dist/treedx/client/support/contracts/treedx/transport/contracts/throw-api-error.js +0 -14
  366. package/dist/treedx/client/support/contracts/treedx/workspaces/contracts/exec.d.ts +0 -3
  367. package/dist/treedx/client/support/contracts/treedx/workspaces/contracts/exec.js +0 -7
  368. package/dist/treedx/client/support/creation/apply-changeset.d.ts +0 -3
  369. package/dist/treedx/client/support/creation/apply-changeset.js +0 -10
  370. package/dist/treedx/client/support/creation/apply-storage-migration.d.ts +0 -3
  371. package/dist/treedx/client/support/creation/apply-storage-migration.js +0 -7
  372. package/dist/treedx/client/support/creation/create-migration.d.ts +0 -6
  373. package/dist/treedx/client/support/creation/create-migration.js +0 -7
  374. package/dist/treedx/client/support/creation/export-artifact.d.ts +0 -3
  375. package/dist/treedx/client/support/creation/export-artifact.js +0 -8
  376. package/dist/treedx/client/support/creation/plan-storage-migration.d.ts +0 -3
  377. package/dist/treedx/client/support/creation/plan-storage-migration.js +0 -7
  378. package/dist/treedx/client/support/creation/request-binary.d.ts +0 -6
  379. package/dist/treedx/client/support/creation/request-binary.js +0 -42
  380. package/dist/treedx/client/support/creation/write-file.d.ts +0 -3
  381. package/dist/treedx/client/support/creation/write-file.js +0 -10
  382. package/dist/treedx/client/support/creation/write-files.d.ts +0 -3
  383. package/dist/treedx/client/support/creation/write-files.js +0 -12
  384. package/dist/treedx/client/support/queries/treedx/artifacts/queries/get-artifact.d.ts +0 -3
  385. package/dist/treedx/client/support/queries/treedx/artifacts/queries/get-artifact.js +0 -7
  386. package/dist/treedx/client/support/queries/treedx/artifacts/queries/list-artifacts.d.ts +0 -3
  387. package/dist/treedx/client/support/queries/treedx/artifacts/queries/list-artifacts.js +0 -7
  388. package/dist/treedx/client/support/queries/treedx/authorization/queries/effective-scope.d.ts +0 -3
  389. package/dist/treedx/client/support/queries/treedx/authorization/queries/effective-scope.js +0 -9
  390. package/dist/treedx/client/support/queries/treedx/authorization/queries/list-capabilities.d.ts +0 -4
  391. package/dist/treedx/client/support/queries/treedx/authorization/queries/list-capabilities.js +0 -6
  392. package/dist/treedx/client/support/queries/treedx/federation/queries/get-placement.d.ts +0 -3
  393. package/dist/treedx/client/support/queries/treedx/federation/queries/get-placement.js +0 -7
  394. package/dist/treedx/client/support/queries/treedx/graph/queries/get-node.d.ts +0 -3
  395. package/dist/treedx/client/support/queries/treedx/graph/queries/get-node.js +0 -7
  396. package/dist/treedx/client/support/queries/treedx/graph/queries/get-related.d.ts +0 -3
  397. package/dist/treedx/client/support/queries/treedx/graph/queries/get-related.js +0 -7
  398. package/dist/treedx/client/support/queries/treedx/graph/queries/list-nodes.d.ts +0 -3
  399. package/dist/treedx/client/support/queries/treedx/graph/queries/list-nodes.js +0 -7
  400. package/dist/treedx/client/support/queries/treedx/repositories/queries/list-tree.d.ts +0 -3
  401. package/dist/treedx/client/support/queries/treedx/repositories/queries/list-tree.js +0 -10
  402. package/dist/treedx/client/support/queries/treedx/repositories/queries/read-file.d.ts +0 -3
  403. package/dist/treedx/client/support/queries/treedx/repositories/queries/read-file.js +0 -9
  404. package/dist/treedx/client/support/queries/treedx/search/queries/get-search-index-status.d.ts +0 -3
  405. package/dist/treedx/client/support/queries/treedx/search/queries/get-search-index-status.js +0 -7
  406. package/dist/treedx/client/support/queries/treedx/storage/queries/get-migration.d.ts +0 -6
  407. package/dist/treedx/client/support/queries/treedx/storage/queries/get-migration.js +0 -7
  408. package/dist/treedx/client/support/queries/treedx/storage/queries/get-snapshot.d.ts +0 -6
  409. package/dist/treedx/client/support/queries/treedx/storage/queries/get-snapshot.js +0 -7
  410. package/dist/treedx/client/support/queries/treedx/storage/queries/list-storage-migrations.d.ts +0 -6
  411. package/dist/treedx/client/support/queries/treedx/storage/queries/list-storage-migrations.js +0 -6
  412. package/dist/treedx/client/support/queries/treedx/transport/queries/list-audit-events.d.ts +0 -15
  413. package/dist/treedx/client/support/queries/treedx/transport/queries/list-audit-events.js +0 -6
  414. package/dist/treedx/client/support/queries/treedx/transport/queries/list-repositories.d.ts +0 -3
  415. package/dist/treedx/client/support/queries/treedx/transport/queries/list-repositories.js +0 -7
  416. package/dist/treedx/client/support/retirement/cleanup-artifacts.d.ts +0 -3
  417. package/dist/treedx/client/support/retirement/cleanup-artifacts.js +0 -7
  418. package/dist/treedx/client/support/retirement/delete-artifact.d.ts +0 -3
  419. package/dist/treedx/client/support/retirement/delete-artifact.js +0 -7
  420. package/dist/treedx/client/support/retirement/delete-file.d.ts +0 -3
  421. package/dist/treedx/client/support/retirement/delete-file.js +0 -10
  422. package/dist/treedx/client/support/retirement/rollback-storage-migration.d.ts +0 -3
  423. package/dist/treedx/client/support/retirement/rollback-storage-migration.js +0 -7
  424. package/dist/treedx/client/support/updates/patch-file.d.ts +0 -3
  425. package/dist/treedx/client/support/updates/patch-file.js +0 -10
  426. package/dist/treedx/client/support/updates/refresh-search-index.d.ts +0 -3
  427. package/dist/treedx/client/support/updates/refresh-search-index.js +0 -8
  428. package/dist/treedx/client/treedx/blobs/contracts/download-blob.d.ts +0 -3
  429. package/dist/treedx/client/treedx/blobs/contracts/download-blob.js +0 -6
  430. package/dist/treedx/client/treedx/blobs/creation/create-blob-upload.d.ts +0 -3
  431. package/dist/treedx/client/treedx/blobs/creation/create-blob-upload.js +0 -8
  432. package/dist/treedx/client/treedx/blobs/creation/request-blob-download.d.ts +0 -3
  433. package/dist/treedx/client/treedx/blobs/creation/request-blob-download.js +0 -27
  434. package/dist/treedx/client/treedx/blobs/creation/request-blob-upload.d.ts +0 -3
  435. package/dist/treedx/client/treedx/blobs/creation/request-blob-upload.js +0 -41
  436. package/dist/treedx/client/treedx/blobs/creation/upload-blob-part.d.ts +0 -3
  437. package/dist/treedx/client/treedx/blobs/creation/upload-blob-part.js +0 -27
  438. package/dist/treedx/client/treedx/blobs/creation/upload-blob.d.ts +0 -3
  439. package/dist/treedx/client/treedx/blobs/creation/upload-blob.js +0 -6
  440. package/dist/treedx/client/treedx/blobs/creation/write-blob.d.ts +0 -3
  441. package/dist/treedx/client/treedx/blobs/creation/write-blob.js +0 -8
  442. package/dist/treedx/client/treedx/blobs/lifecycle/complete-blob-upload.d.ts +0 -3
  443. package/dist/treedx/client/treedx/blobs/lifecycle/complete-blob-upload.js +0 -8
  444. package/dist/treedx/client/treedx/blobs/queries/read-blob.d.ts +0 -3
  445. package/dist/treedx/client/treedx/blobs/queries/read-blob.js +0 -10
  446. package/dist/treedx/client/treedx/blobs/retirement/abort-blob-upload.d.ts +0 -3
  447. package/dist/treedx/client/treedx/blobs/retirement/abort-blob-upload.js +0 -7
  448. package/dist/treedx/client/treedx/blobs/retirement/delete-blob.d.ts +0 -3
  449. package/dist/treedx/client/treedx/blobs/retirement/delete-blob.js +0 -8
  450. package/dist/treedx/client/treedx/federation/contracts/federated-query.d.ts +0 -3
  451. package/dist/treedx/client/treedx/federation/contracts/federated-query.js +0 -7
  452. package/dist/treedx/client/treedx/federation/creation/plan-federated-query.d.ts +0 -3
  453. package/dist/treedx/client/treedx/federation/creation/plan-federated-query.js +0 -6
  454. package/dist/treedx/client/treedx/federation/queries/check-mirror-health.d.ts +0 -3
  455. package/dist/treedx/client/treedx/federation/queries/check-mirror-health.js +0 -7
  456. package/dist/treedx/client/treedx/federation/updates/promote-mirror.d.ts +0 -3
  457. package/dist/treedx/client/treedx/federation/updates/promote-mirror.js +0 -7
  458. package/dist/treedx/client/treedx/federation/updates/sync-mirror.d.ts +0 -3
  459. package/dist/treedx/client/treedx/federation/updates/sync-mirror.js +0 -7
  460. package/dist/treedx/client/treedx/graph/contracts/federated-context.d.ts +0 -3
  461. package/dist/treedx/client/treedx/graph/contracts/federated-context.js +0 -7
  462. package/dist/treedx/client/treedx/graph/contracts/federated-graph.d.ts +0 -3
  463. package/dist/treedx/client/treedx/graph/contracts/federated-graph.js +0 -7
  464. package/dist/treedx/client/treedx/graph/contracts/graph-search.d.ts +0 -3
  465. package/dist/treedx/client/treedx/graph/contracts/graph-search.js +0 -8
  466. package/dist/treedx/client/treedx/graph/queries/get-graph-node.d.ts +0 -3
  467. package/dist/treedx/client/treedx/graph/queries/get-graph-node.js +0 -10
  468. package/dist/treedx/client/treedx/graph/queries/get-graph-refresh-job.d.ts +0 -3
  469. package/dist/treedx/client/treedx/graph/queries/get-graph-refresh-job.js +0 -7
  470. package/dist/treedx/client/treedx/graph/queries/get-subgraph.d.ts +0 -3
  471. package/dist/treedx/client/treedx/graph/queries/get-subgraph.js +0 -7
  472. package/dist/treedx/client/treedx/graph/queries/query-graph.d.ts +0 -3
  473. package/dist/treedx/client/treedx/graph/queries/query-graph.js +0 -7
  474. package/dist/treedx/client/treedx/graph/queries/search-graph-entities.d.ts +0 -3
  475. package/dist/treedx/client/treedx/graph/queries/search-graph-entities.js +0 -6
  476. package/dist/treedx/client/treedx/graph/queries/search-graph-files.d.ts +0 -3
  477. package/dist/treedx/client/treedx/graph/queries/search-graph-files.js +0 -6
  478. package/dist/treedx/client/treedx/graph/queries/search-graph-sections.d.ts +0 -3
  479. package/dist/treedx/client/treedx/graph/queries/search-graph-sections.js +0 -6
  480. package/dist/treedx/client/treedx/graph/updates/refresh-graph.d.ts +0 -3
  481. package/dist/treedx/client/treedx/graph/updates/refresh-graph.js +0 -7
  482. package/dist/treedx/client/treedx/search/contracts/federated-search.d.ts +0 -3
  483. package/dist/treedx/client/treedx/search/contracts/federated-search.js +0 -7
  484. package/dist/treedx/client/treedx/workspaces/creation/create-workspace.d.ts +0 -3
  485. package/dist/treedx/client/treedx/workspaces/creation/create-workspace.js +0 -7
  486. package/dist/treedx/client/treedx/workspaces/retirement/abandon-workspace.d.ts +0 -3
  487. package/dist/treedx/client/treedx/workspaces/retirement/abandon-workspace.js +0 -12
  488. package/dist/treedx/client/treedx/workspaces/retirement/close-workspace.d.ts +0 -2
  489. package/dist/treedx/client/treedx/workspaces/retirement/close-workspace.js +0 -6
  490. package/dist/treedx/generated/openapi-types.d.ts +0 -3662
  491. package/dist/treedx/support/client.d.ts +0 -251
  492. package/dist/treedx/support/client.js +0 -252
  493. package/dist/treedx/support/errors.d.ts +0 -13
  494. package/dist/treedx/support/errors.js +0 -17
  495. package/dist/treedx/types/tree-dx-actor.d.ts +0 -209
  496. package/dist/treedx/types/tree-dx-actor.js +0 -8
  497. package/dist/treedx/types/tree-dx-artifact-list-response.d.ts +0 -13
  498. package/dist/treedx/types/tree-dx-artifact-list-response.js +0 -0
  499. package/dist/treedx/types/tree-dx-changeset.d.ts +0 -51
  500. package/dist/treedx/types/tree-dx-changeset.js +0 -6
  501. package/dist/treedx/types/tree-dx-context-request.d.ts +0 -245
  502. package/dist/treedx/types/tree-dx-context-request.js +0 -0
  503. package/dist/treedx/types/tree-dx-exec-result.d.ts +0 -249
  504. package/dist/treedx/types/tree-dx-exec-result.js +0 -0
  505. package/dist/treedx/types/tree-dx-list-tree-request.d.ts +0 -222
  506. package/dist/treedx/types/tree-dx-list-tree-request.js +0 -0
  507. package/dist/treedx/types/tree-dx-push-request.d.ts +0 -229
  508. package/dist/treedx/types/tree-dx-push-request.js +0 -0
  509. /package/dist/{agent-capacity/contracts/operations/workflow-promotion.js → site-contracts/cloudflare.js} +0 -0
  510. /package/dist/{treedx/generated/openapi-types.js → site-contracts/platform.js} +0 -0
@@ -1,48 +1,20 @@
1
1
  import { z } from "zod";
2
- import {
3
- CONTROL_PLANE_OPERATION_SCHEMA_VERSION
4
- } from "./control-plane-operation.js";
5
- const empty = z.object({}).strict();
6
- const none = z.undefined();
7
- const record = z.record(z.unknown());
8
- const payload = record;
9
- function define(definition, schema) {
10
- const { parameters, redactedPaths = [], idempotencyRequired, concurrencyRequired, ...descriptor } = definition;
11
- const mutation = definition.kind === "mutation";
12
- return {
13
- descriptor: {
14
- ...descriptor,
15
- schemaVersion: CONTROL_PLANE_OPERATION_SCHEMA_VERSION,
16
- schemas: {
17
- input: `treeseed.${definition.operationId}.input/v1`,
18
- output: `treeseed.${definition.operationId}.output/v1`,
19
- errors: "treeseed.problem/v1",
20
- ...parameters ? { parameters } : {}
21
- },
22
- idempotency: { required: idempotencyRequired ?? mutation, header: "Idempotency-Key" },
23
- concurrency: { required: concurrencyRequired ?? false, readHeader: "ETag", writeHeader: "If-Match" },
24
- audited: definition.surfaces.some((surface) => surface !== "internal"),
25
- receipt: mutation,
26
- redactedPaths
27
- },
28
- schema
29
- };
30
- }
31
- function read(operationId, path, capability, surfaces = ["rest"]) {
32
- return define({
33
- operationId,
34
- description: `Read ${operationId}.`,
35
- rest: { method: "GET", path },
36
- capability,
37
- oauthScopes: ["treeseed:read"],
38
- kind: "read",
39
- riskClass: "ordinary",
40
- confirmation: "never",
41
- surfaces,
42
- cacheScope: "principal",
43
- pagination: "none"
44
- }, { path: empty, query: empty, body: none, output: payload });
45
- }
2
+ import { defineOperation as define, defineTreeDxProxyOperation as treedxProxy, defineReadOperation as read } from "./operation-builder.js";
3
+ import { communicationOperations, providerCommunicationLifecycleOperations, providerDiscussionResponseOperation } from "./catalog/communication-operations.js";
4
+ import { inboxOperations } from "./catalog/inbox-operations.js";
5
+ import { WORKDAY_PROFILE_OPERATIONS } from "./catalog/workdays/profile-operations.js";
6
+ import { adminAccountOperations, adminTeamOperations } from "./catalog/admin-account-team-operations.js";
7
+ import { TREEAI_CONTROL_PLANE_OPERATIONS } from "./catalog/treeai-operations.js";
8
+ import { capabilityOntologyOperations } from "./catalog/capability-ontology-operations.js";
9
+ import { knowledgeShareOperations } from "./catalog/knowledge-share-operations.js";
10
+ import { PROVIDER_ENVIRONMENT_OPERATIONS } from "./catalog/provider-environment-operations.js";
11
+ import { HOSTED_TOPOLOGY_OPERATIONS } from "./catalog/hosted-topology-operations.js";
12
+ import { AI_INSTANCE_OPERATIONS } from "./catalog/infrastructure/ai-instance-operations.js";
13
+ import { SECRET_OPERATIONS } from "./catalog/services/secret-operations.js";
14
+ import { buildControlPlaneCatalog, flattenControlPlaneOperations } from "./catalog/control-plane-catalog.js";
15
+ import { EXECUTION_OPERATIONS } from "./catalog/execution/execution-operations.js";
16
+ import { AGENT_TEAM_CLONE_OPERATIONS } from "./catalog/agents/agent-team-clone-operations.js";
17
+ const empty = z.object({}).strict(), none = z.undefined(), record = z.record(z.unknown()), payload = record;
46
18
  function providerPath(operationId, method, path, pathShape, options = {}) {
47
19
  const kind = options.read ? "read" : "mutation";
48
20
  return define({
@@ -51,7 +23,8 @@ function providerPath(operationId, method, path, pathShape, options = {}) {
51
23
  rest: { method, path },
52
24
  parameters: `treeseed.${operationId}.parameters/v1`,
53
25
  capability: "providers.execute",
54
- oauthScopes: ["treeseed:execution"],
26
+ authentication: options.authentication ?? "provider",
27
+ oauthScopes: [],
55
28
  kind,
56
29
  riskClass: "ordinary",
57
30
  confirmation: "never",
@@ -66,7 +39,8 @@ const noPathProvider = (operationId, method, path, options = {}) => define({
66
39
  description: `${options.read ? "Read" : "Apply"} ${operationId}.`,
67
40
  rest: { method, path },
68
41
  capability: "providers.execute",
69
- oauthScopes: ["treeseed:execution"],
42
+ authentication: options.authentication ?? "provider",
43
+ oauthScopes: [],
70
44
  kind: options.read ? "read" : "mutation",
71
45
  riskClass: "ordinary",
72
46
  confirmation: "never",
@@ -75,6 +49,24 @@ const noPathProvider = (operationId, method, path, options = {}) => define({
75
49
  pagination: "none",
76
50
  redactedPaths: options.redactedPaths
77
51
  }, { path: empty, query: empty, body: method === "GET" ? none : record, output: payload });
52
+ function postRead(operationId, path, pathShape, capability, scopes, surfaces) {
53
+ return define({
54
+ operationId,
55
+ description: `Read ${operationId}.`,
56
+ rest: { method: "POST", path },
57
+ ...Object.keys(pathShape).length ? { parameters: `treeseed.${operationId}.parameters/v1` } : {},
58
+ capability,
59
+ authentication: "oauth",
60
+ oauthScopes: scopes,
61
+ kind: "read",
62
+ riskClass: "ordinary",
63
+ confirmation: "never",
64
+ surfaces,
65
+ cacheScope: "none",
66
+ pagination: "none",
67
+ idempotencyRequired: false
68
+ }, { path: z.object(pathShape).strict(), query: empty, body: record, output: payload });
69
+ }
78
70
  function resource(operationId, method, path, pathShape, options = { capability: "control-plane.use" }) {
79
71
  const kind = method === "GET" ? "read" : "mutation";
80
72
  const riskClass = options.risk ?? "ordinary";
@@ -84,18 +76,24 @@ function resource(operationId, method, path, pathShape, options = { capability:
84
76
  rest: { method, path },
85
77
  ...Object.keys(pathShape).length ? { parameters: `treeseed.${operationId}.parameters/v1` } : {},
86
78
  capability: options.capability,
79
+ authentication: options.authentication ?? ((options.scopes ?? (kind === "read" ? ["treeseed:read"] : ["treeseed:projects:write"])).length ? "oauth" : "anonymous"),
87
80
  oauthScopes: options.scopes ?? (kind === "read" ? ["treeseed:read"] : ["treeseed:projects:write"]),
88
81
  kind,
89
82
  riskClass,
90
83
  confirmation: riskClass === "ordinary" ? "never" : "input_required",
91
84
  surfaces: options.surfaces ?? ["rest"],
92
- cacheScope: kind === "read" ? "principal" : "none",
85
+ cacheScope: options.cacheScope ?? (kind === "read" ? "principal" : "none"),
93
86
  pagination: options.pagination ?? "none",
94
87
  concurrencyRequired: options.concurrency,
95
88
  redactedPaths: options.redactedPaths
96
89
  }, { path: z.object(pathShape).strict(), query: kind === "read" ? record : empty, body: kind === "read" ? none : record, output: payload });
97
90
  }
98
91
  const CONTROL_PLANE_OPERATIONS = {
92
+ aiInstances: AI_INSTANCE_OPERATIONS,
93
+ infrastructure: { topology: HOSTED_TOPOLOGY_OPERATIONS },
94
+ capabilities: capabilityOntologyOperations(),
95
+ inbox: inboxOperations(),
96
+ treeai: TREEAI_CONTROL_PLANE_OPERATIONS,
99
97
  status: {
100
98
  show: read("status.show", "/v1/status", "status.read", ["rest", "cli", "mcp_tool", "mcp_resource"])
101
99
  },
@@ -116,7 +114,7 @@ const CONTROL_PLANE_OPERATIONS = {
116
114
  surfaces: ["rest", "cli", "mcp_tool"],
117
115
  cacheScope: "principal",
118
116
  pagination: "cursor"
119
- }, { path: empty, query: z.object({ teamId: z.string().min(1).optional(), limit: z.number().int().positive().max(200).optional(), cursor: z.string().min(1).optional() }).strict(), body: none, output: payload }),
117
+ }, { path: empty, query: z.object({ teamId: z.string().min(1).optional(), limit: z.coerce.number().int().positive().max(200).optional(), cursor: z.string().min(1).optional() }).strict(), body: none, output: payload }),
120
118
  show: resource("projects.show", "GET", "/v1/projects/{projectId}", { projectId: z.string().min(1) }, { capability: "projects.read", surfaces: ["rest", "cli", "mcp_tool", "mcp_resource"] }),
121
119
  create: resource("projects.create", "POST", "/v1/teams/{teamId}/projects", { teamId: z.string().min(1) }, { capability: "projects.write", surfaces: ["rest", "cli", "mcp_tool"] }),
122
120
  update: resource("projects.update", "PUT", "/v1/projects/{projectId}", { projectId: z.string().min(1) }, { capability: "projects.write", surfaces: ["rest", "cli", "mcp_tool"], concurrency: true }),
@@ -131,6 +129,7 @@ const CONTROL_PLANE_OPERATIONS = {
131
129
  updateRepositoryTopology: resource("projects.repository.update", "PUT", "/v1/projects/{projectId}/repository-topology", { projectId: z.string().min(1) }, { capability: "repositories.write", concurrency: true })
132
130
  },
133
131
  accounts: {
132
+ ...adminAccountOperations,
134
133
  current: resource("accounts.current.show", "GET", "/v1/me", {}, { capability: "accounts.read", surfaces: ["rest", "cli", "mcp_resource"] }),
135
134
  register: resource("accounts.register", "POST", "/v1/auth/web/sign-up", {}, { capability: "accounts.register", scopes: [], redactedPaths: ["body.password"] }),
136
135
  confirmEmail: resource("accounts.email.confirm", "POST", "/v1/auth/web/confirm-email", {}, { capability: "accounts.register", scopes: [], redactedPaths: ["body.token"] }),
@@ -154,15 +153,16 @@ const CONTROL_PLANE_OPERATIONS = {
154
153
  readNotification: resource("accounts.notifications.read", "POST", "/v1/auth/web/notifications/{notificationId}/read", { notificationId: z.string().min(1) }, { capability: "accounts.write" })
155
154
  },
156
155
  teams: {
156
+ ...adminTeamOperations,
157
157
  list: resource("teams.list", "GET", "/v1/teams", {}, { capability: "teams.read", surfaces: ["rest", "cli", "mcp_tool"], pagination: "cursor" }),
158
158
  create: resource("teams.create", "POST", "/v1/teams", {}, { capability: "teams.write", surfaces: ["rest", "cli", "mcp_tool"] }),
159
- profile: resource("teams.profile.show", "GET", "/v1/teams/by-name/{name}/profile", { name: z.string().min(1) }, { capability: "teams.read", surfaces: ["rest", "mcp_resource"] }),
159
+ profile: resource("teams.profile.show", "GET", "/v1/teams/by-name/{name}/profile", { name: z.string().min(1) }, { capability: "teams.read", scopes: [], authentication: "anonymous", cacheScope: "public", surfaces: ["rest", "mcp_resource"] }),
160
160
  update: resource("teams.update", "PATCH", "/v1/teams/{teamId}", { teamId: z.string().min(1) }, { capability: "teams.write", concurrency: true }),
161
161
  access: resource("teams.access.show", "GET", "/v1/teams/{teamId}/access", { teamId: z.string().min(1) }, { capability: "teams.read" }),
162
162
  members: resource("teams.members.list", "GET", "/v1/teams/{teamId}/members", { teamId: z.string().min(1) }, { capability: "teams.read", pagination: "cursor" }),
163
163
  invite: resource("teams.invites.create", "POST", "/v1/teams/{teamId}/invites", { teamId: z.string().min(1) }, { capability: "teams.write" }),
164
164
  invites: resource("teams.invites.list", "GET", "/v1/teams/{teamId}/invites", { teamId: z.string().min(1) }, { capability: "teams.read", pagination: "cursor" }),
165
- inviteShow: resource("teams.invites.show", "GET", "/v1/team-invites/{token}", { token: z.string().min(1) }, { capability: "teams.join", scopes: [], redactedPaths: ["path.token"] }),
165
+ inviteShow: resource("teams.invites.show", "GET", "/v1/team-invites/{token}", { token: z.string().min(1) }, { capability: "teams.join", scopes: [], authentication: "signed_request", redactedPaths: ["path.token"] }),
166
166
  inviteAccept: resource("teams.invites.accept", "POST", "/v1/team-invites/{token}/accept", { token: z.string().min(1) }, { capability: "teams.join", redactedPaths: ["path.token"] }),
167
167
  updateMember: resource("teams.members.update", "PATCH", "/v1/teams/{teamId}/members/{membershipId}", { teamId: z.string().min(1), membershipId: z.string().min(1) }, { capability: "teams.write", concurrency: true }),
168
168
  removeMember: resource("teams.members.delete", "DELETE", "/v1/teams/{teamId}/members/{membershipId}", { teamId: z.string().min(1), membershipId: z.string().min(1) }, { capability: "teams.write", risk: "destructive", concurrency: true }),
@@ -178,6 +178,7 @@ const CONTROL_PLANE_OPERATIONS = {
178
178
  updateStatus: resource("discussions.status.update", "POST", "/v1/discussions/{discussionId}/status", { discussionId: z.string().min(1) }, { capability: "discussions.write", scopes: ["treeseed:knowledge:write"], concurrency: true })
179
179
  },
180
180
  knowledge: {
181
+ ...knowledgeShareOperations(),
181
182
  library: resource("knowledge.library.list", "GET", "/v1/knowledge/library", {}, { capability: "knowledge.read", surfaces: ["rest", "mcp_tool", "mcp_resource"], pagination: "cursor" }),
182
183
  reader: resource("knowledge.reader.show", "GET", "/v1/knowledge/reader", {}, { capability: "knowledge.read", surfaces: ["rest", "mcp_resource"] }),
183
184
  context: resource("knowledge.context.show", "GET", "/v1/knowledge/context", {}, { capability: "knowledge.read", surfaces: ["rest", "mcp_tool"] }),
@@ -185,41 +186,49 @@ const CONTROL_PLANE_OPERATIONS = {
185
186
  search: resource("knowledge.search", "GET", "/v1/knowledge/search", {}, { capability: "knowledge.read", surfaces: ["rest", "mcp_tool"], pagination: "cursor" }),
186
187
  teamCatalog: resource("knowledge.catalog.team", "GET", "/v1/teams/{teamId}/knowledge/catalog", { teamId: z.string().min(1) }, { capability: "knowledge.read", pagination: "cursor" }),
187
188
  projectCatalog: resource("knowledge.catalog.project", "GET", "/v1/projects/{projectId}/knowledge/catalog", { projectId: z.string().min(1) }, { capability: "knowledge.read", pagination: "cursor" }),
188
- createWorkspace: resource("knowledge.workspaces.create", "POST", "/v1/projects/{projectId}/knowledge/workspaces", { projectId: z.string().min(1) }, { capability: "knowledge.write", scopes: ["treeseed:knowledge:write"] }),
189
- workspace: resource("knowledge.workspaces.show", "GET", "/v1/knowledge/workspaces/{workspaceId}", { workspaceId: z.string().min(1) }, { capability: "knowledge.read" }),
190
- workspaceContent: resource("knowledge.workspaces.content.show", "GET", "/v1/knowledge/workspaces/{workspaceId}/content", { workspaceId: z.string().min(1) }, { capability: "knowledge.read" }),
191
- updateWorkspaceContent: resource("knowledge.workspaces.content.update", "PUT", "/v1/knowledge/workspaces/{workspaceId}/content", { workspaceId: z.string().min(1) }, { capability: "knowledge.write", scopes: ["treeseed:knowledge:write"], concurrency: true }),
192
- workspaceDiff: resource("knowledge.workspaces.diff", "GET", "/v1/knowledge/workspaces/{workspaceId}/diff", { workspaceId: z.string().min(1) }, { capability: "knowledge.read" }),
193
- abandonWorkspace: resource("knowledge.workspaces.abandon", "POST", "/v1/knowledge/workspaces/{workspaceId}/abandon", { workspaceId: z.string().min(1) }, { capability: "knowledge.write", scopes: ["treeseed:knowledge:write"], risk: "destructive", concurrency: true }),
194
- submitWorkspace: resource("knowledge.workspaces.submit", "POST", "/v1/knowledge/workspaces/{workspaceId}/submit", { workspaceId: z.string().min(1) }, { capability: "knowledge.write", scopes: ["treeseed:knowledge:write"], concurrency: true }),
195
- reviews: resource("knowledge.reviews.list", "GET", "/v1/teams/{teamId}/knowledge/reviews", { teamId: z.string().min(1) }, { capability: "knowledge.review", pagination: "cursor" }),
189
+ createWorkspace: resource("knowledge.workspaces.create", "POST", "/v1/projects/{projectId}/knowledge/workspaces", { projectId: z.string().min(1) }, { capability: "knowledge.write", scopes: ["treeseed:knowledge:write"], surfaces: ["rest", "cli"] }),
190
+ workspace: resource("knowledge.workspaces.show", "GET", "/v1/knowledge/workspaces/{workspaceId}", { workspaceId: z.string().min(1) }, { capability: "knowledge.read", surfaces: ["rest", "cli"] }),
191
+ workspaceContent: resource("knowledge.workspaces.content.show", "GET", "/v1/knowledge/workspaces/{workspaceId}/content", { workspaceId: z.string().min(1) }, { capability: "knowledge.read", surfaces: ["rest", "cli"] }),
192
+ updateWorkspaceContent: resource("knowledge.workspaces.content.update", "PUT", "/v1/knowledge/workspaces/{workspaceId}/content", { workspaceId: z.string().min(1) }, { capability: "knowledge.write", scopes: ["treeseed:knowledge:write"], surfaces: ["rest", "cli"], concurrency: true }),
193
+ workspaceDiff: resource("knowledge.workspaces.diff", "GET", "/v1/knowledge/workspaces/{workspaceId}/diff", { workspaceId: z.string().min(1) }, { capability: "knowledge.read", surfaces: ["rest", "cli"] }),
194
+ abandonWorkspace: resource("knowledge.workspaces.abandon", "POST", "/v1/knowledge/workspaces/{workspaceId}/abandon", { workspaceId: z.string().min(1) }, { capability: "knowledge.write", scopes: ["treeseed:knowledge:write"], surfaces: ["rest", "cli"], risk: "destructive", concurrency: true }),
195
+ submitWorkspace: resource("knowledge.workspaces.submit", "POST", "/v1/knowledge/workspaces/{workspaceId}/submit", { workspaceId: z.string().min(1) }, { capability: "knowledge.write", scopes: ["treeseed:knowledge:write"], surfaces: ["rest", "cli"], concurrency: true }),
196
+ reviews: resource("knowledge.reviews.list", "GET", "/v1/teams/{teamId}/knowledge/reviews", { teamId: z.string().min(1) }, { capability: "knowledge.review", surfaces: ["rest", "cli"], pagination: "cursor" }),
196
197
  commentReview: resource("knowledge.reviews.comments.create", "POST", "/v1/knowledge/reviews/{reviewId}/comments", { reviewId: z.string().min(1) }, { capability: "knowledge.review", scopes: ["treeseed:knowledge:write"] }),
197
- decideReview: resource("knowledge.reviews.decide", "POST", "/v1/knowledge/reviews/{reviewId}/decision", { reviewId: z.string().min(1) }, { capability: "knowledge.review", scopes: ["treeseed:knowledge:write"], concurrency: true }),
198
- publishReview: resource("knowledge.reviews.publish", "POST", "/v1/knowledge/reviews/{reviewId}/publish", { reviewId: z.string().min(1) }, { capability: "knowledge.publish", scopes: ["treeseed:knowledge:write"], concurrency: true })
198
+ decideReview: resource("knowledge.reviews.decide", "POST", "/v1/knowledge/reviews/{reviewId}/decision", { reviewId: z.string().min(1) }, { capability: "knowledge.review", scopes: ["treeseed:knowledge:write"], surfaces: ["rest", "cli"], concurrency: true }),
199
+ publishReview: resource("knowledge.reviews.publish", "POST", "/v1/knowledge/reviews/{reviewId}/publish", { reviewId: z.string().min(1) }, { capability: "knowledge.publish", scopes: ["treeseed:knowledge:write"], surfaces: ["rest", "cli"], concurrency: true })
199
200
  },
200
201
  governance: {
201
- proposals: resource("governance.proposals.list", "GET", "/v1/projects/{projectId}/proposals", { projectId: z.string().min(1) }, { capability: "governance.read", surfaces: ["rest", "mcp_tool", "mcp_resource"], pagination: "cursor" }),
202
- createProposal: resource("governance.proposals.create", "POST", "/v1/projects/{projectId}/proposals", { projectId: z.string().min(1) }, { capability: "governance.write", scopes: ["treeseed:governance:write"], surfaces: ["rest", "mcp_tool"] }),
203
- proposal: resource("governance.proposals.show", "GET", "/v1/projects/{projectId}/proposals/{proposalId}", { projectId: z.string().min(1), proposalId: z.string().min(1) }, { capability: "governance.read", surfaces: ["rest", "mcp_resource"] }),
204
- updateProposal: resource("governance.proposals.update", "PATCH", "/v1/projects/{projectId}/proposals/{proposalId}", { projectId: z.string().min(1), proposalId: z.string().min(1) }, { capability: "governance.write", scopes: ["treeseed:governance:write"], concurrency: true }),
205
- openProposal: resource("governance.proposals.open", "POST", "/v1/projects/{projectId}/proposals/{proposalId}/open", { projectId: z.string().min(1), proposalId: z.string().min(1) }, { capability: "governance.write", scopes: ["treeseed:governance:write"], concurrency: true }),
206
- startVoting: resource("governance.proposals.voting.start", "POST", "/v1/projects/{projectId}/proposals/{proposalId}/start-voting", { projectId: z.string().min(1), proposalId: z.string().min(1) }, { capability: "governance.write", scopes: ["treeseed:governance:write"], concurrency: true }),
207
- vote: resource("governance.proposals.vote", "POST", "/v1/projects/{projectId}/proposals/{proposalId}/vote", { projectId: z.string().min(1), proposalId: z.string().min(1) }, { capability: "governance.write", scopes: ["treeseed:governance:write"] }),
208
- evaluate: resource("governance.proposals.evaluate", "POST", "/v1/projects/{projectId}/proposals/{proposalId}/evaluate", { projectId: z.string().min(1), proposalId: z.string().min(1) }, { capability: "governance.decide", scopes: ["treeseed:governance:write"], concurrency: true }),
202
+ proposals: resource("governance.proposals.list", "GET", "/v1/projects/{projectId}/proposals", { projectId: z.string().min(1) }, { capability: "governance.read", surfaces: ["rest", "cli", "mcp_tool", "mcp_resource"], pagination: "cursor" }),
203
+ createProposal: resource("governance.proposals.create", "POST", "/v1/projects/{projectId}/proposals", { projectId: z.string().min(1) }, { capability: "governance.write", scopes: ["treeseed:governance:write"], surfaces: ["rest", "cli", "mcp_tool"] }),
204
+ proposal: resource("governance.proposals.show", "GET", "/v1/projects/{projectId}/proposals/{proposalId}", { projectId: z.string().min(1), proposalId: z.string().min(1) }, { capability: "governance.read", surfaces: ["rest", "cli", "mcp_resource"] }),
205
+ updateProposal: resource("governance.proposals.update", "PATCH", "/v1/projects/{projectId}/proposals/{proposalId}", { projectId: z.string().min(1), proposalId: z.string().min(1) }, { capability: "governance.write", scopes: ["treeseed:governance:write"], surfaces: ["rest", "cli"], concurrency: true }),
206
+ resolveProposalFeedback: resource("governance.proposals.feedback.resolve", "POST", "/v1/projects/{projectId}/proposals/{proposalId}/feedback/{feedbackId}/resolve", { projectId: z.string().min(1), proposalId: z.string().min(1), feedbackId: z.string().min(1) }, { capability: "governance.write", scopes: ["treeseed:governance:write"], surfaces: ["rest", "cli"], concurrency: true }),
207
+ openProposal: resource("governance.proposals.open", "POST", "/v1/projects/{projectId}/proposals/{proposalId}/open", { projectId: z.string().min(1), proposalId: z.string().min(1) }, { capability: "governance.write", scopes: ["treeseed:governance:write"], surfaces: ["rest", "cli"], concurrency: true }),
208
+ startVoting: resource("governance.proposals.voting.start", "POST", "/v1/projects/{projectId}/proposals/{proposalId}/start-voting", { projectId: z.string().min(1), proposalId: z.string().min(1) }, { capability: "governance.write", scopes: ["treeseed:governance:write"], surfaces: ["rest", "cli"], concurrency: true }),
209
+ vote: resource("governance.proposals.vote", "POST", "/v1/projects/{projectId}/proposals/{proposalId}/vote", { projectId: z.string().min(1), proposalId: z.string().min(1) }, { capability: "governance.write", scopes: ["treeseed:governance:write"], surfaces: ["rest", "cli"] }),
210
+ evaluate: resource("governance.proposals.evaluate", "POST", "/v1/projects/{projectId}/proposals/{proposalId}/evaluate", { projectId: z.string().min(1), proposalId: z.string().min(1) }, { capability: "governance.decide", scopes: ["treeseed:governance:write"], surfaces: ["rest", "cli"], concurrency: true }),
209
211
  withdraw: resource("governance.proposals.withdraw", "POST", "/v1/projects/{projectId}/proposals/{proposalId}/withdraw", { projectId: z.string().min(1), proposalId: z.string().min(1) }, { capability: "governance.write", scopes: ["treeseed:governance:write"], risk: "destructive", concurrency: true }),
210
212
  supersede: resource("governance.proposals.supersede", "POST", "/v1/projects/{projectId}/proposals/{proposalId}/supersede", { projectId: z.string().min(1), proposalId: z.string().min(1) }, { capability: "governance.write", scopes: ["treeseed:governance:write"], concurrency: true }),
211
213
  proposalEvents: resource("governance.proposals.events", "GET", "/v1/projects/{projectId}/proposals/{proposalId}/events", { projectId: z.string().min(1), proposalId: z.string().min(1) }, { capability: "governance.read", pagination: "cursor" }),
212
- decisions: resource("governance.decisions.list", "GET", "/v1/projects/{projectId}/decisions", { projectId: z.string().min(1) }, { capability: "governance.read", surfaces: ["rest", "mcp_tool", "mcp_resource"], pagination: "cursor" }),
213
- decision: resource("governance.decisions.show", "GET", "/v1/projects/{projectId}/decisions/{decisionId}", { projectId: z.string().min(1), decisionId: z.string().min(1) }, { capability: "governance.read", surfaces: ["rest", "mcp_resource"] }),
214
+ decisions: resource("governance.decisions.list", "GET", "/v1/projects/{projectId}/decisions", { projectId: z.string().min(1) }, { capability: "governance.read", surfaces: ["rest", "cli", "mcp_tool", "mcp_resource"], pagination: "cursor" }),
215
+ decision: resource("governance.decisions.show", "GET", "/v1/projects/{projectId}/decisions/{decisionId}", { projectId: z.string().min(1), decisionId: z.string().min(1) }, { capability: "governance.read", surfaces: ["rest", "cli", "mcp_resource"] }),
214
216
  decisionEvents: resource("governance.decisions.events", "GET", "/v1/projects/{projectId}/decisions/{decisionId}/events", { projectId: z.string().min(1), decisionId: z.string().min(1) }, { capability: "governance.read", pagination: "cursor" }),
215
217
  approvals: resource("governance.approvals.list", "GET", "/v1/projects/{projectId}/approvals", { projectId: z.string().min(1) }, { capability: "governance.read", pagination: "cursor" }),
216
218
  approval: resource("governance.approvals.show", "GET", "/v1/projects/{projectId}/approvals/{approvalId}", { projectId: z.string().min(1), approvalId: z.string().min(1) }, { capability: "governance.read" }),
217
219
  decideApproval: resource("governance.approvals.decide", "POST", "/v1/projects/{projectId}/approvals/{approvalId}/decision", { projectId: z.string().min(1), approvalId: z.string().min(1) }, { capability: "governance.decide", scopes: ["treeseed:governance:write"], risk: "authority", concurrency: true })
218
220
  },
221
+ execution: EXECUTION_OPERATIONS,
222
+ research: {
223
+ createWorkflow: resource("research.workflows.create", "POST", "/v1/projects/{projectId}/research-workflows", { projectId: z.string().min(1) }, { capability: "research.write", scopes: ["treeseed:knowledge:write"], surfaces: ["rest", "mcp_tool"] }),
224
+ workflows: resource("research.workflows.list", "GET", "/v1/projects/{projectId}/research-workflows", { projectId: z.string().min(1) }, { capability: "research.read", surfaces: ["rest", "mcp_tool", "mcp_resource"], pagination: "cursor" }),
225
+ workflow: resource("research.workflows.show", "GET", "/v1/research-workflows/{workflowId}", { workflowId: z.string().min(1) }, { capability: "research.read", surfaces: ["rest", "mcp_resource"] }),
226
+ completeStage: resource("research.workflows.stages.complete", "POST", "/v1/research-workflows/{workflowId}/stages/{stage}/complete", { workflowId: z.string().min(1), stage: z.string().min(1) }, { capability: "research.write", scopes: ["treeseed:knowledge:write"], surfaces: ["rest", "mcp_tool"], concurrency: true })
227
+ },
219
228
  repositories: {
220
229
  githubSetup: resource("repositories.github.setup", "POST", "/v1/provider-connectors/github/{kind}/setup", { kind: z.string().min(1) }, { capability: "repositories.connect", scopes: ["treeseed:projects:write"], risk: "authority" }),
221
- githubCallback: resource("repositories.github.callback", "GET", "/v1/provider-connectors/github/{kind}/callback", { kind: z.string().min(1) }, { capability: "repositories.connect", scopes: [] }),
222
- githubWebhook: resource("repositories.github.webhook", "POST", "/v1/provider-webhooks/github/{kind}", { kind: z.string().min(1) }, { capability: "repositories.webhook", scopes: [], redactedPaths: ["body"] }),
230
+ githubCallback: resource("repositories.github.callback", "GET", "/v1/provider-connectors/github/{kind}/callback", { kind: z.string().min(1) }, { capability: "repositories.connect", scopes: [], authentication: "signed_request" }),
231
+ githubWebhook: resource("repositories.github.webhook", "POST", "/v1/provider-webhooks/github/{kind}", { kind: z.string().min(1) }, { capability: "repositories.webhook", scopes: [], authentication: "signed_request", redactedPaths: ["body"] }),
223
232
  workflowOperations: resource("repositories.workflows.list", "GET", "/v1/projects/{projectId}/workflow-operations", { projectId: z.string().min(1) }, { capability: "workflows.read", pagination: "cursor" }),
224
233
  workflowRuns: resource("repositories.workflow.runs.list", "GET", "/v1/projects/{projectId}/workflow-operation-runs", { projectId: z.string().min(1) }, { capability: "workflows.read", pagination: "cursor" }),
225
234
  updateWorkflow: resource("repositories.workflows.update", "PUT", "/v1/projects/{projectId}/workflow-operations/{operationId}", { projectId: z.string().min(1), operationId: z.string().min(1) }, { capability: "workflows.write", concurrency: true }),
@@ -236,42 +245,56 @@ const CONTROL_PLANE_OPERATIONS = {
236
245
  deleteWorkflowVariable: resource("repositories.workflow.variables.delete", "DELETE", "/v1/projects/{projectId}/workflow-configuration/variables/{name}", { projectId: z.string().min(1), name: z.string().min(1) }, { capability: "workflows.write", risk: "destructive", concurrency: true })
237
246
  },
238
247
  services: {
248
+ ...SECRET_OPERATIONS,
239
249
  providers: resource("services.providers.list", "GET", "/v1/service-providers", {}, { capability: "services.read", surfaces: ["rest", "cli", "mcp_tool"] }),
240
250
  connections: resource("services.connections.list", "GET", "/v1/teams/{teamId}/services", { teamId: z.string().min(1) }, { capability: "services.read", surfaces: ["rest", "cli", "mcp_tool"], pagination: "cursor" }),
241
251
  connection: resource("services.connections.show", "GET", "/v1/teams/{teamId}/services/{connectionId}", { teamId: z.string().min(1), connectionId: z.string().min(1) }, { capability: "services.read", surfaces: ["rest", "cli", "mcp_resource"] }),
242
- createConnection: resource("services.connections.create", "POST", "/v1/teams/{teamId}/services", { teamId: z.string().min(1) }, { capability: "services.write", surfaces: ["rest", "cli", "mcp_tool"] }),
252
+ createConnection: resource("services.connections.create", "POST", "/v1/teams/{teamId}/services", { teamId: z.string().min(1) }, { capability: "services.write", surfaces: ["rest", "cli", "mcp_tool"], risk: "credential" }),
243
253
  updateConnection: resource("services.connections.update", "PUT", "/v1/teams/{teamId}/services/{connectionId}", { teamId: z.string().min(1), connectionId: z.string().min(1) }, { capability: "services.write", surfaces: ["rest", "cli", "mcp_tool"], concurrency: true }),
244
254
  disconnect: resource("services.connections.disconnect", "DELETE", "/v1/teams/{teamId}/services/{connectionId}", { teamId: z.string().min(1), connectionId: z.string().min(1) }, { capability: "services.write", surfaces: ["rest", "cli", "mcp_tool"], risk: "destructive", concurrency: true }),
245
- authorities: resource("services.credential.authorities.list", "GET", "/v1/teams/{teamId}/services/{connectionId}/credential-authorities", { teamId: z.string().min(1), connectionId: z.string().min(1) }, { capability: "secrets.read", surfaces: ["rest", "cli"], pagination: "cursor" }),
246
- putAuthority: resource("services.credential.authorities.put", "PUT", "/v1/teams/{teamId}/services/{connectionId}/credential-authorities/{profileId}", { teamId: z.string().min(1), connectionId: z.string().min(1), profileId: z.string().min(1) }, { capability: "secrets.write", surfaces: ["rest", "cli"], risk: "credential", concurrency: true, redactedPaths: ["body"] })
255
+ authorities: resource("services.credential.authorities.list", "GET", "/v1/teams/{teamId}/services/{connectionId}/credential-authorities", { teamId: z.string().min(1), connectionId: z.string().min(1) }, { capability: "secrets.read", surfaces: ["rest", "cli"], pagination: "cursor" })
247
256
  },
248
257
  agents: {
258
+ teamClone: AGENT_TEAM_CLONE_OPERATIONS,
249
259
  list: resource("agents.list", "GET", "/v1/projects/{projectId}/agents", { projectId: z.string().min(1) }, { capability: "agents.read", surfaces: ["rest", "cli", "mcp_tool"], pagination: "cursor" }),
250
260
  show: resource("agents.show", "GET", "/v1/projects/{projectId}/agents/{agentSlug}", { projectId: z.string().min(1), agentSlug: z.string().min(1) }, { capability: "agents.read", surfaces: ["rest", "cli", "mcp_resource"] }),
261
+ handlers: resource("agents.handlers.list", "GET", "/v1/projects/{projectId}/agent-handlers", { projectId: z.string().min(1) }, { capability: "agents.read", surfaces: ["rest", "cli", "mcp_tool"] }),
262
+ handler: resource("agents.handlers.show", "GET", "/v1/projects/{projectId}/agent-handlers/{handlerId}", { projectId: z.string().min(1), handlerId: z.string().min(1) }, { capability: "agents.read", surfaces: ["rest", "cli", "mcp_resource"] }),
263
+ validateProfile: resource("agents.profiles.validate", "GET", "/v1/projects/{projectId}/agents/{agentSlug}/validation", { projectId: z.string().min(1), agentSlug: z.string().min(1) }, { capability: "agents.read", surfaces: ["rest", "cli", "mcp_tool"] }),
251
264
  classes: resource("agents.classes.list", "GET", "/v1/projects/{projectId}/agent-classes", { projectId: z.string().min(1) }, { capability: "agents.read", surfaces: ["rest", "cli"], pagination: "cursor" }),
252
265
  classShow: resource("agents.classes.show", "GET", "/v1/projects/{projectId}/agent-classes/{classId}", { projectId: z.string().min(1), classId: z.string().min(1) }, { capability: "agents.read", surfaces: ["rest", "cli"] }),
253
266
  artifacts: resource("agents.artifacts.list", "GET", "/v1/projects/{projectId}/agent-artifacts", { projectId: z.string().min(1) }, { capability: "agents.read", pagination: "cursor" }),
254
267
  artifact: resource("agents.artifacts.show", "GET", "/v1/projects/{projectId}/agent-artifacts/{artifactId}", { projectId: z.string().min(1), artifactId: z.string().min(1) }, { capability: "agents.read" })
255
268
  },
269
+ communications: {
270
+ ...communicationOperations(),
271
+ invocations: resource("communications.invocations.list", "GET", "/v1/teams/{teamId}/agent-invocations", { teamId: z.string().min(1) }, { capability: "agents.read", surfaces: ["rest", "mcp_tool", "mcp_resource"], pagination: "cursor" }),
272
+ invocation: resource("communications.invocations.show", "GET", "/v1/teams/{teamId}/agent-invocations/{invocationId}", { teamId: z.string().min(1), invocationId: z.string().min(1) }, { capability: "agents.read", surfaces: ["rest", "mcp_resource"] }),
273
+ status: resource("communications.status.show", "GET", "/v1/teams/{teamId}/communication-status", { teamId: z.string().min(1) }, { capability: "agents.read", surfaces: ["rest", "mcp_tool", "mcp_resource"] }),
274
+ handoffs: resource("communications.handoffs.list", "GET", "/v1/teams/{teamId}/operation-handoffs", { teamId: z.string().min(1) }, { capability: "agents.read", surfaces: ["rest", "mcp_resource"], pagination: "cursor" }),
275
+ clientActions: resource("communications.client.actions.list", "GET", "/v1/teams/{teamId}/client-actions", { teamId: z.string().min(1) }, { capability: "agents.read", surfaces: ["rest", "mcp_resource"], pagination: "cursor" }),
276
+ cancelInvocation: resource("communications.invocations.cancel", "POST", "/v1/teams/{teamId}/agent-invocations/{invocationId}/cancel", { teamId: z.string().min(1), invocationId: z.string().min(1) }, { capability: "agents.execute", scopes: ["treeseed:execution"], surfaces: ["rest", "mcp_tool"], risk: "destructive", concurrency: true })
277
+ },
256
278
  capacity: {
257
279
  availability: resource("capacity.status", "GET", "/v1/teams/{teamId}/capacity/availability-sessions", { teamId: z.string().min(1) }, { capability: "capacity.read", surfaces: ["rest", "cli", "mcp_tool"], pagination: "cursor" }),
280
+ explain: resource("capacity.explain", "GET", "/v1/teams/{teamId}/capacity/explanation", { teamId: z.string().min(1) }, { capability: "capacity.read", surfaces: ["rest", "cli", "mcp_tool"] }),
258
281
  usage: resource("capacity.usage", "GET", "/v1/teams/{teamId}/capacity/usage", { teamId: z.string().min(1) }, { capability: "capacity.read", surfaces: ["rest", "cli", "mcp_tool"] }),
259
282
  ledger: resource("capacity.ledger", "GET", "/v1/teams/{teamId}/capacity/ledger", { teamId: z.string().min(1) }, { capability: "capacity.read", surfaces: ["rest", "cli"], pagination: "cursor" }),
283
+ audit: resource("capacity.audit", "GET", "/v1/teams/{teamId}/capacity/audit", { teamId: z.string().min(1) }, { capability: "capacity.read", surfaces: ["rest", "cli"], pagination: "cursor" }),
284
+ lanes: resource("capacity.lanes.list", "GET", "/v1/teams/{teamId}/capacity/lanes", { teamId: z.string().min(1) }, { capability: "capacity.read", surfaces: ["rest", "mcp_tool"], pagination: "cursor" }),
260
285
  grants: resource("capacity.grants.list", "GET", "/v1/teams/{teamId}/capacity-grants", { teamId: z.string().min(1) }, { capability: "capacity.read", pagination: "cursor" }),
261
286
  grant: resource("capacity.grants.show", "GET", "/v1/teams/{teamId}/capacity-grants/{grantId}", { teamId: z.string().min(1), grantId: z.string().min(1) }, { capability: "capacity.read" })
262
287
  },
263
- plans: {
264
- list: resource("plans.list", "GET", "/v1/decisions/{decisionId}/capacity-plans", { decisionId: z.string().min(1) }, { capability: "plans.read", surfaces: ["rest", "cli", "mcp_tool"], pagination: "cursor" }),
265
- show: resource("plans.show", "GET", "/v1/capacity-plans/{capacityPlanId}", { capacityPlanId: z.string().min(1) }, { capability: "plans.read", surfaces: ["rest", "cli", "mcp_resource"] })
266
- },
267
288
  workdays: {
289
+ ...WORKDAY_PROFILE_OPERATIONS,
268
290
  list: resource("workdays.list", "GET", "/v1/teams/{teamId}/workday-runs", { teamId: z.string().min(1) }, { capability: "workdays.read", surfaces: ["rest", "cli", "mcp_tool"], pagination: "cursor" }),
269
291
  preflight: resource("workdays.plan", "POST", "/v1/teams/{teamId}/workday-runs/preflight", { teamId: z.string().min(1) }, { capability: "workdays.execute", scopes: ["treeseed:execution"], surfaces: ["rest", "cli", "mcp_tool"] }),
270
- start: resource("workdays.start", "POST", "/v1/teams/{teamId}/workday-runs", { teamId: z.string().min(1) }, { capability: "workdays.execute", scopes: ["treeseed:execution"], surfaces: ["rest", "cli", "mcp_tool"] }),
292
+ start: resource("workdays.start", "POST", "/v1/teams/{teamId}/workday-runs", { teamId: z.string().min(1) }, { capability: "workdays.execute", scopes: ["treeseed:execution"], surfaces: ["rest", "cli", "mcp_tool"], risk: "authority" }),
271
293
  show: resource("workdays.show", "GET", "/v1/teams/{teamId}/workday-runs/{runId}", { teamId: z.string().min(1), runId: z.string().min(1) }, { capability: "workdays.read", surfaces: ["rest", "cli", "mcp_resource"] }),
294
+ stop: resource("workdays.stop", "POST", "/v1/teams/{teamId}/workday-runs/{runId}/stop", { teamId: z.string().min(1), runId: z.string().min(1) }, { capability: "workdays.execute", scopes: ["treeseed:execution"], surfaces: ["rest", "cli", "mcp_tool"], risk: "authority" }),
272
295
  events: resource("workdays.events.list", "GET", "/v1/teams/{teamId}/workday-runs/{runId}/events", { teamId: z.string().min(1), runId: z.string().min(1) }, { capability: "workdays.read", pagination: "cursor" }),
273
296
  schedules: resource("workdays.schedules.list", "GET", "/v1/teams/{teamId}/workday-schedules", { teamId: z.string().min(1) }, { capability: "workdays.read", surfaces: ["rest", "cli"], pagination: "cursor" }),
274
- createSchedule: resource("workdays.schedules.create", "POST", "/v1/teams/{teamId}/workday-schedules", { teamId: z.string().min(1) }, { capability: "workdays.execute", scopes: ["treeseed:execution"], surfaces: ["rest", "cli"] }),
297
+ createSchedule: resource("workdays.schedules.create", "POST", "/v1/teams/{teamId}/workday-schedules", { teamId: z.string().min(1) }, { capability: "workdays.execute", scopes: ["treeseed:execution"], surfaces: ["rest", "cli"], risk: "authority" }),
275
298
  updateSchedule: resource("workdays.schedules.update", "PATCH", "/v1/teams/{teamId}/workday-schedules/{scheduleId}", { teamId: z.string().min(1), scheduleId: z.string().min(1) }, { capability: "workdays.execute", scopes: ["treeseed:execution"], surfaces: ["rest", "cli"], concurrency: true })
276
299
  },
277
300
  assignments: {
@@ -279,25 +302,29 @@ const CONTROL_PLANE_OPERATIONS = {
279
302
  show: resource("assignments.show", "GET", "/v1/teams/{teamId}/capacity/assignments/{assignmentId}", { teamId: z.string().min(1), assignmentId: z.string().min(1) }, { capability: "assignments.read", surfaces: ["rest", "cli", "mcp_resource"] }),
280
303
  explain: resource("assignments.explain", "GET", "/v1/teams/{teamId}/capacity/assignments/{assignmentId}/explanation", { teamId: z.string().min(1), assignmentId: z.string().min(1) }, { capability: "assignments.read", surfaces: ["rest", "cli", "mcp_tool"] }),
281
304
  cancel: resource("assignments.cancel", "POST", "/v1/teams/{teamId}/capacity/assignments/{assignmentId}/cancel", { teamId: z.string().min(1), assignmentId: z.string().min(1) }, { capability: "assignments.execute", scopes: ["treeseed:execution"], surfaces: ["rest", "cli", "mcp_tool"], risk: "destructive" }),
282
- retry: resource("assignments.retry", "POST", "/v1/teams/{teamId}/capacity/assignments/{assignmentId}/requeue", { teamId: z.string().min(1), assignmentId: z.string().min(1) }, { capability: "assignments.execute", scopes: ["treeseed:execution"], surfaces: ["rest", "cli", "mcp_tool"] })
305
+ retry: resource("assignments.retry", "POST", "/v1/teams/{teamId}/capacity/assignments/{assignmentId}/requeue", { teamId: z.string().min(1), assignmentId: z.string().min(1) }, { capability: "assignments.execute", scopes: ["treeseed:execution"], surfaces: ["rest", "cli", "mcp_tool"], risk: "authority" })
283
306
  },
284
307
  operations: {
285
- list: resource("operations.list", "GET", "/v1/platform/operations", {}, { capability: "operations.read", surfaces: ["rest", "mcp_tool"], pagination: "cursor" }),
308
+ list: resource("operations.list", "GET", "/v1/platform/operations", {}, { capability: "operations.read", surfaces: ["rest", "cli", "mcp_tool"], pagination: "cursor" }),
286
309
  create: resource("operations.create", "POST", "/v1/platform/operations", {}, { capability: "operations.execute", scopes: ["treeseed:execution"] }),
287
- show: resource("operations.show", "GET", "/v1/platform/operations/{operationId}", { operationId: z.string().min(1) }, { capability: "operations.read", surfaces: ["rest", "mcp_resource"] }),
310
+ show: resource("operations.show", "GET", "/v1/platform/operations/{operationId}", { operationId: z.string().min(1) }, { capability: "operations.read", surfaces: ["rest", "cli", "mcp_resource"] }),
288
311
  events: resource("operations.events.list", "GET", "/v1/platform/operations/{operationId}/events", { operationId: z.string().min(1) }, { capability: "operations.read", pagination: "cursor" }),
289
312
  cancel: resource("operations.cancel", "POST", "/v1/platform/operations/{operationId}/cancel", { operationId: z.string().min(1) }, { capability: "operations.execute", scopes: ["treeseed:execution"], risk: "destructive" }),
290
- retry: resource("operations.retry", "POST", "/v1/platform/operations/{operationId}/retry", { operationId: z.string().min(1) }, { capability: "operations.execute", scopes: ["treeseed:execution"] })
313
+ retry: resource("operations.retry", "POST", "/v1/platform/operations/{operationId}/retry", { operationId: z.string().min(1) }, { capability: "operations.execute", scopes: ["treeseed:execution"], surfaces: ["rest", "cli"] })
291
314
  },
292
315
  seeds: {
293
316
  runs: resource("seeds.runs.list", "GET", "/v1/seeds/runs", {}, { capability: "seeds.read", pagination: "cursor" }),
294
317
  run: resource("seeds.runs.show", "GET", "/v1/seeds/runs/{runId}", { runId: z.string().min(1) }, { capability: "seeds.read" }),
295
- plan: resource("seeds.plan", "POST", "/v1/seeds/{name}/plan", { name: z.string().min(1) }, { capability: "seeds.write", scopes: ["treeseed:admin"] }),
296
- apply: resource("seeds.apply", "POST", "/v1/seeds/{name}/apply", { name: z.string().min(1) }, { capability: "seeds.write", scopes: ["treeseed:admin"], risk: "authority" }),
318
+ validate: postRead("seeds.validate", "/v1/seeds/validate", {}, "seeds.read", ["treeseed:admin"], ["rest", "cli"]),
319
+ plan: postRead("seeds.plan", "/v1/seeds/{name}/plan", { name: z.string().min(1) }, "seeds.write", ["treeseed:admin"], ["rest", "cli"]),
320
+ apply: resource("seeds.apply", "POST", "/v1/seeds/{name}/apply", { name: z.string().min(1) }, { capability: "seeds.write", scopes: ["treeseed:admin"], surfaces: ["rest", "cli"], risk: "authority" }),
321
+ show: resource("seeds.show", "GET", "/v1/seeds/{name}", { name: z.string().min(1) }, { capability: "seeds.read", scopes: ["treeseed:admin"], surfaces: ["rest", "cli"] }),
322
+ verify: postRead("seeds.verify", "/v1/seeds/{name}/verify", { name: z.string().min(1) }, "seeds.read", ["treeseed:admin"], ["rest", "cli"]),
323
+ reconcile: resource("seeds.reconcile", "POST", "/v1/seeds/{name}/reconcile", { name: z.string().min(1) }, { capability: "seeds.write", scopes: ["treeseed:admin"], risk: "authority" }),
297
324
  resolveResources: resource("seeds.resources.resolve", "POST", "/v1/seeds/resources/resolve", {}, { capability: "seeds.read", scopes: ["treeseed:admin"] })
298
325
  },
299
326
  feedback: {
300
- create: resource("feedback.create", "POST", "/v1/feedback", {}, { capability: "feedback.write", scopes: [], surfaces: ["rest", "mcp_tool"] }),
327
+ create: resource("feedback.create", "POST", "/v1/feedback", {}, { capability: "feedback.write", authentication: "oauth", scopes: [], surfaces: ["rest", "mcp_tool"] }),
301
328
  list: resource("feedback.list", "GET", "/v1/admin/feedback", {}, { capability: "feedback.admin", scopes: ["treeseed:admin"], pagination: "cursor" }),
302
329
  show: resource("feedback.show", "GET", "/v1/admin/feedback/{feedbackId}", { feedbackId: z.string().min(1) }, { capability: "feedback.admin", scopes: ["treeseed:admin"] }),
303
330
  updateStatus: resource("feedback.status.update", "PATCH", "/v1/admin/feedback/{feedbackId}/status", { feedbackId: z.string().min(1) }, { capability: "feedback.admin", scopes: ["treeseed:admin"], concurrency: true })
@@ -309,11 +336,126 @@ const CONTROL_PLANE_OPERATIONS = {
309
336
  actions: resource("realtime.actions.list", "GET", "/v1/client-sessions/{sessionId}/actions", { sessionId: z.string().min(1) }, { capability: "realtime.read", pagination: "cursor" }),
310
337
  actionResult: resource("realtime.actions.result", "POST", "/v1/client-sessions/{sessionId}/actions/{actionId}/result", { sessionId: z.string().min(1), actionId: z.string().min(1) }, { capability: "realtime.write" })
311
338
  },
339
+ treedx: {
340
+ library: resource("treedx.library.show", "GET", "/v1/projects/{projectId}/treedx-library", { projectId: z.string().min(1) }, { capability: "treedx.read", surfaces: ["rest", "cli", "mcp_resource"] }),
341
+ bindLibrary: resource("treedx.library.bind", "POST", "/v1/projects/{projectId}/treedx-library", { projectId: z.string().min(1) }, { capability: "treedx.write", surfaces: ["rest", "cli"] }),
342
+ serviceContract: treedxProxy("treedx.service.contract", null, "GET", "/v1/dx/projects/{projectId}/service-contract", { projectId: z.string().min(1) }, { surfaces: ["rest", "cli", "mcp_resource"] }),
343
+ health: treedxProxy("treedx.health.show", "getHealth", "GET", "/v1/dx/projects/{projectId}/health", { projectId: z.string().min(1) }, { surfaces: ["rest", "cli", "mcp_tool", "mcp_resource"] }),
344
+ readiness: treedxProxy("treedx.readiness.show", "getReadiness", "GET", "/v1/dx/projects/{projectId}/readiness", { projectId: z.string().min(1) }, { surfaces: ["rest", "cli", "mcp_resource"] }),
345
+ version: treedxProxy("treedx.version.show", "getVersion", "GET", "/v1/dx/projects/{projectId}/version", { projectId: z.string().min(1) }, { surfaces: ["rest", "cli", "mcp_resource"] }),
346
+ capabilities: treedxProxy("treedx.capabilities.list", "listCapabilities", "GET", "/v1/dx/projects/{projectId}/capabilities", { projectId: z.string().min(1) }, { surfaces: ["rest", "cli", "mcp_tool", "mcp_resource"] }),
347
+ effectiveScope: treedxProxy("treedx.scope.show", "getEffectiveScope", "GET", "/v1/dx/projects/{projectId}/effective-scope", { projectId: z.string().min(1) }, { surfaces: ["rest", "mcp_resource"] }),
348
+ repositories: {
349
+ list: treedxProxy("treedx.repositories.list", "listRepositories", "GET", "/v1/dx/projects/{projectId}/repos", { projectId: z.string().min(1) }, { pagination: "cursor" }),
350
+ create: treedxProxy("treedx.repositories.create", "createRepository", "POST", "/v1/dx/projects/{projectId}/repos", { projectId: z.string().min(1) }),
351
+ show: treedxProxy("treedx.repositories.show", "getRepository", "GET", "/v1/dx/projects/{projectId}/repos/{repoId}", { projectId: z.string().min(1), repoId: z.string().min(1) }),
352
+ retire: treedxProxy("treedx.repositories.retire", "retireRepository", "DELETE", "/v1/dx/projects/{projectId}/repos/{repoId}", { projectId: z.string().min(1), repoId: z.string().min(1) }, { risk: "destructive", surfaces: ["internal"] }),
353
+ status: treedxProxy("treedx.repositories.status", "getRepositoryStatus", "GET", "/v1/dx/projects/{projectId}/repos/{repoId}/status", { projectId: z.string().min(1), repoId: z.string().min(1) }),
354
+ refs: treedxProxy("treedx.repositories.refs", "listRepositoryRefs", "GET", "/v1/dx/projects/{projectId}/repos/{repoId}/refs", { projectId: z.string().min(1), repoId: z.string().min(1) }),
355
+ sync: treedxProxy("treedx.repositories.sync", "syncRepository", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/sync", { projectId: z.string().min(1), repoId: z.string().min(1) }),
356
+ push: treedxProxy("treedx.repositories.push", "pushRepository", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/push", { projectId: z.string().min(1), repoId: z.string().min(1) }, { risk: "authority" }),
357
+ promoteRef: treedxProxy("treedx.repositories.refs.promote", "promoteRepositoryRef", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/refs/promote", { projectId: z.string().min(1), repoId: z.string().min(1) }, { risk: "authority" }),
358
+ retireRef: treedxProxy("treedx.repositories.refs.retire", "retireRepositoryRef", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/refs/retire", { projectId: z.string().min(1), repoId: z.string().min(1) }, { risk: "destructive" }),
359
+ readFiles: treedxProxy("treedx.repositories.files.read", "readRepositoryFile", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/files/read", { projectId: z.string().min(1), repoId: z.string().min(1) }, { read: true }),
360
+ listPaths: treedxProxy("treedx.repositories.paths.list", "listRepositoryPaths", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/paths/list", { projectId: z.string().min(1), repoId: z.string().min(1) }, { read: true, pagination: "cursor" }),
361
+ searchFiles: treedxProxy("treedx.repositories.files.search", "searchRepositoryFiles", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/files/search", { projectId: z.string().min(1), repoId: z.string().min(1) }, { read: true, pagination: "cursor" }),
362
+ query: treedxProxy("treedx.repositories.query", "queryRepository", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/query", { projectId: z.string().min(1), repoId: z.string().min(1) }, { read: true })
363
+ },
364
+ workspaces: {
365
+ list: treedxProxy("treedx.workspaces.list", null, "GET", "/v1/dx/projects/{projectId}/workspaces", { projectId: z.string().min(1) }, { surfaces: ["rest", "cli", "mcp_tool", "mcp_resource"], pagination: "cursor" }),
366
+ create: treedxProxy("treedx.workspaces.create", "createWorkspace", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/workspaces", { projectId: z.string().min(1), repoId: z.string().min(1) }),
367
+ show: treedxProxy("treedx.workspaces.show", "getWorkspace", "GET", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}", { projectId: z.string().min(1), workspaceId: z.string().min(1) }, { surfaces: ["rest", "cli", "mcp_tool", "mcp_resource"] }),
368
+ status: treedxProxy("treedx.workspaces.status", "getWorkspaceStatus", "GET", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/status", { projectId: z.string().min(1), workspaceId: z.string().min(1) }),
369
+ diff: treedxProxy("treedx.workspaces.diff", "getWorkspaceDiff", "GET", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/diff", { projectId: z.string().min(1), workspaceId: z.string().min(1) }),
370
+ tree: treedxProxy("treedx.workspaces.tree", "listWorkspaceTree", "GET", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/tree", { projectId: z.string().min(1), workspaceId: z.string().min(1) }),
371
+ close: treedxProxy("treedx.workspaces.close", "closeWorkspace", "POST", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/close", { projectId: z.string().min(1), workspaceId: z.string().min(1) }),
372
+ abandon: treedxProxy("treedx.workspaces.abandon", "abandonWorkspace", "POST", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/abandon", { projectId: z.string().min(1), workspaceId: z.string().min(1) }, { risk: "destructive", surfaces: ["rest", "cli", "mcp_tool"] })
373
+ },
374
+ files: {
375
+ read: treedxProxy("treedx.workspaces.files.read", "readWorkspaceFile", "GET", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/files", { projectId: z.string().min(1), workspaceId: z.string().min(1) }),
376
+ write: treedxProxy("treedx.workspaces.files.write", "writeWorkspaceFile", "PUT", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/files", { projectId: z.string().min(1), workspaceId: z.string().min(1) }),
377
+ writeBatch: treedxProxy("treedx.workspaces.files.batch", "writeWorkspaceFiles", "PUT", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/files/batch", { projectId: z.string().min(1), workspaceId: z.string().min(1) }),
378
+ patch: treedxProxy("treedx.workspaces.files.patch", "patchWorkspaceFile", "PATCH", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/files", { projectId: z.string().min(1), workspaceId: z.string().min(1) }),
379
+ remove: treedxProxy("treedx.workspaces.files.delete", "deleteWorkspaceFile", "DELETE", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/files", { projectId: z.string().min(1), workspaceId: z.string().min(1) }, { risk: "destructive" }),
380
+ search: treedxProxy("treedx.workspaces.files.search", "searchWorkspace", "POST", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/search", { projectId: z.string().min(1), workspaceId: z.string().min(1) }, { read: true, pagination: "cursor" }),
381
+ applyChangeset: treedxProxy("treedx.workspaces.changesets.apply", "applyWorkspaceChangeset", "POST", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/changesets", { projectId: z.string().min(1), workspaceId: z.string().min(1) }),
382
+ commit: treedxProxy("treedx.workspaces.commit", "commitWorkspace", "POST", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/commit", { projectId: z.string().min(1), workspaceId: z.string().min(1) })
383
+ },
384
+ blobs: {
385
+ read: treedxProxy("treedx.repositories.blobs.read", "readRepositoryBlob", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/blobs/read", { projectId: z.string().min(1), repoId: z.string().min(1) }, { read: true }),
386
+ write: treedxProxy("treedx.workspaces.blobs.write", "writeWorkspaceBlob", "POST", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/blobs/write", { projectId: z.string().min(1), workspaceId: z.string().min(1) }),
387
+ remove: treedxProxy("treedx.workspaces.blobs.delete", "deleteWorkspaceBlob", "POST", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/blobs/delete", { projectId: z.string().min(1), workspaceId: z.string().min(1) }, { risk: "destructive" }),
388
+ download: treedxProxy("treedx.workspaces.blobs.download", "downloadWorkspaceBlob", "GET", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/blobs/download", { projectId: z.string().min(1), workspaceId: z.string().min(1) }, { surfaces: ["rest", "mcp_tool"] }),
389
+ upload: treedxProxy("treedx.workspaces.blobs.upload", "uploadWorkspaceBlob", "PUT", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/blobs/upload", { projectId: z.string().min(1), workspaceId: z.string().min(1) }),
390
+ createUpload: treedxProxy("treedx.workspaces.blobs.uploads.create", "createWorkspaceBlobUpload", "POST", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/blobs/uploads", { projectId: z.string().min(1), workspaceId: z.string().min(1) }),
391
+ uploadPart: treedxProxy("treedx.workspaces.blobs.uploads.parts.write", "uploadWorkspaceBlobPart", "PUT", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/blobs/uploads/{uploadId}/parts/{partNumber}", { projectId: z.string().min(1), workspaceId: z.string().min(1), uploadId: z.string().min(1), partNumber: z.string().min(1) }),
392
+ completeUpload: treedxProxy("treedx.workspaces.blobs.uploads.complete", "completeWorkspaceBlobUpload", "POST", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/blobs/uploads/{uploadId}/complete", { projectId: z.string().min(1), workspaceId: z.string().min(1), uploadId: z.string().min(1) }),
393
+ abortUpload: treedxProxy("treedx.workspaces.blobs.uploads.abort", "abortWorkspaceBlobUpload", "DELETE", "/v1/dx/projects/{projectId}/workspaces/{workspaceId}/blobs/uploads/{uploadId}", { projectId: z.string().min(1), workspaceId: z.string().min(1), uploadId: z.string().min(1) }, { risk: "destructive" })
394
+ },
395
+ graph: {
396
+ refresh: treedxProxy("treedx.repositories.graph.refresh", "refreshRepositoryGraph", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/graph/refresh", { projectId: z.string().min(1), repoId: z.string().min(1) }),
397
+ refreshJob: treedxProxy("treedx.repositories.graph.jobs.show", "getGraphRefreshJob", "GET", "/v1/dx/projects/{projectId}/repos/{repoId}/graph/jobs/{jobId}", { projectId: z.string().min(1), repoId: z.string().min(1), jobId: z.string().min(1) }),
398
+ query: treedxProxy("treedx.repositories.graph.query", "queryRepositoryGraph", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/graph/query", { projectId: z.string().min(1), repoId: z.string().min(1) }, { read: true }),
399
+ node: treedxProxy("treedx.repositories.graph.nodes.show", "getGraphNode", "GET", "/v1/dx/projects/{projectId}/repos/{repoId}/graph/nodes/{nodeId}", { projectId: z.string().min(1), repoId: z.string().min(1), nodeId: z.string().min(1) }),
400
+ related: treedxProxy("treedx.repositories.graph.related", "getRelatedGraphNodes", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/graph/related", { projectId: z.string().min(1), repoId: z.string().min(1) }, { read: true }),
401
+ subgraph: treedxProxy("treedx.repositories.graph.subgraph", "getGraphSubgraph", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/graph/subgraph", { projectId: z.string().min(1), repoId: z.string().min(1) }, { read: true }),
402
+ searchFiles: treedxProxy("treedx.repositories.graph.files.search", "searchGraphFiles", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/graph/search/files", { projectId: z.string().min(1), repoId: z.string().min(1) }, { read: true }),
403
+ searchSections: treedxProxy("treedx.repositories.graph.sections.search", "searchGraphSections", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/graph/search/sections", { projectId: z.string().min(1), repoId: z.string().min(1) }, { read: true }),
404
+ searchEntities: treedxProxy("treedx.repositories.graph.entities.search", "searchGraphEntities", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/graph/search/entities", { projectId: z.string().min(1), repoId: z.string().min(1) }, { read: true })
405
+ },
406
+ context: {
407
+ build: treedxProxy("treedx.repositories.context.build", "buildContext", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/context/build", { projectId: z.string().min(1), repoId: z.string().min(1) }, { read: true }),
408
+ parse: treedxProxy("treedx.repositories.context.parse", "parseContextQuery", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/context/parse", { projectId: z.string().min(1), repoId: z.string().min(1) }, { read: true })
409
+ },
410
+ federated: {
411
+ search: treedxProxy("treedx.federated.search", "federatedSearch", "POST", "/v1/dx/projects/{projectId}/search", { projectId: z.string().min(1) }, { read: true, pagination: "cursor" }),
412
+ query: treedxProxy("treedx.federated.query", "federatedQuery", "POST", "/v1/dx/projects/{projectId}/query", { projectId: z.string().min(1) }, { read: true }),
413
+ context: treedxProxy("treedx.federated.context", "federatedContextBuild", "POST", "/v1/dx/projects/{projectId}/context", { projectId: z.string().min(1) }, { read: true }),
414
+ graph: treedxProxy("treedx.federated.graph", "federatedGraphQuery", "POST", "/v1/dx/projects/{projectId}/graph", { projectId: z.string().min(1) }, { read: true })
415
+ },
416
+ snapshots: {
417
+ build: treedxProxy("treedx.repositories.snapshots.build", "buildSnapshot", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/snapshots", { projectId: z.string().min(1), repoId: z.string().min(1) }),
418
+ show: treedxProxy("treedx.repositories.snapshots.show", "getSnapshot", "GET", "/v1/dx/projects/{projectId}/repos/{repoId}/snapshots/{snapshotId}", { projectId: z.string().min(1), repoId: z.string().min(1), snapshotId: z.string().min(1) })
419
+ },
420
+ artifacts: {
421
+ export: treedxProxy("treedx.repositories.artifacts.export", "exportArtifact", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/artifacts", { projectId: z.string().min(1), repoId: z.string().min(1) }),
422
+ list: treedxProxy("treedx.repositories.artifacts.list", "listArtifacts", "GET", "/v1/dx/projects/{projectId}/repos/{repoId}/artifacts", { projectId: z.string().min(1), repoId: z.string().min(1) }, { pagination: "cursor" }),
423
+ show: treedxProxy("treedx.repositories.artifacts.show", "getArtifact", "GET", "/v1/dx/projects/{projectId}/repos/{repoId}/artifacts/{artifactId}", { projectId: z.string().min(1), repoId: z.string().min(1), artifactId: z.string().min(1) }),
424
+ remove: treedxProxy("treedx.repositories.artifacts.delete", "deleteArtifact", "DELETE", "/v1/dx/projects/{projectId}/repos/{repoId}/artifacts/{artifactId}", { projectId: z.string().min(1), repoId: z.string().min(1), artifactId: z.string().min(1) }, { risk: "destructive" })
425
+ },
426
+ searchIndex: {
427
+ status: treedxProxy("treedx.repositories.search.index.status", "getSearchIndexStatus", "GET", "/v1/dx/projects/{projectId}/repos/{repoId}/search-index", { projectId: z.string().min(1), repoId: z.string().min(1) }),
428
+ refresh: treedxProxy("treedx.repositories.search.index.refresh", "refreshSearchIndex", "POST", "/v1/dx/projects/{projectId}/repos/{repoId}/search-index/refresh", { projectId: z.string().min(1), repoId: z.string().min(1) })
429
+ }
430
+ },
312
431
  providers: {
313
- register: noPathProvider("providers.register", "POST", "/v1/provider-registrations", { redactedPaths: ["body.registrationKey"] }),
314
- registration: providerPath("providers.registration.show", "GET", "/v1/provider-registrations/{requestId}", { requestId: z.string().min(1) }, { read: true }),
315
- exchangeCredential: providerPath("providers.registration.credential", "POST", "/v1/provider-registrations/{requestId}/credential", { requestId: z.string().min(1) }, { redactedPaths: ["body.proof"] }),
316
- issueAccessToken: noPathProvider("providers.token.issue", "POST", "/v1/provider/access-tokens", { redactedPaths: ["body.credential", "body.proof"] }),
432
+ capabilityProposal: noPathProvider("providers.capabilities.propose", "POST", "/v1/provider/capability-proposals"),
433
+ capabilityProposalStatus: providerPath("providers.capabilities.proposal.show", "GET", "/v1/provider/capability-proposals/{proposalId}", { proposalId: z.string().min(1) }, { read: true }),
434
+ list: resource("providers.list", "GET", "/v1/teams/{teamId}/capacity-providers", { teamId: z.string().min(1) }, { capability: "providers.read", surfaces: ["rest", "cli", "mcp_tool"], pagination: "cursor" }),
435
+ show: resource("providers.show", "GET", "/v1/teams/{teamId}/capacity-providers/{providerId}", { teamId: z.string().min(1), providerId: z.string().min(1) }, { capability: "providers.read", surfaces: ["rest", "cli", "mcp_resource"] }),
436
+ status: resource("providers.status", "GET", "/v1/teams/{teamId}/capacity-providers/{providerId}/status", { teamId: z.string().min(1), providerId: z.string().min(1) }, { capability: "providers.read", surfaces: ["rest", "cli", "mcp_tool"] }),
437
+ diagnose: resource("providers.diagnose", "GET", "/v1/teams/{teamId}/capacity-providers/{providerId}/diagnosis", { teamId: z.string().min(1), providerId: z.string().min(1) }, { capability: "providers.read", surfaces: ["rest", "cli", "mcp_tool"] }),
438
+ offers: resource("providers.offers.show", "GET", "/v1/teams/{teamId}/capacity-providers/{providerId}/offers", { teamId: z.string().min(1), providerId: z.string().min(1) }, { capability: "providers.read", surfaces: ["rest", "cli", "mcp_resource"] }),
439
+ connect: resource("providers.connect", "POST", "/v1/teams/{teamId}/capacity-provider-connections", { teamId: z.string().min(1) }, { capability: "providers.write", scopes: ["treeseed:admin"], surfaces: ["rest", "cli"], risk: "credential", redactedPaths: ["body.enrollmentToken"] }),
440
+ registrationCode: PROVIDER_ENVIRONMENT_OPERATIONS.registrationCode,
441
+ disconnect: resource("providers.disconnect", "POST", "/v1/teams/{teamId}/capacity-provider-connections/{connectionId}/disconnect", { teamId: z.string().min(1), connectionId: z.string().min(1) }, { capability: "providers.write", scopes: ["treeseed:admin"], surfaces: ["rest", "cli"], risk: "destructive" }),
442
+ requests: {
443
+ list: resource("providers.requests.list", "GET", "/v1/teams/{teamId}/capacity-provider-requests", { teamId: z.string().min(1) }, { capability: "providers.read", surfaces: ["rest", "cli"], pagination: "cursor" }),
444
+ show: resource("providers.requests.show", "GET", "/v1/teams/{teamId}/capacity-provider-requests/{requestId}", { teamId: z.string().min(1), requestId: z.string().min(1) }, { capability: "providers.read", surfaces: ["rest", "cli"] }),
445
+ approve: resource("providers.requests.approve", "POST", "/v1/teams/{teamId}/capacity-provider-requests/{requestId}/approve", { teamId: z.string().min(1), requestId: z.string().min(1) }, { capability: "providers.write", scopes: ["treeseed:admin"], surfaces: ["rest", "cli"], risk: "authority" }),
446
+ reject: resource("providers.requests.reject", "POST", "/v1/teams/{teamId}/capacity-provider-requests/{requestId}/reject", { teamId: z.string().min(1), requestId: z.string().min(1) }, { capability: "providers.write", scopes: ["treeseed:admin"], surfaces: ["rest", "cli"], risk: "authority" })
447
+ },
448
+ credentials: {
449
+ status: resource("providers.credentials.status", "GET", "/v1/teams/{teamId}/capacity-provider-connections/{connectionId}/credentials", { teamId: z.string().min(1), connectionId: z.string().min(1) }, { capability: "providers.read", surfaces: ["rest", "cli"] }),
450
+ rotate: resource("providers.credentials.rotate", "POST", "/v1/teams/{teamId}/capacity-provider-connections/{connectionId}/credentials/rotate", { teamId: z.string().min(1), connectionId: z.string().min(1) }, { capability: "providers.write", scopes: ["treeseed:admin"], surfaces: ["rest", "cli"], risk: "credential" }),
451
+ revoke: resource("providers.credentials.revoke", "POST", "/v1/teams/{teamId}/capacity-provider-connections/{connectionId}/credentials/revoke", { teamId: z.string().min(1), connectionId: z.string().min(1) }, { capability: "providers.write", scopes: ["treeseed:admin"], surfaces: ["rest", "cli"], risk: "irreversible" })
452
+ },
453
+ environmentProfiles: PROVIDER_ENVIRONMENT_OPERATIONS.environmentProfiles,
454
+ environmentGrants: PROVIDER_ENVIRONMENT_OPERATIONS.environmentGrants,
455
+ register: noPathProvider("providers.register", "POST", "/v1/provider-registrations", { authentication: "signed_request", redactedPaths: ["body.registrationKey"] }),
456
+ registration: providerPath("providers.registration.show", "GET", "/v1/provider-registrations/{requestId}", { requestId: z.string().min(1) }, { authentication: "signed_request", read: true }),
457
+ exchangeCredential: providerPath("providers.registration.credential", "POST", "/v1/provider-registrations/{requestId}/credential", { requestId: z.string().min(1) }, { authentication: "signed_request", redactedPaths: ["body.proof"] }),
458
+ issueAccessToken: noPathProvider("providers.token.issue", "POST", "/v1/provider/access-tokens", { authentication: "signed_request", redactedPaths: ["body.credential", "body.proof"] }),
317
459
  leaveMembership: noPathProvider("providers.membership.leave", "POST", "/v1/provider/membership/leave"),
318
460
  rotateIdentity: noPathProvider("providers.identity.rotate", "POST", "/v1/provider/identity/rotate", { redactedPaths: ["body.oldProof", "body.newProof"] }),
319
461
  rotateCredential: noPathProvider("providers.credential.rotate", "POST", "/v1/provider/credential-rotation"),
@@ -323,10 +465,13 @@ const CONTROL_PLANE_OPERATIONS = {
323
465
  nextAssignment: noPathProvider("providers.assignments.next", "POST", "/v1/provider/assignments/next"),
324
466
  assignment: providerPath("providers.assignments.show", "GET", "/v1/provider/assignments/{assignmentId}", { assignmentId: z.string().min(1) }, { read: true }),
325
467
  assignmentExplanation: providerPath("providers.assignments.explain", "GET", "/v1/provider/assignments/{assignmentId}/explanation", { assignmentId: z.string().min(1) }, { read: true }),
468
+ sourceWorkspace: providerPath("providers.assignments.source.authorize", "POST", "/v1/provider/assignments/{assignmentId}/source-workspace", { assignmentId: z.string().min(1) }, { redactedPaths: ["body.leaseToken", "output.credential.ciphertext"] }),
326
469
  renewAssignment: providerPath("providers.assignments.renew", "POST", "/v1/provider/assignments/{assignmentId}/renew", { assignmentId: z.string().min(1) }),
327
470
  startExecution: providerPath("providers.assignments.execution.start", "POST", "/v1/provider/assignments/{assignmentId}/execution-start", { assignmentId: z.string().min(1) }),
328
471
  startCloseout: providerPath("providers.assignments.closeout.start", "POST", "/v1/provider/assignments/{assignmentId}/closeout-start", { assignmentId: z.string().min(1) }),
329
472
  completionPreflight: providerPath("providers.assignments.completion.preflight", "POST", "/v1/provider/assignments/{assignmentId}/completion-preflight", { assignmentId: z.string().min(1) }),
473
+ discussionResponse: providerDiscussionResponseOperation(),
474
+ ...providerCommunicationLifecycleOperations(),
330
475
  returnAssignment: providerPath("providers.assignments.return", "POST", "/v1/provider/assignments/{assignmentId}/return", { assignmentId: z.string().min(1) }),
331
476
  completeAssignment: providerPath("providers.assignments.complete", "POST", "/v1/provider/assignments/{assignmentId}/complete", { assignmentId: z.string().min(1) }),
332
477
  failAssignment: providerPath("providers.assignments.fail", "POST", "/v1/provider/assignments/{assignmentId}/fail", { assignmentId: z.string().min(1) }),
@@ -339,16 +484,8 @@ const CONTROL_PLANE_OPERATIONS = {
339
484
  workflowRun: providerPath("providers.assignments.workflow.show", "GET", "/v1/provider/assignments/{assignmentId}/workflow-runs/{runId}", { assignmentId: z.string().min(1), runId: z.string().min(1) }, { read: true })
340
485
  }
341
486
  };
342
- function flatten(value, output = []) {
343
- if (value && typeof value === "object" && "descriptor" in value && "schema" in value) output.push(value);
344
- else if (value && typeof value === "object") for (const child of Object.values(value)) flatten(child, output);
345
- return output;
346
- }
347
- const CONTROL_PLANE_OPERATION_LIST = Object.freeze(flatten(CONTROL_PLANE_OPERATIONS));
348
- const CONTROL_PLANE_CATALOG = Object.freeze({
349
- schemaVersion: "treeseed.control-plane-catalog/v1",
350
- operations: CONTROL_PLANE_OPERATION_LIST.map((operation) => operation.descriptor)
351
- });
487
+ const CONTROL_PLANE_OPERATION_LIST = Object.freeze(flattenControlPlaneOperations(CONTROL_PLANE_OPERATIONS));
488
+ const CONTROL_PLANE_CATALOG = buildControlPlaneCatalog(CONTROL_PLANE_OPERATION_LIST);
352
489
  function controlPlaneOperation(operationId) {
353
490
  const operation = CONTROL_PLANE_OPERATION_LIST.find((candidate) => candidate.descriptor.operationId === operationId);
354
491
  if (!operation) throw new Error(`Unknown control-plane operation ${operationId}.`);