@calliopelabs/cli 3.5.3 → 3.6.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 (327) hide show
  1. package/README.md +8 -0
  2. package/dist/acp.d.ts +10 -3
  3. package/dist/acp.d.ts.map +1 -1
  4. package/dist/acp.js +27 -7
  5. package/dist/acp.js.map +1 -1
  6. package/dist/bin.d.ts.map +1 -1
  7. package/dist/bin.js +28 -11
  8. package/dist/bin.js.map +1 -1
  9. package/dist/brain/access.d.ts.map +1 -1
  10. package/dist/brain/access.js +2 -1
  11. package/dist/brain/access.js.map +1 -1
  12. package/dist/config.d.ts +2 -2
  13. package/dist/config.d.ts.map +1 -1
  14. package/dist/config.js +7 -6
  15. package/dist/config.js.map +1 -1
  16. package/dist/execution/authority.d.ts +4 -1
  17. package/dist/execution/authority.d.ts.map +1 -1
  18. package/dist/execution/authority.js +23 -7
  19. package/dist/execution/authority.js.map +1 -1
  20. package/dist/execution/child-grants.d.ts +2 -0
  21. package/dist/execution/child-grants.d.ts.map +1 -1
  22. package/dist/execution/child-grants.js +19 -4
  23. package/dist/execution/child-grants.js.map +1 -1
  24. package/dist/execution/delegated.d.ts +14 -0
  25. package/dist/execution/delegated.d.ts.map +1 -0
  26. package/dist/execution/delegated.js +66 -0
  27. package/dist/execution/delegated.js.map +1 -0
  28. package/dist/execution/files.js +6 -6
  29. package/dist/execution/files.js.map +1 -1
  30. package/dist/execution/guard.d.ts +5 -0
  31. package/dist/execution/guard.d.ts.map +1 -1
  32. package/dist/execution/guard.js +31 -16
  33. package/dist/execution/guard.js.map +1 -1
  34. package/dist/execution/index.d.ts +4 -0
  35. package/dist/execution/index.d.ts.map +1 -1
  36. package/dist/execution/index.js +4 -0
  37. package/dist/execution/index.js.map +1 -1
  38. package/dist/execution/ledger-cli.d.ts +2 -1
  39. package/dist/execution/ledger-cli.d.ts.map +1 -1
  40. package/dist/execution/ledger-cli.js +51 -14
  41. package/dist/execution/ledger-cli.js.map +1 -1
  42. package/dist/execution/ledger-protocol.d.ts +6 -2
  43. package/dist/execution/ledger-protocol.d.ts.map +1 -1
  44. package/dist/execution/ledger-protocol.js +110 -24
  45. package/dist/execution/ledger-protocol.js.map +1 -1
  46. package/dist/execution/ledger-server.d.ts +13 -0
  47. package/dist/execution/ledger-server.d.ts.map +1 -1
  48. package/dist/execution/ledger-server.js +57 -13
  49. package/dist/execution/ledger-server.js.map +1 -1
  50. package/dist/execution/ledger-tunnel.d.ts +50 -0
  51. package/dist/execution/ledger-tunnel.d.ts.map +1 -0
  52. package/dist/execution/ledger-tunnel.js +307 -0
  53. package/dist/execution/ledger-tunnel.js.map +1 -0
  54. package/dist/execution/ledger.d.ts +4 -0
  55. package/dist/execution/ledger.d.ts.map +1 -1
  56. package/dist/execution/ledger.js +30 -4
  57. package/dist/execution/ledger.js.map +1 -1
  58. package/dist/execution/parent-accounting.d.ts +41 -0
  59. package/dist/execution/parent-accounting.d.ts.map +1 -0
  60. package/dist/execution/parent-accounting.js +52 -0
  61. package/dist/execution/parent-accounting.js.map +1 -0
  62. package/dist/execution/parent-budget.d.ts +25 -0
  63. package/dist/execution/parent-budget.d.ts.map +1 -0
  64. package/dist/execution/parent-budget.js +102 -0
  65. package/dist/execution/parent-budget.js.map +1 -0
  66. package/dist/execution/project-spend.d.ts.map +1 -1
  67. package/dist/execution/project-spend.js +35 -5
  68. package/dist/execution/project-spend.js.map +1 -1
  69. package/dist/execution/quote.js +1 -1
  70. package/dist/execution/quote.js.map +1 -1
  71. package/dist/execution/remote-checkpoint.d.ts +15 -0
  72. package/dist/execution/remote-checkpoint.d.ts.map +1 -0
  73. package/dist/execution/remote-checkpoint.js +165 -0
  74. package/dist/execution/remote-checkpoint.js.map +1 -0
  75. package/dist/execution/remote-ledger.d.ts +12 -2
  76. package/dist/execution/remote-ledger.d.ts.map +1 -1
  77. package/dist/execution/remote-ledger.js +53 -21
  78. package/dist/execution/remote-ledger.js.map +1 -1
  79. package/dist/execution/types.d.ts +23 -5
  80. package/dist/execution/types.d.ts.map +1 -1
  81. package/dist/execution/types.js.map +1 -1
  82. package/dist/goals/supervised.js +2 -2
  83. package/dist/goals/supervised.js.map +1 -1
  84. package/dist/headless.d.ts +2 -6
  85. package/dist/headless.d.ts.map +1 -1
  86. package/dist/headless.js +17 -21
  87. package/dist/headless.js.map +1 -1
  88. package/dist/health/target.js +1 -1
  89. package/dist/health/target.js.map +1 -1
  90. package/dist/improvement/actions.d.ts +3 -4
  91. package/dist/improvement/actions.d.ts.map +1 -1
  92. package/dist/improvement/actions.js +10 -7
  93. package/dist/improvement/actions.js.map +1 -1
  94. package/dist/improvement/capabilities.d.ts +54 -0
  95. package/dist/improvement/capabilities.d.ts.map +1 -0
  96. package/dist/improvement/capabilities.js +44 -0
  97. package/dist/improvement/capabilities.js.map +1 -0
  98. package/dist/improvement/cli.d.ts +1 -1
  99. package/dist/improvement/cli.d.ts.map +1 -1
  100. package/dist/improvement/cli.js +14 -2
  101. package/dist/improvement/cli.js.map +1 -1
  102. package/dist/improvement/index.d.ts +5 -0
  103. package/dist/improvement/index.d.ts.map +1 -1
  104. package/dist/improvement/index.js +5 -0
  105. package/dist/improvement/index.js.map +1 -1
  106. package/dist/improvement/proposal-hash.d.ts +3 -0
  107. package/dist/improvement/proposal-hash.d.ts.map +1 -0
  108. package/dist/improvement/proposal-hash.js +5 -0
  109. package/dist/improvement/proposal-hash.js.map +1 -0
  110. package/dist/improvement/review-contract.d.ts +32 -0
  111. package/dist/improvement/review-contract.d.ts.map +1 -0
  112. package/dist/improvement/review-contract.js +62 -0
  113. package/dist/improvement/review-contract.js.map +1 -0
  114. package/dist/improvement/review-requests.d.ts +72 -0
  115. package/dist/improvement/review-requests.d.ts.map +1 -0
  116. package/dist/improvement/review-requests.js +63 -0
  117. package/dist/improvement/review-requests.js.map +1 -0
  118. package/dist/improvement/source-changes.d.ts +78 -0
  119. package/dist/improvement/source-changes.d.ts.map +1 -0
  120. package/dist/improvement/source-changes.js +91 -0
  121. package/dist/improvement/source-changes.js.map +1 -0
  122. package/dist/improvement/task-outcomes.d.ts +82 -0
  123. package/dist/improvement/task-outcomes.d.ts.map +1 -0
  124. package/dist/improvement/task-outcomes.js +72 -0
  125. package/dist/improvement/task-outcomes.js.map +1 -0
  126. package/dist/index.d.ts +10 -0
  127. package/dist/index.d.ts.map +1 -1
  128. package/dist/index.js +6 -0
  129. package/dist/index.js.map +1 -1
  130. package/dist/isolation/contracts.d.ts +13 -0
  131. package/dist/isolation/contracts.d.ts.map +1 -1
  132. package/dist/isolation/contracts.js +9 -1
  133. package/dist/isolation/contracts.js.map +1 -1
  134. package/dist/isolation/coordinator.d.ts.map +1 -1
  135. package/dist/isolation/coordinator.js +4 -0
  136. package/dist/isolation/coordinator.js.map +1 -1
  137. package/dist/isolation/process.d.ts.map +1 -1
  138. package/dist/isolation/process.js +3 -1
  139. package/dist/isolation/process.js.map +1 -1
  140. package/dist/isolation/worktree.d.ts +9 -1
  141. package/dist/isolation/worktree.d.ts.map +1 -1
  142. package/dist/isolation/worktree.js +8 -3
  143. package/dist/isolation/worktree.js.map +1 -1
  144. package/dist/local-model.d.ts +4 -4
  145. package/dist/local-model.js +5 -5
  146. package/dist/local-model.js.map +1 -1
  147. package/dist/memory.d.ts +5 -3
  148. package/dist/memory.d.ts.map +1 -1
  149. package/dist/memory.js +8 -6
  150. package/dist/memory.js.map +1 -1
  151. package/dist/migration/assessment-contract.d.ts +60 -0
  152. package/dist/migration/assessment-contract.d.ts.map +1 -0
  153. package/dist/migration/assessment-contract.js +132 -0
  154. package/dist/migration/assessment-contract.js.map +1 -0
  155. package/dist/migration/assessment-schema.d.ts +19 -0
  156. package/dist/migration/assessment-schema.d.ts.map +1 -0
  157. package/dist/migration/assessment-schema.js +43 -0
  158. package/dist/migration/assessment-schema.js.map +1 -0
  159. package/dist/migration/assessment.d.ts +159 -0
  160. package/dist/migration/assessment.d.ts.map +1 -0
  161. package/dist/migration/assessment.js +219 -0
  162. package/dist/migration/assessment.js.map +1 -0
  163. package/dist/migration/cli.d.ts +6 -0
  164. package/dist/migration/cli.d.ts.map +1 -0
  165. package/dist/migration/cli.js +101 -0
  166. package/dist/migration/cli.js.map +1 -0
  167. package/dist/migration/evidence.d.ts +27 -0
  168. package/dist/migration/evidence.d.ts.map +1 -0
  169. package/dist/migration/evidence.js +124 -0
  170. package/dist/migration/evidence.js.map +1 -0
  171. package/dist/migration/example.d.ts +33 -0
  172. package/dist/migration/example.d.ts.map +1 -0
  173. package/dist/migration/example.js +28 -0
  174. package/dist/migration/example.js.map +1 -0
  175. package/dist/migration/index.d.ts +21 -0
  176. package/dist/migration/index.d.ts.map +1 -0
  177. package/dist/migration/index.js +15 -0
  178. package/dist/migration/index.js.map +1 -0
  179. package/dist/migration/inventory.d.ts +70 -0
  180. package/dist/migration/inventory.d.ts.map +1 -0
  181. package/dist/migration/inventory.js +233 -0
  182. package/dist/migration/inventory.js.map +1 -0
  183. package/dist/migration/schema.d.ts +61 -0
  184. package/dist/migration/schema.d.ts.map +1 -0
  185. package/dist/migration/schema.js +76 -0
  186. package/dist/migration/schema.js.map +1 -0
  187. package/dist/migration/verification.d.ts +146 -0
  188. package/dist/migration/verification.d.ts.map +1 -0
  189. package/dist/migration/verification.js +260 -0
  190. package/dist/migration/verification.js.map +1 -0
  191. package/dist/model-detection.d.ts.map +1 -1
  192. package/dist/model-detection.js +2 -39
  193. package/dist/model-detection.js.map +1 -1
  194. package/dist/orchestration/actions.d.ts +2 -0
  195. package/dist/orchestration/actions.d.ts.map +1 -1
  196. package/dist/orchestration/actions.js.map +1 -1
  197. package/dist/orchestration/artifact-host.d.ts +46 -0
  198. package/dist/orchestration/artifact-host.d.ts.map +1 -0
  199. package/dist/orchestration/artifact-host.js +64 -0
  200. package/dist/orchestration/artifact-host.js.map +1 -0
  201. package/dist/orchestration/coordinator-actions.d.ts +1 -1
  202. package/dist/orchestration/coordinator-actions.d.ts.map +1 -1
  203. package/dist/orchestration/coordinator-actions.js +5 -3
  204. package/dist/orchestration/coordinator-actions.js.map +1 -1
  205. package/dist/orchestration/coordinator-types.d.ts +23 -2
  206. package/dist/orchestration/coordinator-types.d.ts.map +1 -1
  207. package/dist/orchestration/coordinator.d.ts +5 -0
  208. package/dist/orchestration/coordinator.d.ts.map +1 -1
  209. package/dist/orchestration/coordinator.js +30 -13
  210. package/dist/orchestration/coordinator.js.map +1 -1
  211. package/dist/orchestration/execution-cli.d.ts +1 -1
  212. package/dist/orchestration/execution-cli.d.ts.map +1 -1
  213. package/dist/orchestration/execution-cli.js +29 -6
  214. package/dist/orchestration/execution-cli.js.map +1 -1
  215. package/dist/orchestration/execution-journal.d.ts.map +1 -1
  216. package/dist/orchestration/execution-journal.js +79 -6
  217. package/dist/orchestration/execution-journal.js.map +1 -1
  218. package/dist/orchestration/execution-store.d.ts +5 -1
  219. package/dist/orchestration/execution-store.d.ts.map +1 -1
  220. package/dist/orchestration/execution-store.js +66 -5
  221. package/dist/orchestration/execution-store.js.map +1 -1
  222. package/dist/orchestration/execution.d.ts.map +1 -1
  223. package/dist/orchestration/execution.js +37 -10
  224. package/dist/orchestration/execution.js.map +1 -1
  225. package/dist/orchestration/index.d.ts +6 -0
  226. package/dist/orchestration/index.d.ts.map +1 -1
  227. package/dist/orchestration/index.js +6 -0
  228. package/dist/orchestration/index.js.map +1 -1
  229. package/dist/orchestration/interruption.d.ts +10 -0
  230. package/dist/orchestration/interruption.d.ts.map +1 -0
  231. package/dist/orchestration/interruption.js +38 -0
  232. package/dist/orchestration/interruption.js.map +1 -0
  233. package/dist/orchestration/question-contract.d.ts +19 -0
  234. package/dist/orchestration/question-contract.d.ts.map +1 -0
  235. package/dist/orchestration/question-contract.js +21 -0
  236. package/dist/orchestration/question-contract.js.map +1 -0
  237. package/dist/orchestration/questions.d.ts +9 -0
  238. package/dist/orchestration/questions.d.ts.map +1 -0
  239. package/dist/orchestration/questions.js +75 -0
  240. package/dist/orchestration/questions.js.map +1 -0
  241. package/dist/orchestration/reviewed-ledger.d.ts +23 -0
  242. package/dist/orchestration/reviewed-ledger.d.ts.map +1 -0
  243. package/dist/orchestration/reviewed-ledger.js +49 -0
  244. package/dist/orchestration/reviewed-ledger.js.map +1 -0
  245. package/dist/orchestration/source-candidates.d.ts +64 -0
  246. package/dist/orchestration/source-candidates.d.ts.map +1 -0
  247. package/dist/orchestration/source-candidates.js +95 -0
  248. package/dist/orchestration/source-candidates.js.map +1 -0
  249. package/dist/orchestration/validation.js +1 -1
  250. package/dist/orchestration/validation.js.map +1 -1
  251. package/dist/providers/compat.d.ts +1 -1
  252. package/dist/providers/compat.d.ts.map +1 -1
  253. package/dist/providers/compat.js +4 -8
  254. package/dist/providers/compat.js.map +1 -1
  255. package/dist/providers/index.d.ts.map +1 -1
  256. package/dist/providers/index.js +6 -7
  257. package/dist/providers/index.js.map +1 -1
  258. package/dist/runlog.js +2 -2
  259. package/dist/runlog.js.map +1 -1
  260. package/dist/runtime/permissions.d.ts.map +1 -1
  261. package/dist/runtime/permissions.js +3 -2
  262. package/dist/runtime/permissions.js.map +1 -1
  263. package/dist/runtime/turn.d.ts +2 -0
  264. package/dist/runtime/turn.d.ts.map +1 -1
  265. package/dist/runtime/turn.js +21 -7
  266. package/dist/runtime/turn.js.map +1 -1
  267. package/dist/session-management/actions.js +1 -1
  268. package/dist/session-management/actions.js.map +1 -1
  269. package/dist/sessions/execution-binding.d.ts +8 -0
  270. package/dist/sessions/execution-binding.d.ts.map +1 -0
  271. package/dist/sessions/execution-binding.js +9 -0
  272. package/dist/sessions/execution-binding.js.map +1 -0
  273. package/dist/sessions/index.d.ts +1 -0
  274. package/dist/sessions/index.d.ts.map +1 -1
  275. package/dist/sessions/index.js +1 -0
  276. package/dist/sessions/index.js.map +1 -1
  277. package/dist/setup.d.ts.map +1 -1
  278. package/dist/setup.js +1 -26
  279. package/dist/setup.js.map +1 -1
  280. package/dist/source-changes/writer.d.ts +77 -0
  281. package/dist/source-changes/writer.d.ts.map +1 -0
  282. package/dist/source-changes/writer.js +189 -0
  283. package/dist/source-changes/writer.js.map +1 -0
  284. package/dist/spawning/actions.d.ts +10 -1
  285. package/dist/spawning/actions.d.ts.map +1 -1
  286. package/dist/spawning/actions.js +26 -7
  287. package/dist/spawning/actions.js.map +1 -1
  288. package/dist/spawning/cli.js +1 -1
  289. package/dist/spawning/cli.js.map +1 -1
  290. package/dist/spawning/execution.d.ts.map +1 -1
  291. package/dist/spawning/execution.js +2 -0
  292. package/dist/spawning/execution.js.map +1 -1
  293. package/dist/spawning/types.d.ts +19 -6
  294. package/dist/spawning/types.d.ts.map +1 -1
  295. package/dist/spawning/validation.d.ts +16 -0
  296. package/dist/spawning/validation.d.ts.map +1 -1
  297. package/dist/spawning/validation.js +44 -8
  298. package/dist/spawning/validation.js.map +1 -1
  299. package/dist/storage.d.ts +3 -0
  300. package/dist/storage.d.ts.map +1 -1
  301. package/dist/storage.js +6 -1
  302. package/dist/storage.js.map +1 -1
  303. package/dist/supervision/contracts.js +4 -1
  304. package/dist/supervision/contracts.js.map +1 -1
  305. package/dist/tools.d.ts +1 -0
  306. package/dist/tools.d.ts.map +1 -1
  307. package/dist/tools.js +7 -2
  308. package/dist/tools.js.map +1 -1
  309. package/dist/types.d.ts +1 -1
  310. package/dist/types.d.ts.map +1 -1
  311. package/dist/types.js +0 -1
  312. package/dist/types.js.map +1 -1
  313. package/dist/ui/regions/modal-host.d.ts.map +1 -1
  314. package/dist/ui/regions/modal-host.js +1 -3
  315. package/dist/ui/regions/modal-host.js.map +1 -1
  316. package/dist/ui/state/use-chat-controller.js +2 -2
  317. package/dist/ui/state/use-chat-controller.js.map +1 -1
  318. package/docs/README.md +66 -0
  319. package/docs/delegation-ledger.md +329 -0
  320. package/docs/migration-assessment.md +113 -0
  321. package/docs/migration-example-plan.json +88 -0
  322. package/docs/migration-example-report.json +511 -0
  323. package/docs/migration-inventory.md +63 -0
  324. package/docs/migration-playbook.md +152 -0
  325. package/docs/migration-verification.md +177 -0
  326. package/docs/releases/3.6.0.md +43 -0
  327. package/package.json +7 -2
@@ -2,6 +2,7 @@
2
2
  * authority: this adds authentication, per-account ownership, idempotent replay and grant fencing. */
3
3
  import * as http from 'node:http';
4
4
  import { ReservationLedger } from './ledger.js';
5
+ import { type ChildGrant, type RequestReservation } from './types.js';
5
6
  import { LedgerServerState } from './ledger-protocol.js';
6
7
  export interface LedgerServerOptions {
7
8
  ledger: ReservationLedger;
@@ -9,6 +10,18 @@ export interface LedgerServerOptions {
9
10
  cwd: string;
10
11
  state: LedgerServerState;
11
12
  now?: () => number;
13
+ /** Restrict this endpoint to one owner subtree, even for otherwise valid tokens. */
14
+ ownerAgentId?: string;
15
+ /** Exact reviewed-host audience; authenticated tokens cannot downgrade to raw serving. */
16
+ authority?: string;
17
+ /** Trusted reviewed host: target-account lifecycle and existing native grant checks. */
18
+ assertAccountAuthority?: (agentId: string) => void;
19
+ assertReservationAuthority?: (reservation: RequestReservation) => void;
20
+ assertGrantAuthority?: (grant: ChildGrant) => void;
21
+ /** Trusted owner lifecycle check, e.g. prepareAgentExecution().assertAuthority.
22
+ * Fences new reservations/grants under the writer lock; reads, replay and
23
+ * settlement remain available to reconcile already admitted requests. */
24
+ assertAuthority?: () => void;
12
25
  }
13
26
  export declare function createLedgerServer(options: LedgerServerOptions): http.Server;
14
27
  //# sourceMappingURL=ledger-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ledger-server.d.ts","sourceRoot":"","sources":["../../src/execution/ledger-server.ts"],"names":[],"mappings":"AAAA;sGACsG;AACtG,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAC,iBAAiB,EAAC,MAAM,aAAa,CAAC;AAI9C,OAAO,EAA4D,iBAAiB,EAA0D,MAAM,sBAAsB,CAAC;AAE3K,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAC,iBAAiB,CAAC;IACzB,oFAAoF;IACpF,GAAG,EAAC,MAAM,CAAC;IACX,KAAK,EAAC,iBAAiB,CAAC;IACxB,GAAG,CAAC,EAAC,MAAI,MAAM,CAAC;CACjB;AAID,wBAAgB,kBAAkB,CAAC,OAAO,EAAC,mBAAmB,GAAE,IAAI,CAAC,MAAM,CAwF1E"}
1
+ {"version":3,"file":"ledger-server.d.ts","sourceRoot":"","sources":["../../src/execution/ledger-server.ts"],"names":[],"mappings":"AAAA;sGACsG;AACtG,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAC,iBAAiB,EAAC,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAqB,KAAK,UAAU,EAAC,KAAK,kBAAkB,EAAwB,MAAM,YAAY,CAAC;AAG9G,OAAO,EAA4D,iBAAiB,EAA0D,MAAM,sBAAsB,CAAC;AAE3K,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAC,iBAAiB,CAAC;IACzB,oFAAoF;IACpF,GAAG,EAAC,MAAM,CAAC;IACX,KAAK,EAAC,iBAAiB,CAAC;IACxB,GAAG,CAAC,EAAC,MAAI,MAAM,CAAC;IAChB,oFAAoF;IACpF,YAAY,CAAC,EAAC,MAAM,CAAC;IACrB,0FAA0F;IAC1F,SAAS,CAAC,EAAC,MAAM,CAAC;IAClB,wFAAwF;IACxF,sBAAsB,CAAC,EAAC,CAAC,OAAO,EAAC,MAAM,KAAG,IAAI,CAAC;IAC/C,0BAA0B,CAAC,EAAC,CAAC,WAAW,EAAC,kBAAkB,KAAG,IAAI,CAAC;IACnE,oBAAoB,CAAC,EAAC,CAAC,KAAK,EAAC,UAAU,KAAG,IAAI,CAAC;IAC/C;;6EAEyE;IACzE,eAAe,CAAC,EAAC,MAAI,IAAI,CAAC;CAC3B;AAID,wBAAgB,kBAAkB,CAAC,OAAO,EAAC,mBAAmB,GAAE,IAAI,CAAC,MAAM,CAkH1E"}
@@ -3,13 +3,20 @@
3
3
  import * as http from 'node:http';
4
4
  import { canonicalJson } from '../approvals/index.js';
5
5
  import { ExecutionLimitError } from './types.js';
6
- import { accountLineage } from './authority.js';
7
- import { effectiveExecutionManifest } from './child-grants.js';
6
+ import { accountLineage, identifier, hex, validateExecutionProject } from './authority.js';
7
+ import { effectiveExecutionManifest, executionProjectForAccount } from './child-grants.js';
8
8
  import { LEDGER_PROTOCOL, LEDGER_OPERATIONS, MAX_LEDGER_REQUEST_BYTES, mintLedgerToken, verifyLedgerToken } from './ledger-protocol.js';
9
9
  const STATUS = { invalid: 400, authority: 403, budget: 409, deadline: 409, conflict: 409, limit: 409, locked: 503, unavailable: 503 };
10
10
  export function createLedgerServer(options) {
11
11
  const { ledger, cwd, state } = options, now = options.now ?? Date.now, secret = state.secret();
12
+ if (options.authority !== undefined && !hex(options.authority))
13
+ throw new ExecutionLimitError('invalid', 'Invalid ledger authority binding.');
12
14
  const current = () => ledger.read(cwd);
15
+ if (options.ownerAgentId !== undefined) {
16
+ identifier(options.ownerAgentId);
17
+ const saved = current();
18
+ accountLineage(effectiveExecutionManifest(saved.manifest, saved.projection), options.ownerAgentId);
19
+ }
13
20
  const journal = () => { const { manifest, events } = current(); return { manifest, events }; };
14
21
  const assertActive = (token) => {
15
22
  if (token.exp <= now())
@@ -21,7 +28,14 @@ export function createLedgerServer(options) {
21
28
  const header = req.headers.authorization ?? '';
22
29
  const run = current().manifest.runId;
23
30
  const token = verifyLedgerToken(secret, header.startsWith('Bearer ') ? header.slice(7) : undefined, run, now());
31
+ if (token.authority !== options.authority)
32
+ throw new ExecutionLimitError('authority', 'Ledger token belongs to another authority binding.');
24
33
  assertActive(token);
34
+ if (options.ownerAgentId !== undefined) {
35
+ const roots = token.role === 'child' ? token.accounts : token.v === 2 ? [token.owner] : [];
36
+ if (!roots.length || roots.some(id => !within(id, options.ownerAgentId)))
37
+ throw new ExecutionLimitError('authority', 'Ledger token belongs to another owner scope.');
38
+ }
25
39
  return token;
26
40
  };
27
41
  /** Revoking a grant fences every descendant account, whichever token it was minted under. */
@@ -29,17 +43,35 @@ export function createLedgerServer(options) {
29
43
  const saved = current(), effective = effectiveExecutionManifest(saved.manifest, saved.projection), records = saved.projection.childGrants ?? [];
30
44
  return accounts.some(id => accountLineage(effective, id).some(a => records.some(r => state.isRevoked(r.grant.id) && r.grant.accounts.some(g => g.id === a.id))));
31
45
  };
32
- /** A child may act only for its own accounts and their descendants (grandchildren it granted). */
46
+ const within = (agentId, owner) => {
47
+ const saved = current();
48
+ return accountLineage(effectiveExecutionManifest(saved.manifest, saved.projection), agentId).some(a => a.id === owner);
49
+ };
50
+ /** Token scope survives reuse at another endpoint serving the same run. */
33
51
  const owns = (token, agentId) => {
34
- if (token.role === 'parent')
35
- return;
36
- const saved = current(), effective = effectiveExecutionManifest(saved.manifest, saved.projection);
37
- if (!accountLineage(effective, agentId).some(a => token.accounts.includes(a.id)))
52
+ identifier(agentId);
53
+ if (options.ownerAgentId !== undefined && !within(agentId, options.ownerAgentId))
54
+ throw new ExecutionLimitError('authority', 'This endpoint cannot act for that account.');
55
+ if (token.role === 'parent') {
56
+ if (token.v === 2 && !within(agentId, token.owner))
57
+ throw new ExecutionLimitError('authority', 'This parent token cannot act for that account.');
58
+ }
59
+ else if (!token.accounts.some(owner => within(agentId, owner)))
38
60
  throw new ExecutionLimitError('authority', 'This token cannot act for that account.');
39
61
  };
40
62
  const handlers = {
41
63
  hello: async () => { const { manifest } = current(); return { protocol: LEDGER_PROTOCOL, operations: LEDGER_OPERATIONS, runId: manifest.runId }; },
42
64
  journal: async () => journal(),
65
+ execution: async (token, body) => {
66
+ identifier(body.agentId);
67
+ owns(token, body.agentId);
68
+ const project = validateExecutionProject(body.project), saved = current();
69
+ if (canonicalJson(project) !== canonicalJson(executionProjectForAccount(saved.manifest, saved.projection, body.agentId)))
70
+ throw new ExecutionLimitError('authority', 'Workspace does not match the owner-declared child project.');
71
+ options.assertAuthority?.();
72
+ options.assertAccountAuthority?.(body.agentId);
73
+ return { ...journal(), binding: { version: 1, agentId: body.agentId, project } };
74
+ },
43
75
  reserve: async (token, body, outcome) => {
44
76
  const reservation = body.reservation, hash = String(body.manifestHash);
45
77
  owns(token, reservation?.agentId);
@@ -50,8 +82,10 @@ export function createLedgerServer(options) {
50
82
  throw new ExecutionLimitError('conflict', 'Reservation id already admitted a different request.');
51
83
  return { ...journal(), replayed: true };
52
84
  }
85
+ const assertAdmission = () => { assertActive(token); owns(token, reservation.agentId); options.assertAuthority?.(); options.assertAccountAuthority?.(reservation.agentId); options.assertReservationAuthority?.(reservation); };
53
86
  try {
54
- await ledger.reserve(cwd, hash, reservation, undefined, () => assertActive(token));
87
+ assertAdmission();
88
+ await ledger.reserve(cwd, hash, reservation, undefined, assertAdmission);
55
89
  }
56
90
  catch (error) {
57
91
  // The local operation has finished. Prove non-admission from the same
@@ -74,8 +108,11 @@ export function createLedgerServer(options) {
74
108
  owns(token, entry.reservation.agentId);
75
109
  if (entry.state !== 'pending') {
76
110
  const settled = saved.events.find(e => e.change.type === 'settle' && e.change.settlement.requestId === settlement.requestId);
77
- if (settled && settled.change.type === 'settle' && canonicalJson(settled.change.settlement) === canonicalJson(settlement))
111
+ if (settled && settled.change.type === 'settle' && canonicalJson(settled.change.settlement) === canonicalJson(settlement)) {
112
+ if (saved.manifest.parent)
113
+ await ledger.settle(cwd, hash, settlement);
78
114
  return { ...journal(), replayed: true };
115
+ }
79
116
  throw new ExecutionLimitError('conflict', 'Request was already settled differently.');
80
117
  }
81
118
  await ledger.settle(cwd, hash, settlement);
@@ -84,24 +121,31 @@ export function createLedgerServer(options) {
84
121
  grant: async (token, body) => {
85
122
  const grant = body.grant, hash = String(body.manifestHash);
86
123
  owns(token, grant?.parentId);
124
+ if (grant?.version === 2 && token.role !== 'parent')
125
+ throw new ExecutionLimitError('authority', 'Only the ledger owner can bind a child to another workspace.');
87
126
  const assertGrant = () => {
88
127
  assertActive(token);
128
+ owns(token, grant?.parentId);
129
+ options.assertAuthority?.();
130
+ options.assertAccountAuthority?.(grant?.parentId);
131
+ options.assertGrantAuthority?.(grant);
89
132
  if (grant?.id && state.isRevoked(grant.id))
90
133
  throw new ExecutionLimitError('authority', 'This child grant was revoked and cannot be reissued.');
91
134
  };
92
135
  assertGrant();
93
136
  await ledger.grantChildren(cwd, hash, grant, undefined, assertGrant);
94
137
  assertGrant();
95
- const deadline = Math.min(...grant.accounts.map(a => a.deadline));
96
- const child = mintLedgerToken(secret, { v: 1, run: current().manifest.runId, role: 'child', grant: grant.id, epoch: state.epoch(grant.id), accounts: grant.accounts.map(a => a.id), exp: deadline });
138
+ const deadline = Math.min(token.exp, ...grant.accounts.map(a => a.deadline));
139
+ const child = mintLedgerToken(secret, { v: token.authority ? 2 : 1, ...(token.authority ? { authority: token.authority } : {}), run: current().manifest.runId, role: 'child', grant: grant.id, epoch: state.epoch(grant.id), accounts: grant.accounts.map(a => a.id), exp: deadline });
97
140
  return { ...journal(), token: child };
98
141
  },
99
142
  revoke: async (token, body) => {
100
143
  if (token.role !== 'parent')
101
144
  throw new ExecutionLimitError('authority', 'Only the parent can revoke a child grant.');
102
- const grant = String(body.grant);
103
- if (!current().projection.childGrants?.some(r => r.grant.id === grant))
145
+ const grant = String(body.grant), record = current().projection.childGrants?.find(r => r.grant.id === grant);
146
+ if (!record)
104
147
  throw new ExecutionLimitError('conflict', 'No such child grant.');
148
+ owns(token, record.grant.parentId);
105
149
  return { grant, epoch: state.revoke(grant) };
106
150
  },
107
151
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ledger-server.js","sourceRoot":"","sources":["../../src/execution/ledger-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ledger-server.js","sourceRoot":"","sources":["../../src/execution/ledger-server.ts"],"names":[],"mappings":"AAAA;sGACsG;AACtG,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAC,mBAAmB,EAAgE,MAAM,YAAY,CAAC;AAC9G,OAAO,EAAC,cAAc,EAAC,UAAU,EAAC,GAAG,EAAC,wBAAwB,EAAC,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAC,0BAA0B,EAAC,0BAA0B,EAAC,MAAM,mBAAmB,CAAC;AACxF,OAAO,EAAC,eAAe,EAAC,iBAAiB,EAAC,wBAAwB,EAAmB,eAAe,EAAC,iBAAiB,EAAwB,MAAM,sBAAsB,CAAC;AAqB3K,MAAM,MAAM,GAA4C,EAAC,OAAO,EAAC,GAAG,EAAC,SAAS,EAAC,GAAG,EAAC,MAAM,EAAC,GAAG,EAAC,QAAQ,EAAC,GAAG,EAAC,QAAQ,EAAC,GAAG,EAAC,KAAK,EAAC,GAAG,EAAC,MAAM,EAAC,GAAG,EAAC,WAAW,EAAC,GAAG,EAAC,CAAC;AAG9J,MAAM,UAAU,kBAAkB,CAAC,OAA2B;IAC5D,MAAM,EAAC,MAAM,EAAC,GAAG,EAAC,KAAK,EAAC,GAAC,OAAO,EAAC,GAAG,GAAC,OAAO,CAAC,GAAG,IAAE,IAAI,CAAC,GAAG,EAAC,MAAM,GAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACjF,IAAG,OAAO,CAAC,SAAS,KAAG,SAAS,IAAE,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;QAAC,MAAM,IAAI,mBAAmB,CAAC,SAAS,EAAC,mCAAmC,CAAC,CAAC;IACvI,MAAM,OAAO,GAAC,GAAE,EAAE,CAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnC,IAAG,OAAO,CAAC,YAAY,KAAG,SAAS,EAAC,CAAC;QAAA,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAAA,MAAM,KAAK,GAAC,OAAO,EAAE,CAAC;QAAA,cAAc,CAAC,0BAA0B,CAAC,KAAK,CAAC,QAAQ,EAAC,KAAK,CAAC,UAAU,CAAC,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAAA,CAAC;IAC9L,MAAM,OAAO,GAAC,GAAE,EAAE,GAAC,MAAM,EAAC,QAAQ,EAAC,MAAM,EAAC,GAAC,OAAO,EAAE,CAAC,CAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,EAAC,CAAC,CAAA,CAAC,CAAC;IAChF,MAAM,YAAY,GAAC,CAAC,KAAuB,EAAC,EAAE;QAC5C,IAAG,KAAK,CAAC,GAAG,IAAE,GAAG,EAAE;YAAC,MAAM,IAAI,mBAAmB,CAAC,WAAW,EAAC,2DAA2D,CAAC,CAAC;QAC3H,IAAG,KAAK,CAAC,IAAI,KAAG,OAAO,IAAE,CAAC,KAAK,CAAC,KAAK,KAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAM,CAAC,IAAE,cAAc,CAAC,KAAK,CAAC,QAAS,CAAC,CAAC;YAAC,MAAM,IAAI,mBAAmB,CAAC,WAAW,EAAC,2FAA2F,CAAC,CAAC;IAC7O,CAAC,CAAC;IACF,MAAM,MAAM,GAAC,CAAC,GAAwB,EAAmB,EAAE;QACzD,MAAM,MAAM,GAAC,GAAG,CAAC,OAAO,CAAC,aAAa,IAAE,EAAE,CAAC;QAAA,MAAM,GAAG,GAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC9E,MAAM,KAAK,GAAC,iBAAiB,CAAC,MAAM,EAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA,CAAC,CAAA,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,SAAS,EAAC,GAAG,EAAC,GAAG,EAAE,CAAC,CAAC;QACvG,IAAG,KAAK,CAAC,SAAS,KAAG,OAAO,CAAC,SAAS;YAAC,MAAM,IAAI,mBAAmB,CAAC,WAAW,EAAC,oDAAoD,CAAC,CAAC;QACvI,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,IAAG,OAAO,CAAC,YAAY,KAAG,SAAS,EAAC,CAAC;YACnC,MAAM,KAAK,GAAC,KAAK,CAAC,IAAI,KAAG,OAAO,CAAA,CAAC,CAAA,KAAK,CAAC,QAAS,CAAA,CAAC,CAAA,KAAK,CAAC,CAAC,KAAG,CAAC,CAAA,CAAC,CAAA,CAAC,KAAK,CAAC,KAAM,CAAC,CAAA,CAAC,CAAA,EAAE,CAAC;YAC/E,IAAG,CAAC,KAAK,CAAC,MAAM,IAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAA,EAAE,CAAA,CAAC,MAAM,CAAC,EAAE,EAAC,OAAO,CAAC,YAAa,CAAC,CAAC;gBAAC,MAAM,IAAI,mBAAmB,CAAC,WAAW,EAAC,8CAA8C,CAAC,CAAC;QAChK,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,6FAA6F;IAC7F,MAAM,cAAc,GAAC,CAAC,QAAiB,EAAS,EAAE;QAChD,MAAM,KAAK,GAAC,OAAO,EAAE,EAAC,SAAS,GAAC,0BAA0B,CAAC,KAAK,CAAC,QAAQ,EAAC,KAAK,CAAC,UAAU,CAAC,EAAC,OAAO,GAAC,KAAK,CAAC,UAAU,CAAC,WAAW,IAAE,EAAE,CAAC;QACrI,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAA,EAAE,CAAA,cAAc,CAAC,SAAS,EAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,EAAE,KAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtJ,CAAC,CAAC;IACF,MAAM,MAAM,GAAC,CAAC,OAAc,EAAC,KAAY,EAAS,EAAE;QAClD,MAAM,KAAK,GAAC,OAAO,EAAE,CAAC;QAAA,OAAO,cAAc,CAAC,0BAA0B,CAAC,KAAK,CAAC,QAAQ,EAAC,KAAK,CAAC,UAAU,CAAC,EAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,EAAE,KAAG,KAAK,CAAC,CAAC;IACzI,CAAC,CAAC;IACF,2EAA2E;IAC3E,MAAM,IAAI,GAAC,CAAC,KAAuB,EAAC,OAAc,EAAC,EAAE;QACnD,UAAU,CAAC,OAAO,CAAC,CAAC;QACpB,IAAG,OAAO,CAAC,YAAY,KAAG,SAAS,IAAE,CAAC,MAAM,CAAC,OAAO,EAAC,OAAO,CAAC,YAAY,CAAC;YAAC,MAAM,IAAI,mBAAmB,CAAC,WAAW,EAAC,4CAA4C,CAAC,CAAC;QACnK,IAAG,KAAK,CAAC,IAAI,KAAG,QAAQ,EAAC,CAAC;YACxB,IAAG,KAAK,CAAC,CAAC,KAAG,CAAC,IAAE,CAAC,MAAM,CAAC,OAAO,EAAC,KAAK,CAAC,KAAM,CAAC;gBAAC,MAAM,IAAI,mBAAmB,CAAC,WAAW,EAAC,gDAAgD,CAAC,CAAC;QAC5I,CAAC;aAAK,IAAG,CAAC,KAAK,CAAC,QAAS,CAAC,IAAI,CAAC,KAAK,CAAA,EAAE,CAAA,MAAM,CAAC,OAAO,EAAC,KAAK,CAAC,CAAC;YAAC,MAAM,IAAI,mBAAmB,CAAC,WAAW,EAAC,yCAAyC,CAAC,CAAC;IACpJ,CAAC,CAAC;IACF,MAAM,QAAQ,GAAiH;QAC7H,KAAK,EAAC,KAAK,IAAE,EAAE,GAAC,MAAM,EAAC,QAAQ,EAAC,GAAC,OAAO,EAAE,CAAC,CAAA,OAAO,EAAC,QAAQ,EAAC,eAAe,EAAC,UAAU,EAAC,iBAAiB,EAAC,KAAK,EAAC,QAAQ,CAAC,KAAK,EAAC,CAAC,CAAA,CAAC;QAChI,OAAO,EAAC,KAAK,IAAE,EAAE,CAAA,OAAO,EAAE;QAC1B,SAAS,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE;YAC3B,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAAA,IAAI,CAAC,KAAK,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,OAAO,GAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAC,KAAK,GAAC,OAAO,EAAE,CAAC;YACrE,IAAG,aAAa,CAAC,OAAO,CAAC,KAAG,aAAa,CAAC,0BAA0B,CAAC,KAAK,CAAC,QAAQ,EAAC,KAAK,CAAC,UAAU,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAAC,MAAM,IAAI,mBAAmB,CAAC,WAAW,EAAC,4DAA4D,CAAC,CAAC;YAC5N,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;YAAA,OAAO,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3E,OAAO,EAAC,GAAG,OAAO,EAAE,EAAC,OAAO,EAAC,EAAC,OAAO,EAAC,CAAC,EAAC,OAAO,EAAC,IAAI,CAAC,OAAO,EAAC,OAAO,EAAC,EAAC,CAAC;QACzE,CAAC;QACD,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,OAAO,EAAC,EAAE;YACjC,MAAM,WAAW,GAAC,IAAI,CAAC,WAAiC,EAAC,IAAI,GAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAAA,IAAI,CAAC,KAAK,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACzH,MAAM,KAAK,GAAC,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC3D,0FAA0F;YAC1F,IAAG,KAAK,EAAC,CAAC;gBAAA,IAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,KAAG,aAAa,CAAC,WAAW,CAAC;oBAAC,MAAM,IAAI,mBAAmB,CAAC,UAAU,EAAC,sDAAsD,CAAC,CAAC;gBAAA,OAAO,EAAC,GAAG,OAAO,EAAE,EAAC,QAAQ,EAAC,IAAI,EAAC,CAAC;YAAA,CAAC;YACjN,MAAM,eAAe,GAAC,GAAE,EAAE,GAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA,IAAI,CAAC,KAAK,EAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA,OAAO,CAAC,sBAAsB,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA,OAAO,CAAC,0BAA0B,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA,CAAC,CAAC;YACrN,IAAG,CAAC;gBAAA,eAAe,EAAE,CAAC;gBAAA,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAC,IAAI,EAAC,WAAW,EAAC,SAAS,EAAC,eAAe,CAAC,CAAC;YAAA,CAAC;YAC5F,OAAM,KAAK,EAAC,CAAC;gBACX,sEAAsE;gBACtE,sEAAsE;gBACtE,IAAG,CAAC;oBAAA,MAAM,KAAK,GAAC,OAAO,EAAE,CAAC;oBAAA,IAAG,KAAK,CAAC,UAAU,CAAC,YAAY,KAAG,IAAI,IAAE,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;wBAAC,OAAO,CAAC,SAAS,GAAC,SAAS,CAAC;gBAAA,CAAC;gBAAA,MAAK,CAAC,CAAA,2BAA2B,CAAA,CAAC;gBAC7K,MAAM,KAAK,CAAC;YACd,CAAC;YACD,OAAO,OAAO,EAAE,CAAC;QACnB,CAAC;QACD,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE;YACxB,MAAM,UAAU,GAAC,IAAI,CAAC,UAA+B,EAAC,IAAI,GAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrF,MAAM,KAAK,GAAC,OAAO,EAAE,EAAC,KAAK,GAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC7E,IAAG,CAAC,KAAK;gBAAC,MAAM,IAAI,mBAAmB,CAAC,UAAU,EAAC,6BAA6B,CAAC,CAAC;YAAA,IAAI,CAAC,KAAK,EAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACxH,IAAG,KAAK,CAAC,KAAK,KAAG,SAAS,EAAC,CAAC;gBAC1B,MAAM,OAAO,GAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,MAAM,CAAC,IAAI,KAAG,QAAQ,IAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,KAAG,UAAU,CAAC,SAAS,CAAC,CAAC;gBACnH,IAAG,OAAO,IAAE,OAAO,CAAC,MAAM,CAAC,IAAI,KAAG,QAAQ,IAAE,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,KAAG,aAAa,CAAC,UAAU,CAAC,EAAC,CAAC;oBAChH,IAAG,KAAK,CAAC,QAAQ,CAAC,MAAM;wBAAC,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,EAAC,IAAI,EAAC,UAAU,CAAC,CAAC;oBAClE,OAAO,EAAC,GAAG,OAAO,EAAE,EAAC,QAAQ,EAAC,IAAI,EAAC,CAAC;gBACtC,CAAC;gBACD,MAAM,IAAI,mBAAmB,CAAC,UAAU,EAAC,0CAA0C,CAAC,CAAC;YACvF,CAAC;YACD,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,EAAC,IAAI,EAAC,UAAU,CAAC,CAAC;YAAA,OAAO,OAAO,EAAE,CAAC;QAC5D,CAAC;QACD,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE;YACvB,MAAM,KAAK,GAAC,IAAI,CAAC,KAAmB,EAAC,IAAI,GAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAAA,IAAI,CAAC,KAAK,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAChG,IAAG,KAAK,EAAE,OAAO,KAAG,CAAC,IAAE,KAAK,CAAC,IAAI,KAAG,QAAQ;gBAAC,MAAM,IAAI,mBAAmB,CAAC,WAAW,EAAC,8DAA8D,CAAC,CAAC;YACvJ,MAAM,WAAW,GAAC,GAAE,EAAE;gBACpB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,IAAI,CAAC,KAAK,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAAA,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;gBAAA,OAAO,CAAC,sBAAsB,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAAA,OAAO,CAAC,oBAAoB,EAAE,CAAC,KAAK,CAAC,CAAC;gBAChJ,IAAG,KAAK,EAAE,EAAE,IAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;oBAAC,MAAM,IAAI,mBAAmB,CAAC,WAAW,EAAC,sDAAsD,CAAC,CAAC;YAC5I,CAAC,CAAC;YACF,WAAW,EAAE,CAAC;YAAA,MAAM,MAAM,CAAC,aAAa,CAAC,GAAG,EAAC,IAAI,EAAC,KAAK,EAAC,SAAS,EAAC,WAAW,CAAC,CAAC;YAAA,WAAW,EAAE,CAAC;YAC7F,MAAM,QAAQ,GAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxE,MAAM,KAAK,GAAC,eAAe,CAAC,MAAM,EAAC,EAAC,CAAC,EAAC,KAAK,CAAC,SAAS,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,EAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAA,CAAC,CAAA,EAAC,SAAS,EAAC,KAAK,CAAC,SAAS,EAAC,CAAA,CAAC,CAAA,EAAE,CAAC,EAAC,GAAG,EAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,CAAC,EAAE,EAAC,KAAK,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAC,QAAQ,EAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,EAAE,CAAC,EAAC,GAAG,EAAC,QAAQ,EAAC,CAAC,CAAC;YACvP,OAAO,EAAC,GAAG,OAAO,EAAE,EAAC,KAAK,EAAC,KAAK,EAAC,CAAC;QACpC,CAAC;QACD,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,EAAE;YACxB,IAAG,KAAK,CAAC,IAAI,KAAG,QAAQ;gBAAC,MAAM,IAAI,mBAAmB,CAAC,WAAW,EAAC,2CAA2C,CAAC,CAAC;YAChH,MAAM,KAAK,GAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAC,MAAM,GAAC,OAAO,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,KAAK,CAAC,EAAE,KAAG,KAAK,CAAC,CAAC;YAAA,IAAG,CAAC,MAAM;gBAAC,MAAM,IAAI,mBAAmB,CAAC,UAAU,EAAC,sBAAsB,CAAC,CAAC;YAChL,IAAI,CAAC,KAAK,EAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAAA,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC,CAAC;QAC7E,CAAC;KACF,CAAC;IACF,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAC,GAAG,EAAC,EAAE;QAClC,MAAM,KAAK,GAAC,CAAC,MAAa,EAAC,KAAa,EAAC,EAAE,GAAC,MAAM,GAAG,GAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA,GAAG,CAAC,SAAS,CAAC,MAAM,EAAC,EAAC,cAAc,EAAC,kBAAkB,EAAC,eAAe,EAAC,UAAU,EAAC,CAAC,CAAC,CAAA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA,CAAC,CAAC;QAChL,MAAM,EAAE,GAAC,CAAC,GAAG,CAAC,GAAG,IAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAC,EAAE,CAAC,CAAC;QAC7C,IAAG,GAAG,CAAC,MAAM,KAAG,MAAM,IAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAC,EAAE,CAAC,EAAC,CAAC;YAAA,KAAK,CAAC,GAAG,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,SAAS,EAAC,OAAO,EAAC,2BAA2B,EAAC,CAAC,CAAC;YAAA,OAAO;QAAA,CAAC;QACtI,MAAM,MAAM,GAAU,EAAE,CAAC;QAAA,IAAI,IAAI,GAAC,CAAC,CAAC;QACpC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAC,CAAC,KAAY,EAAC,EAAE,GAAC,IAAI,IAAE,KAAK,CAAC,MAAM,CAAC,CAAA,IAAG,IAAI,GAAC,wBAAwB,EAAC,CAAC;YAAA,KAAK,CAAC,GAAG,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,8BAA8B,EAAC,CAAC,CAAC;YAAA,GAAG,CAAC,OAAO,EAAE,CAAC;QAAA,CAAC;;YAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC;QACxM,GAAG,CAAC,EAAE,CAAC,KAAK,EAAC,GAAE,EAAE;YAAC,KAAK,CAAC,KAAK,IAAE,EAAE;gBAC/B,MAAM,OAAO,GAAkB,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC;gBACrD,IAAG,CAAC;oBACF,MAAM,KAAK,GAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAAA,IAAI,IAAY,CAAC;oBAAA,IAAG,CAAC;wBAAA,IAAI,GAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAE,IAAI,CAAC,CAAC;oBAAA,CAAC;oBAAA,MAAK,CAAC;wBAAA,MAAM,IAAI,mBAAmB,CAAC,SAAS,EAAC,6BAA6B,CAAC,CAAC;oBAAA,CAAC;oBAC1L,IAAG,CAAC,IAAI,IAAE,OAAO,IAAI,KAAG,QAAQ,IAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;wBAAC,MAAM,IAAI,mBAAmB,CAAC,SAAS,EAAC,mCAAmC,CAAC,CAAC;oBACnI,KAAK,CAAC,GAAG,EAAC,EAAC,EAAE,EAAC,IAAI,EAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,EAAE,CAAE,CAAC,KAAK,EAAC,IAA8B,EAAC,OAAO,CAAC,CAAW,EAAC,CAAC,CAAC;gBACxG,CAAC;gBAAA,OAAM,KAAK,EAAC,CAAC;oBACZ,wFAAwF;oBACxF,IAAG,KAAK,YAAY,mBAAmB;wBAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,CAAC,IAAI,EAAC,OAAO,EAAC,KAAK,CAAC,OAAO,EAAC,GAAG,CAAC,EAAE,KAAG,SAAS,CAAA,CAAC,CAAA,OAAO,CAAA,CAAC,CAAA,EAAE,CAAC,EAAC,CAAC,CAAC;;wBAC7I,KAAK,CAAC,GAAG,EAAC,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,EAAC,mDAAmD,EAAC,CAAC,CAAC;gBAC5G,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QAAA,CAAC,CAAC,CAAC;IACV,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { Readable, Writable } from 'node:stream';
2
+ export declare const LEDGER_TUNNEL_CAPABILITY: Readonly<{
3
+ version: 1;
4
+ transport: "http-exec-v1";
5
+ tokenVersion: 2;
6
+ role: "child";
7
+ replay: false;
8
+ }>;
9
+ /** Supplied by the trusted dispatch owner from the original admitted credential.
10
+ * Decoding claims adds restrictions; only the native ledger verifies authority.
11
+ */
12
+ export interface LedgerTunnelBinding {
13
+ version: 1;
14
+ credentialSha256: string;
15
+ runId: string;
16
+ grantId: string;
17
+ authority: string;
18
+ deadline: number;
19
+ }
20
+ interface TunnelOptions {
21
+ input: Readable;
22
+ output: Writable;
23
+ binding: LedgerTunnelBinding;
24
+ signal?: AbortSignal;
25
+ /** Bounds a request and loss-of-owner detection, including stalled stream writes. */
26
+ timeoutMs?: number;
27
+ }
28
+ export interface LedgerTunnelHandle {
29
+ close: () => Promise<void>;
30
+ closed: Promise<void>;
31
+ }
32
+ /** Owner side: accepts HTTP only on the injected private stream. ledgerUrl must
33
+ * come from the owned prepareReviewedLedger listener, never from a task/model.
34
+ * The host rechecks its authenticated task/placement lease through assertConnection.
35
+ */
36
+ export declare function attachLedgerTunnel(options: TunnelOptions & {
37
+ ledgerUrl: string;
38
+ assertConnection: () => void;
39
+ }): LedgerTunnelHandle;
40
+ /** Task side: caller must pin the original port and binding before launch. A
41
+ * conflict never selects another port. Reconnect uses the same token/checkpoint;
42
+ * it is a new authenticated stream, not a new allowance or token enrollment.
43
+ */
44
+ export declare function listenLedgerTunnel(options: TunnelOptions & {
45
+ port: number;
46
+ }): Promise<LedgerTunnelHandle & {
47
+ url: string;
48
+ }>;
49
+ export {};
50
+ //# sourceMappingURL=ledger-tunnel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-tunnel.d.ts","sourceRoot":"","sources":["../../src/execution/ledger-tunnel.ts"],"names":[],"mappings":"AAQA,OAAO,EAAkB,QAAQ,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAC;AAS/D,eAAO,MAAM,wBAAwB;;;;;;EAA6F,CAAC;AAQnI;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAC,CAAC,CAAC;IAAA,gBAAgB,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,MAAM,CAAC;IAAA,OAAO,EAAC,MAAM,CAAC;IAAA,SAAS,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAC;CAChG;AACD,UAAU,aAAa;IACrB,KAAK,EAAC,QAAQ,CAAC;IAAA,MAAM,EAAC,QAAQ,CAAC;IAAA,OAAO,EAAC,mBAAmB,CAAC;IAAA,MAAM,CAAC,EAAC,WAAW,CAAC;IAC/E,qFAAqF;IACrF,SAAS,CAAC,EAAC,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,kBAAkB;IAAE,KAAK,EAAC,MAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAAA,MAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAA;CAAC;AAoFlF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAC,aAAa,GAAC;IAAC,SAAS,EAAC,MAAM,CAAC;IAAA,gBAAgB,EAAC,MAAI,IAAI,CAAA;CAAC,GAAE,kBAAkB,CAkCxH;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAC,aAAa,GAAC;IAAC,IAAI,EAAC,MAAM,CAAA;CAAC,GAAE,OAAO,CAAC,kBAAkB,GAAC;IAAC,GAAG,EAAC,MAAM,CAAA;CAAC,CAAC,CAwCrH"}
@@ -0,0 +1,307 @@
1
+ /** A private reverse HTTP connection to the original reviewed ledger (cykick#19).
2
+ * The host supplies authenticated, non-replayed exec streams. This module does
3
+ * not authenticate an Astrolift user, enroll a task, mint a token or grant budget.
4
+ * HTTP framing/backpressure runs over those streams; no public listener is needed
5
+ * on the owner. Only the task listens, on its predeclared loopback port.
6
+ */
7
+ import * as http from 'node:http';
8
+ import { Duplex, Transform, Readable, Writable } from 'node:stream';
9
+ import { pipeline } from 'node:stream/promises';
10
+ import { createHash } from 'node:crypto';
11
+ import { canonicalJson } from '../approvals/index.js';
12
+ import { hex, uuid } from './authority.js';
13
+ import { MAX_RESERVATION_BYTES } from './ledger.js';
14
+ import { LEDGER_OPERATIONS, MAX_LEDGER_REQUEST_BYTES } from './ledger-protocol.js';
15
+ import { ExecutionLimitError } from './types.js';
16
+ export const LEDGER_TUNNEL_CAPABILITY = Object.freeze({ version: 1, transport: 'http-exec-v1', tokenVersion: 2, role: 'child', replay: false });
17
+ const PING = '/bridge/v1/ping', HEADER = 'x-calliope-ledger-binding';
18
+ // Journals are bounded at source. Allow space for the manifest and JSON envelope.
19
+ const MAX_RESPONSE_BYTES = 2 * MAX_RESERVATION_BYTES;
20
+ const operations = new Set(LEDGER_OPERATIONS.filter(op => op !== 'revoke').map(op => `/v1/${op}`));
21
+ const unavailable = () => new ExecutionLimitError('unavailable', 'The private ledger connection is unavailable; retain the original enrollment.');
22
+ const digest = (value) => createHash('sha256').update(value).digest('hex');
23
+ function settings(options) {
24
+ const binding = structuredClone(options.binding), timeout = options.timeoutMs ?? 15000;
25
+ if (!binding || Object.keys(binding).sort().join(',') !== 'authority,credentialSha256,deadline,grantId,runId,version' ||
26
+ binding.version !== 1 || !hex(binding.credentialSha256) || !hex(binding.authority) || !uuid(binding.runId) || !uuid(binding.grantId) ||
27
+ !Number.isSafeInteger(binding.deadline) || binding.deadline <= Date.now() ||
28
+ !Number.isInteger(timeout) || timeout < 100 || timeout > 30000 || options.signal?.aborted)
29
+ throw unavailable();
30
+ return { binding, timeout, fingerprint: digest(canonicalJson(binding)) };
31
+ }
32
+ function credential(header, binding) {
33
+ if (typeof header !== 'string' || !header.startsWith('Bearer ') || header.length > 8199)
34
+ throw unavailable();
35
+ const token = header.slice(7);
36
+ if (digest(token) !== binding.credentialSha256)
37
+ throw unavailable();
38
+ try {
39
+ const [body, mac, extra] = token.split('.');
40
+ if (!body || !mac || extra !== undefined)
41
+ throw unavailable();
42
+ const claims = JSON.parse(Buffer.from(body, 'base64url').toString('utf8'));
43
+ if (claims.v !== 2 || claims.role !== 'child' || claims.owner !== undefined || claims.run !== binding.runId ||
44
+ claims.grant !== binding.grantId || claims.authority !== binding.authority || claims.exp !== binding.deadline ||
45
+ Date.now() >= binding.deadline)
46
+ throw unavailable();
47
+ }
48
+ catch {
49
+ throw unavailable();
50
+ }
51
+ return token;
52
+ }
53
+ function refuse(response, status = 503) {
54
+ // No admission:'refused': a broken transport cannot prove non-admission.
55
+ if (response.headersSent) {
56
+ response.destroy();
57
+ return;
58
+ }
59
+ response.writeHead(status, { 'content-type': 'application/json', 'connection': 'close' });
60
+ response.end(JSON.stringify({ ok: false, code: 'unavailable', message: 'Private ledger connection unavailable.' }));
61
+ }
62
+ async function body(request) {
63
+ const chunks = [];
64
+ let size = 0;
65
+ for await (const chunk of request) {
66
+ size += chunk.length;
67
+ if (size > MAX_LEDGER_REQUEST_BYTES)
68
+ throw unavailable();
69
+ chunks.push(chunk);
70
+ }
71
+ return Buffer.concat(chunks, size);
72
+ }
73
+ /** One exec stream is one connection. Never fall back to a network socket or
74
+ * reuse a closed stream. Override TCP-only keepalive/ref calls for generic pipes.
75
+ */
76
+ class StreamAgent extends http.Agent {
77
+ stream;
78
+ used = false;
79
+ constructor(stream) {
80
+ super({ keepAlive: true, maxSockets: 1, maxTotalSockets: 1 });
81
+ this.stream = stream;
82
+ // Pipes have no socket handle to ref. Keep the native agent's reuse cleanup.
83
+ Object.assign(stream, { ref: () => stream });
84
+ }
85
+ createConnection(_options, callback) {
86
+ if (this.used || this.stream.destroyed) {
87
+ callback?.(unavailable(), this.stream);
88
+ return undefined;
89
+ }
90
+ this.used = true;
91
+ return this.stream;
92
+ }
93
+ keepSocketAlive() { return true; }
94
+ }
95
+ function lifetime(options, server, timeout) {
96
+ const stream = Duplex.fromWeb({ readable: Readable.toWeb(options.input), writable: Writable.toWeb(options.output) });
97
+ const deadline = options.binding.deadline;
98
+ const controller = new AbortController();
99
+ let finish, closing;
100
+ const closed = new Promise(resolve => { finish = resolve; });
101
+ const close = () => {
102
+ if (closing)
103
+ return closing;
104
+ closing = closed;
105
+ clearInterval(watch);
106
+ options.signal?.removeEventListener('abort', stop);
107
+ controller.abort();
108
+ server.closeAllConnections();
109
+ stream.destroy();
110
+ if (server.listening)
111
+ server.close(() => finish());
112
+ else
113
+ finish();
114
+ return closed;
115
+ };
116
+ const stop = () => { void close(); };
117
+ let seen = Date.now();
118
+ const watch = setInterval(() => { if (Date.now() - seen >= timeout || Date.now() >= deadline)
119
+ stop(); }, Math.max(25, Math.floor(timeout / 4)));
120
+ stream.on('error', stop);
121
+ stream.once('close', stop);
122
+ stream.once('end', stop);
123
+ server.on('error', stop);
124
+ server.on('clientError', (_error, socket) => { socket.destroy(); });
125
+ server.on('connect', (_request, socket) => { socket.destroy(); });
126
+ server.on('upgrade', (_request, socket) => { socket.destroy(); });
127
+ options.signal?.addEventListener('abort', stop, { once: true });
128
+ return { stream, controller, close, closed, touch: () => { seen = Date.now(); } };
129
+ }
130
+ async function exchange(url, path, headers, bytes, signal, agent) {
131
+ return new Promise((resolve, reject) => {
132
+ const request = http.request(url, { method: 'POST', path, headers: { ...headers, 'content-length': String(bytes.length) }, agent, signal }, resolve);
133
+ request.once('error', () => reject(unavailable()));
134
+ request.end(bytes);
135
+ });
136
+ }
137
+ async function forward(response, output, signal) {
138
+ if (!response.statusCode || response.statusCode < 200 || response.statusCode >= 600 || response.statusCode >= 300 && response.statusCode < 400) {
139
+ response.destroy();
140
+ throw unavailable();
141
+ }
142
+ let bytes = 0;
143
+ const bound = new Transform({ transform(chunk, _encoding, done) { bytes += chunk.length; done(bytes > MAX_RESPONSE_BYTES ? unavailable() : null, chunk); } });
144
+ output.writeHead(response.statusCode, { 'content-type': 'application/json' });
145
+ await pipeline(response, bound, output, { signal });
146
+ }
147
+ /** Owner side: accepts HTTP only on the injected private stream. ledgerUrl must
148
+ * come from the owned prepareReviewedLedger listener, never from a task/model.
149
+ * The host rechecks its authenticated task/placement lease through assertConnection.
150
+ */
151
+ export function attachLedgerTunnel(options) {
152
+ const { binding, timeout, fingerprint } = settings(options);
153
+ let url;
154
+ try {
155
+ url = new URL(options.ledgerUrl);
156
+ }
157
+ catch {
158
+ throw unavailable();
159
+ }
160
+ if (url.protocol !== 'http:' || url.hostname !== '127.0.0.1' || !url.port || url.username || url.password || url.pathname !== '/' || url.search || url.hash)
161
+ throw unavailable();
162
+ options.assertConnection();
163
+ const server = http.createServer({ maxHeaderSize: 16384, requestTimeout: timeout, headersTimeout: timeout });
164
+ // Pings own the idle deadline; Node's HTTP keepalive timeout must not close the exec stream.
165
+ server.keepAliveTimeout = 0;
166
+ const life = lifetime(options, server, timeout);
167
+ let busy = false;
168
+ server.on('request', async (request, response) => {
169
+ if (busy) {
170
+ refuse(response);
171
+ void life.close();
172
+ return;
173
+ }
174
+ busy = true;
175
+ try {
176
+ options.assertConnection();
177
+ if (request.method !== 'POST' || request.headers[HEADER] !== fingerprint)
178
+ throw unavailable();
179
+ const signal = AbortSignal.any([life.controller.signal, AbortSignal.timeout(timeout)]);
180
+ const abort = () => { request.destroy(); };
181
+ signal.addEventListener('abort', abort, { once: true });
182
+ let bytes;
183
+ try {
184
+ bytes = await body(request);
185
+ }
186
+ finally {
187
+ signal.removeEventListener('abort', abort);
188
+ }
189
+ if (request.url === PING) {
190
+ if (bytes.length || request.headers.authorization)
191
+ throw unavailable();
192
+ response.writeHead(204, { [HEADER]: fingerprint });
193
+ response.end();
194
+ }
195
+ else {
196
+ if (!operations.has(request.url))
197
+ throw unavailable();
198
+ const token = credential(request.headers.authorization, binding);
199
+ options.assertConnection();
200
+ const incoming = await exchange(url, request.url, { authorization: `Bearer ${token}`, 'content-type': 'application/json' }, bytes, signal);
201
+ options.assertConnection();
202
+ await forward(incoming, response, signal);
203
+ }
204
+ life.touch();
205
+ }
206
+ catch {
207
+ refuse(response);
208
+ void life.close();
209
+ }
210
+ finally {
211
+ busy = false;
212
+ }
213
+ });
214
+ server.emit('connection', life.stream);
215
+ return { close: life.close, closed: life.closed };
216
+ }
217
+ /** Task side: caller must pin the original port and binding before launch. A
218
+ * conflict never selects another port. Reconnect uses the same token/checkpoint;
219
+ * it is a new authenticated stream, not a new allowance or token enrollment.
220
+ */
221
+ export async function listenLedgerTunnel(options) {
222
+ const { binding, timeout, fingerprint } = settings(options);
223
+ if (!Number.isInteger(options.port) || options.port < 1 || options.port > 65535)
224
+ throw unavailable();
225
+ const server = http.createServer({ maxHeaderSize: 16384, requestTimeout: timeout, headersTimeout: timeout });
226
+ server.maxConnections = 8;
227
+ const life = lifetime(options, server, timeout), agent = new StreamAgent(life.stream);
228
+ const url = new URL(`http://127.0.0.1:${options.port}`);
229
+ let busy = false, pinging;
230
+ const signal = () => AbortSignal.any([life.controller.signal, AbortSignal.timeout(timeout)]);
231
+ const ping = async () => {
232
+ const incoming = await exchange(url, PING, { [HEADER]: fingerprint }, Buffer.alloc(0), signal(), agent);
233
+ if (incoming.statusCode !== 204 || incoming.headers[HEADER] !== fingerprint) {
234
+ incoming.destroy();
235
+ throw unavailable();
236
+ }
237
+ incoming.resume();
238
+ await new Promise((resolve, reject) => { incoming.once('end', resolve); incoming.once('error', () => reject(unavailable())); });
239
+ life.touch();
240
+ };
241
+ const heartbeat = setInterval(() => {
242
+ if (busy || pinging)
243
+ return;
244
+ pinging = ping().catch(() => life.close()).finally(() => { pinging = undefined; });
245
+ }, Math.max(25, Math.floor(timeout / 3)));
246
+ void life.closed.then(() => { clearInterval(heartbeat); agent.destroy(); });
247
+ server.on('request', async (request, response) => {
248
+ if (busy) {
249
+ refuse(response);
250
+ return;
251
+ }
252
+ let token;
253
+ try {
254
+ if (request.method !== 'POST' || !operations.has(request.url))
255
+ throw unavailable();
256
+ token = credential(request.headers.authorization, binding);
257
+ }
258
+ catch {
259
+ refuse(response, 403);
260
+ return;
261
+ }
262
+ busy = true;
263
+ try {
264
+ const requestSignal = signal(), abort = () => { request.destroy(); };
265
+ requestSignal.addEventListener('abort', abort, { once: true });
266
+ let bytes;
267
+ try {
268
+ bytes = await body(request);
269
+ }
270
+ finally {
271
+ requestSignal.removeEventListener('abort', abort);
272
+ }
273
+ // One task request may wait behind the in-flight heartbeat. A health
274
+ // probe must not make native hello/execution negotiation spuriously fail.
275
+ await pinging;
276
+ const incoming = await exchange(url, request.url, { [HEADER]: fingerprint, authorization: `Bearer ${token}`, 'content-type': 'application/json' }, bytes, requestSignal, agent);
277
+ await forward(incoming, response, requestSignal);
278
+ life.touch();
279
+ }
280
+ catch {
281
+ refuse(response);
282
+ void life.close();
283
+ }
284
+ finally {
285
+ busy = false;
286
+ }
287
+ });
288
+ try {
289
+ busy = true;
290
+ await ping();
291
+ busy = false;
292
+ if (life.controller.signal.aborted)
293
+ throw unavailable();
294
+ await new Promise((resolve, reject) => { server.once('error', reject); server.listen(options.port, '127.0.0.1', () => { server.off('error', reject); resolve(); }); });
295
+ if (life.controller.signal.aborted) {
296
+ server.closeAllConnections();
297
+ await new Promise(resolve => server.close(() => resolve()));
298
+ throw unavailable();
299
+ }
300
+ return { url: url.origin, close: life.close, closed: life.closed };
301
+ }
302
+ catch {
303
+ await life.close();
304
+ throw unavailable();
305
+ }
306
+ }
307
+ //# sourceMappingURL=ledger-tunnel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-tunnel.js","sourceRoot":"","sources":["../../src/execution/ledger-tunnel.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,10 @@ export declare function replayReservations(input: ExecutionManifest, events: Res
7
7
  export type ReservationLedgerAccess = Pick<ReservationLedger, 'root' | 'read' | 'reserve' | 'settle'> & {
8
8
  /** A transport must confirm rejection; cached absence cannot rule out an in-flight commit. */
9
9
  canReleaseFailedReservation?: (error: unknown) => boolean;
10
+ /** Revalidate live owner/token authority; cached history is not an execution grant. */
11
+ refreshAuthority?: (cwd: string, agentId: string, signal?: AbortSignal) => Promise<void>;
12
+ /** Native transport verified this exact account's owner-declared local workspace. */
13
+ executionProject?: (cwd: string, agentId: string) => ExecutionManifest['project'];
10
14
  };
11
15
  export declare class ReservationLedger {
12
16
  private readonly now;
@@ -1 +1 @@
1
- {"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../src/execution/ledger.ts"],"names":[],"mappings":"AAOA,OAAO,EAAuB,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,KAAK,qBAAqB,EAAC,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7L,eAAO,MAAM,sBAAsB,QAAQ,EAAE,qBAAqB,QAAmB,CAAC;AAEtF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAK/G;AA8BD,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,qBAAqB,CA0C9G;AAgCD,yGAAyG;AACzG,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,EAAC,MAAM,GAAC,MAAM,GAAC,SAAS,GAAC,QAAQ,CAAC,GAAG;IAC/F,8FAA8F;IAC9F,2BAA2B,CAAC,EAAC,CAAC,KAAK,EAAC,OAAO,KAAG,OAAO,CAAC;CACvD,CAAC;AACF,qBAAa,iBAAiB;IAEJ,OAAO,CAAC,QAAQ,CAAC,GAAG;IAD5C,QAAQ,CAAC,IAAI,EAAC,MAAM,CAAC;IACrB,YAAY,IAAI,EAAC,MAAM,EAAkB,GAAG,eAAS,EAA2B;IAChF,iGAAiG;IACjG,MAAM,CAAC,KAAK,EAAC,iBAAiB,EAAC,MAAM,CAAC,EAAC,WAAW,GAAE,qBAAqB,CAUxE;IACD,IAAI,CAAC,GAAG,EAAC,MAAM,GAAE;QAAC,QAAQ,EAAC,iBAAiB,CAAC;QAAA,MAAM,EAAC,gBAAgB,EAAE,CAAC;QAAA,UAAU,EAAC,qBAAqB,CAAA;KAAC,CAGvG;IACK,OAAO,CAAC,GAAG,EAAC,MAAM,EAAC,gBAAgB,EAAC,MAAM,EAAC,KAAK,EAAC,kBAAkB,EAAC,MAAM,CAAC,EAAC,WAAW,EAAC,YAAY,CAAC,EAAC,MAAI,IAAI,GAAE,OAAO,CAAC,qBAAqB,CAAC,CAEnJ;IACK,aAAa,CAAC,GAAG,EAAC,MAAM,EAAC,gBAAgB,EAAC,MAAM,EAAC,KAAK,EAAC,UAAU,EAAC,MAAM,CAAC,EAAC,WAAW,EAAC,YAAY,CAAC,EAAC,MAAI,IAAI,GAAE,OAAO,CAAC,qBAAqB,CAAC,CAEjJ;IACD,8FAA8F;IACxF,MAAM,CAAC,GAAG,EAAC,MAAM,EAAC,gBAAgB,EAAC,MAAM,EAAC,KAAK,EAAC,iBAAiB,GAAE,OAAO,CAAC,qBAAqB,CAAC,CAEtG;YACa,MAAM;CAyBrB"}
1
+ {"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../src/execution/ledger.ts"],"names":[],"mappings":"AAOA,OAAO,EAAuB,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,KAAK,qBAAqB,EAAC,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7L,eAAO,MAAM,sBAAsB,QAAQ,EAAE,qBAAqB,QAAmB,CAAC;AAEtF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAK/G;AA8BD,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,qBAAqB,CA0C9G;AAgCD,yGAAyG;AACzG,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,EAAC,MAAM,GAAC,MAAM,GAAC,SAAS,GAAC,QAAQ,CAAC,GAAG;IAC/F,8FAA8F;IAC9F,2BAA2B,CAAC,EAAC,CAAC,KAAK,EAAC,OAAO,KAAG,OAAO,CAAC;IACtD,uFAAuF;IACvF,gBAAgB,CAAC,EAAC,CAAC,GAAG,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,MAAM,CAAC,EAAC,WAAW,KAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,qFAAqF;IACrF,gBAAgB,CAAC,EAAC,CAAC,GAAG,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,KAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;CAC7E,CAAC;AACF,qBAAa,iBAAiB;IAEJ,OAAO,CAAC,QAAQ,CAAC,GAAG;IAD5C,QAAQ,CAAC,IAAI,EAAC,MAAM,CAAC;IACrB,YAAY,IAAI,EAAC,MAAM,EAAkB,GAAG,eAAS,EAA2B;IAChF,iGAAiG;IACjG,MAAM,CAAC,KAAK,EAAC,iBAAiB,EAAC,MAAM,CAAC,EAAC,WAAW,GAAE,qBAAqB,CAUxE;IACD,IAAI,CAAC,GAAG,EAAC,MAAM,GAAE;QAAC,QAAQ,EAAC,iBAAiB,CAAC;QAAA,MAAM,EAAC,gBAAgB,EAAE,CAAC;QAAA,UAAU,EAAC,qBAAqB,CAAA;KAAC,CAGvG;IACK,OAAO,CAAC,GAAG,EAAC,MAAM,EAAC,gBAAgB,EAAC,MAAM,EAAC,KAAK,EAAC,kBAAkB,EAAC,MAAM,CAAC,EAAC,WAAW,EAAC,YAAY,CAAC,EAAC,MAAI,IAAI,GAAE,OAAO,CAAC,qBAAqB,CAAC,CAEnJ;IACK,aAAa,CAAC,GAAG,EAAC,MAAM,EAAC,gBAAgB,EAAC,MAAM,EAAC,KAAK,EAAC,UAAU,EAAC,MAAM,CAAC,EAAC,WAAW,EAAC,YAAY,CAAC,EAAC,MAAI,IAAI,GAAE,OAAO,CAAC,qBAAqB,CAAC,CAEjJ;IACD,8FAA8F;IACxF,MAAM,CAAC,GAAG,EAAC,MAAM,EAAC,gBAAgB,EAAC,MAAM,EAAC,KAAK,EAAC,iBAAiB,GAAE,OAAO,CAAC,qBAAqB,CAAC,CAgBtG;YACa,MAAM;CA+BrB"}