@raidiant/notifai 11.7.1 → 12.0.0-beta.13

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 (409) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/NOTICE +16 -0
  3. package/THIRD_PARTY_NOTICES +725 -0
  4. package/bin/notifai.mjs +11420 -0
  5. package/data/install.ps1 +318 -0
  6. package/data/release.json +1 -0
  7. package/inventory.json +1 -0
  8. package/npm-adapter-files.json +52 -0
  9. package/package.json +14 -44
  10. package/README.md +0 -168
  11. package/dist/agent-update-notice.d.ts +0 -7
  12. package/dist/agent-update-notice.js +0 -77
  13. package/dist/agent-update-notice.js.map +0 -1
  14. package/dist/atomic-file.d.ts +0 -30
  15. package/dist/atomic-file.js +0 -148
  16. package/dist/atomic-file.js.map +0 -1
  17. package/dist/attendant-update.d.ts +0 -15
  18. package/dist/attendant-update.js +0 -96
  19. package/dist/attendant-update.js.map +0 -1
  20. package/dist/claude-wake.d.ts +0 -108
  21. package/dist/claude-wake.js +0 -369
  22. package/dist/claude-wake.js.map +0 -1
  23. package/dist/cli-bin.d.ts +0 -26
  24. package/dist/cli-bin.js +0 -220
  25. package/dist/cli-bin.js.map +0 -1
  26. package/dist/cli-contract.d.ts +0 -16
  27. package/dist/cli-contract.js +0 -27
  28. package/dist/cli-contract.js.map +0 -1
  29. package/dist/cli-release.d.ts +0 -36
  30. package/dist/cli-release.js +0 -85
  31. package/dist/cli-release.js.map +0 -1
  32. package/dist/client.d.ts +0 -109
  33. package/dist/client.js +0 -217
  34. package/dist/client.js.map +0 -1
  35. package/dist/codex-answer-control.d.ts +0 -14
  36. package/dist/codex-answer-control.js +0 -41
  37. package/dist/codex-answer-control.js.map +0 -1
  38. package/dist/codex-answer-presentation.d.ts +0 -18
  39. package/dist/codex-answer-presentation.js +0 -113
  40. package/dist/codex-answer-presentation.js.map +0 -1
  41. package/dist/codex-input-lifecycle.d.ts +0 -10
  42. package/dist/codex-input-lifecycle.js +0 -63
  43. package/dist/codex-input-lifecycle.js.map +0 -1
  44. package/dist/codex-native-control.d.ts +0 -13
  45. package/dist/codex-native-control.js +0 -120
  46. package/dist/codex-native-control.js.map +0 -1
  47. package/dist/codex-native-turn.d.ts +0 -37
  48. package/dist/codex-native-turn.js +0 -155
  49. package/dist/codex-native-turn.js.map +0 -1
  50. package/dist/codex-question-bindings.d.ts +0 -76
  51. package/dist/codex-question-bindings.js +0 -151
  52. package/dist/codex-question-bindings.js.map +0 -1
  53. package/dist/codex-queue-control.d.ts +0 -21
  54. package/dist/codex-queue-control.js +0 -59
  55. package/dist/codex-queue-control.js.map +0 -1
  56. package/dist/codex-tool-messages.d.ts +0 -7
  57. package/dist/codex-tool-messages.js +0 -126
  58. package/dist/codex-tool-messages.js.map +0 -1
  59. package/dist/codex-wake.d.ts +0 -58
  60. package/dist/codex-wake.js +0 -135
  61. package/dist/codex-wake.js.map +0 -1
  62. package/dist/command-session.d.ts +0 -14
  63. package/dist/command-session.js +0 -31
  64. package/dist/command-session.js.map +0 -1
  65. package/dist/commands-acknowledge.d.ts +0 -13
  66. package/dist/commands-acknowledge.js +0 -116
  67. package/dist/commands-acknowledge.js.map +0 -1
  68. package/dist/commands-agent-sessions.d.ts +0 -6
  69. package/dist/commands-agent-sessions.js +0 -51
  70. package/dist/commands-agent-sessions.js.map +0 -1
  71. package/dist/commands-ask.d.ts +0 -62
  72. package/dist/commands-ask.js +0 -503
  73. package/dist/commands-ask.js.map +0 -1
  74. package/dist/commands-auth.d.ts +0 -76
  75. package/dist/commands-auth.js +0 -421
  76. package/dist/commands-auth.js.map +0 -1
  77. package/dist/commands-close.d.ts +0 -6
  78. package/dist/commands-close.js +0 -273
  79. package/dist/commands-close.js.map +0 -1
  80. package/dist/commands-config.d.ts +0 -31
  81. package/dist/commands-config.js +0 -272
  82. package/dist/commands-config.js.map +0 -1
  83. package/dist/commands-core.d.ts +0 -145
  84. package/dist/commands-core.js +0 -190
  85. package/dist/commands-core.js.map +0 -1
  86. package/dist/commands-devices.d.ts +0 -41
  87. package/dist/commands-devices.js +0 -144
  88. package/dist/commands-devices.js.map +0 -1
  89. package/dist/commands-doctor.d.ts +0 -25
  90. package/dist/commands-doctor.js +0 -1553
  91. package/dist/commands-doctor.js.map +0 -1
  92. package/dist/commands-guidance.d.ts +0 -27
  93. package/dist/commands-guidance.js +0 -150
  94. package/dist/commands-guidance.js.map +0 -1
  95. package/dist/commands-harness-context.d.ts +0 -57
  96. package/dist/commands-harness-context.js +0 -102
  97. package/dist/commands-harness-context.js.map +0 -1
  98. package/dist/commands-hook-attend.d.ts +0 -70
  99. package/dist/commands-hook-attend.js +0 -655
  100. package/dist/commands-hook-attend.js.map +0 -1
  101. package/dist/commands-hook-diagnostics.d.ts +0 -37
  102. package/dist/commands-hook-diagnostics.js +0 -136
  103. package/dist/commands-hook-diagnostics.js.map +0 -1
  104. package/dist/commands-hook-install.d.ts +0 -26
  105. package/dist/commands-hook-install.js +0 -784
  106. package/dist/commands-hook-install.js.map +0 -1
  107. package/dist/commands-hook-run.d.ts +0 -29
  108. package/dist/commands-hook-run.js +0 -933
  109. package/dist/commands-hook-run.js.map +0 -1
  110. package/dist/commands-hook-shape.d.ts +0 -19
  111. package/dist/commands-hook-shape.js +0 -48
  112. package/dist/commands-hook-shape.js.map +0 -1
  113. package/dist/commands-init.d.ts +0 -42
  114. package/dist/commands-init.js +0 -901
  115. package/dist/commands-init.js.map +0 -1
  116. package/dist/commands-io.d.ts +0 -2
  117. package/dist/commands-io.js +0 -117
  118. package/dist/commands-io.js.map +0 -1
  119. package/dist/commands-logs.d.ts +0 -30
  120. package/dist/commands-logs.js +0 -201
  121. package/dist/commands-logs.js.map +0 -1
  122. package/dist/commands-native-acknowledge.d.ts +0 -8
  123. package/dist/commands-native-acknowledge.js +0 -114
  124. package/dist/commands-native-acknowledge.js.map +0 -1
  125. package/dist/commands-project.d.ts +0 -4
  126. package/dist/commands-project.js +0 -41
  127. package/dist/commands-project.js.map +0 -1
  128. package/dist/commands-receive.d.ts +0 -3
  129. package/dist/commands-receive.js +0 -59
  130. package/dist/commands-receive.js.map +0 -1
  131. package/dist/commands-send-support.d.ts +0 -59
  132. package/dist/commands-send-support.js +0 -258
  133. package/dist/commands-send-support.js.map +0 -1
  134. package/dist/commands-send.d.ts +0 -34
  135. package/dist/commands-send.js +0 -900
  136. package/dist/commands-send.js.map +0 -1
  137. package/dist/commands-setup-proof.d.ts +0 -43
  138. package/dist/commands-setup-proof.js +0 -134
  139. package/dist/commands-setup-proof.js.map +0 -1
  140. package/dist/commands-skill.d.ts +0 -21
  141. package/dist/commands-skill.js +0 -199
  142. package/dist/commands-skill.js.map +0 -1
  143. package/dist/commands-sounds.d.ts +0 -12
  144. package/dist/commands-sounds.js +0 -35
  145. package/dist/commands-sounds.js.map +0 -1
  146. package/dist/commands-update-check.d.ts +0 -6
  147. package/dist/commands-update-check.js +0 -102
  148. package/dist/commands-update-check.js.map +0 -1
  149. package/dist/commands-update-resume.d.ts +0 -7
  150. package/dist/commands-update-resume.js +0 -143
  151. package/dist/commands-update-resume.js.map +0 -1
  152. package/dist/commands-update-skill.d.ts +0 -5
  153. package/dist/commands-update-skill.js +0 -36
  154. package/dist/commands-update-skill.js.map +0 -1
  155. package/dist/commands-update.d.ts +0 -11
  156. package/dist/commands-update.js +0 -286
  157. package/dist/commands-update.js.map +0 -1
  158. package/dist/commands.d.ts +0 -26
  159. package/dist/commands.js +0 -27
  160. package/dist/commands.js.map +0 -1
  161. package/dist/config-schema.d.ts +0 -62
  162. package/dist/config-schema.js +0 -302
  163. package/dist/config-schema.js.map +0 -1
  164. package/dist/config.d.ts +0 -181
  165. package/dist/config.js +0 -357
  166. package/dist/config.js.map +0 -1
  167. package/dist/credentials.d.ts +0 -96
  168. package/dist/credentials.js +0 -342
  169. package/dist/credentials.js.map +0 -1
  170. package/dist/file-lock.d.ts +0 -34
  171. package/dist/file-lock.js +0 -367
  172. package/dist/file-lock.js.map +0 -1
  173. package/dist/generated-session-label.d.ts +0 -2
  174. package/dist/generated-session-label.js +0 -152
  175. package/dist/generated-session-label.js.map +0 -1
  176. package/dist/guidance-content.d.ts +0 -53
  177. package/dist/guidance-content.js +0 -248
  178. package/dist/guidance-content.js.map +0 -1
  179. package/dist/guidance-render.d.ts +0 -25
  180. package/dist/guidance-render.js +0 -47
  181. package/dist/guidance-render.js.map +0 -1
  182. package/dist/guidance.d.ts +0 -69
  183. package/dist/guidance.js +0 -173
  184. package/dist/guidance.js.map +0 -1
  185. package/dist/harness-session-title.d.ts +0 -22
  186. package/dist/harness-session-title.js +0 -74
  187. package/dist/harness-session-title.js.map +0 -1
  188. package/dist/harnesses.d.ts +0 -65
  189. package/dist/harnesses.js +0 -159
  190. package/dist/harnesses.js.map +0 -1
  191. package/dist/hermes-attendant.d.ts +0 -38
  192. package/dist/hermes-attendant.js +0 -337
  193. package/dist/hermes-attendant.js.map +0 -1
  194. package/dist/hermes-plugin.d.ts +0 -11
  195. package/dist/hermes-plugin.js +0 -299
  196. package/dist/hermes-plugin.js.map +0 -1
  197. package/dist/hook-acknowledgements.d.ts +0 -70
  198. package/dist/hook-acknowledgements.js +0 -490
  199. package/dist/hook-acknowledgements.js.map +0 -1
  200. package/dist/hook-adapter.d.ts +0 -48
  201. package/dist/hook-adapter.js +0 -419
  202. package/dist/hook-adapter.js.map +0 -1
  203. package/dist/hook-events.d.ts +0 -105
  204. package/dist/hook-events.js +0 -130
  205. package/dist/hook-events.js.map +0 -1
  206. package/dist/hook-gates.d.ts +0 -7
  207. package/dist/hook-gates.js +0 -20
  208. package/dist/hook-gates.js.map +0 -1
  209. package/dist/hook-input.d.ts +0 -10
  210. package/dist/hook-input.js +0 -64
  211. package/dist/hook-input.js.map +0 -1
  212. package/dist/hook-lifecycle.d.ts +0 -112
  213. package/dist/hook-lifecycle.js +0 -2031
  214. package/dist/hook-lifecycle.js.map +0 -1
  215. package/dist/hook-project-sessions.d.ts +0 -28
  216. package/dist/hook-project-sessions.js +0 -141
  217. package/dist/hook-project-sessions.js.map +0 -1
  218. package/dist/hook-question-lock.d.ts +0 -29
  219. package/dist/hook-question-lock.js +0 -217
  220. package/dist/hook-question-lock.js.map +0 -1
  221. package/dist/hook-question-retirement.d.ts +0 -74
  222. package/dist/hook-question-retirement.js +0 -314
  223. package/dist/hook-question-retirement.js.map +0 -1
  224. package/dist/hook-question-state.d.ts +0 -58
  225. package/dist/hook-question-state.js +0 -239
  226. package/dist/hook-question-state.js.map +0 -1
  227. package/dist/hook-session-state.d.ts +0 -127
  228. package/dist/hook-session-state.js +0 -488
  229. package/dist/hook-session-state.js.map +0 -1
  230. package/dist/hook-types.d.ts +0 -476
  231. package/dist/hook-types.js +0 -4
  232. package/dist/hook-types.js.map +0 -1
  233. package/dist/injection-render.d.ts +0 -36
  234. package/dist/injection-render.js +0 -61
  235. package/dist/injection-render.js.map +0 -1
  236. package/dist/install-hooks.d.ts +0 -470
  237. package/dist/install-hooks.js +0 -1622
  238. package/dist/install-hooks.js.map +0 -1
  239. package/dist/integration-health.d.ts +0 -26
  240. package/dist/integration-health.js +0 -133
  241. package/dist/integration-health.js.map +0 -1
  242. package/dist/interactive.d.ts +0 -22
  243. package/dist/interactive.js +0 -644
  244. package/dist/interactive.js.map +0 -1
  245. package/dist/invocation-context.d.ts +0 -47
  246. package/dist/invocation-context.js +0 -164
  247. package/dist/invocation-context.js.map +0 -1
  248. package/dist/local-path.d.ts +0 -7
  249. package/dist/local-path.js +0 -27
  250. package/dist/local-path.js.map +0 -1
  251. package/dist/logging.d.ts +0 -157
  252. package/dist/logging.js +0 -599
  253. package/dist/logging.js.map +0 -1
  254. package/dist/main-run.d.ts +0 -1
  255. package/dist/main-run.js +0 -42
  256. package/dist/main-run.js.map +0 -1
  257. package/dist/main.d.ts +0 -2
  258. package/dist/main.js +0 -12
  259. package/dist/main.js.map +0 -1
  260. package/dist/native-answer-operation.d.ts +0 -70
  261. package/dist/native-answer-operation.js +0 -247
  262. package/dist/native-answer-operation.js.map +0 -1
  263. package/dist/native-skills.d.ts +0 -64
  264. package/dist/native-skills.js +0 -167
  265. package/dist/native-skills.js.map +0 -1
  266. package/dist/node-floor.d.ts +0 -19
  267. package/dist/node-floor.js +0 -32
  268. package/dist/node-floor.js.map +0 -1
  269. package/dist/npm-invocation.d.ts +0 -34
  270. package/dist/npm-invocation.js +0 -53
  271. package/dist/npm-invocation.js.map +0 -1
  272. package/dist/openclaw-continuation-bridge.d.ts +0 -7
  273. package/dist/openclaw-continuation-bridge.js +0 -64
  274. package/dist/openclaw-continuation-bridge.js.map +0 -1
  275. package/dist/openclaw-gateway-readiness.d.ts +0 -1
  276. package/dist/openclaw-gateway-readiness.js +0 -24
  277. package/dist/openclaw-gateway-readiness.js.map +0 -1
  278. package/dist/openclaw-generation.d.ts +0 -21
  279. package/dist/openclaw-generation.js +0 -115
  280. package/dist/openclaw-generation.js.map +0 -1
  281. package/dist/openclaw-message-bridge.d.ts +0 -8
  282. package/dist/openclaw-message-bridge.js +0 -93
  283. package/dist/openclaw-message-bridge.js.map +0 -1
  284. package/dist/openclaw-pending.d.ts +0 -8
  285. package/dist/openclaw-pending.js +0 -47
  286. package/dist/openclaw-pending.js.map +0 -1
  287. package/dist/openclaw-plugin.d.ts +0 -75
  288. package/dist/openclaw-plugin.js +0 -1353
  289. package/dist/openclaw-plugin.js.map +0 -1
  290. package/dist/openclaw-session-access.d.ts +0 -12
  291. package/dist/openclaw-session-access.js +0 -79
  292. package/dist/openclaw-session-access.js.map +0 -1
  293. package/dist/opencode-plugin.d.ts +0 -88
  294. package/dist/opencode-plugin.js +0 -286
  295. package/dist/opencode-plugin.js.map +0 -1
  296. package/dist/orca-session-title.d.ts +0 -11
  297. package/dist/orca-session-title.js +0 -111
  298. package/dist/orca-session-title.js.map +0 -1
  299. package/dist/pack-feedback-slice.d.ts +0 -35
  300. package/dist/pack-feedback-slice.js +0 -126
  301. package/dist/pack-feedback-slice.js.map +0 -1
  302. package/dist/pairing-qr.d.ts +0 -5
  303. package/dist/pairing-qr.js +0 -24
  304. package/dist/pairing-qr.js.map +0 -1
  305. package/dist/pending-pairing.d.ts +0 -38
  306. package/dist/pending-pairing.js +0 -70
  307. package/dist/pending-pairing.js.map +0 -1
  308. package/dist/platform.d.ts +0 -67
  309. package/dist/platform.js +0 -140
  310. package/dist/platform.js.map +0 -1
  311. package/dist/process-identity.d.ts +0 -26
  312. package/dist/process-identity.js +0 -82
  313. package/dist/process-identity.js.map +0 -1
  314. package/dist/program.d.ts +0 -59
  315. package/dist/program.js +0 -691
  316. package/dist/program.js.map +0 -1
  317. package/dist/project-enablement.d.ts +0 -21
  318. package/dist/project-enablement.js +0 -71
  319. package/dist/project-enablement.js.map +0 -1
  320. package/dist/question-settlement-process.d.ts +0 -17
  321. package/dist/question-settlement-process.js +0 -35
  322. package/dist/question-settlement-process.js.map +0 -1
  323. package/dist/question-timing.d.ts +0 -46
  324. package/dist/question-timing.js +0 -48
  325. package/dist/question-timing.js.map +0 -1
  326. package/dist/readiness.d.ts +0 -153
  327. package/dist/readiness.js +0 -149
  328. package/dist/readiness.js.map +0 -1
  329. package/dist/release.d.ts +0 -31
  330. package/dist/release.js +0 -52
  331. package/dist/release.js.map +0 -1
  332. package/dist/send-attempts.d.ts +0 -26
  333. package/dist/send-attempts.js +0 -139
  334. package/dist/send-attempts.js.map +0 -1
  335. package/dist/send.d.ts +0 -115
  336. package/dist/send.js +0 -421
  337. package/dist/send.js.map +0 -1
  338. package/dist/session-activation.d.ts +0 -13
  339. package/dist/session-activation.js +0 -64
  340. package/dist/session-activation.js.map +0 -1
  341. package/dist/session-attendant-probe.d.ts +0 -85
  342. package/dist/session-attendant-probe.js +0 -173
  343. package/dist/session-attendant-probe.js.map +0 -1
  344. package/dist/session-attendant-state.d.ts +0 -70
  345. package/dist/session-attendant-state.js +0 -256
  346. package/dist/session-attendant-state.js.map +0 -1
  347. package/dist/session-attendant.d.ts +0 -143
  348. package/dist/session-attendant.js +0 -520
  349. package/dist/session-attendant.js.map +0 -1
  350. package/dist/session-delivery.d.ts +0 -249
  351. package/dist/session-delivery.js +0 -576
  352. package/dist/session-delivery.js.map +0 -1
  353. package/dist/session-handoff.d.ts +0 -98
  354. package/dist/session-handoff.js +0 -118
  355. package/dist/session-handoff.js.map +0 -1
  356. package/dist/session-input-wakes.d.ts +0 -78
  357. package/dist/session-input-wakes.js +0 -239
  358. package/dist/session-input-wakes.js.map +0 -1
  359. package/dist/session-inputs.d.ts +0 -57
  360. package/dist/session-inputs.js +0 -434
  361. package/dist/session-inputs.js.map +0 -1
  362. package/dist/session-labels.d.ts +0 -56
  363. package/dist/session-labels.js +0 -396
  364. package/dist/session-labels.js.map +0 -1
  365. package/dist/session-message-handoff.d.ts +0 -39
  366. package/dist/session-message-handoff.js +0 -107
  367. package/dist/session-message-handoff.js.map +0 -1
  368. package/dist/setup-destinations.d.ts +0 -23
  369. package/dist/setup-destinations.js +0 -44
  370. package/dist/setup-destinations.js.map +0 -1
  371. package/dist/skill-integrity.d.ts +0 -54
  372. package/dist/skill-integrity.js +0 -164
  373. package/dist/skill-integrity.js.map +0 -1
  374. package/dist/skill-source/manifest.json +0 -40
  375. package/dist/skill-source/notifai/SKILL.md +0 -350
  376. package/dist/skill-source/notifai/references/diagnostics.md +0 -36
  377. package/dist/skill-source/notifai/references/harness-setup.md +0 -384
  378. package/dist/skill-source/notifai/references/native-questions.md +0 -51
  379. package/dist/skill-source/notifai/references/notes-and-edits.md +0 -54
  380. package/dist/skill-source/notifai/references/send-details.md +0 -14
  381. package/dist/skill-source/notifai/references/updates.md +0 -116
  382. package/dist/skill-source/notifai/references/writing-examples.md +0 -56
  383. package/dist/sound-ref.d.ts +0 -23
  384. package/dist/sound-ref.js +0 -28
  385. package/dist/sound-ref.js.map +0 -1
  386. package/dist/ui/banner.d.ts +0 -22
  387. package/dist/ui/banner.js +0 -87
  388. package/dist/ui/banner.js.map +0 -1
  389. package/dist/ui/config-view.d.ts +0 -30
  390. package/dist/ui/config-view.js +0 -108
  391. package/dist/ui/config-view.js.map +0 -1
  392. package/dist/ui/help.d.ts +0 -44
  393. package/dist/ui/help.js +0 -107
  394. package/dist/ui/help.js.map +0 -1
  395. package/dist/ui/theme.d.ts +0 -90
  396. package/dist/ui/theme.js +0 -244
  397. package/dist/ui/theme.js.map +0 -1
  398. package/dist/update-handoff.d.ts +0 -29
  399. package/dist/update-handoff.js +0 -69
  400. package/dist/update-handoff.js.map +0 -1
  401. package/dist/url-policy.d.ts +0 -85
  402. package/dist/url-policy.js +0 -369
  403. package/dist/url-policy.js.map +0 -1
  404. package/dist/version.d.ts +0 -40
  405. package/dist/version.js +0 -132
  406. package/dist/version.js.map +0 -1
  407. package/dist/wake-support.d.ts +0 -40
  408. package/dist/wake-support.js +0 -95
  409. package/dist/wake-support.js.map +0 -1
@@ -1,16 +0,0 @@
1
- export declare const CLI_PACKAGE_NAME = "@raidiant/notifai";
2
- export declare const CLI_UPDATE_AVAILABLE = "A newer Notifai is available.";
3
- export declare const SERVICE_UPDATE_IN_PROGRESS = "The service is being updated; try again later.";
4
- export declare function cliPackageSpec(version: string): string;
5
- export declare function cliDistTagsUrl(): string;
6
- export type CliUpdateChannel = 'stable' | 'beta';
7
- /** A prerelease installation belongs to the beta channel; everything else is stable. */
8
- export declare function cliUpdateChannel(version: string | null): CliUpdateChannel;
9
- /**
10
- * Resolve the current published CLI independently of every installed
11
- * `notifai` command. The fetched build owns the locally derived prefix repair,
12
- * so this action neither invokes the stale PATH winner nor exposes local
13
- * installation paths. A beta tester stays on the beta channel, which also
14
- * delivers a stable release once it is the newer one.
15
- */
16
- export declare function cliUpdateRecoveryCommand(channel?: CliUpdateChannel): string;
@@ -1,27 +0,0 @@
1
- import { isPrerelease } from './version.js';
2
- export const CLI_PACKAGE_NAME = '@raidiant/notifai';
3
- export const CLI_UPDATE_AVAILABLE = 'A newer Notifai is available.';
4
- export const SERVICE_UPDATE_IN_PROGRESS = 'The service is being updated; try again later.';
5
- export function cliPackageSpec(version) {
6
- return `${CLI_PACKAGE_NAME}@${version}`;
7
- }
8
- export function cliDistTagsUrl() {
9
- return `https://registry.npmjs.org/-/package/${CLI_PACKAGE_NAME}/dist-tags`;
10
- }
11
- /** A prerelease installation belongs to the beta channel; everything else is stable. */
12
- export function cliUpdateChannel(version) {
13
- return version !== null && isPrerelease(version) ? 'beta' : 'stable';
14
- }
15
- /**
16
- * Resolve the current published CLI independently of every installed
17
- * `notifai` command. The fetched build owns the locally derived prefix repair,
18
- * so this action neither invokes the stale PATH winner nor exposes local
19
- * installation paths. A beta tester stays on the beta channel, which also
20
- * delivers a stable release once it is the newer one.
21
- */
22
- export function cliUpdateRecoveryCommand(channel = 'stable') {
23
- return channel === 'beta'
24
- ? `npx --yes ${cliPackageSpec('beta')} update --channel beta`
25
- : `npx --yes ${cliPackageSpec('latest')} update`;
26
- }
27
- //# sourceMappingURL=cli-contract.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-contract.js","sourceRoot":"","sources":["../src/cli-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAA;AAEnD,MAAM,CAAC,MAAM,oBAAoB,GAAG,+BAA+B,CAAA;AACnE,MAAM,CAAC,MAAM,0BAA0B,GAAG,gDAAgD,CAAA;AAE1F,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,GAAG,gBAAgB,IAAI,OAAO,EAAE,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,wCAAwC,gBAAgB,YAAY,CAAA;AAC7E,CAAC;AAID,wFAAwF;AACxF,MAAM,UAAU,gBAAgB,CAAC,OAAsB;IACrD,OAAO,OAAO,KAAK,IAAI,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA;AACtE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,UAA4B,QAAQ;IAC3E,OAAO,OAAO,KAAK,MAAM;QACvB,CAAC,CAAC,aAAa,cAAc,CAAC,MAAM,CAAC,wBAAwB;QAC7D,CAAC,CAAC,aAAa,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAA;AACpD,CAAC"}
@@ -1,36 +0,0 @@
1
- import { type CliUpdateChannel } from './cli-contract.js';
2
- /** The npm dist-tags a CLI installation can update to. */
3
- export interface CliDistTags {
4
- latest: string;
5
- beta: string | null;
6
- }
7
- export interface CliReleaseTarget {
8
- version: string;
9
- dist_tag: 'latest' | 'beta';
10
- }
11
- export declare function shouldConsultCliRegistry(input: {
12
- env?: NodeJS.ProcessEnv;
13
- }): boolean;
14
- /**
15
- * Accept a registry dist-tags document only when every tag an update can
16
- * follow is well formed: `latest` is a stable release and `beta`, when
17
- * present, is a prerelease. Anything else is unreadable, never a guess.
18
- */
19
- export declare function parseCliDistTags(body: unknown): CliDistTags | null;
20
- export declare function publishedCliDistTags(fetchImpl?: typeof fetch, options?: {
21
- useCache?: boolean;
22
- }): Promise<CliDistTags | null>;
23
- /**
24
- * The release a channel updates to. Stable follows `latest`. Beta follows
25
- * whichever of `beta` and `latest` has the higher SemVer precedence, so a
26
- * tester moves on to the stable release once it ships.
27
- */
28
- export declare function cliReleaseTarget(tags: CliDistTags, channel: CliUpdateChannel): CliReleaseTarget;
29
- /**
30
- * The published release newer than `local` on the channel `local` belongs to,
31
- * or null. A prerelease installation is offered both newer betas and the
32
- * stable release that supersedes it.
33
- */
34
- export declare function newerPublishedCli(local: string | null, tags: CliDistTags | null): string | null;
35
- export declare function thisCliVersion(): string | null;
36
- export declare function resetPublishedCliDistTagsForTest(): void;
@@ -1,85 +0,0 @@
1
- import { packageVersion } from './release.js';
2
- import { cliDistTagsUrl, cliUpdateChannel } from './cli-contract.js';
3
- import { compareReleasePrecedence, isPrerelease, isSemVer } from './version.js';
4
- /**
5
- * The newest published CLI, read from the registry that publishes it.
6
- *
7
- * Which version is newest is a registry fact. Doctor consults it as a
8
- * best-effort, cached, short-timeout hint in human and structured diagnostics.
9
- * Automatic lifecycle notices have their own persistent throttle.
10
- */
11
- const DIST_TAGS_URL = cliDistTagsUrl();
12
- const REQUEST_TIMEOUT_MS = 2_000;
13
- const CACHE_TTL_MS = 60 * 60 * 1000;
14
- let cached = null;
15
- export function shouldConsultCliRegistry(input) {
16
- const ci = input.env?.['CI'];
17
- return ci !== '1' && ci !== 'true';
18
- }
19
- /**
20
- * Accept a registry dist-tags document only when every tag an update can
21
- * follow is well formed: `latest` is a stable release and `beta`, when
22
- * present, is a prerelease. Anything else is unreadable, never a guess.
23
- */
24
- export function parseCliDistTags(body) {
25
- if (typeof body !== 'object' || body === null)
26
- return null;
27
- const { latest, beta } = body;
28
- if (typeof latest !== 'string' || !isSemVer(latest) || isPrerelease(latest))
29
- return null;
30
- if (beta === undefined)
31
- return { latest, beta: null };
32
- if (typeof beta !== 'string' || !isPrerelease(beta))
33
- return null;
34
- return { latest, beta };
35
- }
36
- export async function publishedCliDistTags(fetchImpl = fetch, options = {}) {
37
- if (options.useCache !== false && cached !== null && Date.now() - cached.at < CACHE_TTL_MS)
38
- return cached.value;
39
- try {
40
- const response = await fetchImpl(DIST_TAGS_URL, {
41
- headers: { accept: 'application/json' },
42
- signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS),
43
- });
44
- if (!response.ok)
45
- return null;
46
- const tags = parseCliDistTags(await response.json());
47
- if (tags === null)
48
- return null;
49
- if (options.useCache !== false)
50
- cached = { value: tags, at: Date.now() };
51
- return tags;
52
- }
53
- catch {
54
- return null;
55
- }
56
- }
57
- /**
58
- * The release a channel updates to. Stable follows `latest`. Beta follows
59
- * whichever of `beta` and `latest` has the higher SemVer precedence, so a
60
- * tester moves on to the stable release once it ships.
61
- */
62
- export function cliReleaseTarget(tags, channel) {
63
- if (channel === 'beta' && tags.beta !== null && compareReleasePrecedence(tags.beta, tags.latest) === 'after') {
64
- return { version: tags.beta, dist_tag: 'beta' };
65
- }
66
- return { version: tags.latest, dist_tag: 'latest' };
67
- }
68
- /**
69
- * The published release newer than `local` on the channel `local` belongs to,
70
- * or null. A prerelease installation is offered both newer betas and the
71
- * stable release that supersedes it.
72
- */
73
- export function newerPublishedCli(local, tags) {
74
- if (local === null || tags === null)
75
- return null;
76
- const target = cliReleaseTarget(tags, cliUpdateChannel(local));
77
- return compareReleasePrecedence(target.version, local) === 'after' ? target.version : null;
78
- }
79
- export function thisCliVersion() {
80
- return packageVersion();
81
- }
82
- export function resetPublishedCliDistTagsForTest() {
83
- cached = null;
84
- }
85
- //# sourceMappingURL=cli-release.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-release.js","sourceRoot":"","sources":["../src/cli-release.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAyB,MAAM,mBAAmB,CAAA;AAC3F,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE/E;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,cAAc,EAAE,CAAA;AACtC,MAAM,kBAAkB,GAAG,KAAK,CAAA;AAChC,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAanC,IAAI,MAAM,GAAqD,IAAI,CAAA;AAEnE,MAAM,UAAU,wBAAwB,CAAC,KAExC;IACC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IAC5B,OAAO,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,MAAM,CAAA;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAC1D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAA4C,CAAA;IACrE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAA;IACxF,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IACrD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAChE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,YAA0B,KAAK,EAC/B,UAAkC,EAAE;IAEpC,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,YAAY;QAAE,OAAO,MAAM,CAAC,KAAK,CAAA;IAC/G,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,aAAa,EAAE;YAC9C,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;YACvC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC;SAChD,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,IAAI,CAAA;QAC7B,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;QACpD,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAC9B,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK;YAAE,MAAM,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;QACxE,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAiB,EAAE,OAAyB;IAC3E,IAAI,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC;QAC7G,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;IACjD,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAoB,EAAE,IAAwB;IAC9E,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAChD,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9D,OAAO,wBAAwB,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;AAC5F,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,cAAc,EAAE,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,gCAAgC;IAC9C,MAAM,GAAG,IAAI,CAAA;AACf,CAAC"}
package/dist/client.d.ts DELETED
@@ -1,109 +0,0 @@
1
- import type { AttendanceRequestT, AttendanceResponse, AlphaAccessRequestResponse, AccountAccessResponse, BeginPairingResponse, CapabilityDocument, CreateMediaUploadRequestT, CreateMediaUploadResponse, FinalizeMediaUploadResponse, EvidenceSnapshot, GetAgentAcknowledgementResponse, ListDevicesResponse, ListSoundsResponse, ClaimDeliveryAttemptRequestT, ClaimDeliveryAttemptResponse, ClientCapability, CloseDisposition, CloseRepliesResponse, CompatibilityResponse, GetSessionMessageAcknowledgementResponse, RecoveryAction, ListRepliesResponse, Platform, PollPairingResponse, PutAgentAcknowledgementRequestT, PutAgentAcknowledgementResponse, RecordHarnessAnswerRequestT, RecordHarnessAnswerResponse, PutAgentSessionLabelRequestT, PutSessionMessageAcknowledgementRequestT, PutSessionMessageAcknowledgementResponse, ReportDeliveryAttemptRequestT, ReportDeliveryAttemptResponse, AgentSessionView, SubmissionReceipt, SubmitNotificationRequestT } from '@raidiant/notifai-protocol';
2
- import type { Logger } from './logging.js';
3
- export declare class ApiCallError extends Error {
4
- status: number;
5
- code: string;
6
- nextAction: string | null;
7
- details: unknown;
8
- recoveryAction: RecoveryAction | null;
9
- constructor(status: number, code: string, message: string, nextAction?: string | null, details?: unknown, recoveryAction?: RecoveryAction | null);
10
- }
11
- export declare class NetworkError extends Error {
12
- }
13
- /**
14
- * Whether a replies-poll failure is temporary while the durable request stays
15
- * live. Transport faults, throttling, request timeouts, and server failures
16
- * can recover on a later poll; client errors cannot be repaired by retrying
17
- * the same authenticated request.
18
- */
19
- export declare function isRetryableReplyPollError(err: unknown): boolean;
20
- export interface ApiClient {
21
- beginPairing(body: {
22
- machine_name: string;
23
- credential_hash: string;
24
- poll_verifier_hash: string;
25
- confirmation_hash: string;
26
- }): Promise<BeginPairingResponse>;
27
- pollPairing(pairingId: string, pollVerifier: string): Promise<PollPairingResponse>;
28
- requestPairingNotification(pairingId: string, pollVerifier: string, email: string): Promise<{
29
- status: 'requested';
30
- }>;
31
- accessStatus(): Promise<AccountAccessResponse>;
32
- /**
33
- * Read-only. There is no client-side write: filing this errand is the
34
- * User's decision, and the server refuses it from a machine credential.
35
- */
36
- accessRequest(): Promise<AlphaAccessRequestResponse>;
37
- listDevices(): Promise<ListDevicesResponse>;
38
- listSounds(): Promise<ListSoundsResponse>;
39
- capabilities(platform?: Platform, appVersion?: string, appBuild?: string): Promise<CapabilityDocument>;
40
- compatibility(): Promise<CompatibilityResponse>;
41
- submit(body: SubmitNotificationRequestT, waitSeconds: number): Promise<SubmissionReceipt>;
42
- evidence(requestId: string): Promise<EvidenceSnapshot>;
43
- replies(requestId: string, options: {
44
- waitSeconds: number;
45
- afterSeq: number;
46
- }): Promise<ListRepliesResponse>;
47
- /**
48
- * Close a question's reply window and return the replies committed before
49
- * the close fence. `disposition` says why: `deliver` only when this caller
50
- * will claim the fenced answer for hand-off, `retire` on every retirement.
51
- * Without one the close records none, exactly as released CLIs do.
52
- */
53
- closeReplies(requestId: string): Promise<ListRepliesResponse>;
54
- closeReplies(requestId: string, disposition: CloseDisposition): Promise<CloseRepliesResponse>;
55
- closeReplies(requestId: string, disposition?: CloseDisposition): Promise<ListRepliesResponse | CloseRepliesResponse>;
56
- putAgentAcknowledgement(requestId: string, body: PutAgentAcknowledgementRequestT): Promise<PutAgentAcknowledgementResponse>;
57
- recordHarnessAnswer(requestId: string, body: RecordHarnessAnswerRequestT): Promise<RecordHarnessAnswerResponse>;
58
- putAgentSessionLabel(body: PutAgentSessionLabelRequestT): Promise<AgentSessionView>;
59
- agentAcknowledgement(requestId: string, options: {
60
- waitSeconds: number;
61
- }): Promise<GetAgentAcknowledgementResponse>;
62
- createMediaUpload(body: CreateMediaUploadRequestT): Promise<CreateMediaUploadResponse>;
63
- finalizeMediaUpload(mediaId: string): Promise<FinalizeMediaUploadResponse>;
64
- uploadMedia(grant: CreateMediaUploadResponse, bytes: Uint8Array): Promise<void>;
65
- health(): Promise<boolean>;
66
- /**
67
- * One Session Attendant exchange for an exact Agent Session. The server may
68
- * hold a `running` exchange up to `waitSeconds`; `signal` cuts it short.
69
- */
70
- attend(sessionId: string, body: AttendanceRequestT, options: {
71
- waitSeconds: number;
72
- signal?: AbortSignal;
73
- }): Promise<AttendanceResponse>;
74
- /** Claim one hand-off into an Agent Session under the lease generation held. */
75
- claimDeliveryAttempt(sessionId: string, body: ClaimDeliveryAttemptRequestT): Promise<ClaimDeliveryAttemptResponse>;
76
- /** Report how a claimed hand-off ended; accepted from the attempt's machine only. */
77
- reportDeliveryAttempt(attemptId: string, body: ReportDeliveryAttemptRequestT): Promise<ReportDeliveryAttemptResponse>;
78
- putSessionMessageAcknowledgement(messageId: string, body: PutSessionMessageAcknowledgementRequestT): Promise<PutSessionMessageAcknowledgementResponse>;
79
- sessionMessageAcknowledgement(messageId: string): Promise<GetSessionMessageAcknowledgementResponse>;
80
- }
81
- export interface ClientOptions {
82
- /**
83
- * Ceiling for a single request, on top of any long poll the server has been
84
- * asked to hold. Callers running inside a harness hook shrink this so their
85
- * whole network path stays inside the budget the harness allows them.
86
- */
87
- timeoutMs?: number;
88
- /**
89
- * Absolute wall-clock ceiling for the caller's whole operation. This is
90
- * intentionally separate from `timeoutMs`: a late long poll must not get a
91
- * fresh per-request allowance after its owning harness hook is nearly done.
92
- */
93
- deadlineAt?: number;
94
- /** Test seam for `deadlineAt`; production uses the wall clock. */
95
- now?: () => number;
96
- /**
97
- * Records each call locally. Worth having because the two failures that cost
98
- * the most time — a server older than this CLI, and a network path that only
99
- * fails inside a hook — both look identical from outside and are told apart
100
- * instantly by a status code and a duration.
101
- */
102
- logger?: Pick<Logger, 'debug' | 'error'>;
103
- /** Artifact identity and named jobs advertised only on authenticated traffic. */
104
- cliVersion?: string | null;
105
- capabilities?: readonly ClientCapability[];
106
- /** Complete Notification Request schema this authenticated client will submit. */
107
- notificationContractFingerprint?: string | null;
108
- }
109
- export declare function createClient(baseUrl: string, bearer: string | null, options?: ClientOptions): ApiClient;
package/dist/client.js DELETED
@@ -1,217 +0,0 @@
1
- import { CAPABILITIES_HEADER, CLI_VERSION_HEADER, NOTIFICATION_CONTRACT_HEADER, } from '@raidiant/notifai-protocol';
2
- export class ApiCallError extends Error {
3
- status;
4
- code;
5
- nextAction;
6
- details;
7
- recoveryAction;
8
- constructor(status, code, message, nextAction = null, details = null, recoveryAction = null) {
9
- super(message);
10
- this.status = status;
11
- this.code = code;
12
- this.nextAction = nextAction;
13
- this.details = details;
14
- this.recoveryAction = recoveryAction;
15
- }
16
- }
17
- export class NetworkError extends Error {
18
- }
19
- /**
20
- * Whether a replies-poll failure is temporary while the durable request stays
21
- * live. Transport faults, throttling, request timeouts, and server failures
22
- * can recover on a later poll; client errors cannot be repaired by retrying
23
- * the same authenticated request.
24
- */
25
- export function isRetryableReplyPollError(err) {
26
- if (err instanceof NetworkError)
27
- return true;
28
- if (!(err instanceof ApiCallError))
29
- return false;
30
- return err.status >= 500 || err.status === 429 || err.status === 408;
31
- }
32
- /**
33
- * A deadline that fired reads as an abort, which says nothing useful on its
34
- * own. Naming the timeout is what lets someone tell a hung server apart from a
35
- * refused connection.
36
- */
37
- function networkFailure(err, root, limitMs) {
38
- const name = err instanceof Error ? err.name : '';
39
- if (name === 'TimeoutError' || name === 'AbortError') {
40
- return new NetworkError(`${root} did not respond within ${Math.round(limitMs / 1000)}s`);
41
- }
42
- return new NetworkError(`Could not reach ${root}: ${String(err)}`);
43
- }
44
- /** Generous enough for a slow link, short enough that nothing hangs for ever. */
45
- const DEFAULT_TIMEOUT_MS = 20_000;
46
- export function createClient(baseUrl, bearer, options = {}) {
47
- const root = baseUrl.replace(/\/$/, '');
48
- const budgetMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
49
- const now = options.now ?? Date.now;
50
- const logger = options.logger;
51
- const clientHeaders = bearer
52
- ? {
53
- ...(options.cliVersion ? { [CLI_VERSION_HEADER]: options.cliVersion } : {}),
54
- ...(options.capabilities
55
- ? { [CAPABILITIES_HEADER]: options.capabilities.join(',') }
56
- : {}),
57
- ...(options.notificationContractFingerprint
58
- ? { [NOTIFICATION_CONTRACT_HEADER]: options.notificationContractFingerprint }
59
- : {}),
60
- }
61
- : {};
62
- async function call(method, apiPath, body,
63
- /** Seconds the server was asked to hold the connection open. */
64
- serverWaitSeconds = 0, abort) {
65
- const startedAt = Date.now();
66
- try {
67
- const result = await callOnce(method, apiPath, body, serverWaitSeconds, abort);
68
- logger?.debug('http.call', {
69
- method,
70
- path: apiPath,
71
- ok: true,
72
- duration_ms: Date.now() - startedAt,
73
- });
74
- return result;
75
- }
76
- catch (err) {
77
- logger?.error('http.call', {
78
- method,
79
- path: apiPath,
80
- ok: false,
81
- duration_ms: Date.now() - startedAt,
82
- ...(err instanceof ApiCallError
83
- ? { status: err.status, code: err.code, message: err.message, details: err.details }
84
- : { message: String(err) }),
85
- });
86
- throw err;
87
- }
88
- }
89
- async function callOnce(method, apiPath, body, serverWaitSeconds = 0, abort) {
90
- // Without this, a server that accepts the connection and then never answers
91
- // hangs until the harness kills the whole hook — and the reply-poll deadline
92
- // cannot interrupt an individual fetch. The signal covers the
93
- // body read too, not just the response headers.
94
- const requestBudgetMs = budgetMs + serverWaitSeconds * 1000;
95
- const remainingMs = options.deadlineAt === undefined
96
- ? requestBudgetMs
97
- : Math.max(1, options.deadlineAt - now());
98
- const limitMs = Math.max(1, Math.min(requestBudgetMs, remainingMs));
99
- const timeout = AbortSignal.timeout(limitMs);
100
- const signal = abort === undefined ? timeout : AbortSignal.any([timeout, abort]);
101
- let response;
102
- try {
103
- response = await fetch(`${root}${apiPath}`, {
104
- method,
105
- headers: {
106
- ...(body !== undefined ? { 'content-type': 'application/json' } : {}),
107
- ...(bearer ? { authorization: bearer } : {}),
108
- ...clientHeaders,
109
- },
110
- signal,
111
- ...(bearer ? { redirect: 'error' } : {}),
112
- ...(body !== undefined ? { body: JSON.stringify(body) } : {}),
113
- });
114
- }
115
- catch (err) {
116
- throw networkFailure(err, root, limitMs);
117
- }
118
- if (!response.ok) {
119
- let parsed = null;
120
- try {
121
- parsed = (await response.json());
122
- }
123
- catch {
124
- // non-JSON body
125
- }
126
- throw new ApiCallError(response.status, parsed?.error.code ?? 'internal_error', parsed?.error.message ?? `Request failed with status ${response.status}`, parsed?.error.next_action ?? null, parsed?.error.details ?? null, parsed?.error.recovery_action ?? null);
127
- }
128
- if (response.status === 204)
129
- return undefined;
130
- try {
131
- return (await response.json());
132
- }
133
- catch (err) {
134
- // A truncated or abandoned body is a transport failure, not a protocol
135
- // one: it must be retryable like any other, not surface as a raw abort.
136
- throw networkFailure(err, root, limitMs);
137
- }
138
- }
139
- return {
140
- beginPairing: (body) => call('POST', '/api/v1/pairings', body),
141
- pollPairing: (pairingId, pollVerifier) => call('POST', `/api/v1/pairings/${encodeURIComponent(pairingId)}/poll`, {
142
- poll_verifier: pollVerifier,
143
- }),
144
- requestPairingNotification: (pairingId, pollVerifier, email) => call('POST', `/api/v1/pairings/${encodeURIComponent(pairingId)}/notification`, { poll_verifier: pollVerifier, email }),
145
- accessStatus: () => call('GET', '/api/v1/account/access'),
146
- accessRequest: () => call('GET', '/api/v1/account/alpha-access-request'),
147
- listDevices: () => call('GET', '/api/v1/devices'),
148
- listSounds: () => call('GET', '/api/v1/sounds'),
149
- capabilities: (platform = 'ios', appVersion, appBuild) => {
150
- const query = new URLSearchParams();
151
- if (appVersion !== undefined)
152
- query.set('app_version', appVersion);
153
- if (appBuild !== undefined)
154
- query.set('app_build', appBuild);
155
- const suffix = query.size > 0 ? `?${query.toString()}` : '';
156
- return call('GET', `/api/v1/capabilities/${encodeURIComponent(platform)}${suffix}`);
157
- },
158
- compatibility: () => call('GET', '/api/v1/compatibility'),
159
- submit: (body, waitSeconds) => call('POST', `/api/v1/notifications?wait_seconds=${waitSeconds}`, body, waitSeconds),
160
- evidence: (requestId) => call('GET', `/api/v1/notifications/${encodeURIComponent(requestId)}`),
161
- replies: (requestId, { waitSeconds, afterSeq }) => call('GET', `/api/v1/notifications/${encodeURIComponent(requestId)}/replies?wait_seconds=${waitSeconds}&after_seq=${afterSeq}`, undefined, waitSeconds),
162
- closeReplies: ((requestId, disposition) => call('POST', `/api/v1/notifications/${encodeURIComponent(requestId)}/replies/close`, disposition === undefined ? undefined : { disposition })),
163
- putAgentAcknowledgement: (requestId, body) => call('PUT', `/api/v1/notifications/${encodeURIComponent(requestId)}/agent-acknowledgement`, body),
164
- recordHarnessAnswer: (requestId, body) => call('POST', `/api/v1/notifications/${encodeURIComponent(requestId)}/harness-answers`, body),
165
- putAgentSessionLabel: (body) => call('PUT', '/api/v1/agent-sessions/label', body),
166
- agentAcknowledgement: (requestId, { waitSeconds }) => call('GET', `/api/v1/notifications/${encodeURIComponent(requestId)}/agent-acknowledgement?wait_seconds=${waitSeconds}`, undefined, waitSeconds),
167
- createMediaUpload: (body) => call('POST', '/api/v1/media', body),
168
- // Storage-observed bytes become authoritative before a send can reference
169
- // the upload; the caller's declared size is only a request.
170
- finalizeMediaUpload: (mediaId) => call('POST', `/api/v1/media/${encodeURIComponent(mediaId)}/finalize`),
171
- uploadMedia: async (grant, bytes) => {
172
- let response;
173
- try {
174
- response = await fetch(grant.upload_url, {
175
- method: 'PUT',
176
- headers: grant.upload_headers,
177
- body: bytes,
178
- // Media can be large, so this gets its own allowance rather than the
179
- // per-request budget — but still a finite one.
180
- signal: AbortSignal.timeout(Math.max(budgetMs, 60_000)),
181
- // The grant names one exact destination and carries signed headers.
182
- // A redirect would replay both against an origin the server never
183
- // granted, so it is refused rather than followed.
184
- redirect: 'manual',
185
- });
186
- }
187
- catch (err) {
188
- throw new NetworkError(`Upload failed: ${String(err)}`);
189
- }
190
- if (response.status >= 300 && response.status < 400) {
191
- throw new NetworkError(`Upload redirect is refused, not followed: the grant's headers are signed for one exact destination`);
192
- }
193
- if (!response.ok) {
194
- throw new NetworkError(`Upload rejected with status ${response.status}`);
195
- }
196
- // A successful storage PUT is not authorization to reference the media.
197
- // The idempotent finalize call makes the server inspect provider metadata
198
- // and commit authoritative quota before the command can use media_id.
199
- await call('POST', `/api/v1/media/${encodeURIComponent(grant.media_id)}/finalize`);
200
- },
201
- health: async () => {
202
- try {
203
- await call('GET', '/healthz');
204
- return true;
205
- }
206
- catch {
207
- return false;
208
- }
209
- },
210
- attend: (sessionId, body, { waitSeconds, signal }) => call('POST', `/api/v1/agent-sessions/${encodeURIComponent(sessionId)}/attendance?wait_seconds=${waitSeconds}`, body, waitSeconds, signal),
211
- claimDeliveryAttempt: (sessionId, body) => call('POST', `/api/v1/agent-sessions/${encodeURIComponent(sessionId)}/delivery-attempts`, body),
212
- reportDeliveryAttempt: (attemptId, body) => call('POST', `/api/v1/delivery-attempts/${encodeURIComponent(attemptId)}/report`, body),
213
- putSessionMessageAcknowledgement: (messageId, body) => call('PUT', `/api/v1/session-messages/${encodeURIComponent(messageId)}/agent-acknowledgement`, body),
214
- sessionMessageAcknowledgement: (messageId) => call('GET', `/api/v1/session-messages/${encodeURIComponent(messageId)}/agent-acknowledgement`),
215
- };
216
- }
217
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- export interface CodexAnswerControl {
2
- namespace: string;
3
- threadId: string;
4
- /** Revalidate after preparation; this is not proof a form is unanswered. */
5
- currentTurn(turnId: string): Promise<boolean>;
6
- /** A success receipt proves admission to this turn, not agent acknowledgement. */
7
- steer(turnId: string, text: string): Promise<void>;
8
- close(): void;
9
- }
10
- /** Optional bounded-turn capability, independent of queue support. A missing
11
- * read API returns null before answer bytes; the caller uses ordinary input.
12
- * The owner, lease and bound question must still be fenced by the caller.
13
- */
14
- export declare function connectCodexAnswerControl(sessionId: string, turnId: string, env: NodeJS.ProcessEnv, deadlineAt: number, now?: () => number): Promise<CodexAnswerControl | null>;
@@ -1,41 +0,0 @@
1
- /** Bounded native answer transport. Exact question evidence belongs to bindings. */
2
- import { connectCodexControl } from './codex-native-control.js';
3
- /** Optional bounded-turn capability, independent of queue support. A missing
4
- * read API returns null before answer bytes; the caller uses ordinary input.
5
- * The owner, lease and bound question must still be fenced by the caller.
6
- */
7
- export async function connectCodexAnswerControl(sessionId, turnId, env, deadlineAt, now = () => performance.now()) {
8
- const control = await connectCodexControl(sessionId, env, deadlineAt, now);
9
- if (control === null)
10
- return null;
11
- const currentTurn = async (expected) => {
12
- // Full thread/read can exceed the response bound in an ordinary long
13
- // session. Question identity comes from the owned accepted transcript.
14
- const result = await control.call('thread/turns/list', {
15
- threadId: sessionId, limit: 1, sortDirection: 'desc', itemsView: 'notLoaded',
16
- });
17
- return result !== null && Array.isArray(result.data) && result.data.length === 1 &&
18
- result.data[0]?.id === expected && result.data[0]?.status === 'inProgress' &&
19
- result.data[0]?.itemsView === 'notLoaded';
20
- };
21
- try {
22
- if (!await currentTurn(turnId)) {
23
- control.close();
24
- return null;
25
- }
26
- return { namespace: control.namespace, threadId: control.threadId, currentTurn,
27
- steer: async (expected, text) => {
28
- const result = await control.call('turn/steer', {
29
- threadId: sessionId, expectedTurnId: expected, input: [{ type: 'text', text }],
30
- });
31
- if (result === null || result.turnId !== expected)
32
- throw new Error('Native answer receipt is unknown; do not replay it.');
33
- },
34
- close: () => control.close(), };
35
- }
36
- catch {
37
- control.close();
38
- return null;
39
- }
40
- }
41
- //# sourceMappingURL=codex-answer-control.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-answer-control.js","sourceRoot":"","sources":["../src/codex-answer-control.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAY/D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,SAAiB,EAAE,MAAc,EAAE,GAAsB,EAAE,UAAkB,EAC7E,MAAoB,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;IAE3C,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;IAC1E,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IACjC,MAAM,WAAW,GAAG,KAAK,EAAE,QAAgB,EAAoB,EAAE;QAC/D,qEAAqE;QACrE,uEAAuE;QACvE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE;YACrD,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW;SAC7E,CAAkF,CAAA;QACnF,OAAO,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAC9E,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,YAAY;YAC1E,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,KAAK,WAAW,CAAA;IAC7C,CAAC,CAAA;IACD,IAAI,CAAC;QACH,IAAI,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAAC,OAAO,IAAI,CAAA;QAAC,CAAC;QAChE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW;YAC5E,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;gBAC9B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE;oBAC9C,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;iBAC/E,CAA+B,CAAA;gBAChC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;YAC3H,CAAC;YACD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAC7B,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAAC,OAAO,IAAI,CAAA;IAAC,CAAC;AAC1C,CAAC"}
@@ -1,18 +0,0 @@
1
- import type { ServiceIdentity } from './credentials.js';
2
- import { connectCodexAnswerControl } from './codex-answer-control.js';
3
- import type { DeliveryLease } from './session-delivery.js';
4
- import type { NativeInputAnswers } from './session-inputs.js';
5
- export declare function codexAnswerPresentation(input: {
6
- sessionId: string;
7
- env: NodeJS.ProcessEnv;
8
- lease: DeliveryLease;
9
- ownerKey: string;
10
- turnId: string;
11
- transcriptPath: string | undefined;
12
- service: ServiceIdentity;
13
- deadline: number;
14
- mayWrite(): boolean;
15
- /** Credential stores may invoke the OS: call only outside state locks. */
16
- serviceCurrent(): boolean;
17
- connect?: typeof connectCodexAnswerControl;
18
- }): NativeInputAnswers;