@elie-laloum/outpost 11.1.2 → 11.2.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 (596) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +2 -1
  3. package/SECURITY.md +5 -1
  4. package/dist/adapters/agents/antigravity/antigravity-adapter.js +9 -0
  5. package/dist/adapters/agents/antigravity/antigravity-adapter.js.map +1 -1
  6. package/dist/adapters/agents/antigravity/antigravity-hook-plan.d.ts +3 -0
  7. package/dist/adapters/agents/antigravity/antigravity-hook-plan.js +39 -0
  8. package/dist/adapters/agents/antigravity/antigravity-hook-plan.js.map +1 -0
  9. package/dist/adapters/agents/antigravity/antigravity-hooks.constants.d.ts +3 -0
  10. package/dist/adapters/agents/antigravity/antigravity-hooks.constants.js +394 -0
  11. package/dist/adapters/agents/antigravity/antigravity-hooks.constants.js.map +1 -0
  12. package/dist/adapters/agents/antigravity/antigravity-hooks.d.ts +2 -0
  13. package/dist/adapters/agents/antigravity/antigravity-hooks.js +6 -0
  14. package/dist/adapters/agents/antigravity/antigravity-hooks.js.map +1 -0
  15. package/dist/adapters/agents/antigravity/antigravity-hooks.types.d.ts +114 -0
  16. package/dist/adapters/agents/antigravity/antigravity-hooks.types.js +2 -0
  17. package/dist/adapters/agents/antigravity/antigravity-hooks.types.js.map +1 -0
  18. package/dist/adapters/agents/antigravity/antigravity.types.d.ts +1 -0
  19. package/dist/adapters/agents/antigravity/antigravity.types.js.map +1 -1
  20. package/dist/adapters/agents/authentication.js +1 -0
  21. package/dist/adapters/agents/authentication.js.map +1 -1
  22. package/dist/adapters/agents/claude/claude-adapter.js +15 -0
  23. package/dist/adapters/agents/claude/claude-adapter.js.map +1 -1
  24. package/dist/adapters/agents/claude/claude-hook-plan.constants.d.ts +1 -0
  25. package/dist/adapters/agents/claude/claude-hook-plan.constants.js +20 -0
  26. package/dist/adapters/agents/claude/claude-hook-plan.constants.js.map +1 -0
  27. package/dist/adapters/agents/claude/claude-hook-plan.d.ts +4 -0
  28. package/dist/adapters/agents/claude/claude-hook-plan.js +60 -0
  29. package/dist/adapters/agents/claude/claude-hook-plan.js.map +1 -0
  30. package/dist/adapters/agents/claude/claude-hooks.constants.d.ts +3 -0
  31. package/dist/adapters/agents/claude/claude-hooks.constants.js +2968 -0
  32. package/dist/adapters/agents/claude/claude-hooks.constants.js.map +1 -0
  33. package/dist/adapters/agents/claude/claude-hooks.d.ts +2 -0
  34. package/dist/adapters/agents/claude/claude-hooks.js +6 -0
  35. package/dist/adapters/agents/claude/claude-hooks.js.map +1 -0
  36. package/dist/adapters/agents/claude/claude-hooks.types.d.ts +900 -0
  37. package/dist/adapters/agents/claude/claude-hooks.types.js +2 -0
  38. package/dist/adapters/agents/claude/claude-hooks.types.js.map +1 -0
  39. package/dist/adapters/agents/claude/claude-profile.d.ts +1 -0
  40. package/dist/adapters/agents/claude/claude-profile.js +23 -11
  41. package/dist/adapters/agents/claude/claude-profile.js.map +1 -1
  42. package/dist/adapters/agents/codex/codex-adapter.js +17 -1
  43. package/dist/adapters/agents/codex/codex-adapter.js.map +1 -1
  44. package/dist/adapters/agents/codex/codex-authentication.js +1 -0
  45. package/dist/adapters/agents/codex/codex-authentication.js.map +1 -1
  46. package/dist/adapters/agents/codex/codex-conversations.constants.d.ts +1 -0
  47. package/dist/adapters/agents/codex/codex-conversations.constants.js +2 -0
  48. package/dist/adapters/agents/codex/codex-conversations.constants.js.map +1 -0
  49. package/dist/adapters/agents/codex/codex-conversations.js +8 -5
  50. package/dist/adapters/agents/codex/codex-conversations.js.map +1 -1
  51. package/dist/adapters/agents/codex/codex-hook-plan.d.ts +3 -0
  52. package/dist/adapters/agents/codex/codex-hook-plan.js +72 -0
  53. package/dist/adapters/agents/codex/codex-hook-plan.js.map +1 -0
  54. package/dist/adapters/agents/codex/codex-hooks.constants.d.ts +3 -0
  55. package/dist/adapters/agents/codex/codex-hooks.constants.js +942 -0
  56. package/dist/adapters/agents/codex/codex-hooks.constants.js.map +1 -0
  57. package/dist/adapters/agents/codex/codex-hooks.d.ts +2 -0
  58. package/dist/adapters/agents/codex/codex-hooks.js +6 -0
  59. package/dist/adapters/agents/codex/codex-hooks.js.map +1 -0
  60. package/dist/adapters/agents/codex/codex-hooks.types.d.ts +255 -0
  61. package/dist/adapters/agents/codex/codex-hooks.types.js +2 -0
  62. package/dist/adapters/agents/codex/codex-hooks.types.js.map +1 -0
  63. package/dist/adapters/agents/codex/codex-provider.js +2 -2
  64. package/dist/adapters/agents/codex/codex-provider.js.map +1 -1
  65. package/dist/adapters/agents/copilot/copilot-adapter.js +14 -0
  66. package/dist/adapters/agents/copilot/copilot-adapter.js.map +1 -1
  67. package/dist/adapters/agents/copilot/copilot-hook-plan.d.ts +3 -0
  68. package/dist/adapters/agents/copilot/copilot-hook-plan.js +26 -0
  69. package/dist/adapters/agents/copilot/copilot-hook-plan.js.map +1 -0
  70. package/dist/adapters/agents/copilot/copilot-hooks.constants.d.ts +3 -0
  71. package/dist/adapters/agents/copilot/copilot-hooks.constants.js +528 -0
  72. package/dist/adapters/agents/copilot/copilot-hooks.constants.js.map +1 -0
  73. package/dist/adapters/agents/copilot/copilot-hooks.d.ts +2 -0
  74. package/dist/adapters/agents/copilot/copilot-hooks.js +6 -0
  75. package/dist/adapters/agents/copilot/copilot-hooks.js.map +1 -0
  76. package/dist/adapters/agents/copilot/copilot-hooks.types.d.ts +166 -0
  77. package/dist/adapters/agents/copilot/copilot-hooks.types.js +2 -0
  78. package/dist/adapters/agents/copilot/copilot-hooks.types.js.map +1 -0
  79. package/dist/adapters/agents/copilot/copilot.types.d.ts +1 -0
  80. package/dist/adapters/agents/copilot/copilot.types.js.map +1 -1
  81. package/dist/adapters/agents/hook-groups.d.ts +2 -0
  82. package/dist/adapters/agents/hook-groups.js +17 -0
  83. package/dist/adapters/agents/hook-groups.js.map +1 -0
  84. package/dist/adapters/agents/kimi/kimi-adapter.js +16 -1
  85. package/dist/adapters/agents/kimi/kimi-adapter.js.map +1 -1
  86. package/dist/adapters/agents/kimi/kimi-hook-plan.d.ts +3 -0
  87. package/dist/adapters/agents/kimi/kimi-hook-plan.js +33 -0
  88. package/dist/adapters/agents/kimi/kimi-hook-plan.js.map +1 -0
  89. package/dist/adapters/agents/kimi/kimi-hooks.constants.d.ts +3 -0
  90. package/dist/adapters/agents/kimi/kimi-hooks.constants.js +747 -0
  91. package/dist/adapters/agents/kimi/kimi-hooks.constants.js.map +1 -0
  92. package/dist/adapters/agents/kimi/kimi-hooks.d.ts +2 -0
  93. package/dist/adapters/agents/kimi/kimi-hooks.js +6 -0
  94. package/dist/adapters/agents/kimi/kimi-hooks.js.map +1 -0
  95. package/dist/adapters/agents/kimi/kimi-hooks.types.d.ts +226 -0
  96. package/dist/adapters/agents/kimi/kimi-hooks.types.js +2 -0
  97. package/dist/adapters/agents/kimi/kimi-hooks.types.js.map +1 -0
  98. package/dist/adapters/agents/kimi/kimi-request.js +2 -0
  99. package/dist/adapters/agents/kimi/kimi-request.js.map +1 -1
  100. package/dist/adapters/agents/kimi/kimi.constants.d.ts +1 -0
  101. package/dist/adapters/agents/kimi/kimi.constants.js +1 -0
  102. package/dist/adapters/agents/kimi/kimi.constants.js.map +1 -1
  103. package/dist/adapters/agents/kimi/kimi.types.d.ts +1 -0
  104. package/dist/adapters/agents/kimi/kimi.types.js.map +1 -1
  105. package/dist/adapters/agents/native-hooks.d.ts +4 -0
  106. package/dist/adapters/agents/native-hooks.js +63 -0
  107. package/dist/adapters/agents/native-hooks.js.map +1 -0
  108. package/dist/adapters/agents/native-hooks.types.d.ts +22 -0
  109. package/dist/adapters/agents/native-hooks.types.js +2 -0
  110. package/dist/adapters/agents/native-hooks.types.js.map +1 -0
  111. package/dist/adapters/agents/settings.types.d.ts +2 -0
  112. package/dist/adapters/agents/settings.types.js.map +1 -1
  113. package/dist/adapters/decisions/system-one-provider.constants.d.ts +1 -1
  114. package/dist/adapters/decisions/system-one-provider.constants.js +1 -1
  115. package/dist/adapters/decisions/system-one-provider.constants.js.map +1 -1
  116. package/dist/adapters/decisions/system-one-provider.js +8 -21
  117. package/dist/adapters/decisions/system-one-provider.js.map +1 -1
  118. package/dist/adapters/models/anthropic-model-provider.constants.d.ts +1 -0
  119. package/dist/adapters/models/anthropic-model-provider.constants.js +4 -0
  120. package/dist/adapters/models/anthropic-model-provider.constants.js.map +1 -1
  121. package/dist/adapters/models/anthropic-model-provider.js +7 -1
  122. package/dist/adapters/models/anthropic-model-provider.js.map +1 -1
  123. package/dist/adapters/models/http-failure.d.ts +3 -0
  124. package/dist/adapters/models/http-failure.js +43 -0
  125. package/dist/adapters/models/http-failure.js.map +1 -0
  126. package/dist/adapters/models/http-provider.js +14 -20
  127. package/dist/adapters/models/http-provider.js.map +1 -1
  128. package/dist/adapters/models/model-protocol.types.d.ts +1 -0
  129. package/dist/adapters/models/model-protocol.types.js.map +1 -1
  130. package/dist/adapters/models/model.constants.d.ts +2 -0
  131. package/dist/adapters/models/model.constants.js +17 -0
  132. package/dist/adapters/models/model.constants.js.map +1 -1
  133. package/dist/adapters/models/openai-chat-stream.js +3 -1
  134. package/dist/adapters/models/openai-chat-stream.js.map +1 -1
  135. package/dist/adapters/models/openai-responses.js +4 -0
  136. package/dist/adapters/models/openai-responses.js.map +1 -1
  137. package/dist/adapters/secrets/aws.js +5 -4
  138. package/dist/adapters/secrets/aws.js.map +1 -1
  139. package/dist/adapters/secrets/azure.constants.d.ts +1 -0
  140. package/dist/adapters/secrets/azure.constants.js +2 -0
  141. package/dist/adapters/secrets/azure.constants.js.map +1 -0
  142. package/dist/adapters/secrets/azure.js +2 -1
  143. package/dist/adapters/secrets/azure.js.map +1 -1
  144. package/dist/adapters/secrets/gcp.constants.d.ts +1 -0
  145. package/dist/adapters/secrets/gcp.constants.js +2 -0
  146. package/dist/adapters/secrets/gcp.constants.js.map +1 -0
  147. package/dist/adapters/secrets/gcp.js +11 -9
  148. package/dist/adapters/secrets/gcp.js.map +1 -1
  149. package/dist/adapters/secrets/infisical.js +3 -2
  150. package/dist/adapters/secrets/infisical.js.map +1 -1
  151. package/dist/adapters/secrets/onepassword.constants.d.ts +1 -0
  152. package/dist/adapters/secrets/onepassword.constants.js +2 -0
  153. package/dist/adapters/secrets/onepassword.constants.js.map +1 -0
  154. package/dist/adapters/secrets/onepassword.js +2 -1
  155. package/dist/adapters/secrets/onepassword.js.map +1 -1
  156. package/dist/adapters/secrets/secret-source.js +3 -1
  157. package/dist/adapters/secrets/secret-source.js.map +1 -1
  158. package/dist/adapters/secrets/vault-response.js +5 -5
  159. package/dist/adapters/secrets/vault-response.js.map +1 -1
  160. package/dist/adapters/secrets/vault.js +4 -3
  161. package/dist/adapters/secrets/vault.js.map +1 -1
  162. package/dist/adapters/testing/scripted-agent.d.ts +3 -1
  163. package/dist/adapters/testing/scripted-agent.js +3 -1
  164. package/dist/adapters/testing/scripted-agent.js.map +1 -1
  165. package/dist/adapters/tools/edit-tools.js +3 -3
  166. package/dist/adapters/tools/edit-tools.js.map +1 -1
  167. package/dist/adapters/tools/git-tools.js +16 -1
  168. package/dist/adapters/tools/git-tools.js.map +1 -1
  169. package/dist/adapters/tools/mcp-launcher.constants.d.ts +1 -1
  170. package/dist/adapters/tools/mcp-launcher.constants.js +29 -7
  171. package/dist/adapters/tools/mcp-launcher.constants.js.map +1 -1
  172. package/dist/adapters/tools/mcp-resources.js +5 -1
  173. package/dist/adapters/tools/mcp-resources.js.map +1 -1
  174. package/dist/adapters/tools/mcp.constants.d.ts +0 -6
  175. package/dist/adapters/tools/mcp.constants.js +0 -6
  176. package/dist/adapters/tools/mcp.constants.js.map +1 -1
  177. package/dist/adapters/tools/mcp.js +1 -0
  178. package/dist/adapters/tools/mcp.js.map +1 -1
  179. package/dist/adapters/tools/sandbox-files.constants.d.ts +1 -0
  180. package/dist/adapters/tools/sandbox-files.constants.js +17 -0
  181. package/dist/adapters/tools/sandbox-files.constants.js.map +1 -0
  182. package/dist/adapters/tools/sandbox-files.d.ts +1 -0
  183. package/dist/adapters/tools/sandbox-files.js +14 -1
  184. package/dist/adapters/tools/sandbox-files.js.map +1 -1
  185. package/dist/adapters/tools/tools.constants.js +1 -0
  186. package/dist/adapters/tools/tools.constants.js.map +1 -1
  187. package/dist/adapters/triggers/github-webhook.js +14 -11
  188. package/dist/adapters/triggers/github-webhook.js.map +1 -1
  189. package/dist/adapters/triggers/gitlab-webhook.js +16 -13
  190. package/dist/adapters/triggers/gitlab-webhook.js.map +1 -1
  191. package/dist/adapters/triggers/slack-request.js +10 -7
  192. package/dist/adapters/triggers/slack-request.js.map +1 -1
  193. package/dist/adapters/triggers/standard-webhook.js +10 -7
  194. package/dist/adapters/triggers/standard-webhook.js.map +1 -1
  195. package/dist/application/agent-authentication.js +4 -1
  196. package/dist/application/agent-authentication.js.map +1 -1
  197. package/dist/application/agent-turn.js +20 -5
  198. package/dist/application/agent-turn.js.map +1 -1
  199. package/dist/application/cli-hooks.constants.d.ts +2 -0
  200. package/dist/application/cli-hooks.constants.js +69 -0
  201. package/dist/application/cli-hooks.constants.js.map +1 -0
  202. package/dist/application/cli-hooks.d.ts +3 -0
  203. package/dist/application/cli-hooks.js +168 -0
  204. package/dist/application/cli-hooks.js.map +1 -0
  205. package/dist/application/cli-steering.js +33 -2
  206. package/dist/application/cli-steering.js.map +1 -1
  207. package/dist/application/custom-turn.js +10 -1
  208. package/dist/application/custom-turn.js.map +1 -1
  209. package/dist/application/diagnostic-probe.d.ts +1 -1
  210. package/dist/application/diagnostic-probe.js +7 -3
  211. package/dist/application/diagnostic-probe.js.map +1 -1
  212. package/dist/application/dispatch-observation.js +4 -0
  213. package/dist/application/dispatch-observation.js.map +1 -1
  214. package/dist/application/doctor-agent.d.ts +1 -1
  215. package/dist/application/doctor-agent.js +2 -2
  216. package/dist/application/doctor-agent.js.map +1 -1
  217. package/dist/application/doctor-deadline.d.ts +1 -0
  218. package/dist/application/doctor-deadline.js +10 -0
  219. package/dist/application/doctor-deadline.js.map +1 -0
  220. package/dist/application/doctor-image.js +9 -7
  221. package/dist/application/doctor-image.js.map +1 -1
  222. package/dist/application/doctor-sandbox.js +4 -4
  223. package/dist/application/doctor-sandbox.js.map +1 -1
  224. package/dist/application/doctor.constants.d.ts +2 -0
  225. package/dist/application/doctor.constants.js +2 -0
  226. package/dist/application/doctor.constants.js.map +1 -1
  227. package/dist/application/doctor.js +12 -8
  228. package/dist/application/doctor.js.map +1 -1
  229. package/dist/application/doctor.types.d.ts +2 -0
  230. package/dist/application/doctor.types.js.map +1 -1
  231. package/dist/application/file-sandbox.js +49 -11
  232. package/dist/application/file-sandbox.js.map +1 -1
  233. package/dist/application/harness-context.js +4 -2
  234. package/dist/application/harness-context.js.map +1 -1
  235. package/dist/application/harness-hook-transforms.d.ts +8 -0
  236. package/dist/application/harness-hook-transforms.js +115 -0
  237. package/dist/application/harness-hook-transforms.js.map +1 -0
  238. package/dist/application/harness-hooks.d.ts +5 -3
  239. package/dist/application/harness-hooks.js +37 -50
  240. package/dist/application/harness-hooks.js.map +1 -1
  241. package/dist/application/harness-loop.d.ts +2 -1
  242. package/dist/application/harness-loop.js +95 -21
  243. package/dist/application/harness-loop.js.map +1 -1
  244. package/dist/application/harness-subagent.d.ts +1 -1
  245. package/dist/application/harness-subagent.js +63 -12
  246. package/dist/application/harness-subagent.js.map +1 -1
  247. package/dist/application/harness.types.d.ts +3 -0
  248. package/dist/application/harness.types.js.map +1 -1
  249. package/dist/application/hook-invocation.d.ts +4 -0
  250. package/dist/application/hook-invocation.js +59 -0
  251. package/dist/application/hook-invocation.js.map +1 -0
  252. package/dist/application/queue-worker.js +51 -9
  253. package/dist/application/queue-worker.js.map +1 -1
  254. package/dist/application/queue-worker.types.d.ts +1 -0
  255. package/dist/application/queue-worker.types.js.map +1 -1
  256. package/dist/application/recipes/native-schemas.constants.js +1439 -218
  257. package/dist/application/recipes/native-schemas.constants.js.map +1 -1
  258. package/dist/application/recovery-inspection.js +4 -1
  259. package/dist/application/recovery-inspection.js.map +1 -1
  260. package/dist/application/remote-download.js +15 -5
  261. package/dist/application/remote-download.js.map +1 -1
  262. package/dist/application/remote-paths.d.ts +1 -0
  263. package/dist/application/remote-paths.js +7 -0
  264. package/dist/application/remote-paths.js.map +1 -0
  265. package/dist/application/remote-validation.js +40 -9
  266. package/dist/application/remote-validation.js.map +1 -1
  267. package/dist/application/remote-workspace.js +17 -2
  268. package/dist/application/remote-workspace.js.map +1 -1
  269. package/dist/application/repetition-watchdog.js +3 -1
  270. package/dist/application/repetition-watchdog.js.map +1 -1
  271. package/dist/application/sandbox-attach.js +38 -9
  272. package/dist/application/sandbox-attach.js.map +1 -1
  273. package/dist/application/sandbox-dispatch.js +7 -1
  274. package/dist/application/sandbox-dispatch.js.map +1 -1
  275. package/dist/application/schedules.js +2 -0
  276. package/dist/application/schedules.js.map +1 -1
  277. package/dist/application/secrets.js +4 -0
  278. package/dist/application/secrets.js.map +1 -1
  279. package/dist/application/tool-execution.js +28 -8
  280. package/dist/application/tool-execution.js.map +1 -1
  281. package/dist/application/transport-retention.js +3 -3
  282. package/dist/application/transport-retention.js.map +1 -1
  283. package/dist/application/workspace-fingerprint.d.ts +1 -0
  284. package/dist/application/workspace-fingerprint.js +19 -4
  285. package/dist/application/workspace-fingerprint.js.map +1 -1
  286. package/dist/cli/doctor-command.js +12 -2
  287. package/dist/cli/doctor-command.js.map +1 -1
  288. package/dist/cli/image.js +2 -0
  289. package/dist/cli/image.js.map +1 -1
  290. package/dist/cli/main.constants.d.ts +14 -2
  291. package/dist/cli/main.constants.js +27 -1
  292. package/dist/cli/main.constants.js.map +1 -1
  293. package/dist/cli/project-settings.js +7 -1
  294. package/dist/cli/project-settings.js.map +1 -1
  295. package/dist/cli/recipe-yaml.js +8 -0
  296. package/dist/cli/recipe-yaml.js.map +1 -1
  297. package/dist/cli/recovery-command.js +3 -0
  298. package/dist/cli/recovery-command.js.map +1 -1
  299. package/dist/cli/recovery-unlock-command.d.ts +2 -0
  300. package/dist/cli/recovery-unlock-command.js +19 -0
  301. package/dist/cli/recovery-unlock-command.js.map +1 -0
  302. package/dist/cli/scaffold-files.js +4 -1
  303. package/dist/cli/scaffold-files.js.map +1 -1
  304. package/dist/cli/scaffold-validation.js +3 -0
  305. package/dist/cli/scaffold-validation.js.map +1 -1
  306. package/dist/cli/scaffold.js +2 -0
  307. package/dist/cli/scaffold.js.map +1 -1
  308. package/dist/domain/agent-hook.types.d.ts +28 -0
  309. package/dist/domain/agent-hook.types.js +2 -0
  310. package/dist/domain/agent-hook.types.js.map +1 -0
  311. package/dist/domain/agent-profile-hooks.d.ts +2 -0
  312. package/dist/domain/agent-profile-hooks.js +52 -0
  313. package/dist/domain/agent-profile-hooks.js.map +1 -0
  314. package/dist/domain/agent-profile-permissions.js +11 -1
  315. package/dist/domain/agent-profile-permissions.js.map +1 -1
  316. package/dist/domain/agent-profile.constants.d.ts +1 -0
  317. package/dist/domain/agent-profile.constants.js +9 -0
  318. package/dist/domain/agent-profile.constants.js.map +1 -1
  319. package/dist/domain/agent-profile.js +6 -1
  320. package/dist/domain/agent-profile.js.map +1 -1
  321. package/dist/domain/agent-profile.types.d.ts +11 -0
  322. package/dist/domain/agent-profile.types.js.map +1 -1
  323. package/dist/domain/agent.types.d.ts +2 -0
  324. package/dist/domain/agent.types.js.map +1 -1
  325. package/dist/domain/container-image.d.ts +1 -0
  326. package/dist/domain/container-image.js +8 -0
  327. package/dist/domain/container-image.js.map +1 -0
  328. package/dist/domain/context.constants.d.ts +1 -0
  329. package/dist/domain/context.constants.js +1 -0
  330. package/dist/domain/context.constants.js.map +1 -1
  331. package/dist/domain/context.js +6 -1
  332. package/dist/domain/context.js.map +1 -1
  333. package/dist/domain/egress.js +6 -1
  334. package/dist/domain/egress.js.map +1 -1
  335. package/dist/domain/glob.js +1 -1
  336. package/dist/domain/glob.js.map +1 -1
  337. package/dist/domain/harness.js +4 -1
  338. package/dist/domain/harness.js.map +1 -1
  339. package/dist/domain/hook-command.d.ts +2 -0
  340. package/dist/domain/hook-command.js +26 -0
  341. package/dist/domain/hook-command.js.map +1 -0
  342. package/dist/domain/hook-command.types.d.ts +7 -0
  343. package/dist/domain/hook-command.types.js +2 -0
  344. package/dist/domain/hook-command.types.js.map +1 -0
  345. package/dist/domain/hook-decision.d.ts +2 -0
  346. package/dist/domain/hook-decision.js +38 -0
  347. package/dist/domain/hook-decision.js.map +1 -0
  348. package/dist/domain/hook.constants.d.ts +3 -0
  349. package/dist/domain/hook.constants.js +31 -1
  350. package/dist/domain/hook.constants.js.map +1 -1
  351. package/dist/domain/hook.js +49 -5
  352. package/dist/domain/hook.js.map +1 -1
  353. package/dist/domain/hook.types.d.ts +82 -5
  354. package/dist/domain/hook.types.js.map +1 -1
  355. package/dist/domain/mcp-server.constants.d.ts +6 -0
  356. package/dist/domain/mcp-server.constants.js +6 -0
  357. package/dist/domain/mcp-server.constants.js.map +1 -1
  358. package/dist/domain/mcp-server.js +1 -0
  359. package/dist/domain/mcp-server.js.map +1 -1
  360. package/dist/domain/permissions.types.d.ts +1 -0
  361. package/dist/domain/permissions.types.js.map +1 -1
  362. package/dist/domain/pricing.js +4 -2
  363. package/dist/domain/pricing.js.map +1 -1
  364. package/dist/domain/redaction.js +6 -3
  365. package/dist/domain/redaction.js.map +1 -1
  366. package/dist/domain/secret-fault.d.ts +4 -0
  367. package/dist/domain/secret-fault.js +11 -0
  368. package/dist/domain/secret-fault.js.map +1 -0
  369. package/dist/domain/secrets.js +3 -2
  370. package/dist/domain/secrets.js.map +1 -1
  371. package/dist/domain/steering.js +2 -0
  372. package/dist/domain/steering.js.map +1 -1
  373. package/dist/domain/steering.types.d.ts +1 -1
  374. package/dist/domain/steering.types.js.map +1 -1
  375. package/dist/domain/transport.js +5 -1
  376. package/dist/domain/transport.js.map +1 -1
  377. package/dist/domain/trigger-payload.d.ts +4 -0
  378. package/dist/domain/trigger-payload.js +15 -0
  379. package/dist/domain/trigger-payload.js.map +1 -0
  380. package/dist/domain/workflow/checkpoint.js +19 -2
  381. package/dist/domain/workflow/checkpoint.js.map +1 -1
  382. package/dist/domain/workflow/retry.constants.d.ts +1 -0
  383. package/dist/domain/workflow/retry.constants.js +1 -0
  384. package/dist/domain/workflow/retry.constants.js.map +1 -1
  385. package/dist/domain/workflow/retry.js +6 -2
  386. package/dist/domain/workflow/retry.js.map +1 -1
  387. package/dist/domain/workflow/task-runner.js +5 -3
  388. package/dist/domain/workflow/task-runner.js.map +1 -1
  389. package/dist/domain/workflow/workflow-state.js +2 -1
  390. package/dist/domain/workflow/workflow-state.js.map +1 -1
  391. package/dist/domain/workflow.types.d.ts +1 -0
  392. package/dist/domain/workflow.types.js.map +1 -1
  393. package/dist/index.d.ts +15 -1
  394. package/dist/index.js +6 -0
  395. package/dist/index.js.map +1 -1
  396. package/dist/infrastructure/conversations/transcript-store.js +32 -5
  397. package/dist/infrastructure/conversations/transcript-store.js.map +1 -1
  398. package/dist/infrastructure/files.d.ts +1 -0
  399. package/dist/infrastructure/files.js +8 -4
  400. package/dist/infrastructure/files.js.map +1 -1
  401. package/dist/infrastructure/git/integration-candidate.js +3 -2
  402. package/dist/infrastructure/git/integration-candidate.js.map +1 -1
  403. package/dist/infrastructure/git/lock-recovery.d.ts +3 -0
  404. package/dist/infrastructure/git/lock-recovery.js +58 -0
  405. package/dist/infrastructure/git/lock-recovery.js.map +1 -0
  406. package/dist/infrastructure/git/lock-recovery.types.d.ts +11 -0
  407. package/dist/infrastructure/git/lock-recovery.types.js +2 -0
  408. package/dist/infrastructure/git/lock-recovery.types.js.map +1 -0
  409. package/dist/infrastructure/git/managed-worktree.js +5 -8
  410. package/dist/infrastructure/git/managed-worktree.js.map +1 -1
  411. package/dist/infrastructure/git/verification-command.js +35 -30
  412. package/dist/infrastructure/git/verification-command.js.map +1 -1
  413. package/dist/infrastructure/git/workspace-lease.js +12 -5
  414. package/dist/infrastructure/git/workspace-lease.js.map +1 -1
  415. package/dist/infrastructure/hook-configuration.constants.d.ts +1 -0
  416. package/dist/infrastructure/hook-configuration.constants.js +59 -0
  417. package/dist/infrastructure/hook-configuration.constants.js.map +1 -0
  418. package/dist/infrastructure/hook-configuration.d.ts +3 -0
  419. package/dist/infrastructure/hook-configuration.js +16 -0
  420. package/dist/infrastructure/hook-configuration.js.map +1 -0
  421. package/dist/infrastructure/hook-configuration.types.d.ts +14 -0
  422. package/dist/infrastructure/hook-configuration.types.js +2 -0
  423. package/dist/infrastructure/hook-configuration.types.js.map +1 -0
  424. package/dist/infrastructure/http-transport.constants.d.ts +1 -0
  425. package/dist/infrastructure/http-transport.constants.js +14 -0
  426. package/dist/infrastructure/http-transport.constants.js.map +1 -0
  427. package/dist/infrastructure/http-transport.d.ts +7 -0
  428. package/dist/infrastructure/http-transport.js +19 -0
  429. package/dist/infrastructure/http-transport.js.map +1 -0
  430. package/dist/infrastructure/input-failure.d.ts +4 -0
  431. package/dist/infrastructure/input-failure.js +14 -0
  432. package/dist/infrastructure/input-failure.js.map +1 -0
  433. package/dist/infrastructure/inspection-file.d.ts +1 -0
  434. package/dist/infrastructure/inspection-file.js +8 -2
  435. package/dist/infrastructure/inspection-file.js.map +1 -1
  436. package/dist/infrastructure/local-transport.js +16 -11
  437. package/dist/infrastructure/local-transport.js.map +1 -1
  438. package/dist/infrastructure/process.constants.d.ts +1 -0
  439. package/dist/infrastructure/process.constants.js +1 -0
  440. package/dist/infrastructure/process.constants.js.map +1 -1
  441. package/dist/infrastructure/process.d.ts +1 -0
  442. package/dist/infrastructure/process.js +48 -8
  443. package/dist/infrastructure/process.js.map +1 -1
  444. package/dist/infrastructure/reservation-ledger.d.ts +2 -0
  445. package/dist/infrastructure/reservation-ledger.js +84 -0
  446. package/dist/infrastructure/reservation-ledger.js.map +1 -0
  447. package/dist/infrastructure/reservation-recovery.d.ts +4 -0
  448. package/dist/infrastructure/reservation-recovery.js +28 -0
  449. package/dist/infrastructure/reservation-recovery.js.map +1 -0
  450. package/dist/infrastructure/s3-tombstones.d.ts +3 -0
  451. package/dist/infrastructure/s3-tombstones.js +46 -0
  452. package/dist/infrastructure/s3-tombstones.js.map +1 -0
  453. package/dist/infrastructure/s3-tombstones.types.d.ts +6 -0
  454. package/dist/infrastructure/s3-tombstones.types.js +2 -0
  455. package/dist/infrastructure/s3-tombstones.types.js.map +1 -0
  456. package/dist/infrastructure/s3-transport.d.ts +2 -0
  457. package/dist/infrastructure/s3-transport.js +4 -2
  458. package/dist/infrastructure/s3-transport.js.map +1 -1
  459. package/dist/infrastructure/sse.js +6 -3
  460. package/dist/infrastructure/sse.js.map +1 -1
  461. package/dist/infrastructure/task-queue-bullmq-connection.d.ts +3 -0
  462. package/dist/infrastructure/task-queue-bullmq-connection.js +32 -0
  463. package/dist/infrastructure/task-queue-bullmq-connection.js.map +1 -0
  464. package/dist/infrastructure/task-queue-bullmq-connection.types.d.ts +8 -0
  465. package/dist/infrastructure/task-queue-bullmq-connection.types.js +2 -0
  466. package/dist/infrastructure/task-queue-bullmq-connection.types.js.map +1 -0
  467. package/dist/infrastructure/task-queue-bullmq-resources.js +21 -15
  468. package/dist/infrastructure/task-queue-bullmq-resources.js.map +1 -1
  469. package/dist/infrastructure/task-queue-bullmq-state.d.ts +1 -0
  470. package/dist/infrastructure/task-queue-bullmq-state.js +1 -0
  471. package/dist/infrastructure/task-queue-bullmq-state.js.map +1 -1
  472. package/dist/infrastructure/task-queue-bullmq.constants.d.ts +2 -1
  473. package/dist/infrastructure/task-queue-bullmq.constants.js +2 -1
  474. package/dist/infrastructure/task-queue-bullmq.constants.js.map +1 -1
  475. package/dist/infrastructure/task-queue-bullmq.js +10 -1
  476. package/dist/infrastructure/task-queue-bullmq.js.map +1 -1
  477. package/dist/infrastructure/task-queue.js +13 -4
  478. package/dist/infrastructure/task-queue.js.map +1 -1
  479. package/dist/infrastructure/transfer-copy.d.ts +1 -0
  480. package/dist/infrastructure/transfer-copy.js +16 -1
  481. package/dist/infrastructure/transfer-copy.js.map +1 -1
  482. package/dist/infrastructure/transport-archive.d.ts +3 -3
  483. package/dist/infrastructure/transport-archive.js +71 -48
  484. package/dist/infrastructure/transport-archive.js.map +1 -1
  485. package/dist/infrastructure/transport-archive.types.d.ts +3 -0
  486. package/dist/infrastructure/transport-archive.types.js.map +1 -1
  487. package/dist/infrastructure/transport-checkpoint.js +14 -4
  488. package/dist/infrastructure/transport-checkpoint.js.map +1 -1
  489. package/dist/infrastructure/transport-envelope.d.ts +1 -0
  490. package/dist/infrastructure/transport-envelope.js +22 -5
  491. package/dist/infrastructure/transport-envelope.js.map +1 -1
  492. package/dist/infrastructure/transport-reservations.constants.d.ts +2 -0
  493. package/dist/infrastructure/transport-reservations.constants.js +3 -0
  494. package/dist/infrastructure/transport-reservations.constants.js.map +1 -0
  495. package/dist/infrastructure/transport-reservations.d.ts +1 -2
  496. package/dist/infrastructure/transport-reservations.js +18 -22
  497. package/dist/infrastructure/transport-reservations.js.map +1 -1
  498. package/dist/infrastructure/transport-reservations.types.d.ts +23 -2
  499. package/dist/infrastructure/transport-reservations.types.js.map +1 -1
  500. package/dist/infrastructure/trigger-server.js +12 -9
  501. package/dist/infrastructure/trigger-server.js.map +1 -1
  502. package/dist/infrastructure/trigger-server.types.d.ts +1 -1
  503. package/dist/infrastructure/trigger-server.types.js.map +1 -1
  504. package/dist/infrastructure/workflow-checkpoint.constants.d.ts +1 -0
  505. package/dist/infrastructure/workflow-checkpoint.constants.js +1 -0
  506. package/dist/infrastructure/workflow-checkpoint.constants.js.map +1 -1
  507. package/dist/infrastructure/workspace-lock.constants.d.ts +2 -1
  508. package/dist/infrastructure/workspace-lock.constants.js +2 -1
  509. package/dist/infrastructure/workspace-lock.constants.js.map +1 -1
  510. package/dist/infrastructure/workspace-lock.js +48 -10
  511. package/dist/infrastructure/workspace-lock.js.map +1 -1
  512. package/dist/providers/cloud-cache.js +14 -9
  513. package/dist/providers/cloud-cache.js.map +1 -1
  514. package/dist/providers/cloud-cache.types.d.ts +1 -0
  515. package/dist/providers/cloud-cache.types.js.map +1 -1
  516. package/dist/providers/cloud-files.js +3 -4
  517. package/dist/providers/cloud-files.js.map +1 -1
  518. package/dist/providers/cloud-input.constants.d.ts +2 -2
  519. package/dist/providers/cloud-input.constants.js +2 -1
  520. package/dist/providers/cloud-input.constants.js.map +1 -1
  521. package/dist/providers/cloud-input.d.ts +2 -2
  522. package/dist/providers/cloud-input.js +14 -3
  523. package/dist/providers/cloud-input.js.map +1 -1
  524. package/dist/providers/container-command.js +30 -5
  525. package/dist/providers/container-command.js.map +1 -1
  526. package/dist/providers/container-egress.constants.d.ts +7 -0
  527. package/dist/providers/container-egress.constants.js +8 -0
  528. package/dist/providers/container-egress.constants.js.map +1 -0
  529. package/dist/providers/container-egress.d.ts +7 -0
  530. package/dist/providers/container-egress.js +101 -0
  531. package/dist/providers/container-egress.js.map +1 -0
  532. package/dist/providers/container-files.js +10 -11
  533. package/dist/providers/container-files.js.map +1 -1
  534. package/dist/providers/container-mounts.js +3 -0
  535. package/dist/providers/container-mounts.js.map +1 -1
  536. package/dist/providers/container-network.js +16 -1
  537. package/dist/providers/container-network.js.map +1 -1
  538. package/dist/providers/container-plan.js +7 -10
  539. package/dist/providers/container-plan.js.map +1 -1
  540. package/dist/providers/container-recovery.js +8 -3
  541. package/dist/providers/container-recovery.js.map +1 -1
  542. package/dist/providers/container.js +36 -5
  543. package/dist/providers/container.js.map +1 -1
  544. package/dist/providers/container.types.d.ts +1 -0
  545. package/dist/providers/container.types.js.map +1 -1
  546. package/dist/providers/daytona-command.constants.js +4 -1
  547. package/dist/providers/daytona-command.constants.js.map +1 -1
  548. package/dist/providers/daytona-command.js +39 -16
  549. package/dist/providers/daytona-command.js.map +1 -1
  550. package/dist/providers/daytona-files.js +5 -5
  551. package/dist/providers/daytona-files.js.map +1 -1
  552. package/dist/providers/daytona-output.js +11 -3
  553. package/dist/providers/daytona-output.js.map +1 -1
  554. package/dist/providers/daytona.js +11 -9
  555. package/dist/providers/daytona.js.map +1 -1
  556. package/dist/providers/egress/address.d.ts +3 -0
  557. package/dist/providers/egress/address.js +26 -0
  558. package/dist/providers/egress/address.js.map +1 -0
  559. package/dist/providers/egress/egress.constants.d.ts +22 -0
  560. package/dist/providers/egress/egress.constants.js +23 -0
  561. package/dist/providers/egress/egress.constants.js.map +1 -0
  562. package/dist/providers/egress/egress.types.d.ts +11 -0
  563. package/dist/providers/egress/egress.types.js +2 -0
  564. package/dist/providers/egress/egress.types.js.map +1 -0
  565. package/dist/providers/egress/firewall.d.ts +3 -0
  566. package/dist/providers/egress/firewall.js +29 -0
  567. package/dist/providers/egress/firewall.js.map +1 -0
  568. package/dist/providers/egress/main.d.ts +1 -0
  569. package/dist/providers/egress/main.js +90 -0
  570. package/dist/providers/egress/main.js.map +1 -0
  571. package/dist/providers/egress/policy.d.ts +5 -0
  572. package/dist/providers/egress/policy.js +54 -0
  573. package/dist/providers/egress/policy.js.map +1 -0
  574. package/dist/providers/egress/proxy.d.ts +2 -0
  575. package/dist/providers/egress/proxy.js +129 -0
  576. package/dist/providers/egress/proxy.js.map +1 -0
  577. package/dist/providers/egress/tls-hello.d.ts +1 -0
  578. package/dist/providers/egress/tls-hello.js +75 -0
  579. package/dist/providers/egress/tls-hello.js.map +1 -0
  580. package/dist/providers/firecracker-command.js +12 -6
  581. package/dist/providers/firecracker-command.js.map +1 -1
  582. package/dist/providers/local-files.d.ts +2 -0
  583. package/dist/providers/local-files.js +24 -0
  584. package/dist/providers/local-files.js.map +1 -0
  585. package/dist/providers/local.js +2 -20
  586. package/dist/providers/local.js.map +1 -1
  587. package/dist/providers/vercel-command.js +33 -9
  588. package/dist/providers/vercel-command.js.map +1 -1
  589. package/dist/providers/vercel.js +11 -9
  590. package/dist/providers/vercel.js.map +1 -1
  591. package/dist/testing.d.ts +1 -1
  592. package/dist/testing.js +1 -1
  593. package/dist/testing.js.map +1 -1
  594. package/package.json +2 -2
  595. package/recipe-configuration.schema.json +2164 -35
  596. package/recipe.schema.json +2512 -404
package/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # Changelog
2
2
 
3
+ ## Unreleased
4
+
5
+ ## 11.2.0
6
+
7
+ This release adds Docker/Podman egress companions, typed native lifecycle hooks with agent-profile composition and live-validated native CLI file workspaces, and completes the audit follow-up without breaking existing APIs.
8
+
9
+ - Keep waiting for the host-wide file workspace lock registry while live processes take turns on its gate; report it as busy only when the same gate stays unchanged for ten seconds. Ignore the recorded inodes of a lock whose directory is gone, so an abandoned lock no longer refuses an unrelated workspace that reuses one of them. On Windows, retry a gate that is still pending deletion. Concurrent file workspaces no longer fail intermittently.
10
+ - Remove the Linear development recipe example, its offline CLI tests and its Guide pages; the retired pages redirect to the development workflow example. The published package is unchanged: the example lived only in the source checkout.
11
+ - Enable demonstrated native CLI file-workspace capabilities after live Docker validation across ephemeral, directory-copy and read-only/writable mounted sources: all five for Claude Code 2.1.280 and Codex 0.156.1; dispatch, repairs, continuation and interactive for Copilot 1.0.88 and Kimi 2.1.1; dispatch and repairs for Antigravity 1.2.12. Claude used account-token authentication with `claude-haiku-4-5-20251001`; Codex used an environment API key with `gpt-5.6-luna` through its custom Responses provider; the other CLIs used explicitly authorized local account sessions and native default models, with Kimi in the global region. Antigravity dispatch evidence combines four independent successful binding runs after two incomplete campaigns; its warm-only resume does not validate portable continuation, and its terminal attempts timed out. Kimi receives its first interactive request through the terminal. Copilot, Kimi and Antigravity expose no native live-input protocol. Keep all undemonstrated capabilities refused, retain passing and failed evidence, and require new proof when a declared CLI version changes. Terminal evidence includes native confirmations and private-home preferences where needed. Keep validators outside routine tests and CI. Keep native file conversation captures inside the runtime directory and restore them into fresh sandbox homes, covered by synthetic and real-container regressions.
12
+ - Allow `defineAgentProfile({ hooks })` to group typed CLI and Outpost hooks. Select only the matching harness section and compose profile declarations before local hooks; keep native CLI scheduling and permissions intact.
13
+ - Add separate typed native lifecycle hooks for the five CLI harnesses, with host callbacks and sandbox commands. Extend Outpost loop phases and validated transformations while preserving usage and tool permissions. Document the native inventory and remaining live-validation requirements.
14
+ - Complete the audit follow-up: preserve stateless encrypted reasoning and cumulative usage, refuse unsupported local Codex usage login, bound retry delays and Kimi prompts, protect cloud cancellation and staged credentials, normalize durable request identity, clean failed archives, and add explicit offline S3 tombstone pruning. Improve CLI diagnostics, portable transport keys, MCP environment selection and release verification; clarify intentional recovery, scheduling and workspace contracts.
15
+ - Add `createScriptedAgent()` while keeping `scriptedAgent()` as a deprecated compatibility alias.
16
+ - Preserve trusted secret-source diagnostics while sanitizing foreign exceptions, and distinguish invalid GCP base64 from invalid UTF-8. Add explicit revision-checked recovery for abandoned local locks, including empty files and orphan reclamation guards. Record reservation owners in version-2 ledgers, retain legacy byte claims, and expose inspection and conditional recovery after explicit owner shutdown.
17
+ - Bound host output drainage after process exit without replacing the exit status with a timeout caused by inherited pipes; preserve cancellation escalation after the parent exits. Align local file transfers with container basename/content semantics, sandbox-relative paths, destination link checks and transfer deadlines. Resolve container upload destinations against the workspace root in isolated mode as well as mounted mode.
18
+ - Transfer cloud live input through files, acknowledge steering only after native receipt, and reject input delivery failures without cancelling the active turn. Preserve Git metadata in cloud dependency cache archives while retaining path containment checks. Give doctor image checks fifteen seconds by default, add `--timeout` for per-command deadlines, and distinguish slow CLI startup from missing executables. Cloud regressions use SDK fixtures; live cloud validation remains separate.
19
+ - Validate MCP OAuth resource and issuer identities, require HTTPS for client credentials, refuse redirects and retain the authorization server identity during token refresh. Keep Podman tmpfs homes private and owned by the configured user. Hide and conditionally replace inherited S3 deletion markers after switching delete modes. Decode Daytona output frames correctly when raw diagnostic lines share or split transport chunks. OAuth and S3 regressions use local service fixtures; cloud identity-provider validation remains separate.
20
+ - Refuse explicit and implicit out-of-workspace comparisons in harness Git tools. Inspect bounded HTTP error bodies for recognized quota, outage and validation codes without exposing raw provider messages, including Anthropic credit and spend limits. Retry checkpoint release once after storage failures while fencing the original owner and revision, without replaying completed tasks.
21
+ - Remove temporary recovery files after failed remote initialization and report host deletions during incremental synchronization as conflicts while retaining incoming data. List local transport objects from their headers without reading payloads, preserving size and concurrent replacement checks. Reject unknown custom model stop reasons explicitly, normalize pre-cancelled System One provider requests, and let text-mode `?` globs match slashes.
22
+ - Keep watchdog interventions targeted to their originating loop and final response instructions after steering received during harness startup. Allow restricted profiles to load skills and access declared MCP resources and prompts without granting forbidden tools. Expose the selected MCP server through `ToolResources.mcpServer` so inherited profiles enforce their server grants. Keep closed journal indexes until segment pruning succeeds, run native session bundle tests in container CI, and require bilingual release entries with no pending Unreleased changes before extracting version-specific release notes.
23
+ - Refuse untracked nested repositories with a path-specific conflict before synchronization, honor configured container archive transfer deadlines and reject duplicate tool-call identifiers before executing tools or their hooks. Restore established BullMQ connections after Redis outages while preserving bounded initial connection attempts and explicit closure.
24
+ - Make integration respect occupied host checkouts and reject remote changes to `.outpost`. Preserve local native transcripts during masked capture, retain Codex rollout dates and refuse ambiguous duplicate transcripts. Keep durable task outputs isolated from caller mutations and avoid retrying completed effects after serialization failure. Classify Chat Completions stream errors and make tool-result truncation stable across repeated compaction.
25
+ - Fix audit regressions in webhook URL handling, resumed task caches, ignored host-file protection during remote synchronization, harness file-tool symlink checks, queue worker recovery, JSON secret masking and journal flushing. Workers expose an optional `onError` callback and retry queue operations without replaying a completed handler while its lease remains valid.
26
+ - Add dedicated Docker/Podman egress companions for HTTP/HTTPS domain policies and raw TCP/UDP CIDR filtering, with denial precedence, TLS server-name checks, bounded kernel heartbeat expiry and companion recovery. Keep deny-all offline and refuse conflicting networks. Add `egressImage`, the source example in `examples/73-container-egress/`, bilingual guidance and a tested-image publication workflow. Register the public amd64/arm64 companion by verified digest after successful Docker and rootless Podman checks on GitHub-hosted Linux runners. Allowlisted sandboxes automatically download it when absent. Native macOS/Windows VM checks, standalone rootless Docker host checks and native IPv6 routing validation remain prerequisites.
27
+
28
+ ## 11.1.3
29
+
30
+ This release refreshes the documentation and visual identity without changing the library's runtime behavior or public API.
31
+
32
+ - Present five workflow scenarios on the English and French homepage: email, research, documents, customer requests and software. Link each step to the relevant Guide mechanisms, including System One typed decisions, while keeping the examples understandable on the page.
33
+ - Make the API the complete reference for prompts added by Outpost: exact templates, injection points, dynamic values, customization options and fixed instructions. Link the relevant Guide pages to these contracts.
34
+ - Make associated API contracts fill each row equally, with at most three columns. Remove experimental badges and generated maturity warnings from API pages; retain execution requirements, opt-in settings and live-validation limits in the contracts and guides.
35
+ - Replace the logo across the site, README banner and bilingual sharing previews. Add light/dark logo variants, browser-theme favicons and an Apple touch icon, with reproducible asset generation during documentation builds.
36
+
3
37
  ## 11.1.2
4
38
 
5
39
  This release adds YAML workflow composition, terminal recipe dialogues and Git-free file workspaces while preserving existing Git APIs and defaults.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <p align="center">
2
2
  <a href="https://elie-laloum.github.io/outpost/">
3
- <img src="outpost-banner.png" alt="Outpost — Coding agents. Workflows in TypeScript." width="100%">
3
+ <img src="outpost-banner.png" alt="Outpost — Your agents. Your tools. Your workflows." width="100%">
4
4
  </a>
5
5
  </p>
6
6
 
@@ -95,6 +95,7 @@ console.log(result.commits);
95
95
  | Read execution state by ID | [Execution state](https://elie-laloum.github.io/outpost/guide/run-state/) |
96
96
  | Test workflows without accounts or model calls | [Workflow testing](https://elie-laloum.github.io/outpost/guide/testing-workflows/) |
97
97
  | Create, share and run YAML recipes | [YAML recipes](https://elie-laloum.github.io/outpost/guide/yaml-recipes/) |
98
+ | Select secrets from a host secret manager | [Secret sources](https://elie-laloum.github.io/outpost/guide/secret-sources/) |
98
99
  | Resume or recover interrupted work | [Failure recovery](https://elie-laloum.github.io/outpost/guide/recovery/) |
99
100
 
100
101
  The [Guide](https://elie-laloum.github.io/outpost/guide/introduction/) explains behavior with focused examples. The [Reference](https://elie-laloum.github.io/outpost/reference/) documents exact contracts. Both are available in English and French.
package/SECURITY.md CHANGED
@@ -50,7 +50,11 @@ The optional Firecracker jailer mode requires a trusted root supervisor and root
50
50
 
51
51
  Egress policies restrict sandbox outbound connections, not host model-provider or decision-provider calls, image downloads or cloud control-plane traffic. Vercel domain rules inspect TLS SNI rather than encrypted HTTP Host headers; allowed CIDRs grant independent IP access and denied CIDRs take precedence. A domain allowlist is not a general defense against exfiltration through allowed services or shared infrastructure. Mounted host sockets can expose separate network capabilities. Outpost copies network configuration at provider composition.
52
52
 
53
- Daytona egress is sent at creation and confirmed through its network-update API before Outpost prepares the workspace or exposes the lease. A rejected confirmation fails acquisition and triggers deletion. Tier 3/4 and WRITE_SANDBOXES are required; native creation options alone do not establish this guarantee. Autonomous image startup precedes confirmation and must be trusted, without embedded secrets or startup workloads. Unsupported combinations and wildcard patterns that would implicitly grant apex access are rejected. Docker/Podman allowlists remain unsupported; local and Firecracker execution reject Outpost egress policies. See the bilingual outbound-network guide for capabilities and live-validation limits.
53
+ Daytona egress is sent at creation and confirmed through its network-update API before Outpost prepares the workspace or exposes the lease. A rejected confirmation fails acquisition and triggers deletion. Tier 3/4 and WRITE_SANDBOXES are required; native creation options alone do not establish this guarantee. Autonomous image startup precedes confirmation and must be trusted, without embedded secrets or startup workloads. Unsupported combinations and wildcard patterns that would implicitly grant apex access are rejected. Docker/Podman allowlists use a dedicated trusted companion with a private firewall and proxy; local and Firecracker execution reject Outpost egress policies. See the bilingual outbound-network guide for capabilities and live-validation limits.
54
+
55
+ Docker/Podman sandbox and companion share only a network namespace (and matching user mapping on Podman). Only the companion receives network administration and UID-switching capabilities; its HTTP proxy runs as reserved UID 65532. The kernel gates external TCP/UDP permissions with a three-second heartbeat timeout. Proxy or supervisor failure cannot open an unrestricted path. Localhost remains available outside external policy. Domain grants cover HTTP on 80 and TLS CONNECT on 443 with matching SNI; encrypted HTTP Host headers remain opaque. CIDRs independently grant raw TCP/UDP; denials precede grants. Direct sandbox DNS needs an explicit CIDR grant; the companion resolves proxy destinations. Mounted sockets and custom devices remain separate capabilities.
56
+
57
+ This provider implementation is unreleased in the npm package. Its public companion image is pinned by digest and has passed Docker and rootless Podman tests on GitHub-hosted Linux amd64/arm64 runners, with verified publication provenance. Trust image overrides and pin production digests. Native macOS/Windows VM configurations, standalone rootless Docker hosts and native IPv6 routing still need live validation. Unsupported kernel or engine capabilities fail acquisition before sandbox commands.
54
58
 
55
59
  ## Approvals and idempotency
56
60
 
@@ -1,3 +1,6 @@
1
+ import { composedNativeHooks } from "../native-hooks.js";
2
+ import { antigravityHookSchemas } from "./antigravity-hooks.constants.js";
3
+ import { antigravityHookPlan } from "./antigravity-hook-plan.js";
1
4
  import { rejectProfileTools } from "../profile-support.js";
2
5
  import { mcpConfigurationPlanner, supportMcpServers, } from "../mcp-configuration.js";
3
6
  import { antigravityMcpFile } from "./antigravity-mcp.js";
@@ -17,11 +20,15 @@ function bindAntigravity(settings) {
17
20
  const credentials = credentialPlanner(antigravityLabel, antigravityCredentials, settings.authentication, settings.model);
18
21
  const configuration = mcpConfigurationPlanner(antigravityLabel, settings.mcpServers, antigravityMcpFile);
19
22
  return Object.freeze({
23
+ ...(settings.hooks?.length
24
+ ? { hooks: antigravityHookPlan(settings.hooks) }
25
+ : {}),
20
26
  name: "antigravity",
21
27
  ...(credentials ? { credentials } : {}),
22
28
  ...(configuration ? { configuration } : {}),
23
29
  bootstrap: "antigravity",
24
30
  resumable: true,
31
+ fileWorkspaces: Object.freeze({ dispatch: true, repairs: true }),
25
32
  forkable: false,
26
33
  capture: false,
27
34
  requiresFinishedEvent: true,
@@ -39,10 +46,12 @@ export function createAntigravityHarness(settings = {}) {
39
46
  harnessSettings(settings);
40
47
  invariant(!("conversations" in settings) || settings.conversations === undefined, "Antigravity has no portable conversation capture; conversations cannot be stored");
41
48
  const configured = configuredSettings(settings);
49
+ const hooks = composedNativeHooks("antigravity", antigravityHookSchemas, configured.profile?.hooks?.antigravity, settings.hooks);
42
50
  return Object.freeze({
43
51
  kind: "cli",
44
52
  bind: (model) => bindAntigravity({
45
53
  ...configured,
54
+ hooks,
46
55
  ...(model === undefined ? {} : { model }),
47
56
  }),
48
57
  });
@@ -1 +1 @@
1
- {"version":3,"file":"antigravity-adapter.js","sourceRoot":"","sources":["../../../../src/adapters/agents/antigravity/antigravity-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import { rejectProfileTools } from \"../profile-support.ts\";\nimport {\n mcpConfigurationPlanner,\n supportMcpServers,\n} from \"../mcp-configuration.ts\";\nimport { antigravityMcpFile } from \"./antigravity-mcp.ts\";\nimport { textMatcher } from \"../text-matcher.ts\";\nimport { transientNoticePatterns } from \"../unavailable.constants.ts\";\nimport type { AgentAdapter, CliHarness } from \"../../../domain/agent.types.ts\";\nimport { invariant } from \"../../../domain/errors.ts\";\nimport type { AgentModel } from \"../../../domain/model.types.ts\";\nimport { antigravityCredentials } from \"./antigravity-authentication.ts\";\nimport {\n antigravityVariables,\n antigravityLabel,\n antigravityMcpSupport,\n antigravityModelSupport,\n antigravityQuotaPatterns,\n antigravityUnavailablePatterns,\n} from \"./antigravity.constants.ts\";\nimport { antigravityEvents } from \"./antigravity-events.ts\";\nimport { antigravityRequest } from \"./antigravity-request.ts\";\nimport type { AntigravitySettings } from \"./antigravity.types.ts\";\nimport { credentialPlanner } from \"../authentication.ts\";\nimport {\n configuredSettings,\n harnessSettings,\n supportModel,\n} from \"../model-support.ts\";\nimport type { Bound } from \"../settings.types.ts\";\n\nfunction bindAntigravity(settings: Bound<AntigravitySettings>): AgentAdapter {\n supportModel(antigravityModelSupport, settings.model);\n rejectProfileTools(antigravityLabel, settings.profile);\n supportMcpServers(antigravityMcpSupport, settings.mcpServers);\n const credentials = credentialPlanner(\n antigravityLabel,\n antigravityCredentials,\n settings.authentication,\n settings.model,\n );\n const configuration = mcpConfigurationPlanner(\n antigravityLabel,\n settings.mcpServers,\n antigravityMcpFile,\n );\n return Object.freeze({\n name: \"antigravity\",\n ...(credentials ? { credentials } : {}),\n ...(configuration ? { configuration } : {}),\n bootstrap: \"antigravity\",\n resumable: true,\n forkable: false,\n capture: false,\n requiresFinishedEvent: true,\n variables: Object.freeze({\n ...antigravityVariables,\n ...settings.variables,\n }),\n request: (input) => antigravityRequest(settings, input),\n events: antigravityEvents,\n quota: textMatcher(antigravityQuotaPatterns),\n unavailable: textMatcher(\n antigravityUnavailablePatterns,\n transientNoticePatterns,\n ),\n } satisfies AgentAdapter);\n}\n\nexport function createAntigravityHarness(\n settings: AntigravitySettings = {},\n): CliHarness {\n harnessSettings(settings);\n invariant(\n !(\"conversations\" in settings) || settings.conversations === undefined,\n \"Antigravity has no portable conversation capture; conversations cannot be stored\",\n );\n const configured = configuredSettings(settings);\n return Object.freeze({\n kind: \"cli\",\n bind: (model?: AgentModel) =>\n bindAntigravity({\n ...configured,\n ...(model === undefined ? {} : { model }),\n }),\n });\n}\n"]}
1
+ {"version":3,"file":"antigravity-adapter.js","sourceRoot":"","sources":["../../../../src/adapters/agents/antigravity/antigravity-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import { composedNativeHooks } from \"../native-hooks.ts\";\nimport { antigravityHookSchemas } from \"./antigravity-hooks.constants.ts\";\nimport { antigravityHookPlan } from \"./antigravity-hook-plan.ts\";\nimport { rejectProfileTools } from \"../profile-support.ts\";\nimport {\n mcpConfigurationPlanner,\n supportMcpServers,\n} from \"../mcp-configuration.ts\";\nimport { antigravityMcpFile } from \"./antigravity-mcp.ts\";\nimport { textMatcher } from \"../text-matcher.ts\";\nimport { transientNoticePatterns } from \"../unavailable.constants.ts\";\nimport type { AgentAdapter, CliHarness } from \"../../../domain/agent.types.ts\";\nimport { invariant } from \"../../../domain/errors.ts\";\nimport type { AgentModel } from \"../../../domain/model.types.ts\";\nimport { antigravityCredentials } from \"./antigravity-authentication.ts\";\nimport {\n antigravityVariables,\n antigravityLabel,\n antigravityMcpSupport,\n antigravityModelSupport,\n antigravityQuotaPatterns,\n antigravityUnavailablePatterns,\n} from \"./antigravity.constants.ts\";\nimport { antigravityEvents } from \"./antigravity-events.ts\";\nimport { antigravityRequest } from \"./antigravity-request.ts\";\nimport type { AntigravitySettings } from \"./antigravity.types.ts\";\nimport { credentialPlanner } from \"../authentication.ts\";\nimport {\n configuredSettings,\n harnessSettings,\n supportModel,\n} from \"../model-support.ts\";\nimport type { Bound } from \"../settings.types.ts\";\n\nfunction bindAntigravity(settings: Bound<AntigravitySettings>): AgentAdapter {\n supportModel(antigravityModelSupport, settings.model);\n rejectProfileTools(antigravityLabel, settings.profile);\n supportMcpServers(antigravityMcpSupport, settings.mcpServers);\n const credentials = credentialPlanner(\n antigravityLabel,\n antigravityCredentials,\n settings.authentication,\n settings.model,\n );\n const configuration = mcpConfigurationPlanner(\n antigravityLabel,\n settings.mcpServers,\n antigravityMcpFile,\n );\n return Object.freeze({\n ...(settings.hooks?.length\n ? { hooks: antigravityHookPlan(settings.hooks) }\n : {}),\n name: \"antigravity\",\n ...(credentials ? { credentials } : {}),\n ...(configuration ? { configuration } : {}),\n bootstrap: \"antigravity\",\n resumable: true,\n fileWorkspaces: Object.freeze({ dispatch: true, repairs: true }),\n forkable: false,\n capture: false,\n requiresFinishedEvent: true,\n variables: Object.freeze({\n ...antigravityVariables,\n ...settings.variables,\n }),\n request: (input) => antigravityRequest(settings, input),\n events: antigravityEvents,\n quota: textMatcher(antigravityQuotaPatterns),\n unavailable: textMatcher(\n antigravityUnavailablePatterns,\n transientNoticePatterns,\n ),\n } satisfies AgentAdapter);\n}\n\nexport function createAntigravityHarness(\n settings: AntigravitySettings = {},\n): CliHarness {\n harnessSettings(settings);\n invariant(\n !(\"conversations\" in settings) || settings.conversations === undefined,\n \"Antigravity has no portable conversation capture; conversations cannot be stored\",\n );\n const configured = configuredSettings(settings);\n const hooks = composedNativeHooks(\n \"antigravity\",\n antigravityHookSchemas,\n configured.profile?.hooks?.antigravity,\n settings.hooks,\n );\n return Object.freeze({\n kind: \"cli\",\n bind: (model?: AgentModel) =>\n bindAntigravity({\n ...configured,\n hooks,\n ...(model === undefined ? {} : { model }),\n }),\n });\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { AgentHookPlan } from "../../../domain/agent-hook.types.ts";
2
+ import type { AntigravityHook } from "./antigravity-hooks.types.ts";
3
+ export declare function antigravityHookPlan(value: readonly AntigravityHook[]): AgentHookPlan;
@@ -0,0 +1,39 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { installHookConfiguration } from "../../../infrastructure/hook-configuration.js";
3
+ import { nativeHooks } from "../native-hooks.js";
4
+ import { hookGroups } from "../hook-groups.js";
5
+ export function antigravityHookPlan(value) {
6
+ const handlers = nativeHooks("antigravity", value);
7
+ return {
8
+ handlers,
9
+ async prepare(sandbox, commands, signal) {
10
+ const hooks = hookGroups(handlers, commands);
11
+ for (const phase of [
12
+ "SessionStart",
13
+ "PreInvocation",
14
+ "PostInvocation",
15
+ "Stop",
16
+ ]) {
17
+ const entries = handlers.flatMap((hook, index) => hook.on === phase
18
+ ? [
19
+ {
20
+ type: "command",
21
+ command: commands[index],
22
+ timeout: Math.ceil(hook.timeoutMs / 1000),
23
+ },
24
+ ]
25
+ : []);
26
+ if (entries.length)
27
+ hooks[phase] = entries;
28
+ }
29
+ const close = await installHookConfiguration(sandbox, {
30
+ kind: "entry",
31
+ path: ".gemini/config/hooks.json",
32
+ key: `outpost-${randomUUID()}`,
33
+ value: hooks,
34
+ }, signal);
35
+ return { command: (command) => command, close };
36
+ },
37
+ };
38
+ }
39
+ //# sourceMappingURL=antigravity-hook-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity-hook-plan.js","sourceRoot":"","sources":["../../../../src/adapters/agents/antigravity/antigravity-hook-plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,MAAM,UAAU,mBAAmB,CACjC,KAAiC;IAEjC,MAAM,QAAQ,GAAG,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACnD,OAAO;QACL,QAAQ;QACR,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM;YACrC,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC7C,KAAK,MAAM,KAAK,IAAI;gBAClB,cAAc;gBACd,eAAe;gBACf,gBAAgB;gBAChB,MAAM;aACP,EAAE,CAAC;gBACF,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC/C,IAAI,CAAC,EAAE,KAAK,KAAK;oBACf,CAAC,CAAC;wBACE;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC;4BACxB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;yBAC1C;qBACF;oBACH,CAAC,CAAC,EAAE,CACP,CAAC;gBACF,IAAI,OAAO,CAAC,MAAM;oBAAE,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;YAC7C,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,wBAAwB,CAC1C,OAAO,EACP;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,2BAA2B;gBACjC,GAAG,EAAE,WAAW,UAAU,EAAE,EAAE;gBAC9B,KAAK,EAAE,KAAK;aACb,EACD,MAAM,CACP,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QAClD,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport type { AgentHookPlan } from \"../../../domain/agent-hook.types.ts\";\nimport { installHookConfiguration } from \"../../../infrastructure/hook-configuration.ts\";\nimport { nativeHooks } from \"../native-hooks.ts\";\nimport { hookGroups } from \"../hook-groups.ts\";\nimport type { AntigravityHook } from \"./antigravity-hooks.types.ts\";\n\nexport function antigravityHookPlan(\n value: readonly AntigravityHook[],\n): AgentHookPlan {\n const handlers = nativeHooks(\"antigravity\", value);\n return {\n handlers,\n async prepare(sandbox, commands, signal) {\n const hooks = hookGroups(handlers, commands);\n for (const phase of [\n \"SessionStart\",\n \"PreInvocation\",\n \"PostInvocation\",\n \"Stop\",\n ]) {\n const entries = handlers.flatMap((hook, index) =>\n hook.on === phase\n ? [\n {\n type: \"command\",\n command: commands[index],\n timeout: Math.ceil(hook.timeoutMs / 1000),\n },\n ]\n : [],\n );\n if (entries.length) hooks[phase] = entries;\n }\n const close = await installHookConfiguration(\n sandbox,\n {\n kind: \"entry\",\n path: \".gemini/config/hooks.json\",\n key: `outpost-${randomUUID()}`,\n value: hooks,\n },\n signal,\n );\n return { command: (command) => command, close };\n },\n };\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { NativeHookSchema } from "../native-hooks.types.ts";
2
+ import type { AntigravityHookPhase } from "./antigravity-hooks.types.ts";
3
+ export declare const antigravityHookSchemas: Readonly<Record<AntigravityHookPhase, NativeHookSchema>>;
@@ -0,0 +1,394 @@
1
+ export const antigravityHookSchemas = {
2
+ SessionStart: {
3
+ input: {
4
+ type: "object",
5
+ properties: {
6
+ conversationId: {
7
+ type: "string",
8
+ },
9
+ workspacePaths: {
10
+ type: "array",
11
+ items: {
12
+ type: "string",
13
+ },
14
+ },
15
+ transcriptPath: {
16
+ type: "string",
17
+ },
18
+ artifactDirectoryPath: {
19
+ type: "string",
20
+ },
21
+ modelName: {
22
+ type: "string",
23
+ },
24
+ },
25
+ required: ["conversationId", "workspacePaths"],
26
+ additionalProperties: true,
27
+ },
28
+ output: {
29
+ type: "object",
30
+ properties: {
31
+ injectSteps: {
32
+ type: "array",
33
+ items: {
34
+ type: "object",
35
+ properties: {
36
+ systemMessage: {
37
+ type: "object",
38
+ properties: {
39
+ systemMessage: {
40
+ type: "string",
41
+ },
42
+ metadata: {
43
+ type: "object",
44
+ },
45
+ },
46
+ required: [],
47
+ additionalProperties: false,
48
+ },
49
+ userMessage: {
50
+ type: "string",
51
+ },
52
+ ephemeralMessage: {
53
+ type: "string",
54
+ },
55
+ toolCall: {
56
+ type: "object",
57
+ },
58
+ },
59
+ required: [],
60
+ additionalProperties: false,
61
+ },
62
+ },
63
+ },
64
+ required: [],
65
+ additionalProperties: false,
66
+ },
67
+ },
68
+ PreToolUse: {
69
+ input: {
70
+ type: "object",
71
+ properties: {
72
+ conversationId: {
73
+ type: "string",
74
+ },
75
+ workspacePaths: {
76
+ type: "array",
77
+ items: {
78
+ type: "string",
79
+ },
80
+ },
81
+ transcriptPath: {
82
+ type: "string",
83
+ },
84
+ artifactDirectoryPath: {
85
+ type: "string",
86
+ },
87
+ modelName: {
88
+ type: "string",
89
+ },
90
+ toolCall: {
91
+ type: "object",
92
+ properties: {
93
+ name: {
94
+ type: "string",
95
+ },
96
+ args: {
97
+ type: "object",
98
+ },
99
+ },
100
+ required: ["name", "args"],
101
+ additionalProperties: false,
102
+ },
103
+ stepIdx: {
104
+ type: "number",
105
+ },
106
+ },
107
+ required: ["conversationId", "workspacePaths"],
108
+ additionalProperties: true,
109
+ },
110
+ output: {
111
+ type: "object",
112
+ properties: {
113
+ decision: {
114
+ type: "string",
115
+ enum: [
116
+ "allow",
117
+ "auto_approve",
118
+ "deny",
119
+ "ask",
120
+ "force_ask",
121
+ "deny_unless_prior_grant",
122
+ ],
123
+ },
124
+ reason: {
125
+ type: "string",
126
+ },
127
+ overwrite: {
128
+ type: "object",
129
+ },
130
+ permissionOverrides: {
131
+ type: "array",
132
+ items: {
133
+ type: "string",
134
+ },
135
+ },
136
+ },
137
+ required: ["decision"],
138
+ additionalProperties: false,
139
+ },
140
+ },
141
+ PostToolUse: {
142
+ input: {
143
+ type: "object",
144
+ properties: {
145
+ conversationId: {
146
+ type: "string",
147
+ },
148
+ workspacePaths: {
149
+ type: "array",
150
+ items: {
151
+ type: "string",
152
+ },
153
+ },
154
+ transcriptPath: {
155
+ type: "string",
156
+ },
157
+ artifactDirectoryPath: {
158
+ type: "string",
159
+ },
160
+ modelName: {
161
+ type: "string",
162
+ },
163
+ toolCall: {
164
+ type: "object",
165
+ properties: {
166
+ name: {
167
+ type: "string",
168
+ },
169
+ args: {
170
+ type: "object",
171
+ },
172
+ },
173
+ required: ["name", "args"],
174
+ additionalProperties: false,
175
+ },
176
+ stepIdx: {
177
+ type: "number",
178
+ },
179
+ error: {
180
+ type: "string",
181
+ },
182
+ },
183
+ required: ["conversationId", "workspacePaths"],
184
+ additionalProperties: true,
185
+ },
186
+ output: {
187
+ type: "object",
188
+ properties: {},
189
+ required: [],
190
+ additionalProperties: false,
191
+ },
192
+ },
193
+ PreInvocation: {
194
+ input: {
195
+ type: "object",
196
+ properties: {
197
+ conversationId: {
198
+ type: "string",
199
+ },
200
+ workspacePaths: {
201
+ type: "array",
202
+ items: {
203
+ type: "string",
204
+ },
205
+ },
206
+ transcriptPath: {
207
+ type: "string",
208
+ },
209
+ artifactDirectoryPath: {
210
+ type: "string",
211
+ },
212
+ modelName: {
213
+ type: "string",
214
+ },
215
+ invocationNum: {
216
+ type: "number",
217
+ },
218
+ initialNumSteps: {
219
+ type: "number",
220
+ },
221
+ },
222
+ required: ["conversationId", "workspacePaths"],
223
+ additionalProperties: true,
224
+ },
225
+ output: {
226
+ type: "object",
227
+ properties: {
228
+ injectSteps: {
229
+ type: "array",
230
+ items: {
231
+ type: "object",
232
+ properties: {
233
+ systemMessage: {
234
+ type: "object",
235
+ properties: {
236
+ systemMessage: {
237
+ type: "string",
238
+ },
239
+ metadata: {
240
+ type: "object",
241
+ },
242
+ },
243
+ required: [],
244
+ additionalProperties: false,
245
+ },
246
+ userMessage: {
247
+ type: "string",
248
+ },
249
+ ephemeralMessage: {
250
+ type: "string",
251
+ },
252
+ toolCall: {
253
+ type: "object",
254
+ },
255
+ },
256
+ required: [],
257
+ additionalProperties: false,
258
+ },
259
+ },
260
+ },
261
+ required: [],
262
+ additionalProperties: false,
263
+ },
264
+ },
265
+ PostInvocation: {
266
+ input: {
267
+ type: "object",
268
+ properties: {
269
+ conversationId: {
270
+ type: "string",
271
+ },
272
+ workspacePaths: {
273
+ type: "array",
274
+ items: {
275
+ type: "string",
276
+ },
277
+ },
278
+ transcriptPath: {
279
+ type: "string",
280
+ },
281
+ artifactDirectoryPath: {
282
+ type: "string",
283
+ },
284
+ modelName: {
285
+ type: "string",
286
+ },
287
+ invocationNum: {
288
+ type: "number",
289
+ },
290
+ initialNumSteps: {
291
+ type: "number",
292
+ },
293
+ },
294
+ required: ["conversationId", "workspacePaths"],
295
+ additionalProperties: true,
296
+ },
297
+ output: {
298
+ type: "object",
299
+ properties: {
300
+ injectSteps: {
301
+ type: "array",
302
+ items: {
303
+ type: "object",
304
+ properties: {
305
+ systemMessage: {
306
+ type: "object",
307
+ properties: {
308
+ systemMessage: {
309
+ type: "string",
310
+ },
311
+ metadata: {
312
+ type: "object",
313
+ },
314
+ },
315
+ required: [],
316
+ additionalProperties: false,
317
+ },
318
+ userMessage: {
319
+ type: "string",
320
+ },
321
+ ephemeralMessage: {
322
+ type: "string",
323
+ },
324
+ toolCall: {
325
+ type: "object",
326
+ },
327
+ },
328
+ required: [],
329
+ additionalProperties: false,
330
+ },
331
+ },
332
+ terminationBehavior: {
333
+ type: "string",
334
+ enum: ["force_continue", "terminate", ""],
335
+ },
336
+ },
337
+ required: [],
338
+ additionalProperties: false,
339
+ },
340
+ },
341
+ Stop: {
342
+ input: {
343
+ type: "object",
344
+ properties: {
345
+ conversationId: {
346
+ type: "string",
347
+ },
348
+ workspacePaths: {
349
+ type: "array",
350
+ items: {
351
+ type: "string",
352
+ },
353
+ },
354
+ transcriptPath: {
355
+ type: "string",
356
+ },
357
+ artifactDirectoryPath: {
358
+ type: "string",
359
+ },
360
+ modelName: {
361
+ type: "string",
362
+ },
363
+ executionNum: {
364
+ type: "number",
365
+ },
366
+ terminationReason: {
367
+ type: "string",
368
+ },
369
+ error: {
370
+ type: "string",
371
+ },
372
+ fullyIdle: {
373
+ type: "boolean",
374
+ },
375
+ },
376
+ required: ["conversationId", "workspacePaths"],
377
+ additionalProperties: true,
378
+ },
379
+ output: {
380
+ type: "object",
381
+ properties: {
382
+ decision: {
383
+ type: "string",
384
+ },
385
+ reason: {
386
+ type: "string",
387
+ },
388
+ },
389
+ required: ["decision"],
390
+ additionalProperties: false,
391
+ },
392
+ },
393
+ };
394
+ //# sourceMappingURL=antigravity-hooks.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity-hooks.constants.js","sourceRoot":"","sources":["../../../../src/adapters/agents/antigravity/antigravity-hooks.constants.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NativeHookSchema } from \"../native-hooks.types.ts\";\nimport type { AntigravityHookPhase } from \"./antigravity-hooks.types.ts\";\n\nexport const antigravityHookSchemas: Readonly<\n Record<AntigravityHookPhase, NativeHookSchema>\n> = {\n SessionStart: {\n input: {\n type: \"object\",\n properties: {\n conversationId: {\n type: \"string\",\n },\n workspacePaths: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n transcriptPath: {\n type: \"string\",\n },\n artifactDirectoryPath: {\n type: \"string\",\n },\n modelName: {\n type: \"string\",\n },\n },\n required: [\"conversationId\", \"workspacePaths\"],\n additionalProperties: true,\n },\n output: {\n type: \"object\",\n properties: {\n injectSteps: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n systemMessage: {\n type: \"object\",\n properties: {\n systemMessage: {\n type: \"string\",\n },\n metadata: {\n type: \"object\",\n },\n },\n required: [],\n additionalProperties: false,\n },\n userMessage: {\n type: \"string\",\n },\n ephemeralMessage: {\n type: \"string\",\n },\n toolCall: {\n type: \"object\",\n },\n },\n required: [],\n additionalProperties: false,\n },\n },\n },\n required: [],\n additionalProperties: false,\n },\n },\n PreToolUse: {\n input: {\n type: \"object\",\n properties: {\n conversationId: {\n type: \"string\",\n },\n workspacePaths: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n transcriptPath: {\n type: \"string\",\n },\n artifactDirectoryPath: {\n type: \"string\",\n },\n modelName: {\n type: \"string\",\n },\n toolCall: {\n type: \"object\",\n properties: {\n name: {\n type: \"string\",\n },\n args: {\n type: \"object\",\n },\n },\n required: [\"name\", \"args\"],\n additionalProperties: false,\n },\n stepIdx: {\n type: \"number\",\n },\n },\n required: [\"conversationId\", \"workspacePaths\"],\n additionalProperties: true,\n },\n output: {\n type: \"object\",\n properties: {\n decision: {\n type: \"string\",\n enum: [\n \"allow\",\n \"auto_approve\",\n \"deny\",\n \"ask\",\n \"force_ask\",\n \"deny_unless_prior_grant\",\n ],\n },\n reason: {\n type: \"string\",\n },\n overwrite: {\n type: \"object\",\n },\n permissionOverrides: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n },\n required: [\"decision\"],\n additionalProperties: false,\n },\n },\n PostToolUse: {\n input: {\n type: \"object\",\n properties: {\n conversationId: {\n type: \"string\",\n },\n workspacePaths: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n transcriptPath: {\n type: \"string\",\n },\n artifactDirectoryPath: {\n type: \"string\",\n },\n modelName: {\n type: \"string\",\n },\n toolCall: {\n type: \"object\",\n properties: {\n name: {\n type: \"string\",\n },\n args: {\n type: \"object\",\n },\n },\n required: [\"name\", \"args\"],\n additionalProperties: false,\n },\n stepIdx: {\n type: \"number\",\n },\n error: {\n type: \"string\",\n },\n },\n required: [\"conversationId\", \"workspacePaths\"],\n additionalProperties: true,\n },\n output: {\n type: \"object\",\n properties: {},\n required: [],\n additionalProperties: false,\n },\n },\n PreInvocation: {\n input: {\n type: \"object\",\n properties: {\n conversationId: {\n type: \"string\",\n },\n workspacePaths: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n transcriptPath: {\n type: \"string\",\n },\n artifactDirectoryPath: {\n type: \"string\",\n },\n modelName: {\n type: \"string\",\n },\n invocationNum: {\n type: \"number\",\n },\n initialNumSteps: {\n type: \"number\",\n },\n },\n required: [\"conversationId\", \"workspacePaths\"],\n additionalProperties: true,\n },\n output: {\n type: \"object\",\n properties: {\n injectSteps: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n systemMessage: {\n type: \"object\",\n properties: {\n systemMessage: {\n type: \"string\",\n },\n metadata: {\n type: \"object\",\n },\n },\n required: [],\n additionalProperties: false,\n },\n userMessage: {\n type: \"string\",\n },\n ephemeralMessage: {\n type: \"string\",\n },\n toolCall: {\n type: \"object\",\n },\n },\n required: [],\n additionalProperties: false,\n },\n },\n },\n required: [],\n additionalProperties: false,\n },\n },\n PostInvocation: {\n input: {\n type: \"object\",\n properties: {\n conversationId: {\n type: \"string\",\n },\n workspacePaths: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n transcriptPath: {\n type: \"string\",\n },\n artifactDirectoryPath: {\n type: \"string\",\n },\n modelName: {\n type: \"string\",\n },\n invocationNum: {\n type: \"number\",\n },\n initialNumSteps: {\n type: \"number\",\n },\n },\n required: [\"conversationId\", \"workspacePaths\"],\n additionalProperties: true,\n },\n output: {\n type: \"object\",\n properties: {\n injectSteps: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n systemMessage: {\n type: \"object\",\n properties: {\n systemMessage: {\n type: \"string\",\n },\n metadata: {\n type: \"object\",\n },\n },\n required: [],\n additionalProperties: false,\n },\n userMessage: {\n type: \"string\",\n },\n ephemeralMessage: {\n type: \"string\",\n },\n toolCall: {\n type: \"object\",\n },\n },\n required: [],\n additionalProperties: false,\n },\n },\n terminationBehavior: {\n type: \"string\",\n enum: [\"force_continue\", \"terminate\", \"\"],\n },\n },\n required: [],\n additionalProperties: false,\n },\n },\n Stop: {\n input: {\n type: \"object\",\n properties: {\n conversationId: {\n type: \"string\",\n },\n workspacePaths: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n transcriptPath: {\n type: \"string\",\n },\n artifactDirectoryPath: {\n type: \"string\",\n },\n modelName: {\n type: \"string\",\n },\n executionNum: {\n type: \"number\",\n },\n terminationReason: {\n type: \"string\",\n },\n error: {\n type: \"string\",\n },\n fullyIdle: {\n type: \"boolean\",\n },\n },\n required: [\"conversationId\", \"workspacePaths\"],\n additionalProperties: true,\n },\n output: {\n type: \"object\",\n properties: {\n decision: {\n type: \"string\",\n },\n reason: {\n type: \"string\",\n },\n },\n required: [\"decision\"],\n additionalProperties: false,\n },\n },\n};\n"]}
@@ -0,0 +1,2 @@
1
+ import type { AntigravityHook, AntigravityHookPhase, AntigravityHookOptions } from "./antigravity-hooks.types.ts";
2
+ export declare function defineAntigravityHook<Phase extends AntigravityHookPhase>(options: AntigravityHookOptions<Phase>): AntigravityHook<Phase>;