@noopolis/daimon 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (404) hide show
  1. package/README.md +307 -45
  2. package/dist/contracts/attentionContract.d.ts +117 -0
  3. package/dist/contracts/attentionContract.d.ts.map +1 -0
  4. package/dist/contracts/attentionContract.js +14 -0
  5. package/dist/contracts/canonicalJson.d.ts +3 -0
  6. package/dist/contracts/canonicalJson.d.ts.map +1 -0
  7. package/dist/contracts/canonicalJson.js +54 -0
  8. package/dist/contracts/grokWorkerContract.d.ts +74 -0
  9. package/dist/contracts/grokWorkerContract.d.ts.map +1 -0
  10. package/dist/contracts/grokWorkerContract.js +88 -0
  11. package/dist/contracts/organizationRuntimeContract.d.ts +765 -0
  12. package/dist/contracts/organizationRuntimeContract.d.ts.map +1 -0
  13. package/dist/contracts/organizationRuntimeContract.js +121 -0
  14. package/dist/contracts/runtimeContractManifest.d.ts +1615 -0
  15. package/dist/contracts/runtimeContractManifest.d.ts.map +1 -0
  16. package/dist/contracts/runtimeContractManifest.js +181 -0
  17. package/dist/core/credentialRedaction.d.ts +4 -0
  18. package/dist/core/credentialRedaction.d.ts.map +1 -0
  19. package/dist/core/credentialRedaction.js +28 -0
  20. package/dist/core/siblingBuildFreshness.d.ts +21 -0
  21. package/dist/core/siblingBuildFreshness.d.ts.map +1 -0
  22. package/dist/core/siblingBuildFreshness.js +25 -0
  23. package/dist/core/types.d.ts +10 -1
  24. package/dist/core/types.d.ts.map +1 -1
  25. package/dist/examples/exampleCausalId.d.ts +3 -0
  26. package/dist/examples/exampleCausalId.d.ts.map +1 -0
  27. package/dist/examples/exampleCausalId.js +8 -0
  28. package/dist/examples/jungian-play-org.js +3 -2
  29. package/dist/examples/jungian-triad-org.js +3 -2
  30. package/dist/examples/jungianPlayAgent.d.ts +1 -1
  31. package/dist/examples/jungianPlayAgent.d.ts.map +1 -1
  32. package/dist/examples/jungianPlayAgent.js +1 -1
  33. package/dist/examples/jungianProfiles.d.ts +1 -1
  34. package/dist/examples/jungianProfiles.d.ts.map +1 -1
  35. package/dist/examples/jungianTriadProfiles.d.ts +1 -1
  36. package/dist/examples/jungianTriadProfiles.d.ts.map +1 -1
  37. package/dist/examples/pi-agent.js +3 -2
  38. package/dist/examples/pi-memory-org.js +6 -5
  39. package/dist/index.d.ts +1 -0
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +1 -0
  42. package/dist/mcp/toolServer.d.ts +31 -0
  43. package/dist/mcp/toolServer.d.ts.map +1 -0
  44. package/dist/mcp/toolServer.js +145 -0
  45. package/dist/observability/causalEvents.d.ts +118 -0
  46. package/dist/observability/causalEvents.d.ts.map +1 -0
  47. package/dist/observability/causalEvents.js +223 -0
  48. package/dist/observability/controlCausal.d.ts +117 -0
  49. package/dist/observability/controlCausal.d.ts.map +1 -0
  50. package/dist/observability/controlCausal.js +107 -0
  51. package/dist/observability/emitCausalFixture.d.ts +25 -0
  52. package/dist/observability/emitCausalFixture.d.ts.map +1 -0
  53. package/dist/observability/emitCausalFixture.js +98 -0
  54. package/dist/observability/index.d.ts +2 -0
  55. package/dist/observability/index.d.ts.map +1 -1
  56. package/dist/observability/index.js +2 -0
  57. package/dist/observability/orgObserver.d.ts.map +1 -1
  58. package/dist/observability/orgObserver.js +3 -3
  59. package/dist/pi/agyHeadlessResult.d.ts +60 -0
  60. package/dist/pi/agyHeadlessResult.d.ts.map +1 -0
  61. package/dist/pi/agyHeadlessResult.js +95 -0
  62. package/dist/pi/cliChildOutput.d.ts +67 -0
  63. package/dist/pi/cliChildOutput.d.ts.map +1 -0
  64. package/dist/pi/cliChildOutput.js +269 -0
  65. package/dist/pi/cliEngineRun.d.ts +16 -0
  66. package/dist/pi/cliEngineRun.d.ts.map +1 -0
  67. package/dist/pi/cliEngineRun.js +27 -0
  68. package/dist/pi/cliEngineSpawn.d.ts +55 -0
  69. package/dist/pi/cliEngineSpawn.d.ts.map +1 -0
  70. package/dist/pi/cliEngineSpawn.js +164 -0
  71. package/dist/pi/cliEnvironment.d.ts +12 -0
  72. package/dist/pi/cliEnvironment.d.ts.map +1 -0
  73. package/dist/pi/cliEnvironment.js +32 -0
  74. package/dist/pi/cliMcpRegistration.d.ts +61 -0
  75. package/dist/pi/cliMcpRegistration.d.ts.map +1 -0
  76. package/dist/pi/cliMcpRegistration.js +75 -0
  77. package/dist/pi/cliProcess.d.ts +7 -0
  78. package/dist/pi/cliProcess.d.ts.map +1 -0
  79. package/dist/pi/cliProcess.js +132 -0
  80. package/dist/pi/cliSession.d.ts +106 -0
  81. package/dist/pi/cliSession.d.ts.map +1 -0
  82. package/dist/pi/cliSession.js +379 -0
  83. package/dist/pi/cliTurnMetering.d.ts +60 -0
  84. package/dist/pi/cliTurnMetering.d.ts.map +1 -0
  85. package/dist/pi/cliTurnMetering.js +60 -0
  86. package/dist/pi/codexFilesystemRules.d.ts +3 -0
  87. package/dist/pi/codexFilesystemRules.d.ts.map +1 -0
  88. package/dist/pi/codexFilesystemRules.js +28 -0
  89. package/dist/pi/codexHeadlessResult.d.ts +68 -0
  90. package/dist/pi/codexHeadlessResult.d.ts.map +1 -0
  91. package/dist/pi/codexHeadlessResult.js +122 -0
  92. package/dist/pi/codexRolloutUsage.d.ts +95 -0
  93. package/dist/pi/codexRolloutUsage.d.ts.map +1 -0
  94. package/dist/pi/codexRolloutUsage.js +221 -0
  95. package/dist/pi/engineWakeLimits.d.ts +39 -0
  96. package/dist/pi/engineWakeLimits.d.ts.map +1 -0
  97. package/dist/pi/engineWakeLimits.js +55 -0
  98. package/dist/pi/grokHeadlessResult.d.ts +36 -0
  99. package/dist/pi/grokHeadlessResult.d.ts.map +1 -0
  100. package/dist/pi/grokHeadlessResult.js +118 -0
  101. package/dist/pi/grokHomeMcpRegistration.d.ts +21 -0
  102. package/dist/pi/grokHomeMcpRegistration.d.ts.map +1 -0
  103. package/dist/pi/grokHomeMcpRegistration.js +57 -0
  104. package/dist/pi/grokSandbox.d.ts +11 -0
  105. package/dist/pi/grokSandbox.d.ts.map +1 -0
  106. package/dist/pi/grokSandbox.js +216 -0
  107. package/dist/pi/grokStreamUsage.d.ts +31 -0
  108. package/dist/pi/grokStreamUsage.d.ts.map +1 -0
  109. package/dist/pi/grokStreamUsage.js +51 -0
  110. package/dist/pi/index.d.ts +5 -0
  111. package/dist/pi/index.d.ts.map +1 -1
  112. package/dist/pi/index.js +5 -0
  113. package/dist/pi/memoryTools.d.ts +55 -1
  114. package/dist/pi/memoryTools.d.ts.map +1 -1
  115. package/dist/pi/memoryTools.js +144 -24
  116. package/dist/pi/modelRegistry.d.ts +13 -0
  117. package/dist/pi/modelRegistry.d.ts.map +1 -0
  118. package/dist/pi/modelRegistry.js +19 -0
  119. package/dist/pi/piAgentHandle.d.ts +46 -0
  120. package/dist/pi/piAgentHandle.d.ts.map +1 -0
  121. package/dist/pi/piAgentHandle.js +351 -0
  122. package/dist/pi/piAgentWakeSupport.d.ts +103 -0
  123. package/dist/pi/piAgentWakeSupport.d.ts.map +1 -0
  124. package/dist/pi/piAgentWakeSupport.js +151 -0
  125. package/dist/pi/piHarness.d.ts +40 -5
  126. package/dist/pi/piHarness.d.ts.map +1 -1
  127. package/dist/pi/piHarness.js +151 -256
  128. package/dist/pi/prompts.d.ts +10 -0
  129. package/dist/pi/prompts.d.ts.map +1 -0
  130. package/dist/pi/prompts.js +63 -0
  131. package/dist/pi/rawTrainingCapture.d.ts +59 -0
  132. package/dist/pi/rawTrainingCapture.d.ts.map +1 -0
  133. package/dist/pi/rawTrainingCapture.js +175 -0
  134. package/dist/pi/turnCausal.d.ts +73 -0
  135. package/dist/pi/turnCausal.d.ts.map +1 -0
  136. package/dist/pi/turnCausal.js +75 -0
  137. package/dist/pi/turnTrace.d.ts +128 -0
  138. package/dist/pi/turnTrace.d.ts.map +1 -0
  139. package/dist/pi/turnTrace.js +138 -0
  140. package/dist/pi/wakeAcceptance.d.ts +49 -0
  141. package/dist/pi/wakeAcceptance.d.ts.map +1 -0
  142. package/dist/pi/wakeAcceptance.js +281 -0
  143. package/dist/pi/wakeAcceptanceFs.d.ts +44 -0
  144. package/dist/pi/wakeAcceptanceFs.d.ts.map +1 -0
  145. package/dist/pi/wakeAcceptanceFs.js +318 -0
  146. package/dist/pi/wakeAcceptanceSchema.d.ts +75 -0
  147. package/dist/pi/wakeAcceptanceSchema.d.ts.map +1 -0
  148. package/dist/pi/wakeAcceptanceSchema.js +265 -0
  149. package/dist/pi/wakeModes.d.ts +9 -0
  150. package/dist/pi/wakeModes.d.ts.map +1 -0
  151. package/dist/pi/wakeModes.js +19 -0
  152. package/dist/pi/worldNudge.d.ts +22 -0
  153. package/dist/pi/worldNudge.d.ts.map +1 -0
  154. package/dist/pi/worldNudge.js +62 -0
  155. package/dist/pi/worldToolProtocol.d.ts +13 -0
  156. package/dist/pi/worldToolProtocol.d.ts.map +1 -0
  157. package/dist/pi/worldToolProtocol.js +49 -0
  158. package/dist/pi/worldTools.d.ts +32 -0
  159. package/dist/pi/worldTools.d.ts.map +1 -0
  160. package/dist/pi/worldTools.js +373 -0
  161. package/dist/pi/worldTrajectory.d.ts +52 -0
  162. package/dist/pi/worldTrajectory.d.ts.map +1 -0
  163. package/dist/pi/worldTrajectory.js +131 -0
  164. package/dist/runtime/agySubscriptionBootstrap.d.ts +16 -0
  165. package/dist/runtime/agySubscriptionBootstrap.d.ts.map +1 -0
  166. package/dist/runtime/agySubscriptionBootstrap.js +80 -0
  167. package/dist/runtime/agySubscriptionRealm.d.ts +38 -0
  168. package/dist/runtime/agySubscriptionRealm.d.ts.map +1 -0
  169. package/dist/runtime/agySubscriptionRealm.js +242 -0
  170. package/dist/runtime/attention.d.ts +21 -0
  171. package/dist/runtime/attention.d.ts.map +1 -0
  172. package/dist/runtime/attention.js +36 -0
  173. package/dist/runtime/attentionDispatcher.d.ts +66 -0
  174. package/dist/runtime/attentionDispatcher.d.ts.map +1 -0
  175. package/dist/runtime/attentionDispatcher.js +271 -0
  176. package/dist/runtime/cli.d.ts +7 -0
  177. package/dist/runtime/cli.d.ts.map +1 -0
  178. package/dist/runtime/cli.js +251 -0
  179. package/dist/runtime/codexSandboxProjection.d.ts +17 -0
  180. package/dist/runtime/codexSandboxProjection.d.ts.map +1 -0
  181. package/dist/runtime/codexSandboxProjection.js +40 -0
  182. package/dist/runtime/contract-manifest.json +1 -0
  183. package/dist/runtime/contract-manifest.sha256 +1 -0
  184. package/dist/runtime/contractManifest.d.ts +8 -0
  185. package/dist/runtime/contractManifest.d.ts.map +1 -0
  186. package/dist/runtime/contractManifest.js +4 -0
  187. package/dist/runtime/engineBrokerCapabilities.d.ts +30 -0
  188. package/dist/runtime/engineBrokerCapabilities.d.ts.map +1 -0
  189. package/dist/runtime/engineBrokerCapabilities.js +59 -0
  190. package/dist/runtime/engineBrokerControlClient.d.ts +44 -0
  191. package/dist/runtime/engineBrokerControlClient.d.ts.map +1 -0
  192. package/dist/runtime/engineBrokerControlClient.js +132 -0
  193. package/dist/runtime/engineBrokerCredentialJournal.d.ts +10 -0
  194. package/dist/runtime/engineBrokerCredentialJournal.d.ts.map +1 -0
  195. package/dist/runtime/engineBrokerCredentialJournal.js +17 -0
  196. package/dist/runtime/engineBrokerInferenceProtocol.d.ts +52 -0
  197. package/dist/runtime/engineBrokerInferenceProtocol.d.ts.map +1 -0
  198. package/dist/runtime/engineBrokerInferenceProtocol.js +65 -0
  199. package/dist/runtime/engineBrokerMcpCallLog.d.ts +160 -0
  200. package/dist/runtime/engineBrokerMcpCallLog.d.ts.map +1 -0
  201. package/dist/runtime/engineBrokerMcpCallLog.js +219 -0
  202. package/dist/runtime/engineBrokerMcpFacade.d.ts +56 -0
  203. package/dist/runtime/engineBrokerMcpFacade.d.ts.map +1 -0
  204. package/dist/runtime/engineBrokerMcpFacade.js +343 -0
  205. package/dist/runtime/engineBrokerNativeClient.d.ts +52 -0
  206. package/dist/runtime/engineBrokerNativeClient.d.ts.map +1 -0
  207. package/dist/runtime/engineBrokerNativeClient.js +151 -0
  208. package/dist/runtime/engineBrokerProtocol.d.ts +135 -0
  209. package/dist/runtime/engineBrokerProtocol.d.ts.map +1 -0
  210. package/dist/runtime/engineBrokerProtocol.js +274 -0
  211. package/dist/runtime/engineBrokerSealLedger.d.ts +70 -0
  212. package/dist/runtime/engineBrokerSealLedger.d.ts.map +1 -0
  213. package/dist/runtime/engineBrokerSealLedger.js +123 -0
  214. package/dist/runtime/engineBrokerService.d.ts +37 -0
  215. package/dist/runtime/engineBrokerService.d.ts.map +1 -0
  216. package/dist/runtime/engineBrokerService.js +138 -0
  217. package/dist/runtime/engineBrokerServiceCli.d.ts +5 -0
  218. package/dist/runtime/engineBrokerServiceCli.d.ts.map +1 -0
  219. package/dist/runtime/engineBrokerServiceCli.js +32 -0
  220. package/dist/runtime/engineBrokerServiceConfig.d.ts +50 -0
  221. package/dist/runtime/engineBrokerServiceConfig.d.ts.map +1 -0
  222. package/dist/runtime/engineBrokerServiceConfig.js +92 -0
  223. package/dist/runtime/engineBrokerSingleflight.d.ts +13 -0
  224. package/dist/runtime/engineBrokerSingleflight.d.ts.map +1 -0
  225. package/dist/runtime/engineBrokerSingleflight.js +24 -0
  226. package/dist/runtime/engineBrokerTurnAccounting.d.ts +76 -0
  227. package/dist/runtime/engineBrokerTurnAccounting.d.ts.map +1 -0
  228. package/dist/runtime/engineBrokerTurnAccounting.js +108 -0
  229. package/dist/runtime/engineBrokerTurnRegistry.d.ts +57 -0
  230. package/dist/runtime/engineBrokerTurnRegistry.d.ts.map +1 -0
  231. package/dist/runtime/engineBrokerTurnRegistry.js +158 -0
  232. package/dist/runtime/engineDispatcher.d.ts +36 -0
  233. package/dist/runtime/engineDispatcher.d.ts.map +1 -0
  234. package/dist/runtime/engineDispatcher.js +216 -0
  235. package/dist/runtime/engineReadiness.d.ts +23 -0
  236. package/dist/runtime/engineReadiness.d.ts.map +1 -0
  237. package/dist/runtime/engineReadiness.js +222 -0
  238. package/dist/runtime/grokAuthenticationError.d.ts +8 -0
  239. package/dist/runtime/grokAuthenticationError.d.ts.map +1 -0
  240. package/dist/runtime/grokAuthenticationError.js +20 -0
  241. package/dist/runtime/grokBrokerCredentialAuthority.d.ts +22 -0
  242. package/dist/runtime/grokBrokerCredentialAuthority.d.ts.map +1 -0
  243. package/dist/runtime/grokBrokerCredentialAuthority.js +124 -0
  244. package/dist/runtime/grokBrokerCredentialReader.d.ts +5 -0
  245. package/dist/runtime/grokBrokerCredentialReader.d.ts.map +1 -0
  246. package/dist/runtime/grokBrokerCredentialReader.js +37 -0
  247. package/dist/runtime/grokBrokerModelPolicy.d.ts +23 -0
  248. package/dist/runtime/grokBrokerModelPolicy.d.ts.map +1 -0
  249. package/dist/runtime/grokBrokerModelPolicy.js +28 -0
  250. package/dist/runtime/grokBrokerProjection.d.ts +106 -0
  251. package/dist/runtime/grokBrokerProjection.d.ts.map +1 -0
  252. package/dist/runtime/grokBrokerProjection.js +94 -0
  253. package/dist/runtime/grokBrokerProxy.d.ts +55 -0
  254. package/dist/runtime/grokBrokerProxy.d.ts.map +1 -0
  255. package/dist/runtime/grokBrokerProxy.js +262 -0
  256. package/dist/runtime/grokBrokerProxyRequest.d.ts +30 -0
  257. package/dist/runtime/grokBrokerProxyRequest.d.ts.map +1 -0
  258. package/dist/runtime/grokBrokerProxyRequest.js +74 -0
  259. package/dist/runtime/grokBrokerRealmLease.d.ts +4 -0
  260. package/dist/runtime/grokBrokerRealmLease.d.ts.map +1 -0
  261. package/dist/runtime/grokBrokerRealmLease.js +33 -0
  262. package/dist/runtime/grokBrokerRefresh.d.ts +2 -0
  263. package/dist/runtime/grokBrokerRefresh.d.ts.map +1 -0
  264. package/dist/runtime/grokBrokerRefresh.js +15 -0
  265. package/dist/runtime/grokBrokerTurnMeter.d.ts +128 -0
  266. package/dist/runtime/grokBrokerTurnMeter.d.ts.map +1 -0
  267. package/dist/runtime/grokBrokerTurnMeter.js +251 -0
  268. package/dist/runtime/grokBrokerWorkerConfig.d.ts +86 -0
  269. package/dist/runtime/grokBrokerWorkerConfig.d.ts.map +1 -0
  270. package/dist/runtime/grokBrokerWorkerConfig.js +135 -0
  271. package/dist/runtime/grokEngineBroker.d.ts +48 -0
  272. package/dist/runtime/grokEngineBroker.d.ts.map +1 -0
  273. package/dist/runtime/grokEngineBroker.js +114 -0
  274. package/dist/runtime/grokEngineBrokerLedger.d.ts +52 -0
  275. package/dist/runtime/grokEngineBrokerLedger.d.ts.map +1 -0
  276. package/dist/runtime/grokEngineBrokerLedger.js +114 -0
  277. package/dist/runtime/grokEngineBrokerMetering.d.ts +51 -0
  278. package/dist/runtime/grokEngineBrokerMetering.d.ts.map +1 -0
  279. package/dist/runtime/grokEngineBrokerMetering.js +34 -0
  280. package/dist/runtime/grokEngineBrokerTurn.d.ts +58 -0
  281. package/dist/runtime/grokEngineBrokerTurn.d.ts.map +1 -0
  282. package/dist/runtime/grokEngineBrokerTurn.js +165 -0
  283. package/dist/runtime/grokInferenceClientConfig.d.ts +41 -0
  284. package/dist/runtime/grokInferenceClientConfig.d.ts.map +1 -0
  285. package/dist/runtime/grokInferenceClientConfig.js +62 -0
  286. package/dist/runtime/grokInferenceGrants.d.ts +77 -0
  287. package/dist/runtime/grokInferenceGrants.d.ts.map +1 -0
  288. package/dist/runtime/grokInferenceGrants.js +116 -0
  289. package/dist/runtime/grokInferenceProxy.d.ts +29 -0
  290. package/dist/runtime/grokInferenceProxy.d.ts.map +1 -0
  291. package/dist/runtime/grokInferenceProxy.js +82 -0
  292. package/dist/runtime/grokInferenceProxyRequest.d.ts +23 -0
  293. package/dist/runtime/grokInferenceProxyRequest.d.ts.map +1 -0
  294. package/dist/runtime/grokInferenceProxyRequest.js +63 -0
  295. package/dist/runtime/grokSlotPreflightReceipt.d.ts +70 -0
  296. package/dist/runtime/grokSlotPreflightReceipt.d.ts.map +1 -0
  297. package/dist/runtime/grokSlotPreflightReceipt.js +101 -0
  298. package/dist/runtime/grokSubscriptionRealm.d.ts +4 -0
  299. package/dist/runtime/grokSubscriptionRealm.d.ts.map +1 -0
  300. package/dist/runtime/grokSubscriptionRealm.js +435 -0
  301. package/dist/runtime/grokSubscriptionRealmTypes.d.ts +26 -0
  302. package/dist/runtime/grokSubscriptionRealmTypes.d.ts.map +1 -0
  303. package/dist/runtime/grokSubscriptionRealmTypes.js +1 -0
  304. package/dist/runtime/grokWorkerAttestation.d.ts +170 -0
  305. package/dist/runtime/grokWorkerAttestation.d.ts.map +1 -0
  306. package/dist/runtime/grokWorkerAttestation.js +266 -0
  307. package/dist/runtime/grokWorkerDenyPlacement.d.ts +80 -0
  308. package/dist/runtime/grokWorkerDenyPlacement.d.ts.map +1 -0
  309. package/dist/runtime/grokWorkerDenyPlacement.js +128 -0
  310. package/dist/runtime/grokWorkerHomeAttestation.d.ts +30 -0
  311. package/dist/runtime/grokWorkerHomeAttestation.d.ts.map +1 -0
  312. package/dist/runtime/grokWorkerHomeAttestation.js +69 -0
  313. package/dist/runtime/grokWorkerSandboxProfile.d.ts +27 -0
  314. package/dist/runtime/grokWorkerSandboxProfile.d.ts.map +1 -0
  315. package/dist/runtime/grokWorkerSandboxProfile.js +44 -0
  316. package/dist/runtime/grokWorkerTmpAttestation.d.ts +55 -0
  317. package/dist/runtime/grokWorkerTmpAttestation.d.ts.map +1 -0
  318. package/dist/runtime/grokWorkerTmpAttestation.js +63 -0
  319. package/dist/runtime/index.d.ts +26 -0
  320. package/dist/runtime/index.d.ts.map +1 -0
  321. package/dist/runtime/index.js +23 -0
  322. package/dist/runtime/inferenceUsageLedger.d.ts +38 -0
  323. package/dist/runtime/inferenceUsageLedger.d.ts.map +1 -0
  324. package/dist/runtime/inferenceUsageLedger.js +53 -0
  325. package/dist/runtime/mcpToolResult.d.ts +127 -0
  326. package/dist/runtime/mcpToolResult.d.ts.map +1 -0
  327. package/dist/runtime/mcpToolResult.js +214 -0
  328. package/dist/runtime/moltnetMachineRead.d.ts +97 -0
  329. package/dist/runtime/moltnetMachineRead.d.ts.map +1 -0
  330. package/dist/runtime/moltnetMachineRead.js +183 -0
  331. package/dist/runtime/native/daimon-engine-broker +0 -0
  332. package/dist/runtime/organizationRuntime.d.ts +165 -0
  333. package/dist/runtime/organizationRuntime.d.ts.map +1 -0
  334. package/dist/runtime/organizationRuntime.js +3 -0
  335. package/dist/runtime/organizationRuntimeControl.d.ts +42 -0
  336. package/dist/runtime/organizationRuntimeControl.d.ts.map +1 -0
  337. package/dist/runtime/organizationRuntimeControl.js +235 -0
  338. package/dist/runtime/organizationRuntimeHost.d.ts +19 -0
  339. package/dist/runtime/organizationRuntimeHost.d.ts.map +1 -0
  340. package/dist/runtime/organizationRuntimeHost.js +359 -0
  341. package/dist/runtime/organizationRuntimeParsing.d.ts +6 -0
  342. package/dist/runtime/organizationRuntimeParsing.d.ts.map +1 -0
  343. package/dist/runtime/organizationRuntimeParsing.js +370 -0
  344. package/dist/runtime/organizationRuntimeReadiness.d.ts +12 -0
  345. package/dist/runtime/organizationRuntimeReadiness.d.ts.map +1 -0
  346. package/dist/runtime/organizationRuntimeReadiness.js +59 -0
  347. package/dist/runtime/physicalReadiness.d.ts +47 -0
  348. package/dist/runtime/physicalReadiness.d.ts.map +1 -0
  349. package/dist/runtime/physicalReadiness.js +142 -0
  350. package/dist/runtime/portableCredentialAuth.d.ts +6 -0
  351. package/dist/runtime/portableCredentialAuth.d.ts.map +1 -0
  352. package/dist/runtime/portableCredentialAuth.js +70 -0
  353. package/dist/runtime/portableCredentialMaterial.d.ts +8 -0
  354. package/dist/runtime/portableCredentialMaterial.d.ts.map +1 -0
  355. package/dist/runtime/portableCredentialMaterial.js +169 -0
  356. package/dist/runtime/productionAgentTools.d.ts +5 -0
  357. package/dist/runtime/productionAgentTools.d.ts.map +1 -0
  358. package/dist/runtime/productionAgentTools.js +328 -0
  359. package/dist/runtime/runtimeHomeLayout.d.ts +48 -0
  360. package/dist/runtime/runtimeHomeLayout.d.ts.map +1 -0
  361. package/dist/runtime/runtimeHomeLayout.js +84 -0
  362. package/dist/runtime/schedule.d.ts +40 -0
  363. package/dist/runtime/schedule.d.ts.map +1 -0
  364. package/dist/runtime/schedule.js +371 -0
  365. package/dist/runtime/storeCoordination.d.ts +23 -0
  366. package/dist/runtime/storeCoordination.d.ts.map +1 -0
  367. package/dist/runtime/storeCoordination.js +94 -0
  368. package/dist/runtime/toolResultSpill.d.ts +152 -0
  369. package/dist/runtime/toolResultSpill.d.ts.map +1 -0
  370. package/dist/runtime/toolResultSpill.js +351 -0
  371. package/dist/runtime/turnRequestLedger.d.ts +160 -0
  372. package/dist/runtime/turnRequestLedger.d.ts.map +1 -0
  373. package/dist/runtime/turnRequestLedger.js +249 -0
  374. package/dist/runtime/turnUsageLedger.d.ts +143 -0
  375. package/dist/runtime/turnUsageLedger.d.ts.map +1 -0
  376. package/dist/runtime/turnUsageLedger.js +203 -0
  377. package/dist/runtime/wakeAcceptanceProcessIdentity.d.ts +17 -0
  378. package/dist/runtime/wakeAcceptanceProcessIdentity.d.ts.map +1 -0
  379. package/dist/runtime/wakeAcceptanceProcessIdentity.js +50 -0
  380. package/dist/runtime/wakeAcceptanceReconciliation.d.ts +211 -0
  381. package/dist/runtime/wakeAcceptanceReconciliation.d.ts.map +1 -0
  382. package/dist/runtime/wakeAcceptanceReconciliation.js +289 -0
  383. package/dist/runtime/wakeAcceptanceRecord.d.ts +23 -0
  384. package/dist/runtime/wakeAcceptanceRecord.d.ts.map +1 -0
  385. package/dist/runtime/wakeAcceptanceRecord.js +56 -0
  386. package/dist/runtime/wakeAcceptanceRetention.d.ts +12 -0
  387. package/dist/runtime/wakeAcceptanceRetention.d.ts.map +1 -0
  388. package/dist/runtime/wakeAcceptanceRetention.js +12 -0
  389. package/dist/runtime/wakeAcceptanceStore.d.ts +113 -0
  390. package/dist/runtime/wakeAcceptanceStore.d.ts.map +1 -0
  391. package/dist/runtime/wakeAcceptanceStore.js +558 -0
  392. package/dist/runtime/wakeAcceptanceTypes.d.ts +179 -0
  393. package/dist/runtime/wakeAcceptanceTypes.d.ts.map +1 -0
  394. package/dist/runtime/wakeAcceptanceTypes.js +95 -0
  395. package/dist/runtime/wakeFuse.d.ts +69 -0
  396. package/dist/runtime/wakeFuse.d.ts.map +1 -0
  397. package/dist/runtime/wakeFuse.js +367 -0
  398. package/package.json +25 -17
  399. package/dist/examples/mixed-engine-org.d.ts +0 -2
  400. package/dist/examples/mixed-engine-org.d.ts.map +0 -1
  401. package/dist/examples/mixed-engine-org.js +0 -351
  402. package/dist/examples/mixedEngineCli.d.ts +0 -15
  403. package/dist/examples/mixedEngineCli.d.ts.map +0 -1
  404. package/dist/examples/mixedEngineCli.js +0 -174
@@ -0,0 +1,107 @@
1
+ import { emitCausalEvent, resolveRunId } from "./causalEvents.js";
2
+ /**
3
+ * Control-wake causal emitters for root's two wake-acceptance surfaces
4
+ * (`src/runtime/pi/appControlSource.ts`, root repo, out of scope here):
5
+ * the operator-only control endpoint and the Moltnet loopback delivery
6
+ * endpoint (`/agents/:slug/wake`). Both stamp `control.wake.accepted` —
7
+ * enforcement point #3 in `specs/CAUSAL.md` §"Enforcement points" — but with
8
+ * different `principal_id` authorities, per the B62 fix (Option B): the
9
+ * operator endpoint stamps `operator:<name>` (`emitControlWakeAccepted`),
10
+ * the delivery endpoint stamps the fixed `system:moltnet` authority
11
+ * (`emitDeliveryWakeAccepted`), never a caller-supplied `from`/agent field.
12
+ * `control.wake.denied` (`emitControlWakeDenied`) stays operator-only: the
13
+ * delivery endpoint has no bearer-token deny path to stamp. Root's generated
14
+ * app calls these directly; this file has no knowledge of HTTP, tokens, or
15
+ * the request shape, only the causal envelope contract.
16
+ */
17
+ export const CONTROL_WAKE_ACCEPTED_TYPE = "control.wake.accepted";
18
+ export const CONTROL_WAKE_DENIED_TYPE = "control.wake.denied";
19
+ /**
20
+ * Principal grammar per `specs/CAUSAL.md` §3 (`^(agent|operator|system):.+`):
21
+ * an authenticated operator identity, e.g. `operator:control`. Callers must
22
+ * pass the identity behind the verified bearer token, never a value read
23
+ * from the request body or model output.
24
+ */
25
+ export const operatorPrincipalId = (operatorName) => `operator:${operatorName}`;
26
+ /**
27
+ * Fixed principal for wakes accepted through the Moltnet loopback delivery
28
+ * endpoint (`/agents/:slug/wake`): the delivering authority itself, never an
29
+ * identity derived from a caller-supplied `from`/agent field on the request.
30
+ */
31
+ export const DELIVERY_PRINCIPAL_ID = "system:moltnet";
32
+ /** Deterministic, non-model-derived event id for a control wake acceptance. */
33
+ export const controlWakeAcceptedEventId = (requestId) => `daimon:${requestId}:control.wake.accepted`;
34
+ /** Deterministic, non-model-derived event id for a control wake denial. */
35
+ export const controlWakeDeniedEventId = (requestId) => `daimon:${requestId}:control.wake.denied`;
36
+ /**
37
+ * Deterministic, non-model-derived event id for a Moltnet-delivered wake
38
+ * acceptance. Distinct from `controlWakeAcceptedEventId` (own `.delivery.`
39
+ * segment) so the two paths never collide even if a future caller reused a
40
+ * `requestId` across both endpoints for the same target.
41
+ */
42
+ export const deliveryWakeAcceptedEventId = (requestId) => `daimon:${requestId}:delivery.wake.accepted`;
43
+ /**
44
+ * Stamps `control.wake.accepted` once root's operator-control endpoint has
45
+ * verified the bearer token and is about to wake `targetAgentId`.
46
+ * `principal_id` is always `operator:<operatorName>` (the authenticated
47
+ * operator behind the verified token), never derived from the request body.
48
+ * `run_id` defaults to `resolveRunId()` like every other daimon emitter.
49
+ */
50
+ export const emitControlWakeAccepted = (input) => emitCausalEvent({
51
+ agentId: input.targetAgentId,
52
+ causeEventIds: input.causeEventIds ?? [],
53
+ eventId: controlWakeAcceptedEventId(input.requestId),
54
+ payload: {
55
+ target_agent_id: input.targetAgentId,
56
+ wake_kind: input.wakeKind
57
+ },
58
+ principalId: operatorPrincipalId(input.operatorName),
59
+ runId: input.runId ?? resolveRunId(),
60
+ runtimeHomePath: input.runtimeHomePath,
61
+ type: CONTROL_WAKE_ACCEPTED_TYPE
62
+ });
63
+ /**
64
+ * Stamps `control.wake.accepted` once root's Moltnet loopback delivery
65
+ * endpoint (`/agents/:slug/wake`) is about to wake `targetAgentId` on behalf
66
+ * of an inter-agent message. `principal_id` is always the fixed
67
+ * `DELIVERY_PRINCIPAL_ID` (`system:moltnet`) — the delivering authority —
68
+ * never derived from a caller-supplied `from`/agent field, and never
69
+ * `operator:<name>` (that principal is reserved for the operator-only
70
+ * control endpoint; see `emitControlWakeAccepted`). `run_id` defaults to
71
+ * `resolveRunId()` like every other daimon emitter.
72
+ */
73
+ export const emitDeliveryWakeAccepted = (input) => emitCausalEvent({
74
+ agentId: input.targetAgentId,
75
+ causeEventIds: input.causeEventIds ?? [],
76
+ eventId: deliveryWakeAcceptedEventId(input.requestId),
77
+ payload: {
78
+ delivered_by: "moltnet",
79
+ target_agent_id: input.targetAgentId,
80
+ wake_kind: input.wakeKind
81
+ },
82
+ principalId: DELIVERY_PRINCIPAL_ID,
83
+ runId: input.runId ?? resolveRunId(),
84
+ runtimeHomePath: input.runtimeHomePath,
85
+ type: CONTROL_WAKE_ACCEPTED_TYPE
86
+ });
87
+ /**
88
+ * Stamps `control.wake.denied` when root's operator-control endpoint rejects
89
+ * a wake request over a missing or invalid bearer token. Deny paths must
90
+ * never drop silently (see `specs/CAUSAL.md` enforcement point #3 / T5):
91
+ * every 401 the endpoint returns should carry exactly one of these. As with
92
+ * `emitControlWakeAccepted`, `principal_id` is always the authenticated
93
+ * operator identity, never a value read from the request.
94
+ */
95
+ export const emitControlWakeDenied = (input) => emitCausalEvent({
96
+ agentId: input.targetAgentId,
97
+ causeEventIds: input.causeEventIds ?? [],
98
+ eventId: controlWakeDeniedEventId(input.requestId),
99
+ payload: {
100
+ reason: input.reason,
101
+ target_agent_id: input.targetAgentId
102
+ },
103
+ principalId: operatorPrincipalId(input.operatorName),
104
+ runId: input.runId ?? resolveRunId(),
105
+ runtimeHomePath: input.runtimeHomePath,
106
+ type: CONTROL_WAKE_DENIED_TYPE
107
+ });
@@ -0,0 +1,25 @@
1
+ import { type CausalEvent } from "./causalEvents.js";
2
+ export interface CausalFixtureResult {
3
+ events: [CausalEvent, CausalEvent];
4
+ jsonlPath: string;
5
+ }
6
+ export interface RunCausalFixtureOptions {
7
+ /** Overrides the scratch runtime home; defaults to a fixed `.runtime/` path keyed on `spoof`. */
8
+ runtimeHomePath?: string;
9
+ /**
10
+ * Adversarial mode: the fixture's "wake text" (standing in for untrusted
11
+ * model/request input) embeds a forged identity claim, but the emitted
12
+ * `principal_id` on both events must remain the authenticated
13
+ * `agent:<agentId>` regardless — never the claimed identity. Mirrors the
14
+ * spoof invariant already covered live in `piHarnessCausal.test.ts`
15
+ * ("model output cannot set principal_id...").
16
+ */
17
+ spoof?: boolean;
18
+ }
19
+ /**
20
+ * Runs the fixture and returns the two stamped events plus the jsonl path,
21
+ * without touching `process.stdout`/`process.exitCode` — the CLI entry
22
+ * point below wraps this for `npm run emit-causal-fixture`.
23
+ */
24
+ export declare const runCausalFixture: (options?: RunCausalFixtureOptions) => Promise<CausalFixtureResult>;
25
+ //# sourceMappingURL=emitCausalFixture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitCausalFixture.d.ts","sourceRoot":"","sources":["../../src/observability/emitCausalFixture.ts"],"names":[],"mappings":"AAIA,OAAO,EAA4E,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA0B/H,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,iGAAiG;IACjG,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAID;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAU,UAAS,uBAA4B,KAAG,OAAO,CAAC,mBAAmB,CA0DzG,CAAC"}
@@ -0,0 +1,98 @@
1
+ import { mkdir, rm } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { emitTurnInputSubmitted, emitTurnOutputCompleted, resolveRunId, sha256Hex } from "./causalEvents.js";
5
+ /**
6
+ * Standalone fixture emitter, run via `npm run emit-causal-fixture`
7
+ * (or `npm run emit-causal-fixture:spoof` for the adversarial mode below).
8
+ *
9
+ * Stamps one synthetic `turn.input.submitted` -> `turn.output.completed`
10
+ * chain into a scratch runtime home under `.runtime/causal-fixture[-spoof]/`,
11
+ * using the same `causalEvents.ts` functions `turnCausal.ts` uses for real
12
+ * turns. This is a fixture, not a live engine run: no Pi session, no mneme
13
+ * recall.
14
+ *
15
+ * `principal_id` here is stamped as `agent:<agentId>` directly (rather than
16
+ * importing `turnCausal.ts`'s `agentPrincipalId` helper) because this file
17
+ * lives under `src/observability/`, which stays engine-neutral and must not
18
+ * import `src/pi/` implementation details (see this folder's `AGENTS.md`).
19
+ * The value is the same grammar (`specs/CAUSAL.md` §3) either way.
20
+ *
21
+ * Exact invocation contract for a future cross-repo conformance harness
22
+ * (B92/B62, out of scope here) is not defined yet, so this script picks the
23
+ * simplest reasonable convention: write the fixture under a fixed relative
24
+ * path and print its absolute location as the last line of stdout.
25
+ */
26
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
27
+ const daimonRoot = path.resolve(__dirname, "../..");
28
+ const SPOOFED_AGENT_ID = "attacker-agent";
29
+ /**
30
+ * Runs the fixture and returns the two stamped events plus the jsonl path,
31
+ * without touching `process.stdout`/`process.exitCode` — the CLI entry
32
+ * point below wraps this for `npm run emit-causal-fixture`.
33
+ */
34
+ export const runCausalFixture = async (options = {}) => {
35
+ const spoof = options.spoof ?? false;
36
+ const runtimeHomePath = options.runtimeHomePath ?? path.join(daimonRoot, ".runtime", spoof ? "causal-fixture-spoof" : "causal-fixture");
37
+ await rm(runtimeHomePath, { recursive: true, force: true });
38
+ await mkdir(runtimeHomePath, { recursive: true });
39
+ const agentId = "fixture-agent";
40
+ const principalId = `agent:${agentId}`;
41
+ const turnId = "fixture-turn-1";
42
+ const runId = resolveRunId();
43
+ const inputText = spoof
44
+ ? `Fixture wake text for the causal conformance harness. ` +
45
+ `SPOOF CLAIM (must be ignored): ${JSON.stringify({ from: SPOOFED_AGENT_ID, principal_id: `agent:${SPOOFED_AGENT_ID}` })}`
46
+ : "Fixture wake text for the causal conformance harness.";
47
+ const promptText = "Fixture prompt text.";
48
+ const outputText = spoof
49
+ ? `Fixture reply text. SPOOF CLAIM (must be ignored): ${JSON.stringify({ principal_id: `agent:${SPOOFED_AGENT_ID}` })}`
50
+ : "Fixture reply text.";
51
+ const inputSubmitted = await emitTurnInputSubmitted({
52
+ agentId,
53
+ causeEventIds: [turnId],
54
+ inputContentSha256: sha256Hex(inputText),
55
+ inputMessageIds: [turnId],
56
+ principalId,
57
+ promptSha256: sha256Hex(promptText),
58
+ runId,
59
+ runtimeHomePath,
60
+ turnId
61
+ });
62
+ const outputCompleted = await emitTurnOutputCompleted({
63
+ agentId,
64
+ causeEventIds: [inputSubmitted.event_id],
65
+ outputSha256: sha256Hex(outputText),
66
+ principalId,
67
+ runId,
68
+ runtimeHomePath,
69
+ turnId
70
+ });
71
+ // The whole point of spoof mode: the forged claim above must never reach
72
+ // the stamped envelope. Fail loudly here rather than let a future refactor
73
+ // silently regress this invariant.
74
+ for (const event of [inputSubmitted, outputCompleted]) {
75
+ if (event.principal_id !== principalId) {
76
+ throw new Error(`causal fixture invariant violated: principal_id was "${event.principal_id}", expected "${principalId}"`);
77
+ }
78
+ }
79
+ return {
80
+ events: [inputSubmitted, outputCompleted],
81
+ jsonlPath: path.join(runtimeHomePath, "telemetry", "causal.jsonl")
82
+ };
83
+ };
84
+ const isMainModule = () => {
85
+ const invoked = process.argv[1] ? path.resolve(process.argv[1]) : undefined;
86
+ return invoked !== undefined && invoked === path.resolve(fileURLToPath(import.meta.url));
87
+ };
88
+ if (isMainModule()) {
89
+ const spoof = process.argv.includes("--spoof");
90
+ runCausalFixture({ spoof })
91
+ .then((result) => {
92
+ console.log(result.jsonlPath);
93
+ })
94
+ .catch((error) => {
95
+ console.error(error instanceof Error ? error.stack ?? error.message : String(error));
96
+ process.exitCode = 1;
97
+ });
98
+ }
@@ -1,2 +1,4 @@
1
+ export * from "./causalEvents.js";
2
+ export * from "./controlCausal.js";
1
3
  export * from "./orgObserver.js";
2
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
@@ -1 +1,3 @@
1
+ export * from "./causalEvents.js";
2
+ export * from "./controlCausal.js";
1
3
  export * from "./orgObserver.js";
@@ -1 +1 @@
1
- {"version":3,"file":"orgObserver.d.ts","sourceRoot":"","sources":["../../src/observability/orgObserver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orgObserver.d.ts","sourceRoot":"","sources":["../../src/observability/orgObserver.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import { mkdir, writeFile } from "node:fs/promises";
1
+ import { writeFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
+ import { ensureRuntimeHomeDirectory } from "../runtime/runtimeHomeLayout.js";
3
4
  const maxExcerptChars = 280;
4
5
  const excerpt = (text) => text.length <= maxExcerptChars ? text : `${text.slice(0, maxExcerptChars).trim()}...`;
5
6
  export const mentionsFrom = (text) => [...new Set([...text.matchAll(/@([a-z0-9-]+)/gi)].map((match) => match[1].toLowerCase()))];
@@ -110,8 +111,7 @@ export class OrgObserver {
110
111
  };
111
112
  }
112
113
  async write(runtimeRoot) {
113
- const telemetryDir = path.join(runtimeRoot, "telemetry");
114
- await mkdir(telemetryDir, { recursive: true });
114
+ const telemetryDir = await ensureRuntimeHomeDirectory(runtimeRoot, "telemetry");
115
115
  const summaryRecord = {
116
116
  assertions: this.assertions,
117
117
  behavior: this.behaviorSummary(),
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Token accounting for one AGY turn, as the engine itself reported it.
3
+ *
4
+ * Same shape and the same discipline as {@link import("./grokHeadlessResult.js").GrokTurnUsage},
5
+ * but AGY's envelope is *not* Grok's. Field provenance is the terminal frame of
6
+ * `agy --print … --output-format stream-json`:
7
+ *
8
+ * {"event":"result","result":{ "status":"SUCCESS", "response":"…",
9
+ * "num_turns":1,
10
+ * "usage":{"input_tokens":…, "output_tokens":…,
11
+ * "thinking_tokens":…, "cache_read_tokens":…, "total_tokens":…}}}
12
+ *
13
+ * Differences from Grok that this decoder exists to get right:
14
+ *
15
+ * - the prompt-side cache bucket is `cache_read_tokens`, **not**
16
+ * `cache_read_input_tokens`;
17
+ * - there is no `cache_creation_input_tokens` bucket at all, so `cacheWrite` is
18
+ * structurally absent and recorded as `0` — absent, not measured-as-zero;
19
+ * - there is no `total_cost_usd`, so `notionalUsd` is `0` for the same reason;
20
+ * - `thinking_tokens` has no Grok equivalent and is a **subset** of
21
+ * `output_tokens`, not a disjoint bucket. The captured plain turn is
22
+ * `input 13,722 + output 74 = 13,796 = total_tokens` with
23
+ * `thinking_tokens: 73`, so adding it would double-count reasoning tokens.
24
+ * It is therefore read only to be ignored;
25
+ * - AGY supplies its own `total_tokens`, which is cross-checked rather than
26
+ * trusted (see {@link decodeAgyTurnUsage});
27
+ * - `status: "SUCCESS"` replaces Grok's `subtype`/`is_error` pair.
28
+ *
29
+ * The terminal frame's `usage` is the sum over the turn's model steps, not the
30
+ * last step's: the captured tool turn sums three `step_update` frames
31
+ * (14,579 + 15,079 + 15,279 input) into `input_tokens: 44,937`. Reading a
32
+ * `step_update` would under-report every tool-using wake.
33
+ */
34
+ export type AgyTurnUsage = Readonly<{
35
+ input: number;
36
+ output: number;
37
+ cacheRead: number;
38
+ cacheWrite: number;
39
+ total: number;
40
+ calls: number;
41
+ notionalUsd: number;
42
+ complete: boolean;
43
+ }>;
44
+ export type AgyHeadlessTurn = Readonly<{
45
+ text: string;
46
+ usage?: AgyTurnUsage;
47
+ }>;
48
+ /**
49
+ * Decode AGY's `stream-json` NDJSON without treating a progress frame as a
50
+ * reply, and extract the turn's own token accounting from the same frame.
51
+ *
52
+ * Frames before the terminal one are `{"event":"init"|"step_update", …}`.
53
+ * Unrecognized `event` values are skipped rather than rejected: AGY owns this
54
+ * stream and a frame kind added later must not fail a turn that published.
55
+ * The terminal `result` frame must be the last line, exactly as with Grok.
56
+ */
57
+ export declare const decodeAgyHeadlessTurn: (output: string) => AgyHeadlessTurn;
58
+ /** Text-only view of {@link decodeAgyHeadlessTurn}, for callers that do not meter. */
59
+ export declare const decodeAgyHeadlessResult: (output: string) => string;
60
+ //# sourceMappingURL=agyHeadlessResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agyHeadlessResult.d.ts","sourceRoot":"","sources":["../../src/pi/agyHeadlessResult.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC;AAqD/E;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,MAAM,KAAG,eAkBtD,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,GAAI,QAAQ,MAAM,KAAG,MAA4C,CAAC"}
@@ -0,0 +1,95 @@
1
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
2
+ const invalidResult = (detail) => new Error(`AGY CLI returned no publishable terminal response: ${detail}`);
3
+ /**
4
+ * The three token buckets AGY emits on `result.usage`. All three must be
5
+ * present and be non-negative safe integers; a renamed, stringified, negative,
6
+ * or fractional field rejects the whole block rather than silently contributing
7
+ * a zero, because a zero bucket is byte-indistinguishable from a real one.
8
+ */
9
+ const USAGE_TOKEN_FIELDS = ["input_tokens", "output_tokens", "cache_read_tokens"];
10
+ const tokenCount = (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 0 ? value : undefined;
11
+ /**
12
+ * Extract per-turn usage from the terminal `result` frame.
13
+ *
14
+ * Advisory: a malformed or absent usage block yields `undefined` rather than
15
+ * failing a turn that published correctly, and never throws.
16
+ *
17
+ * `complete` follows exactly the honesty rule the Grok decoder states: AGY's
18
+ * envelope has no marker for incomplete or absent usage either, so an all-zero
19
+ * block reads as "unknown", not "free". It cannot catch a *partially*
20
+ * zero-filled turn, so every count this decoder produces is a lower bound.
21
+ *
22
+ * AGY additionally reports its own `total_tokens`. Neither side is trusted
23
+ * blindly: the derived sum `input + cacheRead + output` is compared against it,
24
+ * `total` is the larger of the two so a reconciliation failure can never
25
+ * under-report, and any disagreement clears `complete` so the record is
26
+ * rendered as an incomplete turn rather than a verified count. A `total_tokens`
27
+ * that is not a non-negative safe integer rejects the block outright, because
28
+ * an unreadable total is a total that cannot be reconciled.
29
+ */
30
+ const decodeAgyTurnUsage = (result) => {
31
+ if (!isRecord(result.usage))
32
+ return undefined;
33
+ const usage = result.usage;
34
+ const counts = USAGE_TOKEN_FIELDS.map((field) => tokenCount(usage[field]));
35
+ if (counts.some((count) => count === undefined))
36
+ return undefined;
37
+ const [input, output, cacheRead] = counts;
38
+ const reported = usage.total_tokens === undefined ? undefined : tokenCount(usage.total_tokens);
39
+ if (usage.total_tokens !== undefined && reported === undefined)
40
+ return undefined;
41
+ const derived = input + cacheRead + output;
42
+ return {
43
+ input,
44
+ output,
45
+ cacheRead,
46
+ cacheWrite: 0,
47
+ total: reported === undefined ? derived : Math.max(derived, reported),
48
+ calls: tokenCount(result.num_turns) ?? 0,
49
+ notionalUsd: 0,
50
+ complete: derived > 0 && (reported === undefined || reported === derived)
51
+ };
52
+ };
53
+ /**
54
+ * Decode AGY's `stream-json` NDJSON without treating a progress frame as a
55
+ * reply, and extract the turn's own token accounting from the same frame.
56
+ *
57
+ * Frames before the terminal one are `{"event":"init"|"step_update", …}`.
58
+ * Unrecognized `event` values are skipped rather than rejected: AGY owns this
59
+ * stream and a frame kind added later must not fail a turn that published.
60
+ * The terminal `result` frame must be the last line, exactly as with Grok.
61
+ */
62
+ export const decodeAgyHeadlessTurn = (output) => {
63
+ const lines = output.split(/\r?\n/).filter((line) => line.length > 0);
64
+ if (lines.length === 0)
65
+ throw invalidResult("empty stream");
66
+ let result;
67
+ for (const [index, line] of lines.entries()) {
68
+ let frame;
69
+ try {
70
+ frame = JSON.parse(line);
71
+ }
72
+ catch {
73
+ throw invalidResult("invalid JSON");
74
+ }
75
+ if (!isRecord(frame) || typeof frame.event !== "string")
76
+ throw invalidResult("invalid event");
77
+ if (frame.event !== "result")
78
+ continue;
79
+ if (index !== lines.length - 1)
80
+ throw invalidResult("non-terminal result");
81
+ if (!isRecord(frame.result))
82
+ throw invalidResult("invalid result event");
83
+ result = frame.result;
84
+ }
85
+ if (result === undefined)
86
+ throw invalidResult("no result frame");
87
+ if (result.status !== "SUCCESS")
88
+ throw invalidResult("unsuccessful result");
89
+ if (typeof result.response !== "string" || result.response.trim().length === 0)
90
+ throw invalidResult("empty response");
91
+ const usage = decodeAgyTurnUsage(result);
92
+ return usage === undefined ? { text: result.response.trim() } : { text: result.response.trim(), usage };
93
+ };
94
+ /** Text-only view of {@link decodeAgyHeadlessTurn}, for callers that do not meter. */
95
+ export const decodeAgyHeadlessResult = (output) => decodeAgyHeadlessTurn(output).text;
@@ -0,0 +1,67 @@
1
+ import type { ChildProcess } from "node:child_process";
2
+ import type { TurnUsageFailureReason } from "../runtime/turnUsageLedger.js";
3
+ import { type CodexTurnUsage } from "./codexHeadlessResult.js";
4
+ /** Maximum assistant reply bytes retained from stdout. */
5
+ export declare const CLI_ENGINE_MAX_OUTPUT_BYTES: number;
6
+ /** Diagnostic bytes retained from stderr for a failed child: its head and its tail together. */
7
+ export declare const CLI_ENGINE_MAX_DIAGNOSTIC_BYTES = 768;
8
+ export declare const tagCliChildFailure: <T>(error: T, reason: TurnUsageFailureReason) => T;
9
+ export declare const cliChildFailureReason: (error: unknown) => TurnUsageFailureReason | undefined;
10
+ /**
11
+ * One bounded window over a failed child's own output: its head AND its tail,
12
+ * with an explicit marker naming the bytes elided between them.
13
+ *
14
+ * A pure tail is the wrong end for the process this exists for. A worker that
15
+ * dies early prints its error first and then echoes its own input, so the tail
16
+ * is the echo: one live brokered turn reported 512 bytes of its own prompt
17
+ * read back, with the actual error already off the front and discarded. Both
18
+ * ends cost the same window, and the marker is the one oversized tool results
19
+ * already use (`toolResultSpill.ts`), so a reader meets one shape everywhere.
20
+ *
21
+ * The marker is paid for out of the same budget — it is sized against the
22
+ * largest count it could carry — so the result never exceeds `maxBytes`, and
23
+ * output that fits is returned byte-identical with no marker at all.
24
+ */
25
+ export declare const boundedDiagnosticWindow: (value: string, maxBytes: number) => string;
26
+ export declare const readChild: (child: ChildProcess, timeoutMs: number | undefined, secretValues: readonly string[], options?: Readonly<{
27
+ failureClassifier?: (diagnostic: string) => Error | undefined;
28
+ retainNdjson?: "codex";
29
+ retainStdoutTail?: boolean;
30
+ /** Overrides the generic wall-clock-timeout message so the caller can name which bound was hit. */
31
+ timeoutErrorMessage?: string;
32
+ /**
33
+ * Per-wake token ceiling for a Codex turn (`retainNdjson: "codex"` only).
34
+ * Codex's `--json` stream reports usage exactly once, on `turn.completed`
35
+ * — there is no incremental total to watch mid-turn — so this is
36
+ * enforced at the earliest and only moment the crossing is observable:
37
+ * the instant that frame is parsed off the stream. Crossing it kills the
38
+ * child immediately (rather than letting an over-budget turn resolve as
39
+ * a normal success) and fails the wake with a bound-named error.
40
+ */
41
+ codexTokenCeiling?: number;
42
+ /**
43
+ * Called once per parsed `turn.completed` frame (`retainNdjson: "codex"`
44
+ * only), with that frame's decoded usage — or `undefined` when the usage
45
+ * block is absent or malformed, which is never substituted with zeros.
46
+ *
47
+ * This is the only point at which a wake that is about to be killed — by
48
+ * the ceiling, by the wall clock, or by a non-zero exit — can still hand
49
+ * over what Codex reported it spent. Every path downstream of here either
50
+ * rejects or discards the stream, which is how a breached wake's usage
51
+ * used to survive only inside an error message.
52
+ */
53
+ onCodexTurnCompleted?: (usage: CodexTurnUsage | undefined) => void;
54
+ /**
55
+ * Called with the thread id from Codex's `thread.started` frame
56
+ * (`retainNdjson: "codex"` only), the first line of every `codex exec
57
+ * --json` stream — verified live against codex-cli 0.153.4:
58
+ * `{"type":"thread.started","thread_id":"01a076d3-…"}`.
59
+ *
60
+ * That id is the only key that ties this wake to the rollout Codex writes
61
+ * under `$CODEX_HOME/sessions/**`, where the per-model-request accounting
62
+ * lives. The frame stays out of the retained stream: the decoder's
63
+ * vocabulary and the retained-output budget are unchanged by reading it.
64
+ */
65
+ onCodexThreadStarted?: (threadId: string) => void;
66
+ }>) => Promise<string>;
67
+ //# sourceMappingURL=cliChildOutput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliChildOutput.d.ts","sourceRoot":"","sources":["../../src/pi/cliChildOutput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAGrF,0DAA0D;AAC1D,eAAO,MAAM,2BAA2B,QAAY,CAAC;AACrD,gGAAgG;AAChG,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAanD,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,sBAAsB,KAAG,CAOhF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,OAAO,OAAO,KAAG,sBAAsB,GAAG,SAGjE,CAAC;AAMhB;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,uBAAuB,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,KAAG,MAQzE,CAAC;AAUF,eAAO,MAAM,SAAS,GACpB,OAAO,YAAY,EACnB,WAAW,MAAM,GAAG,SAAS,EAC7B,cAAc,SAAS,MAAM,EAAE,EAC/B,UAAS,QAAQ,CAAC;IAChB,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,KAAK,GAAG,SAAS,CAAC;IAC9D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mGAAmG;IACnG,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;OAUG;IACH,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,KAAK,IAAI,CAAC;IACnE;;;;;;;;;;OAUG;IACH,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD,CAAM,KACN,OAAO,CAAC,MAAM,CAmLf,CAAC"}