pi-amq 0.1.1

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 (264) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/LICENSE +21 -0
  3. package/README.md +92 -0
  4. package/THIRD_PARTY_NOTICES.md +33 -0
  5. package/dist/extension/guidance.d.ts +25 -0
  6. package/dist/extension/guidance.d.ts.map +1 -0
  7. package/dist/extension/guidance.js +121 -0
  8. package/dist/extension/guidance.js.map +1 -0
  9. package/dist/extension/guide.d.ts +30 -0
  10. package/dist/extension/guide.d.ts.map +1 -0
  11. package/dist/extension/guide.js +128 -0
  12. package/dist/extension/guide.js.map +1 -0
  13. package/dist/extension/index.d.ts +4 -0
  14. package/dist/extension/index.d.ts.map +1 -0
  15. package/dist/extension/index.js +6 -0
  16. package/dist/extension/index.js.map +1 -0
  17. package/dist/extension/runtime.d.ts +48 -0
  18. package/dist/extension/runtime.d.ts.map +1 -0
  19. package/dist/extension/runtime.js +1095 -0
  20. package/dist/extension/runtime.js.map +1 -0
  21. package/dist/extension/tools.d.ts +12 -0
  22. package/dist/extension/tools.d.ts.map +1 -0
  23. package/dist/extension/tools.js +198 -0
  24. package/dist/extension/tools.js.map +1 -0
  25. package/dist/extension/worker-runtime.d.ts +34 -0
  26. package/dist/extension/worker-runtime.d.ts.map +1 -0
  27. package/dist/extension/worker-runtime.js +974 -0
  28. package/dist/extension/worker-runtime.js.map +1 -0
  29. package/dist/extension/worker-tools.d.ts +140 -0
  30. package/dist/extension/worker-tools.d.ts.map +1 -0
  31. package/dist/extension/worker-tools.js +217 -0
  32. package/dist/extension/worker-tools.js.map +1 -0
  33. package/dist/integration/confirmed-bind-onboarding.d.ts +44 -0
  34. package/dist/integration/confirmed-bind-onboarding.d.ts.map +1 -0
  35. package/dist/integration/confirmed-bind-onboarding.js +199 -0
  36. package/dist/integration/confirmed-bind-onboarding.js.map +1 -0
  37. package/dist/integration/fleet-view.d.ts +66 -0
  38. package/dist/integration/fleet-view.d.ts.map +1 -0
  39. package/dist/integration/fleet-view.js +238 -0
  40. package/dist/integration/fleet-view.js.map +1 -0
  41. package/dist/integration/fresh-session-dispatcher.d.ts +66 -0
  42. package/dist/integration/fresh-session-dispatcher.d.ts.map +1 -0
  43. package/dist/integration/fresh-session-dispatcher.js +103 -0
  44. package/dist/integration/fresh-session-dispatcher.js.map +1 -0
  45. package/dist/integration/launch-preview.d.ts +31 -0
  46. package/dist/integration/launch-preview.d.ts.map +1 -0
  47. package/dist/integration/launch-preview.js +325 -0
  48. package/dist/integration/launch-preview.js.map +1 -0
  49. package/dist/integration/transport-port.d.ts +39 -0
  50. package/dist/integration/transport-port.d.ts.map +1 -0
  51. package/dist/integration/transport-port.js +2 -0
  52. package/dist/integration/transport-port.js.map +1 -0
  53. package/dist/integration/worker-completion-notifier.d.ts +22 -0
  54. package/dist/integration/worker-completion-notifier.d.ts.map +1 -0
  55. package/dist/integration/worker-completion-notifier.js +81 -0
  56. package/dist/integration/worker-completion-notifier.js.map +1 -0
  57. package/dist/transport/amq-cli-adapter.d.ts +41 -0
  58. package/dist/transport/amq-cli-adapter.d.ts.map +1 -0
  59. package/dist/transport/amq-cli-adapter.js +291 -0
  60. package/dist/transport/amq-cli-adapter.js.map +1 -0
  61. package/dist/transport/amq-message.d.ts +47 -0
  62. package/dist/transport/amq-message.d.ts.map +1 -0
  63. package/dist/transport/amq-message.js +173 -0
  64. package/dist/transport/amq-message.js.map +1 -0
  65. package/dist/transport/amq-operations.d.ts +105 -0
  66. package/dist/transport/amq-operations.d.ts.map +1 -0
  67. package/dist/transport/amq-operations.js +320 -0
  68. package/dist/transport/amq-operations.js.map +1 -0
  69. package/dist/transport/atomic-json.d.ts +18 -0
  70. package/dist/transport/atomic-json.d.ts.map +1 -0
  71. package/dist/transport/atomic-json.js +90 -0
  72. package/dist/transport/atomic-json.js.map +1 -0
  73. package/dist/transport/binding-resolver.d.ts +46 -0
  74. package/dist/transport/binding-resolver.d.ts.map +1 -0
  75. package/dist/transport/binding-resolver.js +389 -0
  76. package/dist/transport/binding-resolver.js.map +1 -0
  77. package/dist/transport/bridge-journal.d.ts +100 -0
  78. package/dist/transport/bridge-journal.d.ts.map +1 -0
  79. package/dist/transport/bridge-journal.js +459 -0
  80. package/dist/transport/bridge-journal.js.map +1 -0
  81. package/dist/transport/dlq-retry-audit.d.ts +28 -0
  82. package/dist/transport/dlq-retry-audit.d.ts.map +1 -0
  83. package/dist/transport/dlq-retry-audit.js +66 -0
  84. package/dist/transport/dlq-retry-audit.js.map +1 -0
  85. package/dist/transport/inbox-pump.d.ts +81 -0
  86. package/dist/transport/inbox-pump.d.ts.map +1 -0
  87. package/dist/transport/inbox-pump.js +558 -0
  88. package/dist/transport/inbox-pump.js.map +1 -0
  89. package/dist/transport/index.d.ts +12 -0
  90. package/dist/transport/index.d.ts.map +1 -0
  91. package/dist/transport/index.js +12 -0
  92. package/dist/transport/index.js.map +1 -0
  93. package/dist/transport/presence-projector.d.ts +29 -0
  94. package/dist/transport/presence-projector.d.ts.map +1 -0
  95. package/dist/transport/presence-projector.js +73 -0
  96. package/dist/transport/presence-projector.js.map +1 -0
  97. package/dist/transport/priority-delivery-scheduler.d.ts +85 -0
  98. package/dist/transport/priority-delivery-scheduler.d.ts.map +1 -0
  99. package/dist/transport/priority-delivery-scheduler.js +210 -0
  100. package/dist/transport/priority-delivery-scheduler.js.map +1 -0
  101. package/dist/transport/receiver-lease.d.ts +102 -0
  102. package/dist/transport/receiver-lease.d.ts.map +1 -0
  103. package/dist/transport/receiver-lease.js +778 -0
  104. package/dist/transport/receiver-lease.js.map +1 -0
  105. package/dist/transport/runtime-status.d.ts +48 -0
  106. package/dist/transport/runtime-status.d.ts.map +1 -0
  107. package/dist/transport/runtime-status.js +71 -0
  108. package/dist/transport/runtime-status.js.map +1 -0
  109. package/dist/workflow/atomic-storage.d.ts +12 -0
  110. package/dist/workflow/atomic-storage.d.ts.map +1 -0
  111. package/dist/workflow/atomic-storage.js +104 -0
  112. package/dist/workflow/atomic-storage.js.map +1 -0
  113. package/dist/workflow/budget.d.ts +18 -0
  114. package/dist/workflow/budget.d.ts.map +1 -0
  115. package/dist/workflow/budget.js +74 -0
  116. package/dist/workflow/budget.js.map +1 -0
  117. package/dist/workflow/index.d.ts +17 -0
  118. package/dist/workflow/index.d.ts.map +1 -0
  119. package/dist/workflow/index.js +17 -0
  120. package/dist/workflow/index.js.map +1 -0
  121. package/dist/workflow/lifecycle-projection.d.ts +18 -0
  122. package/dist/workflow/lifecycle-projection.d.ts.map +1 -0
  123. package/dist/workflow/lifecycle-projection.js +22 -0
  124. package/dist/workflow/lifecycle-projection.js.map +1 -0
  125. package/dist/workflow/model-fallback.d.ts +2 -0
  126. package/dist/workflow/model-fallback.d.ts.map +1 -0
  127. package/dist/workflow/model-fallback.js +17 -0
  128. package/dist/workflow/model-fallback.js.map +1 -0
  129. package/dist/workflow/pi-session-fork.d.ts +18 -0
  130. package/dist/workflow/pi-session-fork.d.ts.map +1 -0
  131. package/dist/workflow/pi-session-fork.js +80 -0
  132. package/dist/workflow/pi-session-fork.js.map +1 -0
  133. package/dist/workflow/run-artifacts.d.ts +5 -0
  134. package/dist/workflow/run-artifacts.d.ts.map +1 -0
  135. package/dist/workflow/run-artifacts.js +25 -0
  136. package/dist/workflow/run-artifacts.js.map +1 -0
  137. package/dist/workflow/run-cleanup.d.ts +70 -0
  138. package/dist/workflow/run-cleanup.d.ts.map +1 -0
  139. package/dist/workflow/run-cleanup.js +222 -0
  140. package/dist/workflow/run-cleanup.js.map +1 -0
  141. package/dist/workflow/run-gate.d.ts +43 -0
  142. package/dist/workflow/run-gate.d.ts.map +1 -0
  143. package/dist/workflow/run-gate.js +70 -0
  144. package/dist/workflow/run-gate.js.map +1 -0
  145. package/dist/workflow/run-store.d.ts +208 -0
  146. package/dist/workflow/run-store.d.ts.map +1 -0
  147. package/dist/workflow/run-store.js +2965 -0
  148. package/dist/workflow/run-store.js.map +1 -0
  149. package/dist/workflow/spawn-confirmation.d.ts +44 -0
  150. package/dist/workflow/spawn-confirmation.d.ts.map +1 -0
  151. package/dist/workflow/spawn-confirmation.js +228 -0
  152. package/dist/workflow/spawn-confirmation.js.map +1 -0
  153. package/dist/workflow/system-process-inspector.d.ts +9 -0
  154. package/dist/workflow/system-process-inspector.d.ts.map +1 -0
  155. package/dist/workflow/system-process-inspector.js +129 -0
  156. package/dist/workflow/system-process-inspector.js.map +1 -0
  157. package/dist/workflow/worker-child-extension.d.ts +3 -0
  158. package/dist/workflow/worker-child-extension.d.ts.map +1 -0
  159. package/dist/workflow/worker-child-extension.js +182 -0
  160. package/dist/workflow/worker-child-extension.js.map +1 -0
  161. package/dist/workflow/worker-gate.d.ts +74 -0
  162. package/dist/workflow/worker-gate.d.ts.map +1 -0
  163. package/dist/workflow/worker-gate.js +165 -0
  164. package/dist/workflow/worker-gate.js.map +1 -0
  165. package/dist/workflow/worker-launch.d.ts +65 -0
  166. package/dist/workflow/worker-launch.d.ts.map +1 -0
  167. package/dist/workflow/worker-launch.js +338 -0
  168. package/dist/workflow/worker-launch.js.map +1 -0
  169. package/dist/workflow/worker-model-catalog.d.ts +36 -0
  170. package/dist/workflow/worker-model-catalog.d.ts.map +1 -0
  171. package/dist/workflow/worker-model-catalog.js +105 -0
  172. package/dist/workflow/worker-model-catalog.js.map +1 -0
  173. package/dist/workflow/worker-process-supervisor.d.ts +110 -0
  174. package/dist/workflow/worker-process-supervisor.d.ts.map +1 -0
  175. package/dist/workflow/worker-process-supervisor.js +1188 -0
  176. package/dist/workflow/worker-process-supervisor.js.map +1 -0
  177. package/dist/workflow/worker-prompt-capsule.d.ts +32 -0
  178. package/dist/workflow/worker-prompt-capsule.d.ts.map +1 -0
  179. package/dist/workflow/worker-prompt-capsule.js +52 -0
  180. package/dist/workflow/worker-prompt-capsule.js.map +1 -0
  181. package/dist/workflow/worker-role-presets.d.ts +38 -0
  182. package/dist/workflow/worker-role-presets.d.ts.map +1 -0
  183. package/dist/workflow/worker-role-presets.js +201 -0
  184. package/dist/workflow/worker-role-presets.js.map +1 -0
  185. package/dist/workflow/workflow-doctor.d.ts +57 -0
  186. package/dist/workflow/workflow-doctor.d.ts.map +1 -0
  187. package/dist/workflow/workflow-doctor.js +289 -0
  188. package/dist/workflow/workflow-doctor.js.map +1 -0
  189. package/dist/workflow/workflow-lease.d.ts +125 -0
  190. package/dist/workflow/workflow-lease.d.ts.map +1 -0
  191. package/dist/workflow/workflow-lease.js +689 -0
  192. package/dist/workflow/workflow-lease.js.map +1 -0
  193. package/dist/workflow/workflow-types.d.ts +335 -0
  194. package/dist/workflow/workflow-types.d.ts.map +1 -0
  195. package/dist/workflow/workflow-types.js +11 -0
  196. package/dist/workflow/workflow-types.js.map +1 -0
  197. package/dist/workflow/workspace-paths.d.ts +4 -0
  198. package/dist/workflow/workspace-paths.d.ts.map +1 -0
  199. package/dist/workflow/workspace-paths.js +22 -0
  200. package/dist/workflow/workspace-paths.js.map +1 -0
  201. package/docs/conformance.md +116 -0
  202. package/docs/demo-transcript.md +34 -0
  203. package/docs/design.md +1481 -0
  204. package/docs/operator-guide.md +100 -0
  205. package/extension/guidance.ts +162 -0
  206. package/extension/guide.ts +155 -0
  207. package/extension/index.ts +8 -0
  208. package/extension/runtime.ts +1224 -0
  209. package/extension/tools.ts +221 -0
  210. package/extension/worker-runtime.ts +1150 -0
  211. package/extension/worker-tools.ts +276 -0
  212. package/integration/confirmed-bind-onboarding.ts +296 -0
  213. package/integration/fleet-view.ts +286 -0
  214. package/integration/fresh-session-dispatcher.ts +166 -0
  215. package/integration/launch-preview.ts +396 -0
  216. package/integration/transport-port.ts +29 -0
  217. package/integration/worker-completion-notifier.ts +98 -0
  218. package/package.json +55 -0
  219. package/roles/oracle.md +9 -0
  220. package/roles/researcher.md +8 -0
  221. package/roles/reviewer.md +9 -0
  222. package/roles/scout.md +8 -0
  223. package/roles/worker.md +10 -0
  224. package/scripts/demo-two-terminal.sh +59 -0
  225. package/skills/coordination-patterns/SKILL.md +41 -0
  226. package/skills/coordination-patterns/references/supervised-worker-fan-out.md +12 -0
  227. package/skills/coordination-patterns/references/today-mail-team.md +36 -0
  228. package/transport/amq-cli-adapter.ts +381 -0
  229. package/transport/amq-message.ts +218 -0
  230. package/transport/amq-operations.ts +482 -0
  231. package/transport/atomic-json.ts +115 -0
  232. package/transport/binding-resolver.ts +565 -0
  233. package/transport/bridge-journal.ts +588 -0
  234. package/transport/dlq-retry-audit.ts +97 -0
  235. package/transport/inbox-pump.ts +729 -0
  236. package/transport/index.ts +11 -0
  237. package/transport/presence-projector.ts +104 -0
  238. package/transport/priority-delivery-scheduler.ts +328 -0
  239. package/transport/receiver-lease.ts +945 -0
  240. package/transport/runtime-status.ts +112 -0
  241. package/workflow/.gitkeep +1 -0
  242. package/workflow/atomic-storage.ts +120 -0
  243. package/workflow/budget.ts +90 -0
  244. package/workflow/index.ts +16 -0
  245. package/workflow/lifecycle-projection.ts +37 -0
  246. package/workflow/model-fallback.ts +17 -0
  247. package/workflow/pi-session-fork.ts +96 -0
  248. package/workflow/run-artifacts.ts +36 -0
  249. package/workflow/run-cleanup.ts +315 -0
  250. package/workflow/run-gate.ts +122 -0
  251. package/workflow/run-store.ts +3890 -0
  252. package/workflow/spawn-confirmation.ts +305 -0
  253. package/workflow/system-process-inspector.ts +142 -0
  254. package/workflow/worker-child-extension.ts +193 -0
  255. package/workflow/worker-gate.ts +238 -0
  256. package/workflow/worker-launch.ts +485 -0
  257. package/workflow/worker-model-catalog.ts +165 -0
  258. package/workflow/worker-process-supervisor.ts +1504 -0
  259. package/workflow/worker-prompt-capsule.ts +81 -0
  260. package/workflow/worker-role-presets.ts +241 -0
  261. package/workflow/workflow-doctor.ts +400 -0
  262. package/workflow/workflow-lease.ts +905 -0
  263. package/workflow/workflow-types.ts +367 -0
  264. package/workflow/workspace-paths.ts +32 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding-resolver.d.ts","sourceRoot":"","sources":["../../transport/binding-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,yBAAyB,EAAG,mBAA4B,CAAC;AAuBtE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,4FAA4F;IAC5F,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACnD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,aAAa,GAAG,WAAW,CAAC;AAElE,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,eAAe,GACf,wBAAwB,GACxB,qBAAqB,GACrB,2BAA2B,GAC3B,oBAAoB,GACpB,kBAAkB,GAClB,qBAAqB,GACrB,oBAAoB,GACpB,uBAAuB,GACvB,yBAAyB,CAAC;AAE9B,MAAM,MAAM,iBAAiB,GACzB;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,eAAe,CAAC;CACzC,CAAC;AAgCN,qEAAqE;AACrE,qBAAa,eAAe;;gBAGd,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC;IAI7C,OAAO,CAAC,KAAK,GAAE,mBAAwB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CA6J3E;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAc5E"}
@@ -0,0 +1,389 @@
1
+ import { isAbsolute, normalize } from "node:path";
2
+ import {} from "./amq-cli-adapter.js";
3
+ export const PI_AMQ_BINDING_ENTRY_TYPE = "pi-amq-binding/v1";
4
+ const BINDING_KEYS = [
5
+ "handle",
6
+ "root",
7
+ "rootId",
8
+ "baseRoot",
9
+ "baseRootId",
10
+ "session",
11
+ "project",
12
+ "amqVersion",
13
+ ];
14
+ const FLAG_KEYS = ["handle", "root", "session", "mode"];
15
+ const INHERITED_KEYS = [
16
+ "AM_ROOT",
17
+ "AM_ROOT_ID",
18
+ "AM_BASE_ROOT",
19
+ "AM_BASE_ROOT_ID",
20
+ "AM_SESSION",
21
+ "AM_ME",
22
+ ];
23
+ /** Resolves authority without reading AMQ-owned filesystem paths. */
24
+ export class BindingResolver {
25
+ #adapter;
26
+ constructor(adapter) {
27
+ this.#adapter = adapter;
28
+ }
29
+ async resolve(input = {}) {
30
+ const environment = input.environment ?? process.env;
31
+ let flags;
32
+ try {
33
+ flags = parseFlags(input.flags);
34
+ }
35
+ catch (error) {
36
+ return dormant("invalid-flags", toError(error).message);
37
+ }
38
+ let inherited;
39
+ try {
40
+ inherited = parseInheritedEnvironment(environment);
41
+ }
42
+ catch (error) {
43
+ const message = toError(error).message;
44
+ const reason = message.startsWith("Incomplete inherited AMQ context")
45
+ ? "incomplete-environment"
46
+ : "invalid-environment";
47
+ return dormant(reason, message);
48
+ }
49
+ let persisted;
50
+ if (input.persistedBinding !== undefined) {
51
+ try {
52
+ persisted = parseBindingProjectionV1(input.persistedBinding);
53
+ }
54
+ catch (error) {
55
+ return dormant("invalid-persisted-binding", toError(error).message);
56
+ }
57
+ }
58
+ if (flags.candidate) {
59
+ if (inherited.candidate && routingConflict(flags.candidate, inherited.candidate.expected)) {
60
+ return dormant("authority-mismatch", "Explicit AMQ flags conflict with the inherited AMQ pin; relaunch or confirm the change with /amq bind");
61
+ }
62
+ if (persisted && routingConflict(flags.candidate, persisted)) {
63
+ return dormant("authority-mismatch", "Explicit AMQ flags differ from the persisted pi-amq-binding/v1 projection");
64
+ }
65
+ const expected = persisted ?? inherited.candidate?.expected;
66
+ return this.#verify(withExpected(flags.candidate, expected), environment);
67
+ }
68
+ if (inherited.candidate) {
69
+ if (persisted && !sameBindingAuthority(inherited.candidate.expected, persisted)) {
70
+ return dormant("authority-mismatch", "Inherited AMQ context differs from the persisted pi-amq-binding/v1 projection");
71
+ }
72
+ return this.#verify(withMode(inherited.candidate, flags.requestedMode), environment);
73
+ }
74
+ if (persisted) {
75
+ return this.#verify({
76
+ source: "persisted",
77
+ handle: persisted.handle,
78
+ root: persisted.root,
79
+ session: persisted.session,
80
+ expected: persisted,
81
+ ...(flags.requestedMode ? { requestedMode: flags.requestedMode } : {}),
82
+ }, environment);
83
+ }
84
+ return dormant("unbound", "No explicit, inherited, or persisted AMQ binding is available");
85
+ }
86
+ async #verify(candidate, environment) {
87
+ const argv = candidate.source === "environment"
88
+ ? ["env"]
89
+ : ["env", "--root", candidate.root, "--me", candidate.handle];
90
+ const result = await this.#adapter.runJson(argv, {
91
+ env: commandEnvironment(environment),
92
+ parse: parseAmqEnvV1,
93
+ });
94
+ if (!result.ok || !result.json) {
95
+ if (result.category === "context-mismatch") {
96
+ return dormant("context-mismatch", literalDiagnostic(result.stderr, "AMQ refused the current root/session pin"), result.category);
97
+ }
98
+ if (result.category === "invalid-json") {
99
+ return dormant("invalid-env-output", result.jsonError?.message ?? "AMQ env returned invalid JSON", result.category);
100
+ }
101
+ return dormant("verification-failed", literalDiagnostic(result.stderr, `amq env verification failed (${result.category})`), result.category);
102
+ }
103
+ const live = result.json;
104
+ const mismatches = candidateMismatches(candidate, live);
105
+ if (mismatches.length > 0) {
106
+ const reason = candidate.source === "persisted"
107
+ ? "stale-persisted-binding"
108
+ : "verification-mismatch";
109
+ return dormant(reason, `Live AMQ context mismatch: ${mismatches.join(", ")}`);
110
+ }
111
+ const mailbox = await this.#adapter.runJson([
112
+ "list",
113
+ "--root",
114
+ live.root,
115
+ "--me",
116
+ live.me,
117
+ "--new",
118
+ "--limit",
119
+ "1",
120
+ ], {
121
+ env: commandEnvironment(environment),
122
+ parse: parseMailboxList,
123
+ });
124
+ if (!mailbox.ok) {
125
+ return dormant(mailbox.category === "context-mismatch" ? "context-mismatch" : "verification-failed", literalDiagnostic(mailbox.stderr, `AMQ mailbox verification failed (${mailbox.category})`), mailbox.category);
126
+ }
127
+ return {
128
+ kind: "bound",
129
+ source: candidate.source,
130
+ binding: projectionFromEnv(live),
131
+ ...(candidate.requestedMode ? { requestedMode: candidate.requestedMode } : {}),
132
+ };
133
+ }
134
+ }
135
+ export function parseBindingProjectionV1(value) {
136
+ const object = record(value, "pi-amq-binding/v1");
137
+ rejectUnknownKeys(object, BINDING_KEYS, "pi-amq-binding/v1");
138
+ const binding = {
139
+ handle: requiredString(object, "handle"),
140
+ root: requiredAbsolutePath(object, "root"),
141
+ rootId: requiredString(object, "rootId"),
142
+ baseRoot: requiredAbsolutePath(object, "baseRoot"),
143
+ baseRootId: requiredString(object, "baseRootId"),
144
+ session: stringField(object, "session"),
145
+ project: stringField(object, "project"),
146
+ amqVersion: requiredString(object, "amqVersion"),
147
+ };
148
+ return binding;
149
+ }
150
+ function parseAmqEnvV1(value) {
151
+ const object = record(value, "amq env --json");
152
+ if (numberField(object, "schema_version") !== 1) {
153
+ throw new Error("amq env schema_version must be 1");
154
+ }
155
+ const peers = record(object.peers, "amq env peers");
156
+ for (const [peer, path] of Object.entries(peers)) {
157
+ if (typeof path !== "string")
158
+ throw new Error(`amq env peers.${peer} must be a string`);
159
+ }
160
+ const output = {
161
+ amqVersion: requiredString(object, "amq_version"),
162
+ root: requiredAbsolutePath(object, "root"),
163
+ rootId: requiredString(object, "root_id"),
164
+ baseRoot: requiredAbsolutePath(object, "base_root"),
165
+ baseRootId: requiredString(object, "base_root_id"),
166
+ session: stringField(object, "session_name"),
167
+ inSession: booleanField(object, "in_session"),
168
+ me: requiredString(object, "me"),
169
+ project: stringField(object, "project"),
170
+ };
171
+ requiredString(object, "root_source");
172
+ if (output.inSession !== (output.session.length > 0)) {
173
+ throw new Error("amq env in_session and session_name are inconsistent");
174
+ }
175
+ return output;
176
+ }
177
+ function parseMailboxList(value) {
178
+ if (!Array.isArray(value))
179
+ throw new Error("amq list --json must return an array");
180
+ return value;
181
+ }
182
+ function parseFlags(value) {
183
+ if (!value)
184
+ return {};
185
+ const object = value;
186
+ rejectUnknownKeys(object, FLAG_KEYS, "explicit AMQ flags");
187
+ const requestedMode = optionalNonEmptyString(object.mode, "mode");
188
+ const hasRoutingFlag = object.handle !== undefined || object.root !== undefined || object.session !== undefined;
189
+ if (!hasRoutingFlag)
190
+ return requestedMode ? { requestedMode } : {};
191
+ const handle = optionalNonEmptyString(object.handle, "handle");
192
+ const root = optionalNonEmptyString(object.root, "root");
193
+ const session = optionalNonEmptyString(object.session, "session");
194
+ if (!handle || !root) {
195
+ throw new Error("Explicit AMQ routing requires both handle and absolute root");
196
+ }
197
+ if (!isAbsolute(root))
198
+ throw new Error("Explicit AMQ root must be absolute");
199
+ return {
200
+ candidate: {
201
+ source: "flags",
202
+ handle,
203
+ root: normalize(root),
204
+ ...(session ? { session } : {}),
205
+ ...(requestedMode ? { requestedMode } : {}),
206
+ },
207
+ ...(requestedMode ? { requestedMode } : {}),
208
+ };
209
+ }
210
+ function parseInheritedEnvironment(environment) {
211
+ const present = INHERITED_KEYS.filter((key) => Object.hasOwn(environment, key));
212
+ if (present.length === 0)
213
+ return {};
214
+ const missing = INHERITED_KEYS.filter((key) => !Object.hasOwn(environment, key));
215
+ if (missing.length > 0) {
216
+ throw new Error(`Incomplete inherited AMQ context; missing ${missing.join(", ")}`);
217
+ }
218
+ const root = requiredEnvironmentValue(environment, "AM_ROOT");
219
+ const rootId = requiredEnvironmentValue(environment, "AM_ROOT_ID");
220
+ const baseRoot = requiredEnvironmentValue(environment, "AM_BASE_ROOT");
221
+ const baseRootId = requiredEnvironmentValue(environment, "AM_BASE_ROOT_ID");
222
+ const handle = requiredEnvironmentValue(environment, "AM_ME");
223
+ const session = environment.AM_SESSION;
224
+ if (typeof session !== "string")
225
+ throw new Error("AM_SESSION must be present as a string");
226
+ if (!isAbsolute(root) || !isAbsolute(baseRoot)) {
227
+ throw new Error("Inherited AM_ROOT and AM_BASE_ROOT must be absolute");
228
+ }
229
+ const expected = {
230
+ handle,
231
+ root: normalize(root),
232
+ rootId,
233
+ baseRoot: normalize(baseRoot),
234
+ baseRootId,
235
+ session,
236
+ project: "<live-verification-required>",
237
+ amqVersion: "<live-verification-required>",
238
+ };
239
+ return {
240
+ candidate: {
241
+ source: "environment",
242
+ handle,
243
+ root: expected.root,
244
+ session,
245
+ expected,
246
+ },
247
+ };
248
+ }
249
+ function candidateMismatches(candidate, live) {
250
+ const mismatches = [];
251
+ compare(mismatches, "handle", candidate.handle, live.me);
252
+ comparePath(mismatches, "root", candidate.root, live.root);
253
+ if (candidate.session !== undefined)
254
+ compare(mismatches, "session", candidate.session, live.session);
255
+ const expected = candidate.expected;
256
+ if (!expected)
257
+ return mismatches;
258
+ compare(mismatches, "rootId", expected.rootId, live.rootId);
259
+ comparePath(mismatches, "baseRoot", expected.baseRoot, live.baseRoot);
260
+ compare(mismatches, "baseRootId", expected.baseRootId, live.baseRootId);
261
+ if (expected.project !== "<live-verification-required>") {
262
+ compare(mismatches, "project", expected.project, live.project);
263
+ }
264
+ return mismatches;
265
+ }
266
+ function routingConflict(candidate, other) {
267
+ if (!other)
268
+ return false;
269
+ if (candidate.handle !== other.handle || normalize(candidate.root) !== normalize(other.root))
270
+ return true;
271
+ return candidate.session !== undefined && candidate.session !== other.session;
272
+ }
273
+ function sameBindingAuthority(left, right) {
274
+ if (!left)
275
+ return false;
276
+ return left.handle === right.handle
277
+ && normalize(left.root) === normalize(right.root)
278
+ && left.rootId === right.rootId
279
+ && normalize(left.baseRoot) === normalize(right.baseRoot)
280
+ && left.baseRootId === right.baseRootId
281
+ && left.session === right.session;
282
+ }
283
+ function withExpected(candidate, expected) {
284
+ return expected ? { ...candidate, expected } : candidate;
285
+ }
286
+ function withMode(candidate, requestedMode) {
287
+ return requestedMode ? { ...candidate, requestedMode } : candidate;
288
+ }
289
+ function projectionFromEnv(env) {
290
+ return {
291
+ handle: env.me,
292
+ root: env.root,
293
+ rootId: env.rootId,
294
+ baseRoot: env.baseRoot,
295
+ baseRootId: env.baseRootId,
296
+ session: env.session,
297
+ project: env.project,
298
+ amqVersion: env.amqVersion,
299
+ };
300
+ }
301
+ function dormant(reason, diagnostic, exitCategory) {
302
+ return {
303
+ kind: "dormant",
304
+ reason,
305
+ diagnostic,
306
+ action: "/amq bind",
307
+ ...(exitCategory ? { exitCategory } : {}),
308
+ };
309
+ }
310
+ function record(value, name) {
311
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
312
+ throw new Error(`${name} must be an object`);
313
+ }
314
+ return value;
315
+ }
316
+ function rejectUnknownKeys(object, allowed, name) {
317
+ const unknown = Object.keys(object).filter((key) => !allowed.includes(key));
318
+ if (unknown.length > 0)
319
+ throw new Error(`${name} contains unknown fields: ${unknown.join(", ")}`);
320
+ }
321
+ function requiredString(object, key) {
322
+ return optionalNonEmptyString(object[key], key) ?? fail(`${key} is required`);
323
+ }
324
+ function stringField(object, key) {
325
+ const value = object[key];
326
+ if (typeof value !== "string")
327
+ throw new Error(`${key} must be a string`);
328
+ return value;
329
+ }
330
+ function numberField(object, key) {
331
+ const value = object[key];
332
+ if (typeof value !== "number" || !Number.isFinite(value))
333
+ throw new Error(`${key} must be a number`);
334
+ return value;
335
+ }
336
+ function booleanField(object, key) {
337
+ const value = object[key];
338
+ if (typeof value !== "boolean")
339
+ throw new Error(`${key} must be a boolean`);
340
+ return value;
341
+ }
342
+ function requiredAbsolutePath(object, key) {
343
+ const path = requiredString(object, key);
344
+ if (!isAbsolute(path))
345
+ throw new Error(`${key} must be absolute`);
346
+ return normalize(path);
347
+ }
348
+ function optionalNonEmptyString(value, name) {
349
+ if (value === undefined)
350
+ return undefined;
351
+ if (typeof value !== "string" || value.trim().length === 0) {
352
+ throw new Error(`${name} must be a non-empty string`);
353
+ }
354
+ return value;
355
+ }
356
+ function requiredEnvironmentValue(environment, key) {
357
+ const value = environment[key];
358
+ if (typeof value !== "string" || value.length === 0) {
359
+ throw new Error(`${String(key)} must be a non-empty string`);
360
+ }
361
+ return value;
362
+ }
363
+ function commandEnvironment(environment) {
364
+ const projected = { ...environment };
365
+ for (const key of INHERITED_KEYS) {
366
+ if (!Object.hasOwn(environment, key))
367
+ projected[key] = undefined;
368
+ }
369
+ return projected;
370
+ }
371
+ function compare(mismatches, field, expected, actual) {
372
+ if (expected !== actual)
373
+ mismatches.push(field);
374
+ }
375
+ function comparePath(mismatches, field, expected, actual) {
376
+ if (normalize(expected) !== normalize(actual))
377
+ mismatches.push(field);
378
+ }
379
+ function literalDiagnostic(stderr, fallback) {
380
+ const literal = stderr.trim();
381
+ return literal.length > 0 ? literal : fallback;
382
+ }
383
+ function fail(message) {
384
+ throw new Error(message);
385
+ }
386
+ function toError(error) {
387
+ return error instanceof Error ? error : new Error(String(error));
388
+ }
389
+ //# sourceMappingURL=binding-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding-resolver.js","sourceRoot":"","sources":["../../transport/binding-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ import { type AtomicFaultInjector } from "./atomic-json.js";
2
+ import { ReceiverLeaseManager } from "./receiver-lease.js";
3
+ export type BridgePhase = "pending" | "injected" | "dlq";
4
+ export type BridgeDelivery = "steer" | "followUp" | "nextTurn" | "fresh-session";
5
+ export interface BridgeBinding {
6
+ readonly rootId: string;
7
+ readonly handle: string;
8
+ }
9
+ export interface BridgeJournalRecordV1 {
10
+ readonly schema: 1;
11
+ readonly id: string;
12
+ readonly attempt: number;
13
+ readonly phase: BridgePhase;
14
+ readonly binding: BridgeBinding;
15
+ readonly leaseGeneration: string;
16
+ readonly targetSessionId: string | null;
17
+ readonly delivery: BridgeDelivery | null;
18
+ readonly claimedAt: string | null;
19
+ readonly receiptWarning: string | null;
20
+ readonly updatedAt: string;
21
+ }
22
+ export interface DiskProjectionEvidence {
23
+ readonly messageId: string;
24
+ readonly sessionId: string;
25
+ readonly diskVisible: boolean;
26
+ }
27
+ export interface BridgeRetryAuditEvidence {
28
+ readonly auditId: string;
29
+ readonly originalMessageId: string;
30
+ readonly retryCount: number;
31
+ readonly retryState: "delivered";
32
+ readonly visibleMessageId: string;
33
+ }
34
+ export interface BridgeAttemptHistoryV1 {
35
+ readonly schema: "pi-amq-attempt-history/v1";
36
+ readonly record: BridgeJournalRecordV1;
37
+ readonly retryAudit: BridgeRetryAuditEvidence;
38
+ }
39
+ export interface BridgeJournalOptions {
40
+ readonly namespaceDirectory: string;
41
+ readonly leaseManager: ReceiverLeaseManager;
42
+ readonly now?: () => Date;
43
+ readonly atomicFault?: AtomicFaultInjector;
44
+ }
45
+ export interface CreatePendingInput {
46
+ readonly id: string;
47
+ readonly attempt: number;
48
+ readonly binding: BridgeBinding;
49
+ readonly leaseGeneration: string;
50
+ }
51
+ export type BridgeRecoveryPlan = {
52
+ readonly kind: "exact-read";
53
+ readonly emitDrainedReceipt: boolean;
54
+ } | {
55
+ readonly kind: "mark-injected";
56
+ } | {
57
+ readonly kind: "mark-dlq";
58
+ } | {
59
+ readonly kind: "terminal-dlq";
60
+ } | {
61
+ readonly kind: "already-injected";
62
+ } | {
63
+ readonly kind: "needs-attention";
64
+ readonly reason: "message-not-found";
65
+ } | {
66
+ readonly kind: "diagnostic";
67
+ readonly reason: "injected-projection-missing";
68
+ };
69
+ export interface BridgeRecoveryFacts {
70
+ readonly amqLocation: "new" | "cur" | "missing" | "dlq";
71
+ readonly projection?: DiskProjectionEvidence;
72
+ }
73
+ /** Generation-fenced durable intent across the AMQ-to-pi delivery boundary. */
74
+ export declare class BridgeJournal {
75
+ #private;
76
+ constructor(options: BridgeJournalOptions);
77
+ createPending(input: CreatePendingInput): Promise<BridgeJournalRecordV1>;
78
+ read(id: string): Promise<BridgeJournalRecordV1 | undefined>;
79
+ list(): Promise<readonly BridgeJournalRecordV1[]>;
80
+ readHistory(id: string, attempt: number): Promise<BridgeAttemptHistoryV1 | undefined>;
81
+ adoptPending(id: string, generation: string, binding: BridgeBinding): Promise<BridgeJournalRecordV1>;
82
+ recordClaim(id: string, generation: string, claim: {
83
+ readonly claimedAt: string;
84
+ readonly receiptWarning?: string | null;
85
+ }): Promise<BridgeJournalRecordV1>;
86
+ setTarget(id: string, generation: string, target: {
87
+ readonly targetSessionId: string;
88
+ readonly delivery: BridgeDelivery;
89
+ }): Promise<BridgeJournalRecordV1>;
90
+ markInjected(id: string, generation: string, evidence: DiskProjectionEvidence): Promise<BridgeJournalRecordV1>;
91
+ markDlq(id: string, generation: string, evidence: {
92
+ readonly messageId: string;
93
+ readonly diagnostic: string;
94
+ }): Promise<BridgeJournalRecordV1>;
95
+ promoteVerifiedRetry(id: string, generation: string, evidence: BridgeRetryAuditEvidence): Promise<BridgeJournalRecordV1>;
96
+ }
97
+ export declare function planBridgeRecovery(record: BridgeJournalRecordV1, facts: BridgeRecoveryFacts): BridgeRecoveryPlan;
98
+ export declare function parseBridgeJournalRecordV1(value: unknown): BridgeJournalRecordV1;
99
+ export declare function parseBridgeAttemptHistoryV1(value: unknown): BridgeAttemptHistoryV1;
100
+ //# sourceMappingURL=bridge-journal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-journal.d.ts","sourceRoot":"","sources":["../../transport/bridge-journal.ts"],"names":[],"mappings":"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"}