@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
@@ -0,0 +1,204 @@
1
+ import { z } from "zod";
2
+ import { migrateDevelopmentRuntime, migrateDevelopmentSession } from "./session-migration.js";
3
+ const identifier = z.string().regex(/^[a-z][a-z0-9.-]{1,63}$/u);
4
+ const digest = z.string().regex(/^sha256:[a-f0-9]{64}$/u);
5
+ const gitCommit = z.string().regex(/^[a-f0-9]{40}$/u);
6
+ const relativePath = z.string().min(1).max(512).refine((value) => {
7
+ if (value.startsWith("/") || value.includes("\\") || value.includes("\0")) return false;
8
+ return !value.split("/").some((part) => part === ".." || part === "");
9
+ }, "Paths must be safe, normalized, repository-relative paths.");
10
+ const environmentName = z.string().regex(/^[A-Z][A-Z0-9_]{0,127}$/u);
11
+ const localAlias = z.string().regex(/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)*\.localhost$/u);
12
+ const developmentModeSchema = z.enum(["released", "candidate", "live"]);
13
+ const developmentTargetKindSchema = z.enum(["source-check", "package-watch", "live-web", "live-api", "rebuild-restart", "local-companion"]);
14
+ const developmentExecutionCustodySchema = z.enum(["caller", "manager"]);
15
+ const developmentReactionSchema = z.enum(["reload", "restart", "rebuild", "stale", "manual", "none"]);
16
+ const developmentStatePolicySchema = z.enum(["stateless", "ephemeral", "clone", "shared-compatible"]);
17
+ const operationSchema = z.object({
18
+ command: z.string().min(1).max(256),
19
+ args: z.array(z.string().max(4096)).max(64).default([]),
20
+ cwd: relativePath.optional(),
21
+ environment: z.record(environmentName, z.string().max(16384)).default({}),
22
+ timeoutSeconds: z.number().int().positive().max(86400).default(600)
23
+ }).strict();
24
+ const readinessSchema = z.discriminatedUnion("kind", [
25
+ z.object({ kind: z.literal("marker"), path: relativePath, timeoutSeconds: z.number().int().positive().max(3600) }).strict(),
26
+ z.object({ kind: z.literal("http"), path: z.string().startsWith("/"), expectedStatus: z.number().int().min(100).max(599).default(200), timeoutSeconds: z.number().int().positive().max(3600) }).strict(),
27
+ z.object({ kind: z.literal("tcp"), timeoutSeconds: z.number().int().positive().max(3600) }).strict(),
28
+ z.object({ kind: z.literal("process"), graceSeconds: z.number().int().nonnegative().max(600).default(2) }).strict()
29
+ ]);
30
+ const endpointSchema = z.object({
31
+ id: identifier,
32
+ protocol: z.enum(["http", "https", "tcp"]),
33
+ port: z.number().int().min(1).max(65535),
34
+ canonicalAlias: localAlias.optional(),
35
+ visibility: z.enum(["host", "loopback", "private"]),
36
+ authentication: z.enum(["none", "application", "mtls"]).default("none")
37
+ }).strict().superRefine((endpoint, context) => {
38
+ if (endpoint.visibility === "host" && !endpoint.canonicalAlias) context.addIssue({ code: z.ZodIssueCode.custom, path: ["canonicalAlias"], message: "Host-visible endpoints require a canonical .localhost alias." });
39
+ if (endpoint.visibility !== "host" && endpoint.canonicalAlias) context.addIssue({ code: z.ZodIssueCode.custom, path: ["canonicalAlias"], message: "Only host-visible endpoints may request a canonical alias." });
40
+ });
41
+ const outputSchema = z.object({
42
+ path: relativePath,
43
+ mediaType: z.string().min(1).max(256),
44
+ completionMarker: relativePath.optional(),
45
+ digestAlgorithm: z.literal("sha256").default("sha256")
46
+ }).strict();
47
+ const dependencySchema = z.object({
48
+ id: identifier,
49
+ target: identifier,
50
+ capability: identifier.optional(),
51
+ locality: z.enum(["local", "remote", "either"]).default("either"),
52
+ reaction: developmentReactionSchema
53
+ }).strict();
54
+ const freezeSchema = z.object({
55
+ kind: z.enum(["npm-package", "oci-image", "archive", "executable"]),
56
+ operation: operationSchema,
57
+ artifacts: z.array(relativePath).min(1),
58
+ contractOperations: z.array(operationSchema).default([])
59
+ }).strict();
60
+ const developmentTargetSchema = z.object({
61
+ id: identifier,
62
+ kind: developmentTargetKindSchema,
63
+ executionCustody: developmentExecutionCustodySchema.default("caller"),
64
+ platforms: z.array(z.enum(["linux-amd64", "linux-arm64", "darwin-arm64", "darwin-amd64"])).min(1),
65
+ runtimeRequirements: z.array(z.string().min(1).max(128)).default([]),
66
+ sourceRoots: z.array(relativePath).min(1),
67
+ ignoredPaths: z.array(relativePath).default([]),
68
+ operations: z.object({
69
+ setup: operationSchema.optional(),
70
+ watch: operationSchema.optional(),
71
+ build: operationSchema.optional(),
72
+ start: operationSchema.optional(),
73
+ stop: operationSchema.optional(),
74
+ verify: operationSchema.optional(),
75
+ cleanup: operationSchema.optional()
76
+ }).strict(),
77
+ ready: readinessSchema,
78
+ outputs: z.array(outputSchema).default([]),
79
+ endpoints: z.array(endpointSchema).default([]),
80
+ dependencies: z.array(dependencySchema).default([]),
81
+ statePolicy: developmentStatePolicySchema,
82
+ migrationPolicy: z.enum(["none", "explicit-review", "disposable-only"]),
83
+ secretRefs: z.record(environmentName, identifier).default({}),
84
+ shutdown: z.object({ drainOperation: operationSchema.optional(), graceSeconds: z.number().int().nonnegative().max(3600).default(30), activeWorkPolicy: z.enum(["block", "drain", "cancel-authorized"]).default("block") }).strict(),
85
+ resources: z.object({ cpuCores: z.number().positive().optional(), memoryBytes: z.number().int().positive().optional(), diskBytes: z.number().int().positive().optional() }).strict().default({}),
86
+ logs: z.array(relativePath).default([]),
87
+ forbiddenOperations: z.array(z.string().min(1).max(128)).default([]),
88
+ freeze: freezeSchema.optional(),
89
+ promotion: z.object({ liveAdmissible: z.literal(false), candidateRequiresVerification: z.literal(true) }).strict()
90
+ }).strict().superRefine((target, context) => {
91
+ const endpoints = target.endpoints.map((entry) => entry.id);
92
+ if (new Set(endpoints).size !== endpoints.length) context.addIssue({ code: z.ZodIssueCode.custom, path: ["endpoints"], message: "Development endpoint IDs must be unique." });
93
+ if ((target.kind === "package-watch" || target.kind === "source-check") && target.endpoints.length) context.addIssue({ code: z.ZodIssueCode.custom, path: ["endpoints"], message: "Source and package targets cannot own service endpoints." });
94
+ if (target.kind === "source-check" && (!target.operations.verify || target.operations.start || target.operations.watch)) context.addIssue({ code: z.ZodIssueCode.custom, path: ["operations"], message: "Source-check targets require verify and cannot start a process." });
95
+ if (target.kind === "local-companion" && target.endpoints.some((entry) => entry.visibility !== "loopback")) context.addIssue({ code: z.ZodIssueCode.custom, path: ["endpoints"], message: "Local companions must remain loopback-only." });
96
+ if (target.kind !== "package-watch" && target.kind !== "source-check" && target.ready.kind === "marker") context.addIssue({ code: z.ZodIssueCode.custom, path: ["ready"], message: "Service targets require process, TCP, or HTTP readiness." });
97
+ if (target.executionCustody === "manager" && target.kind !== "rebuild-restart") context.addIssue({ code: z.ZodIssueCode.custom, path: ["executionCustody"], message: "Manager custody is reserved for rebuild-restart runtimes." });
98
+ if (target.statePolicy === "shared-compatible" && target.migrationPolicy !== "explicit-review") context.addIssue({ code: z.ZodIssueCode.custom, path: ["migrationPolicy"], message: "Shared state requires explicit migration review." });
99
+ });
100
+ const developmentRuntimeSchema = z.preprocess(migrateDevelopmentRuntime, z.object({
101
+ schemaVersion: z.literal("treeseed.development-runtime/v2"),
102
+ project: z.object({ id: identifier, repository: z.string().regex(/^[a-z0-9_.-]+\/[a-z0-9_.-]+$/iu) }).strict(),
103
+ defaults: z.object({ restoreOnFailure: z.boolean().default(true) }).strict(),
104
+ targets: z.array(developmentTargetSchema).min(1)
105
+ }).strict().superRefine((runtime, context) => {
106
+ const ids = runtime.targets.map((target) => target.id);
107
+ if (new Set(ids).size !== ids.length) context.addIssue({ code: z.ZodIssueCode.custom, path: ["targets"], message: "Development target IDs must be unique." });
108
+ }));
109
+ const repositoryClosureSchema = z.object({
110
+ projectId: identifier,
111
+ repository: z.string().min(1),
112
+ worktree: z.string().min(1),
113
+ commit: gitCommit,
114
+ branch: z.string().min(1).nullable(),
115
+ dirty: z.boolean(),
116
+ dirtyDigest: digest.nullable(),
117
+ recipeDigest: digest
118
+ }).strict();
119
+ const developmentSessionSchema = z.preprocess(migrateDevelopmentSession, z.object({
120
+ schemaVersion: z.literal("treeseed.development-session/v2"),
121
+ sessionId: identifier,
122
+ actor: z.string().min(1).max(256),
123
+ hostId: identifier,
124
+ createdAt: z.string().datetime(),
125
+ status: z.enum(["planning", "active", "degraded", "restoring", "suspended", "stopped"]),
126
+ repositories: z.array(repositoryClosureSchema),
127
+ targets: z.array(z.object({ projectId: identifier, targetId: identifier, mode: developmentModeSchema, generation: z.number().int().nonnegative(), health: z.enum(["pending", "ready", "degraded", "stopped"]), reaction: developmentReactionSchema.optional() }).strict()),
128
+ leases: z.array(z.object({ kind: z.enum(["alias", "component", "state", "secret"]), resource: z.string().min(1), acquiredAt: z.string().datetime() }).strict()),
129
+ restoredReceiptId: identifier.nullable(),
130
+ blockers: z.array(z.object({ code: identifier, message: z.string().min(1), targetId: identifier.optional() }).strict())
131
+ }).strict());
132
+ const developmentCandidateSchema = z.object({
133
+ schemaVersion: z.literal("treeseed.development-candidate/v1"),
134
+ candidateId: identifier,
135
+ sessionId: identifier,
136
+ createdAt: z.string().datetime(),
137
+ source: z.array(repositoryClosureSchema),
138
+ artifacts: z.array(z.object({ projectId: identifier, targetId: identifier, kind: z.enum(["npm-package", "oci-image", "archive", "executable", "contract-bundle"]), identity: z.string().min(1), digest, integrity: z.string().min(1).optional() }).strict()).min(1),
139
+ configurationDigest: digest,
140
+ dependencyGenerations: z.record(z.number().int().nonnegative()),
141
+ compatibilityAttestations: z.array(z.object({ contractId: z.string().min(1), digest, compatible: z.boolean(), minimumBump: z.enum(["none", "patch", "minor", "major"]) }).strict()),
142
+ verification: z.object({ status: z.enum(["pending", "passed", "failed"]), operations: z.array(z.string().min(1)), completedAt: z.string().datetime().nullable() }).strict(),
143
+ promotable: z.boolean()
144
+ }).strict().superRefine((candidate, context) => {
145
+ if (candidate.source.some((source) => source.dirty) && candidate.promotable) context.addIssue({ code: z.ZodIssueCode.custom, path: ["promotable"], message: "Candidates containing dirty source cannot be promotable." });
146
+ if (candidate.verification.status !== "passed" && candidate.promotable) context.addIssue({ code: z.ZodIssueCode.custom, path: ["promotable"], message: "Only verified candidates can be promotable." });
147
+ if (candidate.promotable && candidate.source.some((source) => !Object.keys(candidate.dependencyGenerations).some((key) => key === source.projectId || key.startsWith(`${source.projectId}.`)))) {
148
+ context.addIssue({ code: z.ZodIssueCode.custom, path: ["dependencyGenerations"], message: "Promotable candidates must bind a completed generation for every source project." });
149
+ }
150
+ });
151
+ const releaseArtifactSchema = z.object({
152
+ id: identifier,
153
+ kind: z.enum(["npm-package", "oci-image", "archive", "executable", "sbom", "contract-bundle", "compatibility-attestation", "component-manifest", "compose", "provenance"]),
154
+ identity: z.string().min(1).max(2048),
155
+ digest,
156
+ mediaType: z.string().min(1).max(256),
157
+ size: z.number().int().nonnegative().optional()
158
+ }).strict();
159
+ const releaseEvidenceSchema = z.object({
160
+ schemaVersion: z.literal("treeseed.release-evidence/v1"),
161
+ candidate: z.object({
162
+ id: identifier,
163
+ receiptDigest: digest,
164
+ sourceCommit: gitCommit,
165
+ stagingRef: z.string().min(1).max(256),
166
+ workflowRunId: z.string().regex(/^[1-9][0-9]*$/u),
167
+ createdAt: z.string().datetime()
168
+ }).strict(),
169
+ packages: z.array(z.object({
170
+ projectId: identifier,
171
+ name: z.string().min(1).max(256),
172
+ version: z.string().min(1).max(128),
173
+ minimumBump: z.enum(["none", "patch", "minor", "major"])
174
+ }).strict()).min(1),
175
+ artifacts: z.array(releaseArtifactSchema).min(1),
176
+ contractBundles: z.array(z.object({ id: identifier, digest }).strict()).default([]),
177
+ compatibilityAttestations: z.array(z.object({ contractId: z.string().min(1), digest, compatible: z.literal(true), minimumBump: z.enum(["none", "patch", "minor", "major"]) }).strict()).default([]),
178
+ verification: z.object({
179
+ status: z.literal("passed"),
180
+ operations: z.array(z.string().min(1)).min(1),
181
+ completedAt: z.string().datetime()
182
+ }).strict()
183
+ }).strict().superRefine((evidence, context) => {
184
+ const identities = evidence.artifacts.map((artifact) => artifact.identity);
185
+ if (new Set(identities).size !== identities.length) context.addIssue({ code: z.ZodIssueCode.custom, path: ["artifacts"], message: "Release artifact identities must be unique." });
186
+ for (const bundle of evidence.contractBundles) {
187
+ if (!evidence.artifacts.some((artifact) => artifact.kind === "contract-bundle" && artifact.digest === bundle.digest)) context.addIssue({ code: z.ZodIssueCode.custom, path: ["contractBundles"], message: `Contract bundle ${bundle.id} is not present in artifact custody.` });
188
+ }
189
+ for (const attestation of evidence.compatibilityAttestations) {
190
+ if (!evidence.artifacts.some((artifact) => artifact.kind === "compatibility-attestation" && artifact.digest === attestation.digest)) context.addIssue({ code: z.ZodIssueCode.custom, path: ["compatibilityAttestations"], message: `Compatibility attestation ${attestation.contractId} is not present in artifact custody.` });
191
+ }
192
+ });
193
+ export {
194
+ developmentCandidateSchema,
195
+ developmentExecutionCustodySchema,
196
+ developmentModeSchema,
197
+ developmentReactionSchema,
198
+ developmentRuntimeSchema,
199
+ developmentSessionSchema,
200
+ developmentStatePolicySchema,
201
+ developmentTargetKindSchema,
202
+ developmentTargetSchema,
203
+ releaseEvidenceSchema
204
+ };
@@ -0,0 +1,3 @@
1
+ /** One-way normalization of pre-persistent development records. No expiry behavior survives. */
2
+ export declare function migrateDevelopmentRuntime(value: unknown): unknown;
3
+ export declare function migrateDevelopmentSession(value: unknown): unknown;
@@ -0,0 +1,25 @@
1
+ function migrateDevelopmentRuntime(value) {
2
+ if (!value || typeof value !== "object" || Array.isArray(value)) return value;
3
+ const record = value;
4
+ if (record.schemaVersion !== "treeseed.development-runtime/v1") return value;
5
+ const defaults = record.defaults;
6
+ if (!defaults || typeof defaults !== "object" || Array.isArray(defaults)) return value;
7
+ const { leaseSeconds: retired, ...persistentDefaults } = defaults;
8
+ return { ...record, schemaVersion: "treeseed.development-runtime/v2", defaults: persistentDefaults };
9
+ }
10
+ function migrateDevelopmentSession(value) {
11
+ if (!value || typeof value !== "object" || Array.isArray(value)) return value;
12
+ const record = value;
13
+ if (record.schemaVersion !== "treeseed.development-session/v1") return value;
14
+ const { expiresAt: retired, ...persistent } = record;
15
+ const leases = Array.isArray(record.leases) ? record.leases.map((value2) => {
16
+ if (!value2 || typeof value2 !== "object" || Array.isArray(value2)) return value2;
17
+ const { expiresAt: retired2, ...lease } = value2;
18
+ return lease;
19
+ }) : record.leases;
20
+ return { ...persistent, schemaVersion: "treeseed.development-session/v2", status: record.status === "expired" ? "stopped" : record.status, leases };
21
+ }
22
+ export {
23
+ migrateDevelopmentRuntime,
24
+ migrateDevelopmentSession
25
+ };
@@ -1,5 +1,7 @@
1
1
  import type { ControlPlaneOperationBinding, ControlPlaneOperationBody, ControlPlaneOperationOutput, ControlPlaneOperationPath, ControlPlaneOperationQuery, OAuthScope } from '../../operator-contracts/control-plane-operation.js';
2
2
  import type { ApiPrincipal } from '../../operator-contracts/oauth.js';
3
+ import type { InputRequired } from '../../operator-contracts/mcp.js';
4
+ import type { PublicClientSessionBinding } from '../../identity/contracts.js';
3
5
  export declare const DEFAULT_CONTROL_PLANE_BASE_URL = "http://127.0.0.1:3002";
4
6
  export declare const CONTROL_PLANE_BASE_URL_ENV = "TREESEED_API_BASE_URL";
5
7
  export interface ControlPlaneServerProfile {
@@ -7,13 +9,18 @@ export interface ControlPlaneServerProfile {
7
9
  label: string;
8
10
  baseUrl: string;
9
11
  }
10
- export interface ControlPlaneServerSession {
12
+ export interface ControlPlaneServerSession extends PublicClientSessionBinding {
11
13
  serverId: string;
12
14
  audience: string;
13
15
  accessToken: string;
14
16
  refreshToken?: string;
15
17
  expiresAt?: string;
16
18
  principal?: ApiPrincipal | null;
19
+ activeTeam?: {
20
+ id: string;
21
+ slug: string;
22
+ name: string;
23
+ } | null;
17
24
  }
18
25
  export interface ControlPlaneServerRegistry {
19
26
  version: 1;
@@ -58,6 +65,7 @@ export interface ProblemDetails {
58
65
  requestId?: string;
59
66
  traceId?: string;
60
67
  fields?: Record<string, string[]>;
68
+ inputRequired?: InputRequired;
61
69
  }
62
70
  export interface ControlPlaneCallOptions {
63
71
  method?: 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT';
@@ -67,7 +67,8 @@ function problemFrom(payload, status) {
67
67
  code: typeof source.code === "string" ? source.code : "control_plane_request_failed",
68
68
  requestId: typeof source.requestId === "string" ? source.requestId : void 0,
69
69
  traceId: typeof source.traceId === "string" ? source.traceId : void 0,
70
- fields: source.fields && typeof source.fields === "object" ? source.fields : void 0
70
+ fields: source.fields && typeof source.fields === "object" ? source.fields : void 0,
71
+ inputRequired: source.inputRequired && typeof source.inputRequired === "object" ? source.inputRequired : void 0
71
72
  };
72
73
  }
73
74
  class ControlPlaneClient {
@@ -115,7 +116,8 @@ class ControlPlaneClient {
115
116
  }
116
117
  async authorizeDevice(clientId, scope, signal) {
117
118
  const response = await this.fetchImpl(`${this.baseUrl}/oauth/device_authorization`, { method: "POST", headers: { accept: "application/json", "content-type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ client_id: clientId, scope: scope.join(" ") }), signal });
118
- const payload = await responsePayload(response);
119
+ const rawPayload = await responsePayload(response);
120
+ const payload = rawPayload && typeof rawPayload === "object" ? rawPayload : {};
119
121
  if (!response.ok) throw new ControlPlaneClientError(String(payload.error_description ?? payload.error ?? "Device authorization failed."), response.status, problemFrom(payload, response.status), response.headers);
120
122
  return { deviceCode: String(payload.device_code), userCode: String(payload.user_code), verificationUri: String(payload.verification_uri), verificationUriComplete: typeof payload.verification_uri_complete === "string" ? payload.verification_uri_complete : void 0, expiresIn: Number(payload.expires_in), interval: Number(payload.interval) };
121
123
  }
@@ -131,8 +133,14 @@ class ControlPlaneClient {
131
133
  }
132
134
  async exchangeOAuthToken(values, signal) {
133
135
  const response = await this.fetchImpl(`${this.baseUrl}/oauth/token`, { method: "POST", headers: { accept: "application/json", "content-type": "application/x-www-form-urlencoded" }, body: new URLSearchParams(values), signal });
134
- const payload = await responsePayload(response);
135
- if (!response.ok) throw new ControlPlaneClientError(String(payload.error_description ?? payload.error ?? "OAuth token exchange failed."), response.status, problemFrom(payload, response.status), response.headers);
136
+ const rawPayload = await responsePayload(response);
137
+ const payload = rawPayload && typeof rawPayload === "object" ? rawPayload : {};
138
+ if (!response.ok) {
139
+ const problem = problemFrom(rawPayload, response.status);
140
+ problem.code = typeof payload.error === "string" ? payload.error : problem.code;
141
+ problem.detail = typeof payload.error_description === "string" ? payload.error_description : problem.detail;
142
+ throw new ControlPlaneClientError(problem.detail ?? problem.code, response.status, problem, response.headers);
143
+ }
136
144
  return { tokenType: "Bearer", accessToken: String(payload.access_token), refreshToken: typeof payload.refresh_token === "string" ? payload.refresh_token : void 0, expiresIn: Number(payload.expires_in), scope: String(payload.scope ?? "").split(/\s+/u).filter(Boolean), audience: String(payload.audience ?? this.baseUrl), principal: payload.principal && typeof payload.principal === "object" ? payload.principal : void 0 };
137
145
  }
138
146
  async request(options) {
@@ -165,7 +173,11 @@ class ControlPlaneClient {
165
173
  code: "control_plane_response_invalid"
166
174
  }, response.headers);
167
175
  }
168
- return payload;
176
+ const envelope = payload;
177
+ const etag = response.headers.get("etag");
178
+ const contractDigest = response.headers.get("x-treeseed-contract-digest");
179
+ if (!etag && !contractDigest) return envelope;
180
+ return { ...envelope, meta: { ...envelope.meta ?? {}, ...etag ? { etag } : {}, ...contractDigest ? { contractDigest } : {} } };
169
181
  }
170
182
  }
171
183
  export {
@@ -23,9 +23,24 @@ export interface DeclarativeContextQuery {
23
23
  maxCharacters?: number;
24
24
  };
25
25
  tokenBudget?: number;
26
+ sources?: Array<{
27
+ scope: 'current-project' | 'team-library';
28
+ } | {
29
+ scope: 'same-team';
30
+ projectIds?: string[];
31
+ projectSlugs?: string[];
32
+ } | {
33
+ scope: 'shared-team';
34
+ teamId: string;
35
+ projectIds?: string[];
36
+ }>;
37
+ requirement?: 'required' | 'preferred';
38
+ priority?: number;
39
+ minimumBudget?: number;
40
+ maximumBudget?: number;
41
+ summarization?: 'none' | 'deterministic' | 'provider';
26
42
  format?: DeclarativeContextQueryFormat;
27
43
  filters?: Record<string, unknown>;
28
- required?: boolean;
29
44
  }
30
45
  export type HandlerContextPackSource = 'agent_spec' | 'content_frontmatter' | 'work_package' | 'task_payload' | 'default_role_context';
31
46
  export interface DeclarativeContextQuerySourceRef {
@@ -68,6 +68,11 @@ function compileDeclarativeContextQuery(query, options = {}) {
68
68
  }
69
69
  if (query.resultLimit !== void 0 && !asPositiveInteger(query.resultLimit)) errors.push(`Context query "${id || "<unknown>"}" resultLimit must be a positive integer.`);
70
70
  if (query.tokenBudget !== void 0 && !asPositiveInteger(query.tokenBudget)) errors.push(`Context query "${id || "<unknown>"}" tokenBudget must be a positive integer.`);
71
+ if (query.minimumBudget !== void 0 && !asPositiveInteger(query.minimumBudget)) errors.push(`Context query "${id || "<unknown>"}" minimumBudget must be a positive integer.`);
72
+ if (query.maximumBudget !== void 0 && !asPositiveInteger(query.maximumBudget)) errors.push(`Context query "${id || "<unknown>"}" maximumBudget must be a positive integer.`);
73
+ if (query.minimumBudget !== void 0 && query.maximumBudget !== void 0 && query.minimumBudget > query.maximumBudget) errors.push(`Context query "${id || "<unknown>"}" minimumBudget cannot exceed maximumBudget.`);
74
+ if (query.priority !== void 0 && (!Number.isInteger(query.priority) || query.priority < 0 || query.priority > 100)) errors.push(`Context query "${id || "<unknown>"}" priority must be an integer from 0 through 100.`);
75
+ if (query.sources?.some((source) => source.scope === "shared-team" && !source.teamId.trim())) errors.push(`Context query "${id || "<unknown>"}" shared-team sources require a teamId.`);
71
76
  const scope = query.scope === void 0 ? void 0 : normalizeString(query.scope);
72
77
  if (scope !== void 0 && (!scope || !scope.startsWith("/"))) {
73
78
  errors.push(`Context query "${id || "<unknown>"}" scope must start with "/".`);
@@ -0,0 +1,32 @@
1
+ import type { GuaranteeDiagnostic, GuaranteeVerifierResult } from './index.js';
2
+ export interface UiEvidenceTrustInput {
3
+ requestedDevice: {
4
+ id: string;
5
+ viewport: {
6
+ width: number;
7
+ height: number;
8
+ };
9
+ isMobile: boolean;
10
+ hasTouch: boolean;
11
+ };
12
+ actualDevice: {
13
+ id: string;
14
+ viewport: {
15
+ width: number;
16
+ height: number;
17
+ };
18
+ isMobile: boolean;
19
+ hasTouch: boolean;
20
+ };
21
+ consoleErrors?: Array<{
22
+ message: string;
23
+ asserted?: boolean;
24
+ }>;
25
+ networkErrors?: Array<{
26
+ status?: number;
27
+ message: string;
28
+ asserted?: boolean;
29
+ }>;
30
+ }
31
+ export declare function validateUiEvidenceTrust(input: UiEvidenceTrustInput): GuaranteeDiagnostic[];
32
+ export declare function runUiEvidenceTrustVerifier(): GuaranteeVerifierResult;
@@ -0,0 +1,47 @@
1
+ function validateUiEvidenceTrust(input) {
2
+ const diagnostics = [];
3
+ const requested = input.requestedDevice, actual = input.actualDevice;
4
+ if (requested.id !== actual.id || requested.viewport.width !== actual.viewport.width || requested.viewport.height !== actual.viewport.height || requested.isMobile !== actual.isMobile || requested.hasTouch !== actual.hasTouch) {
5
+ diagnostics.push({ severity: "error", code: "guarantee.scene_device_mismatch", message: `Requested ${requested.id}, but evidence recorded ${actual.id}.` });
6
+ }
7
+ for (const error of input.consoleErrors ?? []) if (!error.asserted) diagnostics.push({
8
+ severity: "error",
9
+ code: "guarantee.scene_unexpected_console_error",
10
+ message: error.message
11
+ });
12
+ for (const error of input.networkErrors ?? []) if (!error.asserted) diagnostics.push({
13
+ severity: "error",
14
+ code: "guarantee.scene_unexpected_network_error",
15
+ message: error.message
16
+ });
17
+ return diagnostics;
18
+ }
19
+ function runUiEvidenceTrustVerifier() {
20
+ const startedAt = (/* @__PURE__ */ new Date()).toISOString();
21
+ const mismatch = validateUiEvidenceTrust({
22
+ requestedDevice: { id: "mobile_chromium", viewport: { width: 390, height: 844 }, isMobile: true, hasTouch: true },
23
+ actualDevice: { id: "desktop_chromium", viewport: { width: 1600, height: 900 }, isMobile: false, hasTouch: false },
24
+ consoleErrors: [{ message: "ReferenceError", asserted: false }],
25
+ networkErrors: [{ status: 500, message: "HTTP 500", asserted: false }]
26
+ });
27
+ const required = /* @__PURE__ */ new Set(["guarantee.scene_device_mismatch", "guarantee.scene_unexpected_console_error", "guarantee.scene_unexpected_network_error"]);
28
+ const observed = new Set(mismatch.map((entry) => entry.code));
29
+ const ok = [...required].every((code) => observed.has(code));
30
+ return {
31
+ schemaVersion: "treeseed.guarantee-verifier-result/v1",
32
+ verifierId: "@treeseed/sdk/ui-evidence-trust",
33
+ startedAt,
34
+ completedAt: (/* @__PURE__ */ new Date()).toISOString(),
35
+ ok,
36
+ checks: [{
37
+ id: "sdk.ui.evidence-trust",
38
+ status: ok ? "passed" : "failed",
39
+ durationMs: 0,
40
+ diagnostics: ok ? [] : [{ severity: "error", code: "guarantee.ui_evidence_trust_incomplete", message: "UI evidence trust did not reject every invalid vector." }]
41
+ }]
42
+ };
43
+ }
44
+ export {
45
+ runUiEvidenceTrustVerifier,
46
+ validateUiEvidenceTrust
47
+ };
@@ -0,0 +1,130 @@
1
+ export { runUiEvidenceTrustVerifier, validateUiEvidenceTrust } from './evidence-trust.js';
2
+ export type GuaranteeRunStatus = 'passed' | 'failed' | 'skipped' | 'blocked';
3
+ export type GuaranteeFilter = Record<string, unknown>;
4
+ export interface GuaranteeDiagnostic {
5
+ severity: 'error' | 'warning' | 'info';
6
+ code: string;
7
+ message: string;
8
+ path?: string;
9
+ sourcePath?: string;
10
+ }
11
+ export interface GuaranteeRunStep {
12
+ id: string;
13
+ kind: string;
14
+ status: GuaranteeRunStatus;
15
+ evidence?: string[];
16
+ diagnostics?: GuaranteeDiagnostic[];
17
+ [key: string]: unknown;
18
+ }
19
+ export interface GuaranteePlanEntry {
20
+ id: string;
21
+ journey: string;
22
+ ownerPackage: string;
23
+ type: string;
24
+ subtype: string;
25
+ status: string;
26
+ gates: string[];
27
+ sourcePath: string;
28
+ selected: boolean;
29
+ dependency: boolean;
30
+ [key: string]: unknown;
31
+ }
32
+ export interface GuaranteePlanReport {
33
+ ok: boolean;
34
+ entries: GuaranteePlanEntry[];
35
+ diagnostics: GuaranteeDiagnostic[];
36
+ [key: string]: unknown;
37
+ }
38
+ export interface GuaranteeRunResult {
39
+ id: string;
40
+ journey: string;
41
+ ownerPackage: string;
42
+ type: string;
43
+ subtype: string;
44
+ status: GuaranteeRunStatus;
45
+ selected: boolean;
46
+ dependency: boolean;
47
+ sourcePath: string;
48
+ steps: GuaranteeRunStep[];
49
+ diagnostics: GuaranteeDiagnostic[];
50
+ evidence: string[];
51
+ [key: string]: unknown;
52
+ }
53
+ export interface GuaranteeRunReport {
54
+ runId: string;
55
+ environment: string;
56
+ startedAt: string;
57
+ completedAt?: string;
58
+ ok: boolean;
59
+ filter: GuaranteeFilter;
60
+ counts: {
61
+ passed: number;
62
+ failed: number;
63
+ skipped: number;
64
+ blocked: number;
65
+ releaseBlockingFailures: number;
66
+ };
67
+ results: GuaranteeRunResult[];
68
+ diagnostics?: GuaranteeDiagnostic[];
69
+ [key: string]: unknown;
70
+ }
71
+ export interface ArtifactGuaranteeVerifier {
72
+ kind: 'artifact';
73
+ ownerPackage: string;
74
+ artifactId: string;
75
+ entrypoint: string;
76
+ exportName?: string;
77
+ caseId: string;
78
+ description?: string;
79
+ }
80
+ export interface CatalogOperationGuaranteeVerifier {
81
+ kind: 'catalogOperation';
82
+ ownerPackage: string;
83
+ operationId: string;
84
+ caseId: string;
85
+ description?: string;
86
+ }
87
+ export type GuaranteeVerifierDefinition = ArtifactGuaranteeVerifier | CatalogOperationGuaranteeVerifier;
88
+ export interface GuaranteeVerifierCheck {
89
+ id: string;
90
+ status: 'passed' | 'failed';
91
+ durationMs: number;
92
+ diagnostics?: GuaranteeDiagnostic[];
93
+ error?: string;
94
+ evidence?: string[];
95
+ }
96
+ export interface GuaranteeVerifierResult {
97
+ schemaVersion: 'treeseed.guarantee-verifier-result/v1';
98
+ verifierId: string;
99
+ startedAt: string;
100
+ completedAt: string;
101
+ ok: boolean;
102
+ checks: GuaranteeVerifierCheck[];
103
+ [key: string]: unknown;
104
+ }
105
+ interface GuaranteeManifest {
106
+ id: string;
107
+ journey: string;
108
+ ownerPackage: string;
109
+ type: string;
110
+ subtype: string;
111
+ status: string;
112
+ gates: string[];
113
+ [key: string]: unknown;
114
+ }
115
+ interface LoadedGuarantee {
116
+ sourcePath: string;
117
+ relativePath: string;
118
+ manifest: GuaranteeManifest | null;
119
+ }
120
+ export declare function discoverGuarantees(input: {
121
+ workspaceRoot: string;
122
+ filter?: GuaranteeFilter;
123
+ }): {
124
+ ok: boolean;
125
+ guarantees: LoadedGuarantee[];
126
+ diagnostics: GuaranteeDiagnostic[];
127
+ counts: {
128
+ total: number;
129
+ };
130
+ };
@@ -0,0 +1,44 @@
1
+ import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
2
+ import { relative, resolve } from "node:path";
3
+ import { parse } from "yaml";
4
+ import { runUiEvidenceTrustVerifier, validateUiEvidenceTrust } from "./evidence-trust.js";
5
+ function walk(root, out = []) {
6
+ if (!existsSync(root)) return out;
7
+ for (const name of readdirSync(root)) {
8
+ if ([".git", "node_modules", "dist"].includes(name)) continue;
9
+ const path = resolve(root, name);
10
+ const stat = statSync(path);
11
+ if (stat.isDirectory()) walk(path, out);
12
+ else if (name.endsWith(".guarantee.yaml") || name.endsWith(".guarantee.yml")) out.push(path);
13
+ }
14
+ return out;
15
+ }
16
+ function discoverGuarantees(input) {
17
+ const diagnostics = [];
18
+ const guarantees = walk(resolve(input.workspaceRoot)).map((sourcePath) => {
19
+ try {
20
+ const value = parse(readFileSync(sourcePath, "utf8"));
21
+ const manifest = {
22
+ ...value,
23
+ id: String(value.id ?? ""),
24
+ journey: String(value.journey ?? value.id ?? ""),
25
+ ownerPackage: String(value.ownerPackage ?? ""),
26
+ type: String(value.type ?? ""),
27
+ subtype: String(value.subtype ?? ""),
28
+ status: String(value.status ?? "planned"),
29
+ gates: Array.isArray(value.gates) ? value.gates.map(String) : []
30
+ };
31
+ if (!manifest.id) throw new Error("id is required");
32
+ return { sourcePath, relativePath: relative(input.workspaceRoot, sourcePath).replaceAll("\\", "/"), manifest };
33
+ } catch (cause) {
34
+ diagnostics.push({ severity: "error", code: "guarantee.invalid_manifest", message: cause instanceof Error ? cause.message : "Invalid guarantee manifest.", sourcePath });
35
+ return { sourcePath, relativePath: relative(input.workspaceRoot, sourcePath).replaceAll("\\", "/"), manifest: null };
36
+ }
37
+ });
38
+ return { ok: diagnostics.every((entry) => entry.severity !== "error"), guarantees, diagnostics, counts: { total: guarantees.length } };
39
+ }
40
+ export {
41
+ discoverGuarantees,
42
+ runUiEvidenceTrustVerifier,
43
+ validateUiEvidenceTrust
44
+ };