sept-agent 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (642) hide show
  1. package/CONTRIBUTING.md +44 -0
  2. package/LICENSE +21 -0
  3. package/NOTICE +32 -0
  4. package/README.md +89 -2
  5. package/dist/src/cli/auth-interaction.d.ts +7 -0
  6. package/dist/src/cli/auth-interaction.js +127 -0
  7. package/dist/src/cli/auth-interaction.js.map +1 -0
  8. package/dist/src/cli/commands.d.ts +18 -0
  9. package/dist/src/cli/commands.js +239 -0
  10. package/dist/src/cli/commands.js.map +1 -0
  11. package/dist/src/cli/errors.d.ts +8 -0
  12. package/dist/src/cli/errors.js +12 -0
  13. package/dist/src/cli/errors.js.map +1 -0
  14. package/dist/src/cli/options.d.ts +24 -0
  15. package/dist/src/cli/options.js +76 -0
  16. package/dist/src/cli/options.js.map +1 -0
  17. package/dist/src/cli/permission-decisions.d.ts +8 -0
  18. package/dist/src/cli/permission-decisions.js +168 -0
  19. package/dist/src/cli/permission-decisions.js.map +1 -0
  20. package/dist/src/cli/permissions.d.ts +7 -0
  21. package/dist/src/cli/permissions.js +140 -0
  22. package/dist/src/cli/permissions.js.map +1 -0
  23. package/dist/src/cli.d.ts +6 -0
  24. package/dist/src/cli.js +39 -0
  25. package/dist/src/cli.js.map +1 -0
  26. package/dist/src/client/client.d.ts +5 -0
  27. package/dist/src/client/client.js +75 -0
  28. package/dist/src/client/client.js.map +1 -0
  29. package/dist/src/client/contracts.d.ts +76 -0
  30. package/dist/src/client/contracts.js +2 -0
  31. package/dist/src/client/contracts.js.map +1 -0
  32. package/dist/src/client/errors.d.ts +10 -0
  33. package/dist/src/client/errors.js +23 -0
  34. package/dist/src/client/errors.js.map +1 -0
  35. package/dist/src/client/index.d.ts +4 -0
  36. package/dist/src/client/index.js +3 -0
  37. package/dist/src/client/index.js.map +1 -0
  38. package/dist/src/client/request-codecs.d.ts +26 -0
  39. package/dist/src/client/request-codecs.js +101 -0
  40. package/dist/src/client/request-codecs.js.map +1 -0
  41. package/dist/src/client/response-codecs.d.ts +11 -0
  42. package/dist/src/client/response-codecs.js +135 -0
  43. package/dist/src/client/response-codecs.js.map +1 -0
  44. package/dist/src/client/transport.d.ts +7 -0
  45. package/dist/src/client/transport.js +136 -0
  46. package/dist/src/client/transport.js.map +1 -0
  47. package/dist/src/durable/capability-policy.d.ts +52 -0
  48. package/dist/src/durable/capability-policy.js +171 -0
  49. package/dist/src/durable/capability-policy.js.map +1 -0
  50. package/dist/src/durable/capability-request-codec.d.ts +49 -0
  51. package/dist/src/durable/capability-request-codec.js +125 -0
  52. package/dist/src/durable/capability-request-codec.js.map +1 -0
  53. package/dist/src/durable/capability-requests.d.ts +20 -0
  54. package/dist/src/durable/capability-requests.js +143 -0
  55. package/dist/src/durable/capability-requests.js.map +1 -0
  56. package/dist/src/durable/context-transfer-store.d.ts +34 -0
  57. package/dist/src/durable/context-transfer-store.js +125 -0
  58. package/dist/src/durable/context-transfer-store.js.map +1 -0
  59. package/dist/src/durable/contracts.d.ts +146 -0
  60. package/dist/src/durable/contracts.js +27 -0
  61. package/dist/src/durable/contracts.js.map +1 -0
  62. package/dist/src/durable/control-codecs.d.ts +19 -0
  63. package/dist/src/durable/control-codecs.js +168 -0
  64. package/dist/src/durable/control-codecs.js.map +1 -0
  65. package/dist/src/durable/conversation-store.d.ts +36 -0
  66. package/dist/src/durable/conversation-store.js +212 -0
  67. package/dist/src/durable/conversation-store.js.map +1 -0
  68. package/dist/src/durable/errors.d.ts +20 -0
  69. package/dist/src/durable/errors.js +27 -0
  70. package/dist/src/durable/errors.js.map +1 -0
  71. package/dist/src/durable/evidence-codecs.d.ts +15 -0
  72. package/dist/src/durable/evidence-codecs.js +131 -0
  73. package/dist/src/durable/evidence-codecs.js.map +1 -0
  74. package/dist/src/durable/filesystem.d.ts +24 -0
  75. package/dist/src/durable/filesystem.js +183 -0
  76. package/dist/src/durable/filesystem.js.map +1 -0
  77. package/dist/src/durable/index.d.ts +29 -0
  78. package/dist/src/durable/index.js +30 -0
  79. package/dist/src/durable/index.js.map +1 -0
  80. package/dist/src/durable/lease.d.ts +10 -0
  81. package/dist/src/durable/lease.js +260 -0
  82. package/dist/src/durable/lease.js.map +1 -0
  83. package/dist/src/durable/limits.d.ts +25 -0
  84. package/dist/src/durable/limits.js +26 -0
  85. package/dist/src/durable/limits.js.map +1 -0
  86. package/dist/src/durable/operator-queue.d.ts +35 -0
  87. package/dist/src/durable/operator-queue.js +174 -0
  88. package/dist/src/durable/operator-queue.js.map +1 -0
  89. package/dist/src/durable/run-discovery.d.ts +8 -0
  90. package/dist/src/durable/run-discovery.js +62 -0
  91. package/dist/src/durable/run-discovery.js.map +1 -0
  92. package/dist/src/durable/run-evidence.d.ts +22 -0
  93. package/dist/src/durable/run-evidence.js +72 -0
  94. package/dist/src/durable/run-evidence.js.map +1 -0
  95. package/dist/src/durable/run-store.d.ts +85 -0
  96. package/dist/src/durable/run-store.js +275 -0
  97. package/dist/src/durable/run-store.js.map +1 -0
  98. package/dist/src/durable/sqlite-builtin.d.ts +6 -0
  99. package/dist/src/durable/sqlite-builtin.js +59 -0
  100. package/dist/src/durable/sqlite-builtin.js.map +1 -0
  101. package/dist/src/durable/state-codecs.d.ts +10 -0
  102. package/dist/src/durable/state-codecs.js +209 -0
  103. package/dist/src/durable/state-codecs.js.map +1 -0
  104. package/dist/src/durable/validation-primitives.d.ts +18 -0
  105. package/dist/src/durable/validation-primitives.js +65 -0
  106. package/dist/src/durable/validation-primitives.js.map +1 -0
  107. package/dist/src/durable/worker-lifecycle-store.d.ts +18 -0
  108. package/dist/src/durable/worker-lifecycle-store.js +58 -0
  109. package/dist/src/durable/worker-lifecycle-store.js.map +1 -0
  110. package/dist/src/execution/capability-admission.d.ts +18 -0
  111. package/dist/src/execution/capability-admission.js +227 -0
  112. package/dist/src/execution/capability-admission.js.map +1 -0
  113. package/dist/src/execution/capability-requests.d.ts +35 -0
  114. package/dist/src/execution/capability-requests.js +187 -0
  115. package/dist/src/execution/capability-requests.js.map +1 -0
  116. package/dist/src/execution/contracts.d.ts +208 -0
  117. package/dist/src/execution/contracts.js +84 -0
  118. package/dist/src/execution/contracts.js.map +1 -0
  119. package/dist/src/execution/custom-hand.d.ts +10 -0
  120. package/dist/src/execution/custom-hand.js +62 -0
  121. package/dist/src/execution/custom-hand.js.map +1 -0
  122. package/dist/src/execution/docker-backend.d.ts +57 -0
  123. package/dist/src/execution/docker-backend.js +245 -0
  124. package/dist/src/execution/docker-backend.js.map +1 -0
  125. package/dist/src/execution/docker-control.d.ts +43 -0
  126. package/dist/src/execution/docker-control.js +249 -0
  127. package/dist/src/execution/docker-control.js.map +1 -0
  128. package/dist/src/execution/docker-engine.d.ts +36 -0
  129. package/dist/src/execution/docker-engine.js +190 -0
  130. package/dist/src/execution/docker-engine.js.map +1 -0
  131. package/dist/src/execution/engine-failure.d.ts +25 -0
  132. package/dist/src/execution/engine-failure.js +31 -0
  133. package/dist/src/execution/engine-failure.js.map +1 -0
  134. package/dist/src/execution/engine-http.d.ts +19 -0
  135. package/dist/src/execution/engine-http.js +163 -0
  136. package/dist/src/execution/engine-http.js.map +1 -0
  137. package/dist/src/execution/engine-stream.d.ts +20 -0
  138. package/dist/src/execution/engine-stream.js +74 -0
  139. package/dist/src/execution/engine-stream.js.map +1 -0
  140. package/dist/src/execution/hands-bootstrap.d.ts +5 -0
  141. package/dist/src/execution/hands-bootstrap.js +51 -0
  142. package/dist/src/execution/hands-bootstrap.js.map +1 -0
  143. package/dist/src/execution/hands-command-authority.d.ts +10 -0
  144. package/dist/src/execution/hands-command-authority.js +142 -0
  145. package/dist/src/execution/hands-command-authority.js.map +1 -0
  146. package/dist/src/execution/hands-command-client.d.ts +19 -0
  147. package/dist/src/execution/hands-command-client.js +57 -0
  148. package/dist/src/execution/hands-command-client.js.map +1 -0
  149. package/dist/src/execution/hands-command-contracts.d.ts +32 -0
  150. package/dist/src/execution/hands-command-contracts.js +2 -0
  151. package/dist/src/execution/hands-command-contracts.js.map +1 -0
  152. package/dist/src/execution/hands-discovery.d.ts +22 -0
  153. package/dist/src/execution/hands-discovery.js +71 -0
  154. package/dist/src/execution/hands-discovery.js.map +1 -0
  155. package/dist/src/execution/hands-effects.d.ts +5 -0
  156. package/dist/src/execution/hands-effects.js +59 -0
  157. package/dist/src/execution/hands-effects.js.map +1 -0
  158. package/dist/src/execution/hands-entry.d.ts +5 -0
  159. package/dist/src/execution/hands-entry.js +139 -0
  160. package/dist/src/execution/hands-entry.js.map +1 -0
  161. package/dist/src/execution/hands-file-options.d.ts +11 -0
  162. package/dist/src/execution/hands-file-options.js +26 -0
  163. package/dist/src/execution/hands-file-options.js.map +1 -0
  164. package/dist/src/execution/hands-files.d.ts +52 -0
  165. package/dist/src/execution/hands-files.js +266 -0
  166. package/dist/src/execution/hands-files.js.map +1 -0
  167. package/dist/src/execution/hands-frame-decoder.d.ts +24 -0
  168. package/dist/src/execution/hands-frame-decoder.js +113 -0
  169. package/dist/src/execution/hands-frame-decoder.js.map +1 -0
  170. package/dist/src/execution/hands-guarded-command.d.ts +4 -0
  171. package/dist/src/execution/hands-guarded-command.js +25 -0
  172. package/dist/src/execution/hands-guarded-command.js.map +1 -0
  173. package/dist/src/execution/hands-live-authority.d.ts +13 -0
  174. package/dist/src/execution/hands-live-authority.js +17 -0
  175. package/dist/src/execution/hands-live-authority.js.map +1 -0
  176. package/dist/src/execution/hands-loss.d.ts +27 -0
  177. package/dist/src/execution/hands-loss.js +31 -0
  178. package/dist/src/execution/hands-loss.js.map +1 -0
  179. package/dist/src/execution/hands-native-child.d.ts +30 -0
  180. package/dist/src/execution/hands-native-child.js +105 -0
  181. package/dist/src/execution/hands-native-child.js.map +1 -0
  182. package/dist/src/execution/hands-opening.d.ts +16 -0
  183. package/dist/src/execution/hands-opening.js +31 -0
  184. package/dist/src/execution/hands-opening.js.map +1 -0
  185. package/dist/src/execution/hands-operation.d.ts +18 -0
  186. package/dist/src/execution/hands-operation.js +91 -0
  187. package/dist/src/execution/hands-operation.js.map +1 -0
  188. package/dist/src/execution/hands-paths.d.ts +27 -0
  189. package/dist/src/execution/hands-paths.js +136 -0
  190. package/dist/src/execution/hands-paths.js.map +1 -0
  191. package/dist/src/execution/hands-process-owner.d.ts +37 -0
  192. package/dist/src/execution/hands-process-owner.js +248 -0
  193. package/dist/src/execution/hands-process-owner.js.map +1 -0
  194. package/dist/src/execution/hands-processes.d.ts +46 -0
  195. package/dist/src/execution/hands-processes.js +262 -0
  196. package/dist/src/execution/hands-processes.js.map +1 -0
  197. package/dist/src/execution/hands-request.d.ts +5 -0
  198. package/dist/src/execution/hands-request.js +127 -0
  199. package/dist/src/execution/hands-request.js.map +1 -0
  200. package/dist/src/execution/hands-resident.d.ts +2 -0
  201. package/dist/src/execution/hands-resident.js +139 -0
  202. package/dist/src/execution/hands-resident.js.map +1 -0
  203. package/dist/src/execution/hands-resources.d.ts +13 -0
  204. package/dist/src/execution/hands-resources.js +179 -0
  205. package/dist/src/execution/hands-resources.js.map +1 -0
  206. package/dist/src/execution/hands-selected-inputs.d.ts +12 -0
  207. package/dist/src/execution/hands-selected-inputs.js +96 -0
  208. package/dist/src/execution/hands-selected-inputs.js.map +1 -0
  209. package/dist/src/execution/index.d.ts +11 -0
  210. package/dist/src/execution/index.js +12 -0
  211. package/dist/src/execution/index.js.map +1 -0
  212. package/dist/src/execution/native-env.d.ts +48 -0
  213. package/dist/src/execution/native-env.js +112 -0
  214. package/dist/src/execution/native-env.js.map +1 -0
  215. package/dist/src/execution/network-enforcement.d.ts +7 -0
  216. package/dist/src/execution/network-enforcement.js +129 -0
  217. package/dist/src/execution/network-enforcement.js.map +1 -0
  218. package/dist/src/execution/network-profile.d.ts +9 -0
  219. package/dist/src/execution/network-profile.js +220 -0
  220. package/dist/src/execution/network-profile.js.map +1 -0
  221. package/dist/src/execution/profile-configuration.d.ts +36 -0
  222. package/dist/src/execution/profile-configuration.js +268 -0
  223. package/dist/src/execution/profile-configuration.js.map +1 -0
  224. package/dist/src/execution/profile-sources.d.ts +4 -0
  225. package/dist/src/execution/profile-sources.js +61 -0
  226. package/dist/src/execution/profile-sources.js.map +1 -0
  227. package/dist/src/execution/profile.d.ts +13 -0
  228. package/dist/src/execution/profile.js +241 -0
  229. package/dist/src/execution/profile.js.map +1 -0
  230. package/dist/src/execution/protocol.d.ts +26 -0
  231. package/dist/src/execution/protocol.js +260 -0
  232. package/dist/src/execution/protocol.js.map +1 -0
  233. package/dist/src/execution/warm-channel.d.ts +41 -0
  234. package/dist/src/execution/warm-channel.js +266 -0
  235. package/dist/src/execution/warm-channel.js.map +1 -0
  236. package/dist/src/execution/warm-handshake.d.ts +6 -0
  237. package/dist/src/execution/warm-handshake.js +69 -0
  238. package/dist/src/execution/warm-handshake.js.map +1 -0
  239. package/dist/src/hands-api.d.ts +54 -0
  240. package/dist/src/hands-api.js +7 -0
  241. package/dist/src/hands-api.js.map +1 -0
  242. package/dist/src/hands.d.ts +2 -0
  243. package/dist/src/hands.js +3 -0
  244. package/dist/src/hands.js.map +1 -0
  245. package/dist/src/index.d.ts +4 -0
  246. package/dist/src/index.js +4 -0
  247. package/dist/src/index.js.map +1 -0
  248. package/dist/src/ingress/conversation-stream.d.ts +17 -0
  249. package/dist/src/ingress/conversation-stream.js +160 -0
  250. package/dist/src/ingress/conversation-stream.js.map +1 -0
  251. package/dist/src/ingress/errors.d.ts +14 -0
  252. package/dist/src/ingress/errors.js +20 -0
  253. package/dist/src/ingress/errors.js.map +1 -0
  254. package/dist/src/ingress/http-errors.d.ts +7 -0
  255. package/dist/src/ingress/http-errors.js +41 -0
  256. package/dist/src/ingress/http-errors.js.map +1 -0
  257. package/dist/src/ingress/http.d.ts +28 -0
  258. package/dist/src/ingress/http.js +174 -0
  259. package/dist/src/ingress/http.js.map +1 -0
  260. package/dist/src/ingress/index.d.ts +8 -0
  261. package/dist/src/ingress/index.js +9 -0
  262. package/dist/src/ingress/index.js.map +1 -0
  263. package/dist/src/ingress/request-router.d.ts +35 -0
  264. package/dist/src/ingress/request-router.js +209 -0
  265. package/dist/src/ingress/request-router.js.map +1 -0
  266. package/dist/src/ingress/service.d.ts +60 -0
  267. package/dist/src/ingress/service.js +252 -0
  268. package/dist/src/ingress/service.js.map +1 -0
  269. package/dist/src/ingress/validation.d.ts +29 -0
  270. package/dist/src/ingress/validation.js +254 -0
  271. package/dist/src/ingress/validation.js.map +1 -0
  272. package/dist/src/ingress/webhook-receipts.d.ts +40 -0
  273. package/dist/src/ingress/webhook-receipts.js +166 -0
  274. package/dist/src/ingress/webhook-receipts.js.map +1 -0
  275. package/dist/src/ingress/webhook-router.d.ts +39 -0
  276. package/dist/src/ingress/webhook-router.js +154 -0
  277. package/dist/src/ingress/webhook-router.js.map +1 -0
  278. package/dist/src/ingress/webhook.d.ts +39 -0
  279. package/dist/src/ingress/webhook.js +117 -0
  280. package/dist/src/ingress/webhook.js.map +1 -0
  281. package/dist/src/model-access/contracts.d.ts +113 -0
  282. package/dist/src/model-access/contracts.js +7 -0
  283. package/dist/src/model-access/contracts.js.map +1 -0
  284. package/dist/src/model-access/custom-configuration.d.ts +8 -0
  285. package/dist/src/model-access/custom-configuration.js +176 -0
  286. package/dist/src/model-access/custom-configuration.js.map +1 -0
  287. package/dist/src/model-access/index.d.ts +17 -0
  288. package/dist/src/model-access/index.js +16 -0
  289. package/dist/src/model-access/index.js.map +1 -0
  290. package/dist/src/model-access/input.d.ts +8 -0
  291. package/dist/src/model-access/input.js +11 -0
  292. package/dist/src/model-access/input.js.map +1 -0
  293. package/dist/src/model-access/jsonc.d.ts +8 -0
  294. package/dist/src/model-access/jsonc.js +131 -0
  295. package/dist/src/model-access/jsonc.js.map +1 -0
  296. package/dist/src/model-access/model-metadata.d.ts +23 -0
  297. package/dist/src/model-access/model-metadata.js +40 -0
  298. package/dist/src/model-access/model-metadata.js.map +1 -0
  299. package/dist/src/model-access/normalization.d.ts +15 -0
  300. package/dist/src/model-access/normalization.js +69 -0
  301. package/dist/src/model-access/normalization.js.map +1 -0
  302. package/dist/src/model-access/pod-selection.d.ts +10 -0
  303. package/dist/src/model-access/pod-selection.js +61 -0
  304. package/dist/src/model-access/pod-selection.js.map +1 -0
  305. package/dist/src/model-access/runtime-factory.d.ts +14 -0
  306. package/dist/src/model-access/runtime-factory.js +29 -0
  307. package/dist/src/model-access/runtime-factory.js.map +1 -0
  308. package/dist/src/model-access/service.d.ts +40 -0
  309. package/dist/src/model-access/service.js +249 -0
  310. package/dist/src/model-access/service.js.map +1 -0
  311. package/dist/src/observability/configuration.d.ts +36 -0
  312. package/dist/src/observability/configuration.js +77 -0
  313. package/dist/src/observability/configuration.js.map +1 -0
  314. package/dist/src/observability/contract.d.ts +112 -0
  315. package/dist/src/observability/contract.js +7 -0
  316. package/dist/src/observability/contract.js.map +1 -0
  317. package/dist/src/observability/exporters.d.ts +29 -0
  318. package/dist/src/observability/exporters.js +104 -0
  319. package/dist/src/observability/exporters.js.map +1 -0
  320. package/dist/src/observability/index.d.ts +9 -0
  321. package/dist/src/observability/index.js +8 -0
  322. package/dist/src/observability/index.js.map +1 -0
  323. package/dist/src/observability/logger.d.ts +28 -0
  324. package/dist/src/observability/logger.js +124 -0
  325. package/dist/src/observability/logger.js.map +1 -0
  326. package/dist/src/observability/metrics.d.ts +63 -0
  327. package/dist/src/observability/metrics.js +284 -0
  328. package/dist/src/observability/metrics.js.map +1 -0
  329. package/dist/src/observability/safe-fields.d.ts +38 -0
  330. package/dist/src/observability/safe-fields.js +100 -0
  331. package/dist/src/observability/safe-fields.js.map +1 -0
  332. package/dist/src/observability/setup.d.ts +55 -0
  333. package/dist/src/observability/setup.js +109 -0
  334. package/dist/src/observability/setup.js.map +1 -0
  335. package/dist/src/observability/telemetry.d.ts +29 -0
  336. package/dist/src/observability/telemetry.js +183 -0
  337. package/dist/src/observability/telemetry.js.map +1 -0
  338. package/dist/src/observability/tracing.d.ts +70 -0
  339. package/dist/src/observability/tracing.js +252 -0
  340. package/dist/src/observability/tracing.js.map +1 -0
  341. package/dist/src/package-metadata.d.ts +7 -0
  342. package/dist/src/package-metadata.js +27 -0
  343. package/dist/src/package-metadata.js.map +1 -0
  344. package/dist/src/pi-integration/contracts.d.ts +72 -0
  345. package/dist/src/pi-integration/contracts.js +2 -0
  346. package/dist/src/pi-integration/contracts.js.map +1 -0
  347. package/dist/src/pi-integration/custom-tool.d.ts +10 -0
  348. package/dist/src/pi-integration/custom-tool.js +101 -0
  349. package/dist/src/pi-integration/custom-tool.js.map +1 -0
  350. package/dist/src/pi-integration/diagnostics.d.ts +15 -0
  351. package/dist/src/pi-integration/diagnostics.js +20 -0
  352. package/dist/src/pi-integration/diagnostics.js.map +1 -0
  353. package/dist/src/pi-integration/durable-admission.d.ts +22 -0
  354. package/dist/src/pi-integration/durable-admission.js +138 -0
  355. package/dist/src/pi-integration/durable-admission.js.map +1 -0
  356. package/dist/src/pi-integration/durable-database-preflight.d.ts +8 -0
  357. package/dist/src/pi-integration/durable-database-preflight.js +127 -0
  358. package/dist/src/pi-integration/durable-database-preflight.js.map +1 -0
  359. package/dist/src/pi-integration/durable-extensions.d.ts +4 -0
  360. package/dist/src/pi-integration/durable-extensions.js +189 -0
  361. package/dist/src/pi-integration/durable-extensions.js.map +1 -0
  362. package/dist/src/pi-integration/durable-guard.d.ts +20 -0
  363. package/dist/src/pi-integration/durable-guard.js +55 -0
  364. package/dist/src/pi-integration/durable-guard.js.map +1 -0
  365. package/dist/src/pi-integration/durable-host.d.ts +44 -0
  366. package/dist/src/pi-integration/durable-host.js +169 -0
  367. package/dist/src/pi-integration/durable-host.js.map +1 -0
  368. package/dist/src/pi-integration/durable-initialization.d.ts +10 -0
  369. package/dist/src/pi-integration/durable-initialization.js +75 -0
  370. package/dist/src/pi-integration/durable-initialization.js.map +1 -0
  371. package/dist/src/pi-integration/durable-invocation.d.ts +49 -0
  372. package/dist/src/pi-integration/durable-invocation.js +266 -0
  373. package/dist/src/pi-integration/durable-invocation.js.map +1 -0
  374. package/dist/src/pi-integration/durable-preflight.d.ts +9 -0
  375. package/dist/src/pi-integration/durable-preflight.js +207 -0
  376. package/dist/src/pi-integration/durable-preflight.js.map +1 -0
  377. package/dist/src/pi-integration/durable-resources.d.ts +6 -0
  378. package/dist/src/pi-integration/durable-resources.js +259 -0
  379. package/dist/src/pi-integration/durable-resources.js.map +1 -0
  380. package/dist/src/pi-integration/durable-rotation-recovery.d.ts +10 -0
  381. package/dist/src/pi-integration/durable-rotation-recovery.js +77 -0
  382. package/dist/src/pi-integration/durable-rotation-recovery.js.map +1 -0
  383. package/dist/src/pi-integration/durable-runtime.d.ts +10 -0
  384. package/dist/src/pi-integration/durable-runtime.js +190 -0
  385. package/dist/src/pi-integration/durable-runtime.js.map +1 -0
  386. package/dist/src/pi-integration/durable-session-files.d.ts +15 -0
  387. package/dist/src/pi-integration/durable-session-files.js +110 -0
  388. package/dist/src/pi-integration/durable-session-files.js.map +1 -0
  389. package/dist/src/pi-integration/durable-submission.d.ts +30 -0
  390. package/dist/src/pi-integration/durable-submission.js +105 -0
  391. package/dist/src/pi-integration/durable-submission.js.map +1 -0
  392. package/dist/src/pi-integration/durable-tools.d.ts +12 -0
  393. package/dist/src/pi-integration/durable-tools.js +151 -0
  394. package/dist/src/pi-integration/durable-tools.js.map +1 -0
  395. package/dist/src/pi-integration/index.d.ts +15 -0
  396. package/dist/src/pi-integration/index.js +15 -0
  397. package/dist/src/pi-integration/index.js.map +1 -0
  398. package/dist/src/pi-integration/message-text.d.ts +3 -0
  399. package/dist/src/pi-integration/message-text.js +24 -0
  400. package/dist/src/pi-integration/message-text.js.map +1 -0
  401. package/dist/src/pi-integration/prompts.d.ts +18 -0
  402. package/dist/src/pi-integration/prompts.js +77 -0
  403. package/dist/src/pi-integration/prompts.js.map +1 -0
  404. package/dist/src/pi-integration/rollover-evidence.d.ts +35 -0
  405. package/dist/src/pi-integration/rollover-evidence.js +202 -0
  406. package/dist/src/pi-integration/rollover-evidence.js.map +1 -0
  407. package/dist/src/pi-integration/rollover.d.ts +28 -0
  408. package/dist/src/pi-integration/rollover.js +106 -0
  409. package/dist/src/pi-integration/rollover.js.map +1 -0
  410. package/dist/src/pi-integration/sqlite-driver.d.ts +6 -0
  411. package/dist/src/pi-integration/sqlite-driver.js +24 -0
  412. package/dist/src/pi-integration/sqlite-driver.js.map +1 -0
  413. package/dist/src/runtime/contracts.d.ts +29 -0
  414. package/dist/src/runtime/contracts.js +7 -0
  415. package/dist/src/runtime/contracts.js.map +1 -0
  416. package/dist/src/runtime/controller.d.ts +37 -0
  417. package/dist/src/runtime/controller.js +231 -0
  418. package/dist/src/runtime/controller.js.map +1 -0
  419. package/dist/src/runtime/errors.d.ts +17 -0
  420. package/dist/src/runtime/errors.js +24 -0
  421. package/dist/src/runtime/errors.js.map +1 -0
  422. package/dist/src/runtime/index.d.ts +11 -0
  423. package/dist/src/runtime/index.js +11 -0
  424. package/dist/src/runtime/index.js.map +1 -0
  425. package/dist/src/runtime/invocation-loop.d.ts +33 -0
  426. package/dist/src/runtime/invocation-loop.js +193 -0
  427. package/dist/src/runtime/invocation-loop.js.map +1 -0
  428. package/dist/src/runtime/runtime-state.d.ts +26 -0
  429. package/dist/src/runtime/runtime-state.js +97 -0
  430. package/dist/src/runtime/runtime-state.js.map +1 -0
  431. package/dist/src/runtime/session-lifecycle.d.ts +33 -0
  432. package/dist/src/runtime/session-lifecycle.js +130 -0
  433. package/dist/src/runtime/session-lifecycle.js.map +1 -0
  434. package/dist/src/runtime/transitions.d.ts +40 -0
  435. package/dist/src/runtime/transitions.js +225 -0
  436. package/dist/src/runtime/transitions.js.map +1 -0
  437. package/dist/src/runtime/worker-execution.d.ts +33 -0
  438. package/dist/src/runtime/worker-execution.js +110 -0
  439. package/dist/src/runtime/worker-execution.js.map +1 -0
  440. package/dist/src/runtime/worker-messages.d.ts +20 -0
  441. package/dist/src/runtime/worker-messages.js +82 -0
  442. package/dist/src/runtime/worker-messages.js.map +1 -0
  443. package/dist/src/runtime/worker-policy.d.ts +26 -0
  444. package/dist/src/runtime/worker-policy.js +131 -0
  445. package/dist/src/runtime/worker-policy.js.map +1 -0
  446. package/dist/src/runtime/worker-recovery.d.ts +17 -0
  447. package/dist/src/runtime/worker-recovery.js +107 -0
  448. package/dist/src/runtime/worker-recovery.js.map +1 -0
  449. package/dist/src/runtime/worker.d.ts +64 -0
  450. package/dist/src/runtime/worker.js +267 -0
  451. package/dist/src/runtime/worker.js.map +1 -0
  452. package/dist/src/worker/capabilities.d.ts +11 -0
  453. package/dist/src/worker/capabilities.js +76 -0
  454. package/dist/src/worker/capabilities.js.map +1 -0
  455. package/dist/src/worker/index.d.ts +3 -0
  456. package/dist/src/worker/index.js +4 -0
  457. package/dist/src/worker/index.js.map +1 -0
  458. package/dist/src/worker/worker.d.ts +7 -0
  459. package/dist/src/worker/worker.js +59 -0
  460. package/dist/src/worker/worker.js.map +1 -0
  461. package/dist/src/worker-api.d.ts +25 -0
  462. package/dist/src/worker-api.js +4 -0
  463. package/dist/src/worker-api.js.map +1 -0
  464. package/docs/architecture.md +168 -0
  465. package/docs/index.md +55 -0
  466. package/docs/models.md +78 -0
  467. package/docs/observability.md +63 -0
  468. package/docs/pi-contract.md +479 -0
  469. package/docs/sdk.md +180 -0
  470. package/docs/worker-api.md +138 -0
  471. package/examples/incident-investigator/README.md +108 -0
  472. package/examples/incident-investigator/investigate.mjs +122 -0
  473. package/examples/incident-investigator/package.json +15 -0
  474. package/examples/node-app/README.md +65 -0
  475. package/examples/node-app/client.ts +55 -0
  476. package/examples/node-app/extensions/example.ts +39 -0
  477. package/examples/node-app/extensions/tsconfig.json +10 -0
  478. package/examples/node-app/package.json +24 -0
  479. package/examples/node-app/tsconfig.json +28 -0
  480. package/examples/node-app/worker.mjs +35 -0
  481. package/image/pi-native-search/README.md +108 -0
  482. package/image/pi-native-search/native-search.patch +84 -0
  483. package/image/pi-native-search/overlay.tgz +0 -0
  484. package/image/pi-native-search/provenance.json +40 -0
  485. package/package.json +92 -4
  486. package/sept +5 -0
  487. package/src/cli/auth-interaction.ts +151 -0
  488. package/src/cli/commands.ts +315 -0
  489. package/src/cli/errors.ts +12 -0
  490. package/src/cli/options.ts +90 -0
  491. package/src/cli/permission-decisions.ts +257 -0
  492. package/src/cli/permissions.ts +199 -0
  493. package/src/cli.ts +48 -0
  494. package/src/client/client.ts +159 -0
  495. package/src/client/contracts.ts +99 -0
  496. package/src/client/errors.ts +23 -0
  497. package/src/client/index.ts +23 -0
  498. package/src/client/request-codecs.ts +126 -0
  499. package/src/client/response-codecs.ts +164 -0
  500. package/src/client/transport.ts +156 -0
  501. package/src/durable/capability-policy.ts +220 -0
  502. package/src/durable/capability-request-codec.ts +179 -0
  503. package/src/durable/capability-requests.ts +172 -0
  504. package/src/durable/context-transfer-store.ts +178 -0
  505. package/src/durable/contracts.ts +196 -0
  506. package/src/durable/control-codecs.ts +233 -0
  507. package/src/durable/conversation-store.ts +274 -0
  508. package/src/durable/errors.ts +26 -0
  509. package/src/durable/evidence-codecs.ts +205 -0
  510. package/src/durable/filesystem.ts +230 -0
  511. package/src/durable/index.ts +91 -0
  512. package/src/durable/lease.ts +311 -0
  513. package/src/durable/limits.ts +35 -0
  514. package/src/durable/operator-queue.ts +217 -0
  515. package/src/durable/run-discovery.ts +66 -0
  516. package/src/durable/run-evidence.ts +82 -0
  517. package/src/durable/run-store.ts +358 -0
  518. package/src/durable/sqlite-builtin.ts +77 -0
  519. package/src/durable/state-codecs.ts +280 -0
  520. package/src/durable/validation-primitives.ts +83 -0
  521. package/src/durable/worker-lifecycle-store.ts +62 -0
  522. package/src/execution/capability-admission.ts +310 -0
  523. package/src/execution/capability-requests.ts +226 -0
  524. package/src/execution/contracts.ts +285 -0
  525. package/src/execution/custom-hand.ts +87 -0
  526. package/src/execution/docker-backend.ts +326 -0
  527. package/src/execution/docker-control.ts +318 -0
  528. package/src/execution/docker-engine.ts +224 -0
  529. package/src/execution/engine-failure.ts +68 -0
  530. package/src/execution/engine-http.ts +214 -0
  531. package/src/execution/engine-stream.ts +70 -0
  532. package/src/execution/hands-bootstrap.ts +52 -0
  533. package/src/execution/hands-command-authority.ts +170 -0
  534. package/src/execution/hands-command-client.ts +65 -0
  535. package/src/execution/hands-command-contracts.ts +41 -0
  536. package/src/execution/hands-command.c +50 -0
  537. package/src/execution/hands-discovery.ts +104 -0
  538. package/src/execution/hands-effects.ts +82 -0
  539. package/src/execution/hands-entry.ts +219 -0
  540. package/src/execution/hands-file-options.ts +35 -0
  541. package/src/execution/hands-files.ts +319 -0
  542. package/src/execution/hands-frame-decoder.ts +106 -0
  543. package/src/execution/hands-guard.c +134 -0
  544. package/src/execution/hands-guarded-command.ts +31 -0
  545. package/src/execution/hands-live-authority.ts +30 -0
  546. package/src/execution/hands-loss.ts +53 -0
  547. package/src/execution/hands-native-child.ts +138 -0
  548. package/src/execution/hands-opening.ts +51 -0
  549. package/src/execution/hands-operation.ts +136 -0
  550. package/src/execution/hands-paths.ts +178 -0
  551. package/src/execution/hands-process-control.c +180 -0
  552. package/src/execution/hands-process-owner.ts +312 -0
  553. package/src/execution/hands-processes.ts +289 -0
  554. package/src/execution/hands-request.ts +140 -0
  555. package/src/execution/hands-resident.ts +190 -0
  556. package/src/execution/hands-resources.ts +254 -0
  557. package/src/execution/hands-selected-inputs.ts +108 -0
  558. package/src/execution/index.ts +36 -0
  559. package/src/execution/native-env.ts +170 -0
  560. package/src/execution/network-enforcement.ts +160 -0
  561. package/src/execution/network-profile.ts +261 -0
  562. package/src/execution/profile-configuration.ts +326 -0
  563. package/src/execution/profile-sources.ts +66 -0
  564. package/src/execution/profile.ts +302 -0
  565. package/src/execution/protocol.ts +291 -0
  566. package/src/execution/warm-channel.ts +310 -0
  567. package/src/execution/warm-handshake.ts +92 -0
  568. package/src/hands-api.ts +53 -0
  569. package/src/hands.ts +6 -0
  570. package/src/index.ts +4 -0
  571. package/src/ingress/conversation-stream.ts +198 -0
  572. package/src/ingress/errors.ts +23 -0
  573. package/src/ingress/http-errors.ts +43 -0
  574. package/src/ingress/http.ts +212 -0
  575. package/src/ingress/index.ts +10 -0
  576. package/src/ingress/request-router.ts +301 -0
  577. package/src/ingress/service.ts +323 -0
  578. package/src/ingress/validation.ts +339 -0
  579. package/src/ingress/webhook-receipts.ts +223 -0
  580. package/src/ingress/webhook-router.ts +207 -0
  581. package/src/ingress/webhook.ts +171 -0
  582. package/src/model-access/contracts.ts +119 -0
  583. package/src/model-access/custom-configuration.ts +227 -0
  584. package/src/model-access/index.ts +38 -0
  585. package/src/model-access/input.ts +12 -0
  586. package/src/model-access/jsonc.ts +143 -0
  587. package/src/model-access/model-metadata.ts +60 -0
  588. package/src/model-access/normalization.ts +86 -0
  589. package/src/model-access/pod-selection.ts +67 -0
  590. package/src/model-access/runtime-factory.ts +42 -0
  591. package/src/model-access/service.ts +339 -0
  592. package/src/observability/configuration.ts +113 -0
  593. package/src/observability/contract.ts +153 -0
  594. package/src/observability/exporters.ts +133 -0
  595. package/src/observability/index.ts +16 -0
  596. package/src/observability/logger.ts +151 -0
  597. package/src/observability/metrics.ts +344 -0
  598. package/src/observability/safe-fields.ts +114 -0
  599. package/src/observability/setup.ts +194 -0
  600. package/src/observability/telemetry.ts +256 -0
  601. package/src/observability/tracing.ts +350 -0
  602. package/src/package-metadata.ts +32 -0
  603. package/src/pi-integration/contracts.ts +82 -0
  604. package/src/pi-integration/custom-tool.ts +142 -0
  605. package/src/pi-integration/diagnostics.ts +30 -0
  606. package/src/pi-integration/durable-admission.ts +178 -0
  607. package/src/pi-integration/durable-database-preflight.ts +165 -0
  608. package/src/pi-integration/durable-extensions.ts +222 -0
  609. package/src/pi-integration/durable-guard.ts +64 -0
  610. package/src/pi-integration/durable-host.ts +234 -0
  611. package/src/pi-integration/durable-initialization.ts +88 -0
  612. package/src/pi-integration/durable-invocation.ts +327 -0
  613. package/src/pi-integration/durable-preflight.ts +266 -0
  614. package/src/pi-integration/durable-resources.ts +323 -0
  615. package/src/pi-integration/durable-rotation-recovery.ts +115 -0
  616. package/src/pi-integration/durable-runtime.ts +320 -0
  617. package/src/pi-integration/durable-session-files.ts +135 -0
  618. package/src/pi-integration/durable-submission.ts +153 -0
  619. package/src/pi-integration/durable-tools.ts +271 -0
  620. package/src/pi-integration/index.ts +31 -0
  621. package/src/pi-integration/message-text.ts +26 -0
  622. package/src/pi-integration/prompts.ts +89 -0
  623. package/src/pi-integration/rollover-evidence.ts +275 -0
  624. package/src/pi-integration/rollover.ts +154 -0
  625. package/src/pi-integration/sqlite-driver.ts +28 -0
  626. package/src/runtime/contracts.ts +34 -0
  627. package/src/runtime/controller.ts +327 -0
  628. package/src/runtime/errors.ts +26 -0
  629. package/src/runtime/index.ts +18 -0
  630. package/src/runtime/invocation-loop.ts +279 -0
  631. package/src/runtime/runtime-state.ts +157 -0
  632. package/src/runtime/session-lifecycle.ts +163 -0
  633. package/src/runtime/transitions.ts +317 -0
  634. package/src/runtime/worker-execution.ts +139 -0
  635. package/src/runtime/worker-messages.ts +99 -0
  636. package/src/runtime/worker-policy.ts +183 -0
  637. package/src/runtime/worker-recovery.ts +141 -0
  638. package/src/runtime/worker.ts +342 -0
  639. package/src/worker/capabilities.ts +106 -0
  640. package/src/worker/index.ts +7 -0
  641. package/src/worker/worker.ts +69 -0
  642. package/src/worker-api.ts +30 -0
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Parses the installed CLI's argv boundary. It owns command/option syntax only and passes bounded
3
+ * strings toward command composition without interpreting runtime or credential semantics.
4
+ */
5
+ declare const OPTION_KEYS: {
6
+ readonly worker: readonly ["hands", "agent-dir", "host", "port", "state-dir", "workspace-root"];
7
+ readonly run: readonly ["hands", "agent-dir", "resume", "message", "max-epochs", "max-invocations", "model", "provider", "role", "state-dir", "task", "thinking", "timeout", "workspace"];
8
+ readonly doctor: readonly ["agent-dir", "provider"];
9
+ readonly health: readonly ["url"];
10
+ readonly models: readonly ["agent-dir", "model", "provider"];
11
+ readonly permissions: readonly ["agent-dir", "state-dir", "hands", "policy", "mode", "revision", "request", "digest", "expires"];
12
+ readonly auth: readonly ["agent-dir", "method", "provider"];
13
+ };
14
+ /** Installed CLI commands accepted before any mechanism is constructed. */
15
+ export type CliCommand = keyof typeof OPTION_KEYS;
16
+ /** Parsed command syntax; command handlers remain responsible for semantic validation. */
17
+ export interface CliInvocation {
18
+ command: CliCommand;
19
+ action?: string;
20
+ options: Record<string, string>;
21
+ }
22
+ /** Parse argv without admitting unknown commands, positional values, or duplicate options. */
23
+ export declare function parseCliInvocation(argv: string[]): CliInvocation | undefined;
24
+ export {};
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Parses the installed CLI's argv boundary. It owns command/option syntax only and passes bounded
3
+ * strings toward command composition without interpreting runtime or credential semantics.
4
+ */
5
+ import { CliError } from "./errors.js";
6
+ const OPTION_KEYS = {
7
+ worker: ["hands", "agent-dir", "host", "port", "state-dir", "workspace-root"],
8
+ run: [
9
+ "hands",
10
+ "agent-dir",
11
+ "resume",
12
+ "message",
13
+ "max-epochs",
14
+ "max-invocations",
15
+ "model",
16
+ "provider",
17
+ "role",
18
+ "state-dir",
19
+ "task",
20
+ "thinking",
21
+ "timeout",
22
+ "workspace",
23
+ ],
24
+ doctor: ["agent-dir", "provider"],
25
+ health: ["url"],
26
+ models: ["agent-dir", "model", "provider"],
27
+ permissions: [
28
+ "agent-dir",
29
+ "state-dir",
30
+ "hands",
31
+ "policy",
32
+ "mode",
33
+ "revision",
34
+ "request",
35
+ "digest",
36
+ "expires",
37
+ ],
38
+ auth: ["agent-dir", "method", "provider"],
39
+ };
40
+ function isCommand(value) {
41
+ return value !== undefined && Object.hasOwn(OPTION_KEYS, value);
42
+ }
43
+ function parseOptions(values, allowed) {
44
+ const result = {};
45
+ for (let index = 0; index < values.length; index += 2) {
46
+ const argument = values[index];
47
+ if (!argument?.startsWith("--")) {
48
+ throw new CliError("Unexpected positional argument");
49
+ }
50
+ const key = argument.slice(2);
51
+ if (!allowed.includes(key)) {
52
+ throw new CliError(`Unknown option --${key}`);
53
+ }
54
+ if (key in result) {
55
+ throw new CliError(`Duplicate option --${key}`);
56
+ }
57
+ const value = values[index + 1];
58
+ if (value === undefined || value.startsWith("--")) {
59
+ throw new CliError(`Missing value for --${key}`);
60
+ }
61
+ result[key] = value;
62
+ }
63
+ return result;
64
+ }
65
+ /** Parse argv without admitting unknown commands, positional values, or duplicate options. */
66
+ export function parseCliInvocation(argv) {
67
+ const command = argv[2];
68
+ if (!isCommand(command)) {
69
+ return undefined;
70
+ }
71
+ const hasAction = command === "models" || command === "auth" || command === "permissions";
72
+ const action = hasAction ? argv[3] : undefined;
73
+ const options = parseOptions(argv.slice(hasAction ? 4 : 3), OPTION_KEYS[command]);
74
+ return action === undefined ? { command, options } : { command, action, options };
75
+ }
76
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/cli/options.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { CapabilityPolicyStore, RunStore, type CapabilityPolicy } from "../durable/index.js";
2
+ import type { CliInvocation } from "./options.js";
3
+ /** Local installed decision interaction; HTTP and task text have no policy writer. */
4
+ export declare function permissionDecision(invocation: CliInvocation, root: string, agentDir: string, policy: CapabilityPolicyStore, previous: CapabilityPolicy | undefined): Promise<unknown>;
5
+ /** Installed direct explicit retry shares accepted input/wake and never resets original limits. */
6
+ export declare function resumePermissionRun(context: CliInvocation, root: string, agentDir: string): Promise<RunStore | undefined>;
7
+ /** Local direct admission keeps drained state and every other resident run outside the selected retry. */
8
+ export declare function assertLocalRunSlot(root: string, selectedRunId?: string): void;
@@ -0,0 +1,168 @@
1
+ /** Local bounded operator decisions, separate from worker scheduling and the policy effect owner. */
2
+ import { join } from "node:path";
3
+ import { CapabilityPolicyStore, CapabilityRequestStore, RunStore, listRuns, WorkerLifecycleStore, SeptError, } from "../durable/index.js";
4
+ import { loadHandsConfiguration, validateDockerConfiguration, capabilityBinding, assertHandsRunProfile, } from "../execution/index.js";
5
+ import { assertCapabilityExpansion } from "./permissions.js";
6
+ import { wakeRunForOperator } from "../runtime/index.js";
7
+ import { CliError } from "./errors.js";
8
+ function permissionRequest(invocation, requests) {
9
+ const selected = requests.read().find((entry) => entry.id === invocation.options.request);
10
+ if (selected === undefined) {
11
+ throw new SeptError("Exact permission request is absent");
12
+ }
13
+ if (invocation.options.digest !== selected.digest) {
14
+ throw new SeptError("Permission decision requires the exact inspected --digest");
15
+ }
16
+ return selected;
17
+ }
18
+ /** Local installed decision interaction; HTTP and task text have no policy writer. */
19
+ export async function permissionDecision(invocation, root, agentDir, policy, previous) {
20
+ const requests = new CapabilityRequestStore(root);
21
+ const inspection = inspectPermissions(invocation, requests);
22
+ if (inspection !== undefined) {
23
+ return inspection;
24
+ }
25
+ const selected = permissionRequest(invocation, requests);
26
+ const run = new RunStore(join(root, selected.runId));
27
+ assertHandsRunProfile(run);
28
+ if (run.snapshot().status !== "waiting") {
29
+ throw new SeptError("Permission decisions require the still-waiting original run");
30
+ }
31
+ if (previous === undefined ||
32
+ previous.denied ||
33
+ previous.revision !== Number(invocation.options.revision)) {
34
+ throw new SeptError("Permission decision revision is stale or revoked");
35
+ }
36
+ return applyPermissionDecision(invocation, root, agentDir, policy, previous, requests, selected, run);
37
+ }
38
+ function inspectPermissions(invocation, requests) {
39
+ if (invocation.action === "requests") {
40
+ return requests.read().map((entry) => ({
41
+ id: entry.id,
42
+ runId: entry.runId,
43
+ operation: entry.operation,
44
+ digest: entry.digest,
45
+ revision: entry.revision,
46
+ binding: entry.binding,
47
+ expiresAt: entry.expiresAt,
48
+ decision: entry.decision,
49
+ }));
50
+ }
51
+ if (invocation.action === "inspect") {
52
+ const selected = requests.read().find((entry) => entry.id === invocation.options.request);
53
+ if (selected === undefined) {
54
+ throw new SeptError("Exact permission request is absent");
55
+ }
56
+ return selected;
57
+ }
58
+ return undefined;
59
+ }
60
+ async function applyPermissionDecision(invocation, root, agentDir, policy, previous, requests, selected, run) {
61
+ if (invocation.action === "deny") {
62
+ // Old records stay inspectable; incompatible runtime configuration cannot rewrite a decision.
63
+ loadHandsConfiguration(invocation.options.hands ?? process.env.SEPT_HANDS_CONFIGURATION);
64
+ return requests.decide(selected.id, selected.digest, {
65
+ status: "denied",
66
+ revision: previous.revision,
67
+ binding: previous.binding,
68
+ expiresAt: selected.expiresAt,
69
+ });
70
+ }
71
+ return approvePermission(invocation, root, agentDir, policy, previous, requests, selected, run);
72
+ }
73
+ async function approvePermission(invocation, root, agentDir, policy, previous, requests, selected, run) {
74
+ const seconds = approvalSeconds(invocation.options.expires);
75
+ const configuration = loadHandsConfiguration(invocation.options.hands ?? process.env.SEPT_HANDS_CONFIGURATION);
76
+ await validateDockerConfiguration(configuration, [agentDir, root], run.manifest().workspace, undefined, { policyPath: policy.path, initialize: false });
77
+ const binding = capabilityBinding(configuration);
78
+ if (duplicateApproval(selected, previous, binding)) {
79
+ return selected;
80
+ }
81
+ await assertCapabilityExpansion(previous, previous, true, root, binding, configuration);
82
+ // Policy activation first: a crash before the exact decision leaves no usable grant.
83
+ if (run.snapshot().status !== "waiting") {
84
+ throw new SeptError("Original request was cancelled before approval activation");
85
+ }
86
+ const activated = policy.activate(previous, binding, previous.revision);
87
+ if (run.snapshot().status !== "waiting") {
88
+ throw new SeptError("Original request was cancelled before its decision became active");
89
+ }
90
+ return requests.decide(selected.id, selected.digest, {
91
+ status: "approved",
92
+ revision: activated.revision,
93
+ binding: activated.binding,
94
+ expiresAt: Math.min(selected.expiresAt, Date.now() + seconds * 1000),
95
+ });
96
+ }
97
+ function approvalSeconds(value) {
98
+ const seconds = Number(value ?? "300");
99
+ if (!Number.isInteger(seconds) || seconds < 1 || seconds > 3600) {
100
+ throw new SeptError("Approval expiry must be between 1 and 3600 seconds");
101
+ }
102
+ return seconds;
103
+ }
104
+ function duplicateApproval(selected, previous, binding) {
105
+ if (selected.decision !== undefined) {
106
+ if (selected.decision.status !== "approved" ||
107
+ JSON.stringify(selected.decision.binding) !== JSON.stringify(binding) ||
108
+ selected.decision.revision !== previous.revision) {
109
+ throw new SeptError("Permission decision conflicts with its durable predecessor");
110
+ }
111
+ return true;
112
+ }
113
+ if (previous.mode !== "request_approval" ||
114
+ previous.revision !== selected.revision ||
115
+ JSON.stringify(previous.binding) !== JSON.stringify(selected.binding)) {
116
+ throw new SeptError("Permission source namespace or revision changed; request again");
117
+ }
118
+ return false;
119
+ }
120
+ /** Installed direct explicit retry shares accepted input/wake and never resets original limits. */
121
+ export async function resumePermissionRun(context, root, agentDir) {
122
+ const id = context.options.resume;
123
+ if (id === undefined) {
124
+ return undefined;
125
+ }
126
+ if (!/^[A-Za-z0-9_-]{1,128}$/.test(id) || context.options.message === undefined) {
127
+ throw new CliError("run --resume requires an exact run identity and --message");
128
+ }
129
+ const allowed = ["resume", "message", "state-dir", "agent-dir", "hands"];
130
+ if (Object.keys(context.options).some((key) => !allowed.includes(key))) {
131
+ throw new CliError("Resuming preserves the original task, model and limits");
132
+ }
133
+ const store = new RunStore(join(root, id));
134
+ assertHandsRunProfile(store);
135
+ if (store.snapshot().status !== "waiting" || store.snapshot().permissionRequestId === undefined) {
136
+ throw new CliError("Explicit local permission retry requires its still-waiting original run");
137
+ }
138
+ await validateRetryConfiguration(context, root, agentDir, store);
139
+ const message = store.enqueueMessage(context.options.message);
140
+ wakeRunForOperator(store, message.id);
141
+ return store;
142
+ }
143
+ async function validateRetryConfiguration(context, root, agentDir, store) {
144
+ const configuration = loadHandsConfiguration(context.options.hands ?? process.env.SEPT_HANDS_CONFIGURATION);
145
+ const policy = new CapabilityPolicyStore(root);
146
+ await validateDockerConfiguration(configuration, [agentDir, root], store.manifest().workspace, undefined, { policyPath: policy.path, initialize: false });
147
+ const current = policy.read();
148
+ if (current === undefined ||
149
+ current.denied ||
150
+ JSON.stringify(current.binding) !== JSON.stringify(capabilityBinding(configuration))) {
151
+ throw new CliError("Explicit retry requires its current validated capability binding");
152
+ }
153
+ }
154
+ /** Local direct admission keeps drained state and every other resident run outside the selected retry. */
155
+ export function assertLocalRunSlot(root, selectedRunId) {
156
+ if (new WorkerLifecycleStore(root).read().readiness !== "accepting") {
157
+ throw new SeptError("worker state root is drained and not accepting new work");
158
+ }
159
+ const busy = listRuns(root).some((store) => {
160
+ const status = store.snapshot().status;
161
+ return (store.runId !== selectedRunId &&
162
+ (status === "active" || status === "waiting" || status === "cancelling"));
163
+ });
164
+ if (busy) {
165
+ throw new SeptError("single worker slot is busy");
166
+ }
167
+ }
168
+ //# sourceMappingURL=permission-decisions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-decisions.js","sourceRoot":"","sources":["../../../src/cli/permission-decisions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type CapabilityConfiguration, type CapabilityPolicy } from "../durable/index.js";
2
+ import { type DockerHandsConfiguration } from "../execution/index.js";
3
+ import type { CliInvocation } from "./options.js";
4
+ /** Validate exclusive old ownership and a truly fresh target before expanding or rebinding authority. */
5
+ export declare function assertCapabilityExpansion(previous: CapabilityPolicy, effective: CapabilityConfiguration, changed: boolean, root: string, next: import("../durable/index.js").CapabilityBinding, configuration: DockerHandsConfiguration): Promise<void>;
6
+ /** Installed operator writer: validate first, persist narrow/deny, then stop and verify old effects. */
7
+ export declare function runPermissions(invocation: CliInvocation, root: string, agentDir: string): Promise<unknown>;
@@ -0,0 +1,140 @@
1
+ /** Local operator policy commands never enter the ordinary HTTP/task/model control surface. */
2
+ import { mkdirSync, readFileSync, statSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { CapabilityPolicyStore, acquireStateRootLease, parseCapabilityConfiguration, SeptError, } from "../durable/index.js";
5
+ import { capabilityBinding, capabilityGrants, defaultCapabilities, validateDockerConfiguration, revokeDockerBinding, reconcileDockerBinding, loadHandsConfiguration, validateCapabilities, } from "../execution/index.js";
6
+ import { permissionDecision } from "./permission-decisions.js";
7
+ function localConfiguration(path) {
8
+ if (path === undefined || statSync(path).size > 16 * 1024) {
9
+ throw new SeptError("permissions set requires bounded --policy input");
10
+ }
11
+ try {
12
+ const value = JSON.parse(readFileSync(path, "utf8"));
13
+ return parseCapabilityConfiguration(value);
14
+ }
15
+ catch (error) {
16
+ throw new SeptError("Capability configuration is malformed", { cause: error });
17
+ }
18
+ }
19
+ function expands(previous, next) {
20
+ if (previous.denied ||
21
+ (next.execute && !previous.execute) ||
22
+ (next.network && !previous.network)) {
23
+ return true;
24
+ }
25
+ const grants = capabilityGrants(previous);
26
+ return capabilityGrants(next).some((entry) => {
27
+ const before = grants.find((grant) => grant.root === entry.root);
28
+ return (entry.read && before?.read !== true) || (entry.write && before?.write !== true);
29
+ });
30
+ }
31
+ function revision(options) {
32
+ const value = Number(options.revision);
33
+ if (!Number.isSafeInteger(value) || value < 0) {
34
+ throw new SeptError("permissions mutation requires --revision from permissions show");
35
+ }
36
+ return value;
37
+ }
38
+ function inputConfiguration(invocation, configuration) {
39
+ if (invocation.options.policy !== undefined) {
40
+ if (invocation.options.mode !== undefined) {
41
+ throw new SeptError("Choose --policy or --mode, not both");
42
+ }
43
+ return localConfiguration(invocation.options.policy);
44
+ }
45
+ if (invocation.options.mode === "request_approval") {
46
+ return { ...defaultCapabilities(), mode: "request_approval" };
47
+ }
48
+ if (invocation.options.mode === "scoped") {
49
+ return defaultCapabilities();
50
+ }
51
+ if (invocation.options.mode === "full_access") {
52
+ return { ...defaultCapabilities(), mode: "full_access", execute: configuration.shell };
53
+ }
54
+ return localConfiguration(undefined);
55
+ }
56
+ /** Validate exclusive old ownership and a truly fresh target before expanding or rebinding authority. */
57
+ export async function assertCapabilityExpansion(previous, effective, changed, root, next, configuration) {
58
+ if (!changed && !expands(previous, effective)) {
59
+ return;
60
+ }
61
+ const leaseRoot = join(root, ".hands-leases", previous.binding.containerId);
62
+ const fresh = previous.binding.containerId !== next.containerId ||
63
+ previous.binding.generation !== next.generation;
64
+ if (!fresh) {
65
+ throw new SeptError("Expansion requires quiescence and a fresh validated backend generation");
66
+ }
67
+ const release = acquireStateRootLease(leaseRoot);
68
+ try {
69
+ await reconcileDockerBinding(previous.binding, configuration, {
70
+ policyPath: join(root, "capability-policy.json"),
71
+ });
72
+ }
73
+ finally {
74
+ release();
75
+ }
76
+ }
77
+ async function setPermissions(invocation, root, agentDir, store, previous) {
78
+ const configuration = loadHandsConfiguration(invocation.options.hands ?? process.env.SEPT_HANDS_CONFIGURATION);
79
+ const effective = validateCapabilities(inputConfiguration(invocation, configuration), configuration);
80
+ await validateDockerConfiguration(configuration, [agentDir, root], undefined, undefined, {
81
+ policyPath: store.path,
82
+ initialize: previous === undefined,
83
+ });
84
+ const binding = capabilityBinding(configuration);
85
+ const changed = previous !== undefined && JSON.stringify(previous.binding) !== JSON.stringify(binding);
86
+ if (previous !== undefined) {
87
+ await assertCapabilityExpansion(previous, effective, changed, root, binding, configuration);
88
+ }
89
+ const activated = store.activate(effective, binding, revision(invocation.options));
90
+ if (previous !== undefined && !changed) {
91
+ await revokeDockerBinding(previous.binding, configuration, { policyPath: store.path });
92
+ }
93
+ return {
94
+ revision: activated.revision,
95
+ denied: false,
96
+ mode: activated.mode,
97
+ freshBackendRequired: previous !== undefined && !changed,
98
+ };
99
+ }
100
+ /** Installed operator writer: validate first, persist narrow/deny, then stop and verify old effects. */
101
+ export async function runPermissions(invocation, root, agentDir) {
102
+ mkdirSync(root, { recursive: true, mode: 0o700 });
103
+ const store = new CapabilityPolicyStore(root);
104
+ const previous = store.read();
105
+ if (["requests", "inspect", "approve", "deny"].includes(invocation.action ?? "")) {
106
+ return permissionDecision(invocation, root, agentDir, store, previous);
107
+ }
108
+ if (invocation.action === "show") {
109
+ return (previous ?? {
110
+ version: 1,
111
+ revision: 0,
112
+ denied: true,
113
+ reason: "operator configuration required",
114
+ });
115
+ }
116
+ const expected = revision(invocation.options);
117
+ if ((previous?.revision ?? 0) !== expected) {
118
+ throw new SeptError("Capability revision changed; inspect and retry");
119
+ }
120
+ if (invocation.action === "revoke") {
121
+ return revokePermissions(invocation, store, expected);
122
+ }
123
+ if (invocation.action !== "set") {
124
+ throw new SeptError("Usage: sept permissions show|set|revoke --state-dir <path>");
125
+ }
126
+ return setPermissions(invocation, root, agentDir, store, previous);
127
+ }
128
+ async function revokePermissions(invocation, store, expected) {
129
+ const configuration = loadHandsConfiguration(invocation.options.hands ?? process.env.SEPT_HANDS_CONFIGURATION);
130
+ const previous = store.read();
131
+ if (previous === undefined ||
132
+ JSON.stringify(previous.binding) !== JSON.stringify(capabilityBinding(configuration))) {
133
+ throw new SeptError("Revocation configuration does not match persisted capability authority");
134
+ }
135
+ // Incompatible cold configuration cannot mutate records; valid revocation still denies before stop.
136
+ const denied = store.revoke(expected);
137
+ await revokeDockerBinding(denied.binding, configuration, { policyPath: store.path });
138
+ return { revision: denied.revision, denied: true, stopped: true };
139
+ }
140
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/cli/permissions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Installed SEPT CLI entry point. It owns process arguments, package metadata, top-level telemetry,
4
+ * and exit presentation while delegating every command to public mechanism boundaries.
5
+ */
6
+ export {};
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Installed SEPT CLI entry point. It owns process arguments, package metadata, top-level telemetry,
4
+ * and exit presentation while delegating every command to public mechanism boundaries.
5
+ */
6
+ import { executeCommand, resolveAgentDirectory } from "./cli/commands.js";
7
+ import { parseCliInvocation } from "./cli/options.js";
8
+ import { classifyError, createTelemetry, NOOP_TELEMETRY } from "./observability/index.js";
9
+ import { packageMetadata } from "./package-metadata.js";
10
+ let telemetry = NOOP_TELEMETRY;
11
+ async function main() {
12
+ const invocation = parseCliInvocation(process.argv);
13
+ if (invocation === undefined) {
14
+ process.stderr.write("Usage: sept worker|run|doctor|health|models|auth|permissions [action] [options]\n");
15
+ process.exitCode = 2;
16
+ return;
17
+ }
18
+ const metadata = packageMetadata();
19
+ if (invocation.command === "worker" || invocation.command === "run") {
20
+ telemetry = createTelemetry({
21
+ serviceVersion: metadata.septVersion,
22
+ command: invocation.command,
23
+ });
24
+ }
25
+ process.title = `SEPT ${invocation.command}`;
26
+ await executeCommand({
27
+ ...invocation,
28
+ ...metadata,
29
+ agentDir: resolveAgentDirectory(invocation.options),
30
+ telemetry,
31
+ });
32
+ }
33
+ await main().catch(async (error) => {
34
+ telemetry.log("process.failed", { "sept.outcome": "failure", "error.type": classifyError(error) }, "error");
35
+ await telemetry.shutdown();
36
+ process.stderr.write(`sept: ${error instanceof Error ? error.message : String(error)}\n`);
37
+ process.exitCode = 1;
38
+ });
39
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,IAAI,SAAS,GAAG,cAAc,CAAC;AAE/B,KAAK,UAAU,IAAI;IACjB,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mFAAmF,CACpF,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;IACnC,IAAI,UAAU,CAAC,OAAO,KAAK,QAAQ,IAAI,UAAU,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACpE,SAAS,GAAG,eAAe,CAAC;YAC1B,cAAc,EAAE,QAAQ,CAAC,WAAW;YACpC,OAAO,EAAE,UAAU,CAAC,OAAO;SAC5B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,KAAK,GAAG,QAAQ,UAAU,CAAC,OAAO,EAAE,CAAC;IAC7C,MAAM,cAAc,CAAC;QACnB,GAAG,UAAU;QACb,GAAG,QAAQ;QACX,QAAQ,EAAE,qBAAqB,CAAC,UAAU,CAAC,OAAO,CAAC;QACnD,SAAS;KACV,CAAC,CAAC;AACL,CAAC;AAED,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;IAC1C,SAAS,CAAC,GAAG,CACX,gBAAgB,EAChB,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,EACjE,OAAO,CACR,CAAC;IACF,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1F,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** Five-method facade over existing stable-ID webhooks and authoritative task HTTP routes. */
2
+ import type { TaskClient, TaskClientOptions } from "./contracts.js";
3
+ /** Create an import-safe HTTP client with explicit worker authority and no retry/polling state. */
4
+ export declare function createTaskClient(options: TaskClientOptions): TaskClient;
5
+ export { TaskClientError } from "./errors.js";
@@ -0,0 +1,75 @@
1
+ import { clientConfiguration, conversationQuery, encodeEnvelope, requestSignal, runIdentifier, } from "./request-codecs.js";
2
+ import { cancelResult, conversationPage, messageAdmission, taskAdmission, taskProjection, } from "./response-codecs.js";
3
+ import { requestJson } from "./transport.js";
4
+ import { TaskClientError } from "./errors.js";
5
+ function taskBody(input) {
6
+ try {
7
+ return encodeEnvelope(input, {
8
+ version: 1,
9
+ source: input.source,
10
+ eventId: input.eventId,
11
+ kind: "task",
12
+ task: input.task,
13
+ });
14
+ }
15
+ catch {
16
+ throw new TaskClientError("configuration");
17
+ }
18
+ }
19
+ function messageBody(input) {
20
+ try {
21
+ const runId = runIdentifier(input.runId);
22
+ const body = encodeEnvelope(input, {
23
+ version: 1,
24
+ source: input.source,
25
+ eventId: input.eventId,
26
+ kind: "operator_message",
27
+ runId,
28
+ message: input.message,
29
+ });
30
+ return { runId, body };
31
+ }
32
+ catch {
33
+ throw new TaskClientError("configuration");
34
+ }
35
+ }
36
+ async function createTask(configuration, input, options) {
37
+ const body = taskBody(input);
38
+ const response = await requestJson(configuration, "/v1/webhooks", "POST", body, requestSignal(options));
39
+ return taskAdmission(response.body, response.status);
40
+ }
41
+ async function sendMessage(configuration, input, options) {
42
+ const { runId, body } = messageBody(input);
43
+ const response = await requestJson(configuration, "/v1/webhooks", "POST", body, requestSignal(options));
44
+ return messageAdmission(response.body, response.status, runId);
45
+ }
46
+ async function getTask(configuration, input, options) {
47
+ const runId = runIdentifier(input);
48
+ const response = await requestJson(configuration, `/v1/tasks/${runId}`, "GET", undefined, requestSignal(options));
49
+ return taskProjection(response.body, response.status, runId);
50
+ }
51
+ async function getConversation(configuration, input, options) {
52
+ const runId = runIdentifier(input);
53
+ const { after, limit } = conversationQuery(options);
54
+ const path = `/v1/tasks/${runId}/conversation?after=${String(after)}&limit=${String(limit)}`;
55
+ const response = await requestJson(configuration, path, "GET", undefined, requestSignal(options), "conversation");
56
+ return conversationPage(response.body, response.status, after, limit);
57
+ }
58
+ async function cancel(configuration, input, options) {
59
+ const runId = runIdentifier(input);
60
+ const response = await requestJson(configuration, `/v1/tasks/${runId}/cancel`, "POST", undefined, requestSignal(options));
61
+ return cancelResult(response.body, response.status, runId);
62
+ }
63
+ /** Create an import-safe HTTP client with explicit worker authority and no retry/polling state. */
64
+ export function createTaskClient(options) {
65
+ const configuration = clientConfiguration(options);
66
+ return {
67
+ createTask: (input, options) => createTask(configuration, input, options),
68
+ sendMessage: (input, options) => sendMessage(configuration, input, options),
69
+ getTask: (runId, options) => getTask(configuration, runId, options),
70
+ getConversation: (runId, options) => getConversation(configuration, runId, options),
71
+ cancel: (runId, options) => cancel(configuration, runId, options),
72
+ };
73
+ }
74
+ export { TaskClientError } from "./errors.js";
75
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/client/client.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,aAAa,GAEd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,SAAS,QAAQ,CAAC,KAAsB;IACtC,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,KAAK,EAAE;YAC3B,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,eAAe,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAuB;IAC1C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,EAAE;YACjC,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,kBAAkB;YACxB,KAAK;YACL,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,eAAe,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,aAAkC,EAClC,KAAsB,EACtB,OAAwB;IAExB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,QAAQ,GAAG,MAAM,WAAW,CAChC,aAAa,EACb,cAAc,EACd,MAAM,EACN,IAAI,EACJ,aAAa,CAAC,OAAO,CAAC,CACvB,CAAC;IACF,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,aAAkC,EAClC,KAAuB,EACvB,OAAwB;IAExB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,MAAM,WAAW,CAChC,aAAa,EACb,cAAc,EACd,MAAM,EACN,IAAI,EACJ,aAAa,CAAC,OAAO,CAAC,CACvB,CAAC;IACF,OAAO,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACjE,CAAC;AAED,KAAK,UAAU,OAAO,CACpB,aAAkC,EAClC,KAAa,EACb,OAAwB;IAExB,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAChC,aAAa,EACb,aAAa,KAAK,EAAE,EACpB,KAAK,EACL,SAAS,EACT,aAAa,CAAC,OAAO,CAAC,CACvB,CAAC;IACF,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,aAAkC,EAClC,KAAa,EACb,OAA6B;IAE7B,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,aAAa,KAAK,uBAAuB,MAAM,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAC7F,MAAM,QAAQ,GAAG,MAAM,WAAW,CAChC,aAAa,EACb,IAAI,EACJ,KAAK,EACL,SAAS,EACT,aAAa,CAAC,OAAO,CAAC,EACtB,cAAc,CACf,CAAC;IACF,OAAO,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACxE,CAAC;AAED,KAAK,UAAU,MAAM,CACnB,aAAkC,EAClC,KAAa,EACb,OAAwB;IAExB,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAChC,aAAa,EACb,aAAa,KAAK,SAAS,EAC3B,MAAM,EACN,SAAS,EACT,aAAa,CAAC,OAAO,CAAC,CACvB,CAAC;IACF,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,gBAAgB,CAAC,OAA0B;IACzD,MAAM,aAAa,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACnD,OAAO;QACL,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC;QACzE,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC;QAC3E,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC;QACnE,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC;QACnF,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC;KAClE,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}