@wildo-ai/saas-backend-lib 1.1.3 → 1.1.4

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 (1056) hide show
  1. package/dist/esm/__tests__/fixture-deep-partial.d.ts.map +1 -1
  2. package/dist/esm/__tests__/integration/redis-integration-gate.d.ts.map +1 -1
  3. package/dist/esm/__tests__/setup.d.ts.map +1 -1
  4. package/dist/esm/__tests__/test-container.d.ts.map +1 -1
  5. package/dist/esm/applications/models/applications.backend.schemas.d.ts.map +1 -1
  6. package/dist/esm/applications/seeds/application-metadata-defaults.seeds.d.ts.map +1 -1
  7. package/dist/esm/applications/services/worker-remote-client-factory.backend.service.d.ts.map +1 -1
  8. package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js.map +1 -1
  9. package/dist/esm/base-classes/models/manual-controllers.backend.definition.d.ts.map +1 -1
  10. package/dist/esm/base-classes/models/manual-controllers.backend.definition.js.map +1 -1
  11. package/dist/esm/base-classes/models/repositories.backend.schemas.d.ts.map +1 -1
  12. package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.d.ts +1 -1
  13. package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.d.ts.map +1 -1
  14. package/dist/esm/base-classes/services/batches/batches-cronjobs-custom-execution.service.d.ts.map +1 -1
  15. package/dist/esm/base-classes/services/batches/batches-cronjobs-executor.backend.service.d.ts.map +1 -1
  16. package/dist/esm/base-classes/services/batches/batches-cronjobs-resource-execution.backend.service.d.ts.map +1 -1
  17. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts.map +1 -1
  18. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js.map +1 -1
  19. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts.map +1 -1
  20. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js +12 -1
  21. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js.map +1 -1
  22. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts.map +1 -1
  23. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js.map +1 -1
  24. package/dist/esm/base-classes/services/batches/resource-retention-sweep.batch.backend.service.d.ts.map +1 -1
  25. package/dist/esm/base-classes/services/batches/suspension-reactivation-sweep.batch.backend.service.d.ts.map +1 -1
  26. package/dist/esm/base-classes/services/controllers/abstract-controller.backend.service.d.ts.map +1 -1
  27. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts.map +1 -1
  28. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js.map +1 -1
  29. package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts.map +1 -1
  30. package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js.map +1 -1
  31. package/dist/esm/base-classes/services/controllers/utils/audit-access-fields.backend.utils.d.ts.map +1 -1
  32. package/dist/esm/base-classes/services/controllers/utils/operation-response-serializer.backend.utils.d.ts.map +1 -1
  33. package/dist/esm/base-classes/services/controllers/validate-field-handler.backend.service.d.ts.map +1 -1
  34. package/dist/esm/base-classes/services/repositories/__tests__/method-span-scan.guard-helpers.d.ts.map +1 -1
  35. package/dist/esm/base-classes/services/repositories/__tests__/mock-repositories-registry-handler.service.d.ts.map +1 -1
  36. package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts.map +1 -1
  37. package/dist/esm/base-classes/services/repositories/http-api/http-api-filter-translation.backend.d.ts.map +1 -1
  38. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts.map +1 -1
  39. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js +13 -4
  40. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js.map +1 -1
  41. package/dist/esm/base-classes/services/repositories/http-api/http-api-query.backend.d.ts.map +1 -1
  42. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts.map +1 -1
  43. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js +17 -0
  44. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js.map +1 -1
  45. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts.map +1 -1
  46. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js.map +1 -1
  47. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts.map +1 -1
  48. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js.map +1 -1
  49. package/dist/esm/base-classes/services/repositories/http-api/http-api-row-projection.backend.d.ts.map +1 -1
  50. package/dist/esm/base-classes/services/repositories/http-api/http-api-subject-erasure-effect.backend.d.ts.map +1 -1
  51. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts.map +1 -1
  52. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js.map +1 -1
  53. package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.d.ts.map +1 -1
  54. package/dist/esm/base-classes/services/repositories/http-api/odoo-jsonrpc-compiler.backend.d.ts.map +1 -1
  55. package/dist/esm/base-classes/services/repositories/http-api/rest-json-query-compiler.backend.d.ts.map +1 -1
  56. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts.map +1 -1
  57. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js.map +1 -1
  58. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.d.ts.map +1 -1
  59. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.d.ts.map +1 -1
  60. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +57 -0
  61. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts.map +1 -1
  62. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js +95 -2
  63. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js.map +1 -1
  64. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts.map +1 -1
  65. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -1
  66. package/dist/esm/base-classes/services/repositories/repository-guarded-mutation.backend.types.d.ts.map +1 -1
  67. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts +5 -2
  68. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts.map +1 -1
  69. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js +14 -3
  70. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js.map +1 -1
  71. package/dist/esm/base-classes/services/repositories/repository-version-metadata.backend.utils.d.ts.map +1 -1
  72. package/dist/esm/base-classes/services/repositories/resource-write-integrity.backend.d.ts.map +1 -1
  73. package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.d.ts +72 -0
  74. package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.d.ts.map +1 -0
  75. package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.js +88 -0
  76. package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.js.map +1 -0
  77. package/dist/esm/base-classes/services/repositories/unique-constraint-conflict-reference.backend.d.ts.map +1 -1
  78. package/dist/esm/base-classes/services/resource-operations-helper.backend.service.d.ts.map +1 -1
  79. package/dist/esm/base-classes/services/services/__tests__/mock-services-registry-handler.service.d.ts.map +1 -1
  80. package/dist/esm/base-classes/services/services/__tests__/mock-system-access.service.d.ts.map +1 -1
  81. package/dist/esm/base-classes/services/services/read-only-field-change.backend.utils.d.ts.map +1 -1
  82. package/dist/esm/base-classes/services/services/resource-operation-audit-emission.backend.utils.d.ts.map +1 -1
  83. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts.map +1 -1
  84. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.js.map +1 -1
  85. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-registry.backend.service.d.ts.map +1 -1
  86. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation.factory.backend.d.ts.map +1 -1
  87. package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.d.ts.map +1 -1
  88. package/dist/esm/base-classes/services/services/resource-operation-server-injected-fields.backend.utils.d.ts.map +1 -1
  89. package/dist/esm/base-classes/services/services/resource-operation-transaction-persistence.backend.utils.d.ts.map +1 -1
  90. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.d.ts.map +1 -1
  91. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js.map +1 -1
  92. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts.map +1 -1
  93. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js.map +1 -1
  94. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts.map +1 -1
  95. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js +44 -6
  96. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js.map +1 -1
  97. package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts.map +1 -1
  98. package/dist/esm/base-classes/services/services/system-access.backend.service.js.map +1 -1
  99. package/dist/esm/base-classes/utils/backend-type-utils.d.ts.map +1 -1
  100. package/dist/esm/base-classes/utils/single-subject-addressing.backend.utils.d.ts.map +1 -1
  101. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts.map +1 -1
  102. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js.map +1 -1
  103. package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts.map +1 -1
  104. package/dist/esm/billing/batches/usage-flush.batch.backend.service.js.map +1 -1
  105. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts.map +1 -1
  106. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js.map +1 -1
  107. package/dist/esm/billing/services/back-office/abstract-billing.backend.service.d.ts.map +1 -1
  108. package/dist/esm/billing/services/back-office/billing-feature-sync.backend.service.d.ts.map +1 -1
  109. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts +1 -1
  110. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts.map +1 -1
  111. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js +5 -4
  112. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js.map +1 -1
  113. package/dist/esm/billing/services/back-office/billing-state.backend.service.d.ts.map +1 -1
  114. package/dist/esm/billing/services/back-office/billing-state.backend.service.js +11 -1
  115. package/dist/esm/billing/services/back-office/billing-state.backend.service.js.map +1 -1
  116. package/dist/esm/billing/services/back-office/billing-subject-erasure-effect.backend.d.ts.map +1 -1
  117. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts.map +1 -1
  118. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js.map +1 -1
  119. package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts.map +1 -1
  120. package/dist/esm/billing/services/back-office/usage-metering.backend.service.js.map +1 -1
  121. package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts.map +1 -1
  122. package/dist/esm/billing/services/billing-adapter-registry.backend.js.map +1 -1
  123. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts.map +1 -1
  124. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js.map +1 -1
  125. package/dist/esm/billing/services/billing.utils.d.ts.map +1 -1
  126. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.d.ts.map +1 -1
  127. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js.map +1 -1
  128. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts +32 -0
  129. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts.map +1 -1
  130. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js +32 -1
  131. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js.map +1 -1
  132. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts.map +1 -1
  133. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js.map +1 -1
  134. package/dist/esm/billing/services/custom-impl/credit-pool.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
  135. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
  136. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js.map +1 -1
  137. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.d.ts.map +1 -1
  138. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js.map +1 -1
  139. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts +9 -6
  140. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts.map +1 -1
  141. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js +9 -6
  142. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js.map +1 -1
  143. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts.map +1 -1
  144. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js.map +1 -1
  145. package/dist/esm/billing/services/webhooks/billing-webhook-adapter.backend.service.d.ts.map +1 -1
  146. package/dist/esm/billing/services/webhooks/billing-webhook-capability-handler.backend.service.d.ts.map +1 -1
  147. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts.map +1 -1
  148. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js +50 -3
  149. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js.map +1 -1
  150. package/dist/esm/billing/testing/billing-test-fixtures.d.ts.map +1 -1
  151. package/dist/esm/billing/testing/mock-billing-provider.d.ts.map +1 -1
  152. package/dist/esm/billing/testing/mock-billing-provider.js.map +1 -1
  153. package/dist/esm/charts/controllers/chart.backend.controller.d.ts.map +1 -1
  154. package/dist/esm/charts/services/chart-registry.backend.service.d.ts +80 -7
  155. package/dist/esm/charts/services/chart-registry.backend.service.d.ts.map +1 -1
  156. package/dist/esm/charts/services/chart-registry.backend.service.js +115 -8
  157. package/dist/esm/charts/services/chart-registry.backend.service.js.map +1 -1
  158. package/dist/esm/companion-exports.d.ts.map +1 -1
  159. package/dist/esm/compliance/audit-trails/audit-logs.custom-impl.backend.service.d.ts.map +1 -1
  160. package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.d.ts.map +1 -1
  161. package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js.map +1 -1
  162. package/dist/esm/compliance/audit-trails/batches/immudb-audit-reconcile.batch.backend.service.d.ts.map +1 -1
  163. package/dist/esm/compliance/audit-trails/batches/siem-webhook-delivery.batch.backend.service.d.ts.map +1 -1
  164. package/dist/esm/compliance/audit-trails/services/__tests__/mock-audit-logs.service.d.ts.map +1 -1
  165. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts.map +1 -1
  166. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js.map +1 -1
  167. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts +107 -4
  168. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts.map +1 -1
  169. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js +176 -5
  170. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js.map +1 -1
  171. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.d.ts.map +1 -1
  172. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js.map +1 -1
  173. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -1
  174. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js.map +1 -1
  175. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts.map +1 -1
  176. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js.map +1 -1
  177. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts.map +1 -1
  178. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js.map +1 -1
  179. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.d.ts.map +1 -1
  180. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js +21 -0
  181. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js.map +1 -1
  182. package/dist/esm/compliance/audit-trails/services/utils/ocsf-class-mapping.backend.utils.d.ts.map +1 -1
  183. package/dist/esm/compliance/audit-trails/services/utils/siem-dictionary.backend.utils.d.ts.map +1 -1
  184. package/dist/esm/compliance/audit-trails/services/utils/siem-ocsf-projection.backend.utils.d.ts.map +1 -1
  185. package/dist/esm/compliance/audit-trails/services/utils/siem-projection-contract.backend.utils.d.ts.map +1 -1
  186. package/dist/esm/compliance/audit-trails/utils/audit-actor.backend.utils.d.ts.map +1 -1
  187. package/dist/esm/compliance/audit-trails/utils/layer2-audit-provider-boot-diagnostic.backend.utils.d.ts.map +1 -1
  188. package/dist/esm/compliance/index.d.ts.map +1 -1
  189. package/dist/esm/compliance/privacy/retention-hide-predicate.backend.d.ts.map +1 -1
  190. package/dist/esm/compliance/privacy/services/subject-erasure-external-effects.backend.service.d.ts.map +1 -1
  191. package/dist/esm/compliance/privacy/services/subject-session-revocation.backend.service.d.ts.map +1 -1
  192. package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts.map +1 -1
  193. package/dist/esm/config/bootstrap/application-runtime-profile.backend.js.map +1 -1
  194. package/dist/esm/config/bootstrap/minion-initialization-projection.backend.d.ts.map +1 -1
  195. package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.d.ts.map +1 -1
  196. package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.js +3 -0
  197. package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.js.map +1 -1
  198. package/dist/esm/config/bootstrap/runtime-principal.backend.service.d.ts.map +1 -1
  199. package/dist/esm/config/custom/application-config-controller.backend.service.d.ts.map +1 -1
  200. package/dist/esm/config/models/app-config-secrets.backend.schemas.d.ts.map +1 -1
  201. package/dist/esm/config/models/app-config.backend-authored.definitions.d.ts.map +1 -1
  202. package/dist/esm/config/models/app-config.backend.schemas.d.ts +4 -4
  203. package/dist/esm/config/models/app-config.backend.schemas.d.ts.map +1 -1
  204. package/dist/esm/config/models/app-config.backend.schemas.js.map +1 -1
  205. package/dist/esm/config/models/app-env-config.backend.schemas.d.ts.map +1 -1
  206. package/dist/esm/config/models/apps-manager-transport.backend.definitions.d.ts +36 -0
  207. package/dist/esm/config/models/apps-manager-transport.backend.definitions.d.ts.map +1 -0
  208. package/dist/esm/config/models/apps-manager-transport.backend.definitions.js +36 -0
  209. package/dist/esm/config/models/apps-manager-transport.backend.definitions.js.map +1 -0
  210. package/dist/esm/config/models/config-mutation-boundary.utils.d.ts.map +1 -1
  211. package/dist/esm/config/models/postgresql-env-config.backend.schemas.d.ts.map +1 -1
  212. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts.map +1 -1
  213. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js.map +1 -1
  214. package/dist/esm/config/models/runtime-topology.backend.contracts.d.ts.map +1 -1
  215. package/dist/esm/config/services/__tests__/mock-app-configuration.service.d.ts.map +1 -1
  216. package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts.map +1 -1
  217. package/dist/esm/config/services/app-configuration-loader.backend.service.js +3 -0
  218. package/dist/esm/config/services/app-configuration-loader.backend.service.js.map +1 -1
  219. package/dist/esm/config/services/app-configuration.backend.service.d.ts.map +1 -1
  220. package/dist/esm/config/services/app-configuration.backend.service.js.map +1 -1
  221. package/dist/esm/config/services/app-configuration.backend.utils.d.ts.map +1 -1
  222. package/dist/esm/config/services/app-configuration.backend.utils.js.map +1 -1
  223. package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts +12 -0
  224. package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts.map +1 -1
  225. package/dist/esm/config/services/application-startup-config-validator.backend.service.js +28 -0
  226. package/dist/esm/config/services/application-startup-config-validator.backend.service.js.map +1 -1
  227. package/dist/esm/data-seeding/batches/data-seeding-run-cleanup.batch.backend.service.d.ts.map +1 -1
  228. package/dist/esm/data-seeding/batches/data-seeding-scheduled-rerun.batch.backend.service.d.ts.map +1 -1
  229. package/dist/esm/data-seeding/controllers/data-seeding-admin.backend.contracts.d.ts.map +1 -1
  230. package/dist/esm/data-seeding/controllers/data-seeding-admin.backend.controller.d.ts.map +1 -1
  231. package/dist/esm/data-seeding/data-seeding-models.d.ts.map +1 -1
  232. package/dist/esm/data-seeding/models/business-key-resolver.shared.utils.d.ts.map +1 -1
  233. package/dist/esm/data-seeding/models/data-seed-execution-context.shared.types.d.ts.map +1 -1
  234. package/dist/esm/data-seeding/models/data-seed-migrator-runner.shared.utils.d.ts.map +1 -1
  235. package/dist/esm/data-seeding/models/data-seed-reconciler.shared.utils.d.ts.map +1 -1
  236. package/dist/esm/data-seeding/models/data-seed-row-metadata.shared.schemas.d.ts.map +1 -1
  237. package/dist/esm/data-seeding/models/data-seed-row-metadata.shared.utils.d.ts.map +1 -1
  238. package/dist/esm/data-seeding/models/data-seed-run.shared.resources-config.schemas.d.ts.map +1 -1
  239. package/dist/esm/data-seeding/models/data-seed-run.shared.schemas.d.ts.map +1 -1
  240. package/dist/esm/data-seeding/models/data-seed-trigger-mode-matrix.shared.utils.d.ts.map +1 -1
  241. package/dist/esm/data-seeding/models/data-seed.shared.schemas.d.ts.map +1 -1
  242. package/dist/esm/data-seeding/services/data-seed-application-bootstrap.backend.d.ts.map +1 -1
  243. package/dist/esm/data-seeding/services/data-seed-dispatcher.backend.service.d.ts.map +1 -1
  244. package/dist/esm/data-seeding/services/data-seed-registry.backend.service.d.ts.map +1 -1
  245. package/dist/esm/data-seeding/services/data-seed-scope-resolver-registry.backend.service.d.ts.map +1 -1
  246. package/dist/esm/data-seeding/services/engines/additive-seed-engine.backend.service.d.ts.map +1 -1
  247. package/dist/esm/data-seeding/services/engines/lazy-seed-engine.backend.service.d.ts.map +1 -1
  248. package/dist/esm/data-seeding/services/engines/manual-seed-engine.backend.service.d.ts.map +1 -1
  249. package/dist/esm/data-seeding/services/engines/sync-seed-engine.backend.service.d.ts.map +1 -1
  250. package/dist/esm/data-seeding/services/engines/upgrade-seed-engine.backend.service.d.ts.map +1 -1
  251. package/dist/esm/data-seeding/services/shared/data-seed-business-key.shared.utils.d.ts.map +1 -1
  252. package/dist/esm/data-seeding/services/shared/data-seed-error.shared.utils.d.ts.map +1 -1
  253. package/dist/esm/data-seeding/services/shared/data-seed-run-counters.shared.types.d.ts.map +1 -1
  254. package/dist/esm/data-seeding/services/shared/data-seed-run-ledger.backend.d.ts.map +1 -1
  255. package/dist/esm/data-seeding/services/shared/data-seed-scope-anchor.shared.types.d.ts.map +1 -1
  256. package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.d.ts.map +1 -1
  257. package/dist/esm/data-seeding/services/shared/data-seed-scope-resolution.backend.d.ts.map +1 -1
  258. package/dist/esm/databases/models/aggregation.backend.schemas.d.ts.map +1 -1
  259. package/dist/esm/databases/models/databases.backend.schemas.d.ts.map +1 -1
  260. package/dist/esm/databases/models/filter.backend.schemas.d.ts.map +1 -1
  261. package/dist/esm/databases/models/resolve-persistence-adapter.backend.utils.d.ts.map +1 -1
  262. package/dist/esm/databases/models/sql.backend.schemas.d.ts.map +1 -1
  263. package/dist/esm/databases/models/transaction.shared.schemas.d.ts.map +1 -1
  264. package/dist/esm/databases/services/__tests__/mock-mongo-transaction-registry.service.d.ts.map +1 -1
  265. package/dist/esm/databases/services/__tests__/mock-mongodb.service.d.ts.map +1 -1
  266. package/dist/esm/databases/services/__tests__/mock-mongoose-model.service.d.ts.map +1 -1
  267. package/dist/esm/databases/services/__tests__/mock-redis.service.d.ts.map +1 -1
  268. package/dist/esm/databases/services/__tests__/mock-zod-mongoose-schema-convertor.service.d.ts.map +1 -1
  269. package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.d.ts.map +1 -1
  270. package/dist/esm/databases/services/aggregation/aggregation-query.backend.service.d.ts.map +1 -1
  271. package/dist/esm/databases/services/aggregation/computed-measure-evaluator.backend.service.d.ts.map +1 -1
  272. package/dist/esm/databases/services/aggregation/field-access-validator.backend.service.d.ts.map +1 -1
  273. package/dist/esm/databases/services/aggregation/time-series-densifier.backend.service.d.ts.map +1 -1
  274. package/dist/esm/databases/services/aggregation/topn-processor.backend.service.d.ts.map +1 -1
  275. package/dist/esm/databases/services/aggregation/window-function-processor.backend.service.d.ts.map +1 -1
  276. package/dist/esm/databases/services/db-utils.d.ts.map +1 -1
  277. package/dist/esm/databases/services/mongo-aggregation.backend.service.d.ts.map +1 -1
  278. package/dist/esm/databases/services/mongodb.service.d.ts.map +1 -1
  279. package/dist/esm/databases/services/postgresql-aggregation.backend.service.d.ts.map +1 -1
  280. package/dist/esm/databases/services/postgresql-database.backend.service.d.ts.map +1 -1
  281. package/dist/esm/databases/services/postgresql-development-provisioning.backend.d.ts.map +1 -1
  282. package/dist/esm/databases/services/postgresql-filter.backend.service.d.ts.map +1 -1
  283. package/dist/esm/databases/services/postgresql-migration-runner.backend.d.ts.map +1 -1
  284. package/dist/esm/databases/services/postgresql-schema-ddl.backend.d.ts.map +1 -1
  285. package/dist/esm/databases/services/postgresql-schema-migration-sql.backend.d.ts.map +1 -1
  286. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.d.ts.map +1 -1
  287. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js.map +1 -1
  288. package/dist/esm/databases/services/postgresql-schema-plan-lockfile.backend.d.ts.map +1 -1
  289. package/dist/esm/databases/services/redis.service.d.ts.map +1 -1
  290. package/dist/esm/databases/services/resource-persistence-unit-of-work.backend.service.d.ts.map +1 -1
  291. package/dist/esm/databases/services/schema-planning-standalone.backend.d.ts.map +1 -1
  292. package/dist/esm/databases/services/zod-to-mongoose-schema-convertor.backend.service.d.ts.map +1 -1
  293. package/dist/esm/databases/services/zod-to-sql-hybrid-schema.planner.d.ts.map +1 -1
  294. package/dist/esm/databases/utils/postgresql-identifier.backend.utils.d.ts.map +1 -1
  295. package/dist/esm/errors/services/__tests__/mock-error-builder.service.d.ts.map +1 -1
  296. package/dist/esm/errors/services/error-builder.backend.service.d.ts.map +1 -1
  297. package/dist/esm/errors/services/error-builder.backend.service.js.map +1 -1
  298. package/dist/esm/errors/services/error-handler.backend.service.d.ts.map +1 -1
  299. package/dist/esm/errors/services/error-handler.backend.service.js.map +1 -1
  300. package/dist/esm/errors/services/rate-limit.backend.service.d.ts.map +1 -1
  301. package/dist/esm/errors/services/rate-limit.backend.service.js.map +1 -1
  302. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts.map +1 -1
  303. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js.map +1 -1
  304. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts.map +1 -1
  305. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js.map +1 -1
  306. package/dist/esm/external-data/batches/external-data-pipeline-scheduled-run.batch.backend.service.d.ts.map +1 -1
  307. package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts.map +1 -1
  308. package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts.map +1 -1
  309. package/dist/esm/external-data/external-data-extraction-source.backend.d.ts.map +1 -1
  310. package/dist/esm/external-data/external-data-models.exports.d.ts.map +1 -1
  311. package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts.map +1 -1
  312. package/dist/esm/external-data/external-data-pipeline-run.backend.service.js.map +1 -1
  313. package/dist/esm/external-data/external-data-transform.backend.d.ts.map +1 -1
  314. package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts.map +1 -1
  315. package/dist/esm/external-providers/models/external-providers.backend.schemas.d.ts.map +1 -1
  316. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts.map +1 -1
  317. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.js.map +1 -1
  318. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts +102 -52
  319. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts.map +1 -1
  320. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js +117 -71
  321. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js.map +1 -1
  322. package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts.map +1 -1
  323. package/dist/esm/external-providers/operations/provider-operation-request.backend.js.map +1 -1
  324. package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts.map +1 -1
  325. package/dist/esm/external-providers/operations/provider-request-signing.backend.js +26 -7
  326. package/dist/esm/external-providers/operations/provider-request-signing.backend.js.map +1 -1
  327. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts.map +1 -1
  328. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js.map +1 -1
  329. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts.map +1 -1
  330. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js.map +1 -1
  331. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts.map +1 -1
  332. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js.map +1 -1
  333. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts.map +1 -1
  334. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js.map +1 -1
  335. package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts +81 -34
  336. package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts.map +1 -1
  337. package/dist/esm/external-providers/services/document-extraction.backend.service.js +179 -98
  338. package/dist/esm/external-providers/services/document-extraction.backend.service.js.map +1 -1
  339. package/dist/esm/external-providers/services/embeddings.backend.service.d.ts.map +1 -1
  340. package/dist/esm/external-providers/services/embeddings.backend.service.js.map +1 -1
  341. package/dist/esm/external-providers/services/external-api-handler.backend.service.d.ts.map +1 -1
  342. package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts +121 -0
  343. package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts.map +1 -1
  344. package/dist/esm/external-providers/services/external-providers-registry.backend.service.js +151 -0
  345. package/dist/esm/external-providers/services/external-providers-registry.backend.service.js.map +1 -1
  346. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts +15 -1
  347. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts.map +1 -1
  348. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js +60 -4
  349. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js.map +1 -1
  350. package/dist/esm/features/controllers/features.backend.controller.d.ts.map +1 -1
  351. package/dist/esm/features/services/__tests__/mock-feature-definition-registry.service.d.ts.map +1 -1
  352. package/dist/esm/features/services/__tests__/mock-feature-resolution.service.d.ts.map +1 -1
  353. package/dist/esm/features/services/application-features-admin-write-path.custom-impl.backend.service.d.ts.map +1 -1
  354. package/dist/esm/features/services/feature-definition-registry.backend.service.d.ts.map +1 -1
  355. package/dist/esm/features/services/feature-gate.backend.service.d.ts.map +1 -1
  356. package/dist/esm/features/services/feature-resolution.backend.service.d.ts.map +1 -1
  357. package/dist/esm/features/services/organization-features-admin-write-path.custom-impl.backend.service.d.ts.map +1 -1
  358. package/dist/esm/features/services/scope-feature-ledger-relationship.backend.utils.d.ts.map +1 -1
  359. package/dist/esm/features/services/scope-features-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -1
  360. package/dist/esm/features/testing/feature-test-utils.d.ts.map +1 -1
  361. package/dist/esm/files/batches/files-cleanup.batch.backend.service.d.ts.map +1 -1
  362. package/dist/esm/files/constraints/file-analyzers.types.d.ts.map +1 -1
  363. package/dist/esm/files/constraints/file-constraint-resolver-chain.backend.service.d.ts.map +1 -1
  364. package/dist/esm/files/constraints/file-constraint.types.d.ts.map +1 -1
  365. package/dist/esm/files/constraints/file-validation.backend.service.d.ts.map +1 -1
  366. package/dist/esm/files/constraints/resource-field-constraint-resolver.backend.service.d.ts.map +1 -1
  367. package/dist/esm/files/controllers/file.controller.d.ts.map +1 -1
  368. package/dist/esm/files/controllers/file.controller.js.map +1 -1
  369. package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts.map +1 -1
  370. package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js.map +1 -1
  371. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts +37 -0
  372. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts.map +1 -1
  373. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js +221 -21
  374. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js.map +1 -1
  375. package/dist/esm/files/scanning/clamav-scanner.backend.service.d.ts.map +1 -1
  376. package/dist/esm/files/scanning/file-scan.types.d.ts.map +1 -1
  377. package/dist/esm/files/scanning/yara-scanner.backend.service.d.ts.map +1 -1
  378. package/dist/esm/files/scanning/yara-scanner.backend.service.js +20 -2
  379. package/dist/esm/files/scanning/yara-scanner.backend.service.js.map +1 -1
  380. package/dist/esm/files/services/__tests__/mock-file-field-detection.service.d.ts.map +1 -1
  381. package/dist/esm/files/services/__tests__/mock-file-operation-handler.service.d.ts.map +1 -1
  382. package/dist/esm/files/services/__tests__/mock-file-repository.service.d.ts.map +1 -1
  383. package/dist/esm/files/services/file-field-detection.backend.service.d.ts.map +1 -1
  384. package/dist/esm/files/services/file-operation-handler.backend.service.d.ts.map +1 -1
  385. package/dist/esm/files/services/file-operation-handler.backend.service.js.map +1 -1
  386. package/dist/esm/files/services/file-population.backend.service.d.ts.map +1 -1
  387. package/dist/esm/files/services/file-scanning.backend.service.d.ts.map +1 -1
  388. package/dist/esm/files/services/file-scanning.backend.service.js +5 -0
  389. package/dist/esm/files/services/file-scanning.backend.service.js.map +1 -1
  390. package/dist/esm/files/services/file-text-extraction.backend.service.d.ts.map +1 -1
  391. package/dist/esm/files/services/file-text-extraction.backend.service.js +8 -5
  392. package/dist/esm/files/services/file-text-extraction.backend.service.js.map +1 -1
  393. package/dist/esm/files/services/file-upload-grant.backend.service.d.ts.map +1 -1
  394. package/dist/esm/files/services/file-upload-grant.backend.service.js.map +1 -1
  395. package/dist/esm/files/services/files.backend.service.d.ts.map +1 -1
  396. package/dist/esm/files/services/files.backend.service.js +3 -1
  397. package/dist/esm/files/services/files.backend.service.js.map +1 -1
  398. package/dist/esm/files/services/rag-source-field-detection.backend.service.d.ts.map +1 -1
  399. package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts.map +1 -1
  400. package/dist/esm/files/storage/application-storage-key.backend.utils.js.map +1 -1
  401. package/dist/esm/files/storage/file-storage-path-resolver.backend.service.d.ts.map +1 -1
  402. package/dist/esm/files/storage/file-storage-provider.types.d.ts +36 -1
  403. package/dist/esm/files/storage/file-storage-provider.types.d.ts.map +1 -1
  404. package/dist/esm/files/storage/file-storage-provider.types.js.map +1 -1
  405. package/dist/esm/files/storage/file-storage-router.backend.service.d.ts +21 -3
  406. package/dist/esm/files/storage/file-storage-router.backend.service.d.ts.map +1 -1
  407. package/dist/esm/files/storage/file-storage-router.backend.service.js +38 -5
  408. package/dist/esm/files/storage/file-storage-router.backend.service.js.map +1 -1
  409. package/dist/esm/files/storage/google-drive-storage-provider.backend.service.d.ts +87 -0
  410. package/dist/esm/files/storage/google-drive-storage-provider.backend.service.d.ts.map +1 -0
  411. package/dist/esm/files/storage/google-drive-storage-provider.backend.service.js +340 -0
  412. package/dist/esm/files/storage/google-drive-storage-provider.backend.service.js.map +1 -0
  413. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts.map +1 -1
  414. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js.map +1 -1
  415. package/dist/esm/files/storage/storage-credential-provider.backend.utils.d.ts.map +1 -1
  416. package/dist/esm/files/storage/storage-platform-sts-credential-resolver.backend.utils.d.ts.map +1 -1
  417. package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.d.ts.map +1 -1
  418. package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.js +10 -3
  419. package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.js.map +1 -1
  420. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.d.ts.map +1 -1
  421. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js.map +1 -1
  422. package/dist/esm/files/utils/file-field-schema-path.backend.utils.d.ts.map +1 -1
  423. package/dist/esm/files/utils/file-field-schema-path.backend.utils.js.map +1 -1
  424. package/dist/esm/files/utils/file-upload.utils.d.ts.map +1 -1
  425. package/dist/esm/files/utils/file-uploader.utils.d.ts.map +1 -1
  426. package/dist/esm/files/utils/file-uploader.utils.js.map +1 -1
  427. package/dist/esm/files/utils/file-validation.utils.d.ts.map +1 -1
  428. package/dist/esm/files/utils/image-derivation.backend.utils.d.ts.map +1 -1
  429. package/dist/esm/files/utils/image-thumbnail.backend.utils.d.ts.map +1 -1
  430. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts.map +1 -1
  431. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js.map +1 -1
  432. package/dist/esm/files/utils/rag-source-field-schema-path.backend.utils.d.ts.map +1 -1
  433. package/dist/esm/files/utils/storage-application-identity.backend.utils.d.ts.map +1 -1
  434. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts.map +1 -1
  435. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js.map +1 -1
  436. package/dist/esm/flows-actors/a2a/batches/a2a-push-delivery.batch.backend.service.d.ts.map +1 -1
  437. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.d.ts.map +1 -1
  438. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js.map +1 -1
  439. package/dist/esm/flows-actors/a2a/models/a2a-dialect.backend.schemas.d.ts.map +1 -1
  440. package/dist/esm/flows-actors/a2a/models/a2a-push-notification-delivery.backend.utils.d.ts.map +1 -1
  441. package/dist/esm/flows-actors/a2a/models/a2a-push-notification.backend.schemas.d.ts.map +1 -1
  442. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts.map +1 -1
  443. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js.map +1 -1
  444. package/dist/esm/flows-actors/a2a/services/a2a-push-delivery-log.repository.d.ts.map +1 -1
  445. package/dist/esm/flows-actors/a2a/services/a2a-push-dispatcher.backend.service.d.ts.map +1 -1
  446. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts.map +1 -1
  447. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js.map +1 -1
  448. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts.map +1 -1
  449. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js.map +1 -1
  450. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts.map +1 -1
  451. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js.map +1 -1
  452. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts.map +1 -1
  453. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.js.map +1 -1
  454. package/dist/esm/flows-actors/controllers/flows-actors.controller.d.ts.map +1 -1
  455. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts.map +1 -1
  456. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js.map +1 -1
  457. package/dist/esm/flows-actors/models/agent-facets.backend.definitions.d.ts.map +1 -1
  458. package/dist/esm/flows-actors/models/agents.backend.definitions.d.ts.map +1 -1
  459. package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts.map +1 -1
  460. package/dist/esm/flows-actors/models/core-facets.backend.definitions.js.map +1 -1
  461. package/dist/esm/flows-actors/models/flows-actors.backend.definitions.d.ts.map +1 -1
  462. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts.map +1 -1
  463. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.js.map +1 -1
  464. package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts +107 -16
  465. package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts.map +1 -1
  466. package/dist/esm/flows-actors/models/function-tools.backend.definitions.js +118 -18
  467. package/dist/esm/flows-actors/models/function-tools.backend.definitions.js.map +1 -1
  468. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.d.ts.map +1 -1
  469. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js.map +1 -1
  470. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts.map +1 -1
  471. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js.map +1 -1
  472. package/dist/esm/flows-actors/services/__tests__/fixtures/meta-workflow-evaluation-treatment.test-fixture.d.ts.map +1 -1
  473. package/dist/esm/flows-actors/services/actors-system.backend.service.d.ts.map +1 -1
  474. package/dist/esm/flows-actors/services/actors-system.backend.service.js.map +1 -1
  475. package/dist/esm/flows-actors/services/agent-call-trace-sink.backend.d.ts.map +1 -1
  476. package/dist/esm/flows-actors/services/agent-facets.backend.service.d.ts.map +1 -1
  477. package/dist/esm/flows-actors/services/agents.backend.service.d.ts +104 -5
  478. package/dist/esm/flows-actors/services/agents.backend.service.d.ts.map +1 -1
  479. package/dist/esm/flows-actors/services/agents.backend.service.js +263 -31
  480. package/dist/esm/flows-actors/services/agents.backend.service.js.map +1 -1
  481. package/dist/esm/flows-actors/services/context-curation.backend.service.d.ts.map +1 -1
  482. package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts +46 -1
  483. package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts.map +1 -1
  484. package/dist/esm/flows-actors/services/conversational-execution.backend.service.js +193 -6
  485. package/dist/esm/flows-actors/services/conversational-execution.backend.service.js.map +1 -1
  486. package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts.map +1 -1
  487. package/dist/esm/flows-actors/services/flows-actors-registry.service.js.map +1 -1
  488. package/dist/esm/flows-actors/services/flows.backend.services.d.ts.map +1 -1
  489. package/dist/esm/flows-actors/services/flows.backend.services.js.map +1 -1
  490. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.d.ts.map +1 -1
  491. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js.map +1 -1
  492. package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts.map +1 -1
  493. package/dist/esm/flows-actors/services/mcp-client.backend.service.js +3 -0
  494. package/dist/esm/flows-actors/services/mcp-client.backend.service.js.map +1 -1
  495. package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.d.ts +99 -0
  496. package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.d.ts.map +1 -0
  497. package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.js +155 -0
  498. package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.js.map +1 -0
  499. package/dist/esm/flows-actors/services/meta-workflow-evaluation-treatment-compiler.backend.service.d.ts.map +1 -1
  500. package/dist/esm/flows-actors/services/meta-workflow-standard-action-contracts.backend.service.d.ts.map +1 -1
  501. package/dist/esm/flows-actors/services/meta-workflow-standard-evaluation-contracts.backend.service.d.ts.map +1 -1
  502. package/dist/esm/flows-actors/services/meta-workflow-structured-artifact-action-compiler.backend.service.d.ts.map +1 -1
  503. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts.map +1 -1
  504. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js.map +1 -1
  505. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts.map +1 -1
  506. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js +9 -0
  507. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js.map +1 -1
  508. package/dist/esm/flows-actors/utils/bounded-subprocess.backend.utils.d.ts.map +1 -1
  509. package/dist/esm/flows-actors/utils/flows-actors-frontend-extractor.utils.d.ts.map +1 -1
  510. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts.map +1 -1
  511. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js.map +1 -1
  512. package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.d.ts.map +1 -1
  513. package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.js.map +1 -1
  514. package/dist/esm/flows-actors/utils/prompt-ir-adapters.backend.utils.d.ts.map +1 -1
  515. package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.d.ts +77 -0
  516. package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.d.ts.map +1 -0
  517. package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.js +164 -0
  518. package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.js.map +1 -0
  519. package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.d.ts +48 -0
  520. package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.d.ts.map +1 -0
  521. package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.js +101 -0
  522. package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.js.map +1 -0
  523. package/dist/esm/guidance/batches/dormancy-detection.batch.backend.service.d.ts.map +1 -1
  524. package/dist/esm/guidance/services/guidance-trigger-evaluator.backend.service.d.ts.map +1 -1
  525. package/dist/esm/guidance/services/lifecycle-custom-implementations.backend.d.ts.map +1 -1
  526. package/dist/esm/guidance/services/lifecycle-evaluator.backend.service.d.ts.map +1 -1
  527. package/dist/esm/guidance/services/lifecycle-scope-id.backend.utils.d.ts.map +1 -1
  528. package/dist/esm/guidance/services/milestone-condition-registry.backend.service.d.ts.map +1 -1
  529. package/dist/esm/guidance/services/milestone-definition-registry.backend.service.d.ts.map +1 -1
  530. package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts.map +1 -1
  531. package/dist/esm/guidance/services/milestone-evaluator.backend.service.js.map +1 -1
  532. package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts.map +1 -1
  533. package/dist/esm/guidance/services/progression-state-store.backend.service.js.map +1 -1
  534. package/dist/esm/guidance/services/scoped-state-read-custom-implementations.backend.d.ts.map +1 -1
  535. package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts.map +1 -1
  536. package/dist/esm/i18n/controllers/i18n-controller.backend.service.js.map +1 -1
  537. package/dist/esm/i18n/services/i18n.backend.service.d.ts.map +1 -1
  538. package/dist/esm/index.d.ts +0 -1
  539. package/dist/esm/index.d.ts.map +1 -1
  540. package/dist/esm/index.js +0 -1
  541. package/dist/esm/index.js.map +1 -1
  542. package/dist/esm/inject/models/container.d.ts +10 -0
  543. package/dist/esm/inject/models/container.d.ts.map +1 -1
  544. package/dist/esm/inject/models/container.js +49 -1
  545. package/dist/esm/inject/models/container.js.map +1 -1
  546. package/dist/esm/inject/models/service-types.d.ts +3 -0
  547. package/dist/esm/inject/models/service-types.d.ts.map +1 -1
  548. package/dist/esm/inject/models/service-types.js +3 -0
  549. package/dist/esm/inject/models/service-types.js.map +1 -1
  550. package/dist/esm/mcp/controllers/mcp.controller.d.ts.map +1 -1
  551. package/dist/esm/mcp/controllers/mcp.controller.js +50 -3
  552. package/dist/esm/mcp/controllers/mcp.controller.js.map +1 -1
  553. package/dist/esm/mcp/models/mcp-protocol.backend.schemas.d.ts.map +1 -1
  554. package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts.map +1 -1
  555. package/dist/esm/mcp/models/mcp-tool.backend.schemas.js.map +1 -1
  556. package/dist/esm/mcp/services/mcp-server.backend.service.d.ts.map +1 -1
  557. package/dist/esm/mcp/services/mcp-server.backend.service.js.map +1 -1
  558. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts.map +1 -1
  559. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js.map +1 -1
  560. package/dist/esm/mcp/services/resource-server-instances-registry.backend.service.d.ts.map +1 -1
  561. package/dist/esm/mcp/utils/zod-to-mcp-json-schema.backend.utils.d.ts.map +1 -1
  562. package/dist/esm/meta-workflow-runtime.exports.d.ts.map +1 -1
  563. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.d.ts.map +1 -1
  564. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js.map +1 -1
  565. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts.map +1 -1
  566. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js.map +1 -1
  567. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts.map +1 -1
  568. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js.map +1 -1
  569. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts.map +1 -1
  570. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.js.map +1 -1
  571. package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts.map +1 -1
  572. package/dist/esm/monitoring/logger/models/logger.backend.schemas.js.map +1 -1
  573. package/dist/esm/monitoring/logger/services/__tests__/mock-logger.service.d.ts.map +1 -1
  574. package/dist/esm/monitoring/logger/services/logger.service.d.ts +12 -0
  575. package/dist/esm/monitoring/logger/services/logger.service.d.ts.map +1 -1
  576. package/dist/esm/monitoring/logger/services/logger.service.js +3 -3
  577. package/dist/esm/monitoring/logger/services/logger.service.js.map +1 -1
  578. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts.map +1 -1
  579. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js.map +1 -1
  580. package/dist/esm/monitoring/logger/utils/log-value-normalization.backend.utils.d.ts.map +1 -1
  581. package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts +10 -6
  582. package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts.map +1 -1
  583. package/dist/esm/monitoring/observability/audit-observation-emission.backend.js +10 -6
  584. package/dist/esm/monitoring/observability/audit-observation-emission.backend.js.map +1 -1
  585. package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts.map +1 -1
  586. package/dist/esm/monitoring/observability/models/observability.backend.schemas.js.map +1 -1
  587. package/dist/esm/monitoring/observability/otel-preload.d.ts.map +1 -1
  588. package/dist/esm/monitoring/observability/otel-sdk-global-handle.d.ts.map +1 -1
  589. package/dist/esm/monitoring/observability/services/__tests__/mock-metrics.service.d.ts.map +1 -1
  590. package/dist/esm/monitoring/observability/services/metrics.service.d.ts.map +1 -1
  591. package/dist/esm/monitoring/observability/services/metrics.service.js.map +1 -1
  592. package/dist/esm/monitoring/observability/services/observability.backend.service.d.ts.map +1 -1
  593. package/dist/esm/notifications/email/components/email-components.d.ts.map +1 -1
  594. package/dist/esm/notifications/email/models/email-template-definition.d.ts.map +1 -1
  595. package/dist/esm/notifications/email/models/email-transport.backend.definitions.d.ts.map +1 -1
  596. package/dist/esm/notifications/email/services/email-batch-send.batch.backend.service.d.ts.map +1 -1
  597. package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts.map +1 -1
  598. package/dist/esm/notifications/email/services/email-template-registry.backend.service.js.map +1 -1
  599. package/dist/esm/notifications/email/services/email-template-validator.backend.service.d.ts.map +1 -1
  600. package/dist/esm/notifications/email/services/email-template-validator.backend.service.js.map +1 -1
  601. package/dist/esm/notifications/email/services/email.backend.service.d.ts +47 -6
  602. package/dist/esm/notifications/email/services/email.backend.service.d.ts.map +1 -1
  603. package/dist/esm/notifications/email/services/email.backend.service.js +86 -36
  604. package/dist/esm/notifications/email/services/email.backend.service.js.map +1 -1
  605. package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts.map +1 -1
  606. package/dist/esm/notifications/email/utils/color-conversion.utils.js.map +1 -1
  607. package/dist/esm/notifications/email/utils/interpolate-email-label.utils.d.ts.map +1 -1
  608. package/dist/esm/notifications/email/utils/zod-to-typescript.utils.d.ts.map +1 -1
  609. package/dist/esm/notifications/services/notification-badge.backend.service.d.ts.map +1 -1
  610. package/dist/esm/notifications/services/notification-badge.backend.service.js.map +1 -1
  611. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts.map +1 -1
  612. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -1
  613. package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.d.ts +32 -0
  614. package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.d.ts.map +1 -0
  615. package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.js +32 -0
  616. package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.js.map +1 -0
  617. package/dist/esm/notifications/sms/services/sms.backend.service.d.ts +64 -10
  618. package/dist/esm/notifications/sms/services/sms.backend.service.d.ts.map +1 -1
  619. package/dist/esm/notifications/sms/services/sms.backend.service.js +277 -82
  620. package/dist/esm/notifications/sms/services/sms.backend.service.js.map +1 -1
  621. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts.map +1 -1
  622. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js.map +1 -1
  623. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts.map +1 -1
  624. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js.map +1 -1
  625. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts.map +1 -1
  626. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts.map +1 -1
  627. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js.map +1 -1
  628. package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-delivery-log.custom-impl.backend.service.d.ts.map +1 -1
  629. package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-delivery-log.repository.d.ts.map +1 -1
  630. package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-dispatcher.backend.service.d.ts.map +1 -1
  631. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-public-key.custom-impl.backend.service.d.ts.map +1 -1
  632. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.d.ts.map +1 -1
  633. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js.map +1 -1
  634. package/dist/esm/notifications/webhooks/outbound/services/webhook-config.backend.service.d.ts.map +1 -1
  635. package/dist/esm/notifications/webhooks/services/polymorphic-lookup.backend.service.d.ts.map +1 -1
  636. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts.map +1 -1
  637. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js.map +1 -1
  638. package/dist/esm/organizations/batches/organization-member-invitation-sweep.batch.backend.service.d.ts.map +1 -1
  639. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.d.ts.map +1 -1
  640. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js.map +1 -1
  641. package/dist/esm/organizations/services/authority-change-audit.backend.utils.d.ts.map +1 -1
  642. package/dist/esm/organizations/services/invitation-acceptance.backend.utils.d.ts.map +1 -1
  643. package/dist/esm/organizations/services/org-creation-on-registration.backend.utils.d.ts.map +1 -1
  644. package/dist/esm/organizations/services/org-member-roles-validation.backend.utils.d.ts.map +1 -1
  645. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.d.ts.map +1 -1
  646. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js.map +1 -1
  647. package/dist/esm/organizations/services/organization-deletion-audit.custom-impl.backend.service.d.ts.map +1 -1
  648. package/dist/esm/organizations/services/organization-member-custom-implementation.backend.service.d.ts.map +1 -1
  649. package/dist/esm/organizations/services/organization-onboarding-operation.backend.utils.d.ts.map +1 -1
  650. package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.d.ts.map +1 -1
  651. package/dist/esm/organizations/services/organization-unit-member-custom-implementation.backend.service.d.ts.map +1 -1
  652. package/dist/esm/organizations/services/scim-provisioning-gate.backend.utils.d.ts.map +1 -1
  653. package/dist/esm/organizations/services/user-org-type-grant.backend.utils.d.ts.map +1 -1
  654. package/dist/esm/organizations/services/user-type-revocation-on-org-leave.backend.utils.d.ts.map +1 -1
  655. package/dist/esm/pdf-templates/__tests__/fixtures/tiny-pdf-template.fixture.d.ts.map +1 -1
  656. package/dist/esm/pdf-templates/models/pdf-template-binding.d.ts.map +1 -1
  657. package/dist/esm/pdf-templates/models/pdf-template-definition.d.ts.map +1 -1
  658. package/dist/esm/pdf-templates/services/pdf-generated-file-writer.backend.service.d.ts.map +1 -1
  659. package/dist/esm/pdf-templates/services/pdf-generation-orchestrator.backend.service.d.ts.map +1 -1
  660. package/dist/esm/pdf-templates/services/pdf-renderer.backend.service.d.ts.map +1 -1
  661. package/dist/esm/pdf-templates/services/pdf-template-binding.backend.service.d.ts.map +1 -1
  662. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts.map +1 -1
  663. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js.map +1 -1
  664. package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts.map +1 -1
  665. package/dist/esm/queue/adapters/queue-adapter.backend.binding.js.map +1 -1
  666. package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts.map +1 -1
  667. package/dist/esm/queue/adapters/queue-adapter.backend.interface.js.map +1 -1
  668. package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts.map +1 -1
  669. package/dist/esm/queue/adapters/queue-adapter.backend.options.js.map +1 -1
  670. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts.map +1 -1
  671. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js.map +1 -1
  672. package/dist/esm/queue/apps-crontabs-manager.backend.service.d.ts.map +1 -1
  673. package/dist/esm/queue/cron-job-sync.backend.service.d.ts.map +1 -1
  674. package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts.map +1 -1
  675. package/dist/esm/queue/domain-queue-consumer.backend.service.js.map +1 -1
  676. package/dist/esm/queue/job-completion-registry.backend.service.d.ts.map +1 -1
  677. package/dist/esm/queue/job-consumer.backend.service.d.ts.map +1 -1
  678. package/dist/esm/queue/job-consumer.backend.service.js.map +1 -1
  679. package/dist/esm/queue/job-executor.backend.service.d.ts.map +1 -1
  680. package/dist/esm/queue/job-executor.backend.service.js.map +1 -1
  681. package/dist/esm/queue/job-payload-storage.backend.service.d.ts.map +1 -1
  682. package/dist/esm/queue/job-status-tracking.backend.service.d.ts.map +1 -1
  683. package/dist/esm/queue/queue-monitoring.backend.service.d.ts.map +1 -1
  684. package/dist/esm/queue/queue-monitoring.backend.service.js.map +1 -1
  685. package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts.map +1 -1
  686. package/dist/esm/queue/queue-worker-initializer.backend.service.js.map +1 -1
  687. package/dist/esm/queue/queue.backend.service.d.ts.map +1 -1
  688. package/dist/esm/queue/queue.backend.service.js.map +1 -1
  689. package/dist/esm/queue/scheduled-message-verifier.backend.service.d.ts.map +1 -1
  690. package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts.map +1 -1
  691. package/dist/esm/queue/worker-shutdown-manager.backend.service.js.map +1 -1
  692. package/dist/esm/rag/batches/rag-embedding-drain.batch.backend.service.d.ts.map +1 -1
  693. package/dist/esm/rag/batches/rag-reconciliation-sweep.batch.backend.service.d.ts.map +1 -1
  694. package/dist/esm/rag/models/rag-chunk-store.backend.types.d.ts.map +1 -1
  695. package/dist/esm/rag/models/rag-retrieval.backend.types.d.ts.map +1 -1
  696. package/dist/esm/rag/services/mongodb-rag-chunk-store.backend.service.d.ts.map +1 -1
  697. package/dist/esm/rag/services/postgresql-rag-chunk-store.backend.service.d.ts.map +1 -1
  698. package/dist/esm/rag/services/rag-chunk-collection.mongodb-ddl.backend.d.ts.map +1 -1
  699. package/dist/esm/rag/services/rag-chunk-retrieval.mongodb-query.backend.d.ts.map +1 -1
  700. package/dist/esm/rag/services/rag-chunk-retrieval.postgresql-query.backend.d.ts.map +1 -1
  701. package/dist/esm/rag/services/rag-chunk-store.backend.service.d.ts.map +1 -1
  702. package/dist/esm/rag/services/rag-chunk-table.postgresql-ddl.backend.d.ts.map +1 -1
  703. package/dist/esm/rag/services/rag-ingestion.backend.service.d.ts.map +1 -1
  704. package/dist/esm/rag/services/rag-retrieval.backend.service.d.ts.map +1 -1
  705. package/dist/esm/rag/utils/rag-chunk-fusion.backend.utils.d.ts.map +1 -1
  706. package/dist/esm/rag/utils/rag-chunk-removal.backend.utils.d.ts.map +1 -1
  707. package/dist/esm/rag/utils/rag-chunk-row-shaping.backend.utils.d.ts.map +1 -1
  708. package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts.map +1 -1
  709. package/dist/esm/rag/utils/rag-chunking.backend.utils.js.map +1 -1
  710. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts.map +1 -1
  711. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js.map +1 -1
  712. package/dist/esm/rag/utils/rag-ingestion-trigger.backend.utils.d.ts.map +1 -1
  713. package/dist/esm/rag/utils/rag-retrieval-scope.backend.utils.d.ts.map +1 -1
  714. package/dist/esm/rag/utils/rag-source-field-value.backend.utils.d.ts.map +1 -1
  715. package/dist/esm/requests/models/api-routes.backend.defintions.d.ts.map +1 -1
  716. package/dist/esm/requests/models/requests.backend.schemas.d.ts.map +1 -1
  717. package/dist/esm/requests/service/platform-mutualized-handler.backend.service.d.ts.map +1 -1
  718. package/dist/esm/requests/service/platform-requests.backend.utils.d.ts.map +1 -1
  719. package/dist/esm/requests/service/remote-client-base.backend.service.d.ts.map +1 -1
  720. package/dist/esm/requests/service/serverless-services-handler.backend.service.d.ts.map +1 -1
  721. package/dist/esm/requests/service/websocket.service.d.ts.map +1 -1
  722. package/dist/esm/requests/service/websocket.service.js +49 -1
  723. package/dist/esm/requests/service/websocket.service.js.map +1 -1
  724. package/dist/esm/resources/backend-resource-registry.exports.d.ts.map +1 -1
  725. package/dist/esm/resources/models/custom-service-implementations.backend.definition.d.ts.map +1 -1
  726. package/dist/esm/resources/models/custom-service-implementations.backend.definition.js +2 -0
  727. package/dist/esm/resources/models/custom-service-implementations.backend.definition.js.map +1 -1
  728. package/dist/esm/resources/models/index.d.ts.map +1 -1
  729. package/dist/esm/resources/models/resources-operations.backend.definitions.d.ts.map +1 -1
  730. package/dist/esm/resources/models/resources-operations.backend.definitions.js.map +1 -1
  731. package/dist/esm/resources/models/resources-relationships.backend.definitions.d.ts.map +1 -1
  732. package/dist/esm/resources/models/resources-relationships.backend.definitions.js.map +1 -1
  733. package/dist/esm/resources/models/resources-types.backend.schemas.d.ts.map +1 -1
  734. package/dist/esm/resources/models/resources-types.backend.schemas.js.map +1 -1
  735. package/dist/esm/resources/models/resources.backend.schemas.d.ts.map +1 -1
  736. package/dist/esm/resources/models/virtual-fields.backend.types.d.ts.map +1 -1
  737. package/dist/esm/resources/services/__tests__/mock-resources-registry.service.d.ts.map +1 -1
  738. package/dist/esm/resources/services/resource-context.backend.service.d.ts.map +1 -1
  739. package/dist/esm/resources/services/resource-id.backend.service.d.ts.map +1 -1
  740. package/dist/esm/resources/services/resource-population.backend.service.d.ts +17 -2
  741. package/dist/esm/resources/services/resource-population.backend.service.d.ts.map +1 -1
  742. package/dist/esm/resources/services/resource-population.backend.service.js +74 -18
  743. package/dist/esm/resources/services/resource-population.backend.service.js.map +1 -1
  744. package/dist/esm/resources/services/resources-registry.backend.service.d.ts +23 -0
  745. package/dist/esm/resources/services/resources-registry.backend.service.d.ts.map +1 -1
  746. package/dist/esm/resources/services/resources-registry.backend.service.js +31 -0
  747. package/dist/esm/resources/services/resources-registry.backend.service.js.map +1 -1
  748. package/dist/esm/resources/services/virtual-fields.backend.service.d.ts.map +1 -1
  749. package/dist/esm/resources/utils/resource-retention.backend.utils.d.ts.map +1 -1
  750. package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts.map +1 -1
  751. package/dist/esm/runtime/controllers/health-controller.backend.service.js.map +1 -1
  752. package/dist/esm/runtime/domain-module.backend.definitions.d.ts.map +1 -1
  753. package/dist/esm/runtime/domain-module.backend.definitions.js.map +1 -1
  754. package/dist/esm/runtime/models/execution-context.backend.schemas.d.ts.map +1 -1
  755. package/dist/esm/runtime/models/request-context.als.backend.d.ts.map +1 -1
  756. package/dist/esm/runtime/models/runtime.backend.schemas.d.ts.map +1 -1
  757. package/dist/esm/runtime/services/execution-context-creator.backend.service.d.ts.map +1 -1
  758. package/dist/esm/runtime/services/execution-context-creator.backend.service.js.map +1 -1
  759. package/dist/esm/runtime/services/execution-context-handler.backend.service.d.ts.map +1 -1
  760. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts.map +1 -1
  761. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.js.map +1 -1
  762. package/dist/esm/runtime/services/http-server.backend.service.d.ts.map +1 -1
  763. package/dist/esm/runtime/services/http-server.backend.service.js +10 -0
  764. package/dist/esm/runtime/services/http-server.backend.service.js.map +1 -1
  765. package/dist/esm/runtime/services/start-application.backend.service.d.ts.map +1 -1
  766. package/dist/esm/runtime/services/start-application.backend.service.js +26 -12
  767. package/dist/esm/runtime/services/start-application.backend.service.js.map +1 -1
  768. package/dist/esm/runtime/services/utils/oauth-body-cap.backend.utils.d.ts.map +1 -1
  769. package/dist/esm/runtime/testing/execution-context-test-fixtures.d.ts.map +1 -1
  770. package/dist/esm/runtime/testing/mock-execution-context-creator.service.d.ts.map +1 -1
  771. package/dist/esm/runtime/utils/application-startup-config-access.backend.utils.d.ts.map +1 -1
  772. package/dist/esm/runtime/utils/feature-gated-core-resource-exclusions.backend.utils.d.ts.map +1 -1
  773. package/dist/esm/runtime/utils/request-client-ip.utils.d.ts.map +1 -1
  774. package/dist/esm/runtime/utils/scan-default-exports.backend.utils.d.ts.map +1 -1
  775. package/dist/esm/security/api-keys/api-key-generation.backend.utils.d.ts.map +1 -1
  776. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts.map +1 -1
  777. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js.map +1 -1
  778. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts.map +1 -1
  779. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js.map +1 -1
  780. package/dist/esm/security/authentications/controllers/auth-method-management-controller.backend.service.d.ts.map +1 -1
  781. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts +22 -0
  782. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts.map +1 -1
  783. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js +84 -0
  784. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js.map +1 -1
  785. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts.map +1 -1
  786. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js.map +1 -1
  787. package/dist/esm/security/authentications/models/auth-constants.backend.d.ts.map +1 -1
  788. package/dist/esm/security/authentications/models/authentications.backend.schemas.d.ts.map +1 -1
  789. package/dist/esm/security/authentications/models/authorization-client.backend.schemas.d.ts.map +1 -1
  790. package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts.map +1 -1
  791. package/dist/esm/security/authentications/models/cimd.backend.schemas.js.map +1 -1
  792. package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.d.ts +37 -0
  793. package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.d.ts.map +1 -0
  794. package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.js +37 -0
  795. package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.js.map +1 -0
  796. package/dist/esm/security/authentications/models/identity-persistence-boundaries.backend.d.ts.map +1 -1
  797. package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts.map +1 -1
  798. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts +15 -0
  799. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts.map +1 -1
  800. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.js.map +1 -1
  801. package/dist/esm/security/authentications/models/saml-authentication.backend.schemas.d.ts.map +1 -1
  802. package/dist/esm/security/authentications/models/sso-connection.backend.schemas.d.ts.map +1 -1
  803. package/dist/esm/security/authentications/models/user-authorization-version.backend.utils.d.ts.map +1 -1
  804. package/dist/esm/security/authentications/seeds/enterprise-config-defaults.seeds.d.ts.map +1 -1
  805. package/dist/esm/security/authentications/services/__tests__/mock-auth-execution-context-factory.service.d.ts.map +1 -1
  806. package/dist/esm/security/authentications/services/__tests__/mock-auth-token-issuer.service.d.ts.map +1 -1
  807. package/dist/esm/security/authentications/services/__tests__/oauth-provider-audit-spies.mock.d.ts.map +1 -1
  808. package/dist/esm/security/authentications/services/admin-config/__tests__/mock-domain-to-org-lookup.service.d.ts.map +1 -1
  809. package/dist/esm/security/authentications/services/admin-config/__tests__/mock-enterprise-user-provisioning.service.d.ts.map +1 -1
  810. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts.map +1 -1
  811. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js.map +1 -1
  812. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts.map +1 -1
  813. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js.map +1 -1
  814. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts.map +1 -1
  815. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js.map +1 -1
  816. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts.map +1 -1
  817. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js.map +1 -1
  818. package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.d.ts.map +1 -1
  819. package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.js +2 -1
  820. package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.js.map +1 -1
  821. package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts +9 -2
  822. package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts.map +1 -1
  823. package/dist/esm/security/authentications/services/anonymous-session.backend.service.js +9 -2
  824. package/dist/esm/security/authentications/services/anonymous-session.backend.service.js.map +1 -1
  825. package/dist/esm/security/authentications/services/auth-credential-verifier.backend.service.d.ts.map +1 -1
  826. package/dist/esm/security/authentications/services/auth-execution-context-factory.backend.service.d.ts.map +1 -1
  827. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts.map +1 -1
  828. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js.map +1 -1
  829. package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.d.ts.map +1 -1
  830. package/dist/esm/security/authentications/services/auth-methods/auth-password-reset.backend.service.d.ts.map +1 -1
  831. package/dist/esm/security/authentications/services/auth-methods/auth-phone-verification.backend.service.d.ts.map +1 -1
  832. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts.map +1 -1
  833. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js.map +1 -1
  834. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts +97 -0
  835. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts.map +1 -1
  836. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js +218 -26
  837. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js.map +1 -1
  838. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts +14 -0
  839. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts.map +1 -1
  840. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js +36 -0
  841. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js.map +1 -1
  842. package/dist/esm/security/authentications/services/auth-methods/saml-assertion-validator.backend.service.d.ts.map +1 -1
  843. package/dist/esm/security/authentications/services/auth-methods/saml-authentication.backend.service.d.ts.map +1 -1
  844. package/dist/esm/security/authentications/services/auth-methods/saml-metadata.backend.service.d.ts.map +1 -1
  845. package/dist/esm/security/authentications/services/auth-methods/saml-replay-guard.backend.service.d.ts.map +1 -1
  846. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts.map +1 -1
  847. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js.map +1 -1
  848. package/dist/esm/security/authentications/services/auth-session-store.backend.service.d.ts.map +1 -1
  849. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts.map +1 -1
  850. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js.map +1 -1
  851. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts.map +1 -1
  852. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js.map +1 -1
  853. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts.map +1 -1
  854. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js.map +1 -1
  855. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.d.ts.map +1 -1
  856. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js.map +1 -1
  857. package/dist/esm/security/authentications/services/custom-impls/scim-tokens.custom-impl.backend.service.d.ts.map +1 -1
  858. package/dist/esm/security/authentications/services/custom-impls/siem-delivery-dlq.custom-impl.backend.service.d.ts.map +1 -1
  859. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts.map +1 -1
  860. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js +57 -1
  861. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js.map +1 -1
  862. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts.map +1 -1
  863. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js.map +1 -1
  864. package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.d.ts.map +1 -1
  865. package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.js +11 -1
  866. package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.js.map +1 -1
  867. package/dist/esm/security/authentications/services/email-verification-initiator.backend.service.d.ts.map +1 -1
  868. package/dist/esm/security/authentications/services/machine-token-issuer.backend.service.d.ts.map +1 -1
  869. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts.map +1 -1
  870. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js.map +1 -1
  871. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts.map +1 -1
  872. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js.map +1 -1
  873. package/dist/esm/security/authentications/services/oidc-user-claims.backend.service.d.ts.map +1 -1
  874. package/dist/esm/security/authentications/services/resolve-active-member-orgs.backend.utils.d.ts.map +1 -1
  875. package/dist/esm/security/authentications/services/utils/__tests__/mock-auth-user-lookup.service.d.ts.map +1 -1
  876. package/dist/esm/security/authentications/services/utils/auth-controller.utils.d.ts.map +1 -1
  877. package/dist/esm/security/authentications/services/utils/auth-credential-ops.backend.service.d.ts.map +1 -1
  878. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.d.ts.map +1 -1
  879. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js.map +1 -1
  880. package/dist/esm/security/authentications/services/utils/auth-response-helper.backend.service.d.ts.map +1 -1
  881. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.d.ts.map +1 -1
  882. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js.map +1 -1
  883. package/dist/esm/security/authentications/services/utils/concurrent-session-eviction.backend.utils.d.ts.map +1 -1
  884. package/dist/esm/security/authentications/services/utils/ensure-user-profile.backend.utils.d.ts.map +1 -1
  885. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts.map +1 -1
  886. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js.map +1 -1
  887. package/dist/esm/security/authentications/services/utils/machine-auth-rate-limit.backend.utils.d.ts.map +1 -1
  888. package/dist/esm/security/authentications/services/utils/pkce.backend.utils.d.ts.map +1 -1
  889. package/dist/esm/security/authentications/services/utils/saml-java-availability.d.ts.map +1 -1
  890. package/dist/esm/security/authentications/utils/application-auth-policy-audit.backend.utils.d.ts.map +1 -1
  891. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts.map +1 -1
  892. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js.map +1 -1
  893. package/dist/esm/security/authentications/utils/one-off-session-lifetime.backend.utils.d.ts.map +1 -1
  894. package/dist/esm/security/authentications/utils/social-oauth2-purpose.backend.utils.d.ts.map +1 -1
  895. package/dist/esm/security/authorizations/access-grant-decision.factory.backend.d.ts +59 -0
  896. package/dist/esm/security/authorizations/access-grant-decision.factory.backend.d.ts.map +1 -0
  897. package/dist/esm/security/authorizations/access-grant-decision.factory.backend.js +111 -0
  898. package/dist/esm/security/authorizations/access-grant-decision.factory.backend.js.map +1 -0
  899. package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.d.ts +57 -0
  900. package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.d.ts.map +1 -0
  901. package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.js +133 -0
  902. package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.js.map +1 -0
  903. package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.d.ts +41 -0
  904. package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.d.ts.map +1 -0
  905. package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.js +157 -0
  906. package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.js.map +1 -0
  907. package/dist/esm/security/authorizations/application-wide-read-admission.backend.d.ts +84 -0
  908. package/dist/esm/security/authorizations/application-wide-read-admission.backend.d.ts.map +1 -0
  909. package/dist/esm/security/authorizations/application-wide-read-admission.backend.js +99 -0
  910. package/dist/esm/security/authorizations/application-wide-read-admission.backend.js.map +1 -0
  911. package/dist/esm/security/authorizations/authorization-denial-audit.backend.utils.d.ts.map +1 -1
  912. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts.map +1 -1
  913. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js.map +1 -1
  914. package/dist/esm/security/authorizations/initiator-organization-confinement.backend.d.ts.map +1 -1
  915. package/dist/esm/security/authorizations/junction-scope-resolution.backend.d.ts.map +1 -1
  916. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts.map +1 -1
  917. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js.map +1 -1
  918. package/dist/esm/security/authorizations/organization-unit-narrowing-enforcement.backend.d.ts.map +1 -1
  919. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.d.ts.map +1 -1
  920. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js +20 -181
  921. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js.map +1 -1
  922. package/dist/esm/security/authorizations/privileged-access-review.backend.utils.d.ts.map +1 -1
  923. package/dist/esm/security/authorizations/relationship-foreign-key-filter.backend.d.ts.map +1 -1
  924. package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts.map +1 -1
  925. package/dist/esm/security/authorizations/role-ceiling.backend.utils.js.map +1 -1
  926. package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts +40 -0
  927. package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts.map +1 -1
  928. package/dist/esm/security/authorizations/role-conferral.backend.utils.js +43 -1
  929. package/dist/esm/security/authorizations/role-conferral.backend.utils.js.map +1 -1
  930. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts +27 -17
  931. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts.map +1 -1
  932. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js +27 -17
  933. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js.map +1 -1
  934. package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts +72 -0
  935. package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -1
  936. package/dist/esm/security/authorizations/services/authorizations.backend.service.js +153 -10
  937. package/dist/esm/security/authorizations/services/authorizations.backend.service.js.map +1 -1
  938. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts.map +1 -1
  939. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js.map +1 -1
  940. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts.map +1 -1
  941. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js.map +1 -1
  942. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts +139 -1
  943. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts.map +1 -1
  944. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js +474 -33
  945. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js.map +1 -1
  946. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts +40 -0
  947. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts.map +1 -1
  948. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js.map +1 -1
  949. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts.map +1 -1
  950. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js.map +1 -1
  951. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts +19 -0
  952. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts.map +1 -1
  953. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js +38 -0
  954. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js.map +1 -1
  955. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts.map +1 -1
  956. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js.map +1 -1
  957. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts.map +1 -1
  958. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js +17 -1
  959. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js.map +1 -1
  960. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts +14 -0
  961. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts.map +1 -1
  962. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js +16 -0
  963. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js.map +1 -1
  964. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts.map +1 -1
  965. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js +1 -1
  966. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js.map +1 -1
  967. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts +19 -0
  968. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts.map +1 -1
  969. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js +45 -2
  970. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js.map +1 -1
  971. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts.map +1 -1
  972. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js.map +1 -1
  973. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts +37 -1
  974. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts.map +1 -1
  975. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js.map +1 -1
  976. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts.map +1 -1
  977. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js.map +1 -1
  978. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts.map +1 -1
  979. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js.map +1 -1
  980. package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.d.ts +34 -0
  981. package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.d.ts.map +1 -0
  982. package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.js +39 -0
  983. package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.js.map +1 -0
  984. package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts.map +1 -1
  985. package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts.map +1 -1
  986. package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts.map +1 -1
  987. package/dist/esm/security/consumable-tokens/models/consumable-tokens.shared.schemas.d.ts.map +1 -1
  988. package/dist/esm/security/consumable-tokens/models/index.d.ts.map +1 -1
  989. package/dist/esm/security/consumable-tokens/services/__tests__/mock-consumable-token.service.d.ts.map +1 -1
  990. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts.map +1 -1
  991. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js.map +1 -1
  992. package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts.map +1 -1
  993. package/dist/esm/security/credential-rotation-grace.backend.utils.js.map +1 -1
  994. package/dist/esm/security/jwt/services/auth-jwt-guard.backend.service.d.ts.map +1 -1
  995. package/dist/esm/security/jwt/services/jwt.backend.service.d.ts.map +1 -1
  996. package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.d.ts +13 -0
  997. package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.d.ts.map +1 -1
  998. package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.js +14 -0
  999. package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.js.map +1 -1
  1000. package/dist/esm/security/jwt/utils/jwt-verification-error-classification.backend.utils.d.ts.map +1 -1
  1001. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts.map +1 -1
  1002. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js.map +1 -1
  1003. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts.map +1 -1
  1004. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js.map +1 -1
  1005. package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.d.ts +39 -0
  1006. package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.d.ts.map +1 -0
  1007. package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.js +60 -0
  1008. package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.js.map +1 -0
  1009. package/dist/esm/security/outbound/outbound-request-headers.backend.utils.d.ts +66 -0
  1010. package/dist/esm/security/outbound/outbound-request-headers.backend.utils.d.ts.map +1 -0
  1011. package/dist/esm/security/outbound/outbound-request-headers.backend.utils.js +75 -0
  1012. package/dist/esm/security/outbound/outbound-request-headers.backend.utils.js.map +1 -0
  1013. package/dist/esm/security/scim/controllers/scim.backend.controller.d.ts.map +1 -1
  1014. package/dist/esm/security/scim/controllers/scim.backend.controller.js.map +1 -1
  1015. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts.map +1 -1
  1016. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js.map +1 -1
  1017. package/dist/esm/security/scim/utils/scim-attribute-path-resolver.backend.utils.d.ts.map +1 -1
  1018. package/dist/esm/security/scim/utils/scim-filter-parser.d.ts.map +1 -1
  1019. package/dist/esm/security/scim/utils/scim-response-formatter.d.ts.map +1 -1
  1020. package/dist/esm/security/session-invalidation-fence.backend.utils.d.ts.map +1 -1
  1021. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts.map +1 -1
  1022. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js.map +1 -1
  1023. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts.map +1 -1
  1024. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js.map +1 -1
  1025. package/dist/esm/security/token-invalidation-fence.backend.utils.d.ts.map +1 -1
  1026. package/dist/esm/testing.d.ts.map +1 -1
  1027. package/dist/esm/users/services/inbound-contact-custom-implementation.backend.service.d.ts.map +1 -1
  1028. package/dist/esm/users/services/user-deletion-audit.custom-impl.backend.service.d.ts.map +1 -1
  1029. package/dist/esm/users/services/user-force-password-reset.custom-impl.backend.service.d.ts.map +1 -1
  1030. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts.map +1 -1
  1031. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js.map +1 -1
  1032. package/dist/esm/users/services/user-role-administration.custom-impl.backend.service.d.ts.map +1 -1
  1033. package/dist/esm/users/services/user-self-custom-implementations.backend.d.ts.map +1 -1
  1034. package/dist/esm/users/services/user-super-admin-floor.custom-impl.backend.service.d.ts.map +1 -1
  1035. package/dist/tsconfig.build.tsbuildinfo +1 -1
  1036. package/package.json +9 -9
  1037. package/dist/esm/external-providers/services/flow-actor-design.backend.service.d.ts +0 -45
  1038. package/dist/esm/external-providers/services/flow-actor-design.backend.service.d.ts.map +0 -1
  1039. package/dist/esm/external-providers/services/flow-actor-design.backend.service.js +0 -22
  1040. package/dist/esm/external-providers/services/flow-actor-design.backend.service.js.map +0 -1
  1041. package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts +0 -0
  1042. package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts.map +0 -0
  1043. package/dist/esm/notifications/email/models/email-context-provider.interface.js +0 -0
  1044. package/dist/esm/notifications/email/models/email-context-provider.interface.js.map +0 -0
  1045. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts +0 -0
  1046. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts.map +0 -0
  1047. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js +0 -0
  1048. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js.map +0 -0
  1049. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts +0 -0
  1050. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts.map +0 -0
  1051. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js +0 -0
  1052. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js.map +0 -0
  1053. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts +0 -0
  1054. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts.map +0 -0
  1055. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js +0 -0
  1056. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js.map +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"acp-session-runner.backend.utils.js","sourceRoot":"","sources":["../../../../../src/flows-actors/utils/acp-session-runner.backend.utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Agent Client Protocol session runner.\n *\n * Two shapes over one transport:\n *\n * - {@link startACPAgentSession} opens a LIVE session — spawn the agent,\n * negotiate `initialize`, open (or `session/load`-resume) a session against a\n * confined working directory — and returns a handle whose `promptTurn` drives\n * ONE turn at a time. The caller decides whether to send another prompt on\n * the same session, which is what makes the interactive/continuation lane\n * possible: a turn that ended with a question is answered by the next\n * `promptTurn`, on the same `sessionId`, with the agent's context intact.\n * - {@link runACPCodingSession} is the single-turn wrapper kept for every\n * existing caller: start, one turn, close.\n *\n * # Why the transport is written here rather than taken from a package\n *\n * ACP is JSON-RPC 2.0 over newline-delimited stdio, and an official TypeScript\n * SDK exists. This runner speaks the wire directly instead, for two reasons.\n * The mechanical one: adopting the SDK adds a third-party runtime dependency to\n * an engine package, which is a toolchain-baseline decision with a version pin,\n * and it must not be taken incidentally inside a feature slice. The substantive\n * one: everything below is the part Wildo must OWN anyway — which protocol\n * versions are acceptable, who answers a permission request, what a working\n * directory may be, how long a turn may run. An SDK would have supplied the\n * framing, which is the cheap half.\n *\n * Revisit if ACP 2 lands: version negotiation is one place, and adopting the\n * SDK then is a contained change.\n *\n * # The permission ceiling is enforced HERE, not by the agent's session mode\n *\n * Agents advertise their own session modes (`default`, `acceptEdits`,\n * `bypassPermissions`, …) and those identifiers are agent-specific strings. The\n * runner will select a matching mode when one is advertised, because it saves\n * round-trips — but it NEVER relies on that for the guarantee. The ceiling is\n * enforced by this runner's answer to every `session/request_permission`, so an\n * agent that advertises no modes at all, or renames the ones it has, is still\n * held to the authored ceiling. Mode selection is an optimisation; the handler\n * is the mechanism.\n */\n\nimport { spawn, type ChildProcessWithoutNullStreams } from 'node:child_process';\nimport { realpathSync } from 'node:fs';\nimport { readFile, writeFile, mkdir } from 'node:fs/promises';\nimport { dirname, isAbsolute, relative, resolve, sep } from 'node:path';\n\nimport {\n AgentClientProtocol_PermissionCeiling,\n CodingAgent_StopReason,\n agentClientProtocolPermissionCeilingRank,\n type CodingAgent_Usage,\n} from '@wildo-ai/external-connectors-models';\n\n/** Milliseconds allowed for the agent to honour `session/cancel` before it is killed. */\nconst COOPERATIVE_CANCEL_GRACE_MS = 10_000;\n/** Extra grace after SIGKILL so an unreapable child cannot hang a caller. */\nconst TERMINATION_SETTLE_GRACE_MS = 1_000;\n/** Default ceiling on persisted session-event bytes. Truncates; never fails the run. */\nconst DEFAULT_MAX_RECORDED_EVENT_BYTES = 4 * 1024 * 1024;\n\nexport class ACPSessionRunnerError extends Error {\n constructor(\n message: string,\n public readonly details: Record<string, unknown>,\n ) {\n super(message);\n this.name = 'ACPSessionRunnerError';\n }\n}\n\n/** One `session/update` notification, recorded for the caller's traceability sink. */\nexport interface ACPSessionEvent {\n readonly kind: string;\n readonly payload: unknown;\n}\n\nexport interface ACPPermissionRequest {\n readonly toolCallTitle: string | undefined;\n readonly toolKind: string | undefined;\n /** Absolute paths the tool call declares it will touch, when it declares any. */\n readonly locations: readonly string[];\n readonly optionKinds: readonly string[];\n}\n\n/** Why a permission request was allowed or refused. */\nexport enum ACPPermissionDecisionReason {\n /** The declared ceiling does not admit this tool kind. */\n CEILING_REFUSED = 'ceiling_refused',\n /** A location the task's mutation scope does not authorise. */\n LOCATION_OUT_OF_SCOPE = 'location_out_of_scope',\n /** Admitted, and an `allow_once` option existed to say so with. */\n ALLOWED_ONCE = 'allowed_once',\n /**\n * Admitted by the ceiling and the scope, then refused anyway because the agent offered no\n * option this client is willing to select. `allow_always` is deliberately never chosen below\n * an UNRESTRICTED ceiling — it carries a session-wide permission change — so a request that\n * offers only that option has no answer other than refusal.\n */\n NO_SELECTABLE_OPTION = 'no_selectable_option',\n}\n\nexport interface ACPPermissionDecisionRecord {\n readonly allowed: boolean;\n readonly reason: ACPPermissionDecisionReason;\n /** The ACP tool kind (`edit`, `execute`, …), when the agent declared one. */\n readonly toolKind?: string;\n /** Paths the request declared. Empty when the agent declared none — which is why an\n * `execute` request cannot be scope-checked at all. */\n readonly locations: readonly string[];\n /** The option KINDS the agent offered, so a refusal for lack of a selectable one is visible. */\n readonly offeredOptionKinds: readonly string[];\n}\n\n/** Bounds the recorded decisions; a runaway agent must not grow this without limit. */\nconst PERMISSION_DECISION_RECORD_LIMIT = 200;\n\n/**\n * Options common to opening a session and running a one-shot turn.\n *\n * The single-turn {@link ACPCodingSessionOptions} extends this with `prompt`,\n * `turnTimeoutMs` and `abortSignal` — the per-turn concerns the live handle\n * takes as arguments to `promptTurn` instead.\n */\nexport interface ACPStartSessionOptions {\n command: string;\n args?: readonly string[];\n /** Already resolved and confined by `resolveTrustedWorkingDirectory`. */\n cwd: string;\n env: NodeJS.ProcessEnv;\n /** Protocol majors the caller will accept in the `initialize` response. */\n supportedProtocolVersions: readonly number[];\n permissionCeiling: AgentClientProtocol_PermissionCeiling;\n /**\n * Additional, caller-owned refusal on top of the ceiling — used to hold an\n * agent to a task's declared mutation scope. Returning false DENIES, whatever\n * the ceiling says. It can only narrow.\n */\n isPermittedLocation?: (absolutePath: string) => boolean;\n /**\n * The agent's OWN session-mode ids to prefer, most-preferred first.\n *\n * Supplied by the caller from the provider contract rather than derived here:\n * mode ids are agent vocabulary, and a map hardcoded in this neutral runner\n * matched `default` for every ceiling — correct for one adapter and silently\n * empty for an agent whose modes are, say, `build`/`plan`. An unmatched or\n * unsettable mode costs round-trips, never safety: the ceiling is enforced by\n * this runner's answer to every permission request.\n */\n preferredSessionModeIds?: readonly string[];\n /**\n * Set the model over ACP as a session config option, before the first prompt.\n *\n * Only for agents whose provider declares the `session-config-option`\n * delivery channel; agents that read the model from their environment have it\n * in `env` already. A rejected call FAILS the session rather than proceeding:\n * an unset model means the agent silently runs its own default while the run\n * records the model that was requested.\n */\n modelSelection?: { configId: string; model: string };\n /** Opaque `_meta` for `session/new`; agent-specific by construction. */\n sessionMetaExtensions?: Record<string, unknown>;\n maxRecordedEventBytes?: number;\n /** Live progress sink. Never allowed to fail the run. */\n onEvent?: (event: ACPSessionEvent) => void;\n /**\n * Resume a prior session by id instead of opening a new one.\n *\n * When set, the runner calls `session/load` rather than `session/new`, so the\n * agent restores the earlier conversation's context. REQUIRES the agent to\n * advertise the `loadSession` capability at `initialize`; a resume asked of an\n * agent that does not is REFUSED, not silently degraded to a fresh session —\n * presenting a context-less turn as a continuation is the failure this guards.\n * The replayed history is consumed and discarded: it is already on the durable\n * record from the run that parked, and re-recording it would double it.\n */\n resumeSessionId?: string;\n}\n\nexport interface ACPCodingSessionOptions extends ACPStartSessionOptions {\n prompt: string;\n turnTimeoutMs?: number;\n /**\n * Operator-initiated cancellation.\n *\n * Handled exactly like the timeout, and deliberately so: `session/cancel`\n * first, kill only if the agent does not honour it. An operator who stops a\n * run wants it to STOP, but a coding agent killed mid-edit leaves a worktree\n * nobody can characterise — whereas one that settles as `cancelled` leaves a\n * partial change set the caller knows is partial.\n */\n abortSignal?: AbortSignal;\n}\n\n/** Per-turn arguments to {@link ACPAgentSession.promptTurn}. */\nexport interface ACPPromptTurnOptions {\n turnTimeoutMs?: number;\n /** See {@link ACPCodingSessionOptions.abortSignal}. Scoped to this one turn. */\n abortSignal?: AbortSignal;\n}\n\n/** The outcome of one prompt turn on a live session. */\nexport interface ACPTurnResult {\n readonly finalMessage: string;\n readonly stopReason: CodingAgent_StopReason;\n /** The agent's verbatim value when `stopReason` is `UNRECOGNISED`. */\n readonly rawStopReason?: string;\n readonly usage?: CodingAgent_Usage;\n /** File paths the agent reported touching DURING THIS TURN. */\n readonly reportedFileLocations: readonly string[];\n /** `session/update` notifications recorded DURING THIS TURN. */\n readonly events: readonly ACPSessionEvent[];\n /** True when the session's cumulative event log hit its byte ceiling. */\n readonly eventsTruncated: boolean;\n /** Permission requests refused during this turn. */\n readonly deniedPermissionCount: number;\n /** Per-request decisions recorded during this turn, with the reason each was decided. */\n readonly permissionDecisions: readonly ACPPermissionDecisionRecord[];\n}\n\n/** What the agent declared about itself and the session at `initialize`/setup time. */\nexport interface ACPAgentSession {\n readonly sessionId: string;\n readonly negotiatedProtocolVersion: number;\n readonly agentName?: string;\n readonly agentVersion?: string;\n /** The agent-declared mode the session runs under, when one was selectable. */\n readonly sessionModeId?: string;\n /** Capabilities the agent advertised — the ones this runner branches on. */\n readonly capabilities: { readonly loadSession: boolean };\n /** Drive one turn. May be called repeatedly to continue the conversation. */\n promptTurn(prompt: string, options?: ACPPromptTurnOptions): Promise<ACPTurnResult>;\n /** Terminate the agent process. Idempotent; safe after any turn. */\n close(): void;\n}\n\nexport interface ACPCodingSessionResult {\n readonly finalMessage: string;\n readonly stopReason: CodingAgent_StopReason;\n /** The agent's verbatim value when `stopReason` is `UNRECOGNISED`. */\n readonly rawStopReason?: string;\n readonly usage?: CodingAgent_Usage;\n readonly reportedFileLocations: readonly string[];\n readonly sessionId: string;\n readonly negotiatedProtocolVersion: number;\n readonly agentName?: string;\n readonly agentVersion?: string;\n /** The agent-declared mode the turn ran under, when one was selectable. */\n readonly sessionModeId?: string;\n readonly events: readonly ACPSessionEvent[];\n /** True when the event log hit its byte ceiling and stopped recording. */\n readonly eventsTruncated: boolean;\n /** Permission requests denied by the ceiling or by the scope predicate. */\n readonly deniedPermissionCount: number;\n /**\n * One record per permission request, in order, with the REASON it was decided.\n *\n * A count alone is not diagnosable. A run under an UNRESTRICTED ceiling came back with two\n * denials and no files, and the recorded evidence could not say whether the scope predicate\n * had refused a path or the agent had simply offered no `allow_once` option — two very\n * different defects with the same visible outcome. This makes the decision auditable without\n * re-running an agent to find out.\n *\n * Carries no prompt or file CONTENT: tool kind, paths, the option kinds offered, and the\n * decision. Bounded by {@link PERMISSION_DECISION_RECORD_LIMIT}.\n */\n readonly permissionDecisions: readonly ACPPermissionDecisionRecord[];\n}\n\n/**\n * Agent-declared mode ids preferred for each ceiling.\n *\n * EVERY ceiling asks for the MOST-ESCALATING mode, and that is the correction\n * that matters. The obvious mapping — `AUTO_ACCEPT_EDITS` → the agent's own\n * `acceptEdits`, `UNRESTRICTED` → `bypassPermissions` — hands the decision to\n * the agent, which is exactly what this runner must not do. Measured live on\n * 2026-08-27: under `acceptEdits`, Claude's adapter auto-approved a mutating\n * shell command that wrote OUTSIDE the task's declared mutation scope, with no\n * permission request reaching the client at all. Under `default` the identical\n * prompt escalated, was denied, and nothing was written.\n *\n * Keeping the agent maximally escalating means every decision reaches\n * {@link permissionAllowedByCeiling}, where the ceiling means what it says —\n * and where the caller's mutation scope can still refuse a path.\n */\n\n/** Tool kinds that count as an EDIT for the AUTO_ACCEPT_EDITS ceiling. */\nconst EDIT_TOOL_KINDS = new Set(['edit', 'delete', 'move']);\n\n/**\n * Tool kinds the Agent Client Protocol itself classes as NON-MUTATING, for the AUTO_ACCEPT_READS\n * ceiling.\n *\n * Taken from the protocol's own tool-kind categorisation rather than invented here, so the set does\n * not drift from what an agent means when it declares a kind.\n * spec-cite: Agent Client Protocol — Tool Calls, tool-kind list\n * (https://agentclientprotocol.com/protocol/tool-calls): `read`, `search`, `fetch` and `think` are\n * the non-mutating kinds; `edit`, `delete` and `move` are the mutating ones.\n *\n * `execute` is deliberately EXCLUDED: a command can mutate anything, and a runner cannot tell a\n * read-only command from a destructive one by its kind. `other` is excluded because it is the\n * protocol's unclassified catch-all — measured 2026-08-29, the agent's own `ToolSearch` arrived as\n * `other`, so admitting it would mean admitting whatever an agent declines to classify.\n */\nconst NON_MUTATING_TOOL_KINDS = new Set(['read', 'search', 'fetch', 'think']);\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * Decide one permission request from the ceiling alone (before the caller's\n * scope predicate narrows it further).\n *\n * Exported for direct testing: this is the security decision of the whole\n * transport, and it should be provable without spawning anything.\n */\nexport function permissionAllowedByCeiling(\n ceiling: AgentClientProtocol_PermissionCeiling,\n toolKind: string | undefined,\n): boolean {\n switch (ceiling) {\n case AgentClientProtocol_PermissionCeiling.UNRESTRICTED:\n return true;\n case AgentClientProtocol_PermissionCeiling.AUTO_ACCEPT_EDITS:\n // Edits are pre-approved; anything else (executing a command, fetching a\n // URL, an unrecognised kind) still requires a decision this runner cannot\n // make on its own, so it is denied rather than guessed.\n //\n // This is only true because the agent is kept in its most-escalating\n // mode — `sessionModeIdsByPermissionCeiling` on the provider contract,\n // passed in as `preferredSessionModeIds`. (The runner-local\n // `PREFERRED_MODE_IDS` this used to name was deleted on 2026-09-04: mode\n // ids are agent vocabulary, so a map hardcoded here matched nothing for\n // every agent but the one it was written for.) Delegating to the agent's\n // own `acceptEdits` mode made `execute` bypass this branch entirely,\n // measured live.\n return toolKind !== undefined && EDIT_TOOL_KINDS.has(toolKind);\n case AgentClientProtocol_PermissionCeiling.AUTO_ACCEPT_READS_AND_EDITS:\n // The union of the two sets above, refusing exactly what both refuse:\n // `execute` (a command can mutate anything) and `other` (unclassified,\n // fail-closed). The evidence-persisting research lane's ceiling — the\n // location predicate is what keeps its writes inside the store.\n return toolKind !== undefined && (NON_MUTATING_TOOL_KINDS.has(toolKind) || EDIT_TOOL_KINDS.has(toolKind));\n case AgentClientProtocol_PermissionCeiling.AUTO_ACCEPT_READS:\n /*\n * Non-mutating kinds are pre-approved; everything else is denied rather than guessed — the\n * same posture AUTO_ACCEPT_EDITS takes for its complement, and for the same reason: with no\n * human at the other end there is nobody to ask.\n *\n * An UNDECLARED kind is denied. An agent that does not say what it is doing does not get the\n * benefit of the doubt on a ceiling whose whole promise is \"nothing mutates\".\n */\n return toolKind !== undefined && NON_MUTATING_TOOL_KINDS.has(toolKind);\n case AgentClientProtocol_PermissionCeiling.PROMPT_ALWAYS:\n // Nothing is pre-approved. With no human at the other end of this\n // transport, \"prompt\" resolves to \"deny\": a coding run that needed an\n // authorisation nobody could give did not have it.\n return false;\n default: {\n // An unknown ceiling is not a reason to proceed. Fail closed rather than\n // fall through to a permissive branch.\n const exhaustive: never = ceiling;\n void exhaustive;\n return false;\n }\n }\n}\n\n/**\n * Map an ACP stop-reason wire value onto the named vocabulary.\n *\n * An unknown value DEGRADES rather than throwing. This runs after the turn — so\n * after the workspace may already have been mutated — and throwing here would\n * turn a completed run into an error whose change set nobody records. The caller\n * gets `UNRECOGNISED` plus the verbatim value and can refuse it as a working\n * result while still capturing what changed.\n */\nexport function parseStopReason(raw: unknown): { stopReason: CodingAgent_StopReason; rawStopReason?: string } {\n const known = (Object.values(CodingAgent_StopReason) as string[])\n .filter((value) => value !== CodingAgent_StopReason.UNRECOGNISED);\n if (typeof raw === 'string' && known.includes(raw)) {\n return { stopReason: raw as CodingAgent_StopReason };\n }\n return {\n stopReason: CodingAgent_StopReason.UNRECOGNISED,\n rawStopReason: typeof raw === 'string' ? raw : JSON.stringify(raw ?? null),\n };\n}\n\n/** Project ACP's usage shapes onto the coding-agent usage contract. */\nexport function projectUsage(\n turnUsage: unknown,\n lastUsageUpdate: unknown,\n): CodingAgent_Usage | undefined {\n const usage: Record<string, unknown> = {};\n if (isRecord(turnUsage)) {\n for (const key of ['inputTokens', 'outputTokens', 'cachedReadTokens', 'cachedWriteTokens', 'totalTokens']) {\n if (typeof turnUsage[key] === 'number') usage[key] = turnUsage[key];\n }\n }\n if (isRecord(lastUsageUpdate)) {\n if (typeof lastUsageUpdate.used === 'number') usage.contextUsed = lastUsageUpdate.used;\n if (typeof lastUsageUpdate.size === 'number') usage.contextWindowSize = lastUsageUpdate.size;\n const cost = lastUsageUpdate.cost;\n if (isRecord(cost) && typeof cost.amount === 'number' && typeof cost.currency === 'string') {\n usage.cost = { amount: cost.amount, currency: cost.currency };\n }\n }\n return Object.keys(usage).length > 0 ? (usage as CodingAgent_Usage) : undefined;\n}\n\n/**\n * True when `candidate` resolves inside `root`. Both must be absolute.\n *\n * Compares against the root AND its physical realpath. Agents report canonical\n * paths, so a root reached through a symlink (`/var/...` → `/private/var/...` on\n * macOS) would otherwise reject every request — a guard that silently denies\n * everything, which reads as the agent failing rather than the guard misfiring.\n * The same defect was found live in the companion's scope predicate.\n */\nexport function isPathWithin(root: string, candidate: string): boolean {\n if (!isAbsolute(root) || !isAbsolute(candidate)) return false;\n const roots = [root];\n try {\n const physical = realpathSync.native(root);\n if (physical !== root) roots.push(physical);\n } catch {\n // An unresolvable root stays as given; the containment check below still applies.\n }\n const resolved = resolve(candidate);\n return roots.some((candidateRoot) => {\n const rel = relative(candidateRoot, resolved);\n return rel !== '..' && !rel.startsWith(`..${sep}`) && !isAbsolute(rel);\n });\n}\n\n/**\n * Open a live ACP session and return a handle whose `promptTurn` drives one\n * turn at a time.\n *\n * The caller owns the turn cadence — this is the whole point of the handle. A\n * turn that ends with a question is not the end of the session; the caller\n * inspects it and may `promptTurn` again with the answer.\n */\nexport async function startACPAgentSession(options: ACPStartSessionOptions): Promise<ACPAgentSession> {\n const maxRecordedEventBytes = options.maxRecordedEventBytes ?? DEFAULT_MAX_RECORDED_EVENT_BYTES;\n const child: ChildProcessWithoutNullStreams = spawn(options.command, [...(options.args ?? [])], {\n cwd: options.cwd,\n env: options.env,\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n\n // Cumulative session state. Per-turn slices are taken from these by index.\n const session = {\n nextId: 1,\n buffer: '',\n stderrTail: '',\n unparsedStdoutTail: '',\n events: [] as ACPSessionEvent[],\n recordedBytes: 0,\n eventsTruncated: false,\n reportedFileLocations: [] as string[],\n permissionDecisions: [] as ACPPermissionDecisionRecord[],\n deniedPermissionCount: 0,\n // Reset at the start of each turn.\n turnFinalMessage: '',\n turnLastUsageUpdate: undefined as unknown,\n // True while `session/load` replay is streaming: replayed history is\n // consumed and discarded (it is already on the durable record).\n replaying: false,\n // Set once the child exits; a later `promptTurn` refuses rather than hanging.\n childExited: false,\n // Set BEFORE a deliberate terminate() so the exit handler does not reject\n // the exit promise for a shutdown the caller asked for.\n closed: false,\n };\n const pending = new Map<number, { resolve: (value: unknown) => void; reject: (error: unknown) => void }>();\n\n const write = (payload: unknown): void => {\n if (child.stdin.writable) child.stdin.write(`${JSON.stringify(payload)}\\n`);\n };\n const request = (method: string, params: unknown): Promise<unknown> => {\n const id = session.nextId++;\n return new Promise<unknown>((resolvePromise, rejectPromise) => {\n pending.set(id, { resolve: resolvePromise, reject: rejectPromise });\n write({ jsonrpc: '2.0', id, method, params });\n });\n };\n const respond = (id: number, result: unknown): void => write({ jsonrpc: '2.0', id, result });\n const respondError = (id: number, message: string): void =>\n write({ jsonrpc: '2.0', id, error: { code: -32603, message } });\n\n const recordEvent = (event: ACPSessionEvent): void => {\n // Replayed `session/load` history is neither persisted nor forwarded: it is\n // already recorded from the run that produced it, and re-emitting it would\n // double every earlier frame on the resuming run's record.\n if (session.replaying) return;\n if (!session.eventsTruncated) {\n const size = JSON.stringify(event).length;\n if (session.recordedBytes + size > maxRecordedEventBytes) {\n // Truncate, never reject. Losing the tail of a transcript is a reporting\n // loss; failing the run here would discard work already written to the\n // workspace, which is the mistake the transport this replaces made.\n session.eventsTruncated = true;\n } else {\n session.recordedBytes += size;\n session.events.push(event);\n }\n }\n try {\n options.onEvent?.(event);\n } catch {\n // A progress sink must never be able to fail the run it observes.\n }\n };\n\n const decidePermission = (params: Record<string, unknown>): { allowed: boolean; optionId?: string } => {\n const toolCall = isRecord(params.toolCall) ? params.toolCall : {};\n const toolKind = typeof toolCall.kind === 'string' ? toolCall.kind : undefined;\n const locations = Array.isArray(toolCall.locations)\n ? toolCall.locations.flatMap((entry) => (isRecord(entry) && typeof entry.path === 'string' ? [entry.path] : []))\n : [];\n\n const rawOptions = Array.isArray(params.options) ? params.options : [];\n const offeredOptionKinds = rawOptions.flatMap((entry) => (isRecord(entry) && typeof entry.kind === 'string' ? [entry.kind] : []));\n const record = (allowed: boolean, reason: ACPPermissionDecisionReason): void => {\n if (session.permissionDecisions.length >= PERMISSION_DECISION_RECORD_LIMIT) return;\n session.permissionDecisions.push({\n allowed,\n reason,\n ...(toolKind !== undefined ? { toolKind } : {}),\n locations,\n offeredOptionKinds,\n });\n };\n\n if (!permissionAllowedByCeiling(options.permissionCeiling, toolKind)) {\n record(false, ACPPermissionDecisionReason.CEILING_REFUSED);\n return { allowed: false };\n }\n // The caller's scope predicate can only NARROW. A location the task did not\n // authorise is denied even under an UNRESTRICTED ceiling.\n if (options.isPermittedLocation && locations.some((path) => !options.isPermittedLocation!(path))) {\n record(false, ACPPermissionDecisionReason.LOCATION_OUT_OF_SCOPE);\n return { allowed: false };\n }\n // `allow_always` is never selected. Measured against Claude's adapter, that\n // option carries a `_meta` permission change that switches the SESSION into\n // an auto-accepting mode — so answering one request with it silently raises\n // the ceiling for every request after it.\n const once = rawOptions.find((entry) => isRecord(entry) && entry.kind === 'allow_once');\n if (isRecord(once) && typeof once.optionId === 'string') {\n record(true, ACPPermissionDecisionReason.ALLOWED_ONCE);\n return { allowed: true, optionId: once.optionId };\n }\n record(false, ACPPermissionDecisionReason.NO_SELECTABLE_OPTION);\n return { allowed: false };\n };\n\n const handleAgentRequest = async (id: number, method: string, params: Record<string, unknown>): Promise<void> => {\n switch (method) {\n case 'session/request_permission': {\n const decision = decidePermission(params);\n if (decision.allowed && decision.optionId) {\n respond(id, { outcome: { outcome: 'selected', optionId: decision.optionId } });\n return;\n }\n session.deniedPermissionCount++;\n const rawOptions = Array.isArray(params.options) ? params.options : [];\n const reject = rawOptions.find((entry) => isRecord(entry) && entry.kind === 'reject_once');\n if (isRecord(reject) && typeof reject.optionId === 'string') {\n respond(id, { outcome: { outcome: 'selected', optionId: reject.optionId } });\n } else {\n // No refusal option offered: cancelling the request is the only\n // remaining way to say no, and saying no is required.\n respond(id, { outcome: { outcome: 'cancelled' } });\n }\n return;\n }\n case 'fs/read_text_file': {\n const path = typeof params.path === 'string' ? params.path : '';\n if (!isPathWithin(options.cwd, path)) {\n respondError(id, 'Path is outside the session working directory');\n return;\n }\n try {\n respond(id, { content: await readFile(path, 'utf8') });\n } catch (error) {\n respondError(id, `Unable to read file: ${(error as Error).message}`);\n }\n return;\n }\n case 'fs/write_text_file': {\n const path = typeof params.path === 'string' ? params.path : '';\n if (!isPathWithin(options.cwd, path)) {\n respondError(id, 'Path is outside the session working directory');\n return;\n }\n if (options.isPermittedLocation && !options.isPermittedLocation(path)) {\n respondError(id, 'Path is outside the task mutation scope');\n return;\n }\n try {\n await mkdir(dirname(path), { recursive: true });\n await writeFile(path, typeof params.content === 'string' ? params.content : '', 'utf8');\n respond(id, null);\n } catch (error) {\n respondError(id, `Unable to write file: ${(error as Error).message}`);\n }\n return;\n }\n default:\n // Deliberately including every `terminal/*` method: this runner does NOT\n // advertise the terminal capability, so an agent calling one has ignored\n // the negotiated capability set. Refusing names that plainly.\n respondError(id, `Unsupported client method: ${method}`);\n }\n };\n\n const onLine = (line: string): void => {\n let message: unknown;\n try {\n message = JSON.parse(line);\n } catch {\n /*\n * Non-JSON stdout is the agent's own logging — and it IS our concern when the turn fails.\n *\n * This used to `return` with the comment \"not our concern\", and that is how an agent could\n * exit with code 0 in the middle of a turn while the only thing we could report was \"Agent\n * process exited before the turn completed\". A process that exits SUCCESSFULLY has almost\n * always said why, and a CLI says it in prose — which by definition does not parse as JSON-RPC\n * and so landed exactly here, in a discard.\n *\n * Kept in a bounded tail, mirroring `stderrTail`, and surfaced only on failure. The protocol\n * frames are excluded by construction: they parse, so they never reach this branch, and the\n * tail cannot fill with the session's own traffic.\n */\n session.unparsedStdoutTail = `${session.unparsedStdoutTail}${line}\\n`.slice(-4_000);\n return;\n }\n if (!isRecord(message)) return;\n\n if (message.method === 'session/update') {\n const update = isRecord(message.params) && isRecord(message.params.update) ? message.params.update : {};\n const kind = typeof update.sessionUpdate === 'string' ? update.sessionUpdate : 'unknown';\n if (!session.replaying) {\n if (kind === 'agent_message_chunk') {\n const content = isRecord(update.content) ? update.content : {};\n if (typeof content.text === 'string') session.turnFinalMessage += content.text;\n }\n if (kind === 'usage_update') session.turnLastUsageUpdate = update;\n if (kind === 'tool_call' || kind === 'tool_call_update') {\n if (Array.isArray(update.locations)) {\n for (const entry of update.locations) {\n if (isRecord(entry) && typeof entry.path === 'string' && !session.reportedFileLocations.includes(entry.path)) {\n session.reportedFileLocations.push(entry.path);\n }\n }\n }\n }\n }\n recordEvent({ kind, payload: update });\n return;\n }\n\n if (typeof message.method === 'string' && typeof message.id === 'number') {\n void handleAgentRequest(message.id, message.method, isRecord(message.params) ? message.params : {});\n return;\n }\n\n if (typeof message.id === 'number' && pending.has(message.id)) {\n const waiter = pending.get(message.id)!;\n pending.delete(message.id);\n if (message.error !== undefined) {\n /*\n * A JSON-RPC error is an OBJECT ({code, message, data?}), and rejecting with it raw is how a\n * real adapter answer became \"[object Object]\" at the choreography seam and \"Unknown agent\n * invocation error\" in the trace — three layers each normalizing for Error-or-string and\n * discarding everything else. The adapter names its failures; carry the name. (Found\n * 2026-09-03: a research turn's session/prompt error cost a full diagnosis cycle because all\n * that survived was the coercion.)\n */\n const rpcError = message.error as { code?: unknown; message?: unknown; data?: unknown };\n const detail = typeof rpcError?.message === 'string' ? rpcError.message : JSON.stringify(message.error)?.slice(0, 500);\n const rejection = new Error(`ACP agent error${typeof rpcError?.code === 'number' ? ` ${rpcError.code}` : ''}: ${detail}`);\n (rejection as Error & { acpError?: unknown }).acpError = message.error;\n waiter.reject(rejection);\n } else waiter.resolve(message.result);\n }\n };\n\n child.stdout.setEncoding('utf8');\n child.stdout.on('data', (chunk: string) => {\n session.buffer += chunk;\n let index: number;\n while ((index = session.buffer.indexOf('\\n')) >= 0) {\n const line = session.buffer.slice(0, index).trim();\n session.buffer = session.buffer.slice(index + 1);\n if (line) onLine(line);\n }\n });\n child.stderr.setEncoding('utf8');\n child.stderr.on('data', (chunk: string) => {\n session.stderrTail = `${session.stderrTail}${chunk}`.slice(-4_000);\n });\n\n const terminate = (): void => {\n // Mark the shutdown as deliberate BEFORE killing so the exit handler does\n // not reject the exit promise for a close the caller asked for.\n session.closed = true;\n if (!child.killed) child.kill('SIGTERM');\n setTimeout(() => {\n if (!child.killed) child.kill('SIGKILL');\n }, TERMINATION_SETTLE_GRACE_MS).unref?.();\n };\n\n const failed = (message: string, details: Record<string, unknown>): ACPSessionRunnerError =>\n new ACPSessionRunnerError(message, {\n ...details,\n stderrTail: session.stderrTail.trim().slice(-1_000),\n stdoutTail: session.unparsedStdoutTail.trim().slice(-1_000),\n });\n\n // ONE persistent \"the child died\" promise, raced against every awaited\n // request. It rejects at most once, only for an UNDELIBERATE exit — a close()\n // the caller asked for sets `closed` first and leaves it pending. Raced at\n // `initialize`, so it always carries a rejection handler and a later reject\n // (e.g. a crash between turns) never surfaces as an unhandled rejection.\n const exitPromise = new Promise<never>((_, rejectPromise) => {\n child.on('error', (error) => {\n session.childExited = true;\n if (!session.closed) rejectPromise(failed(`Agent process failed to start: ${error.message}`, {}));\n });\n child.on('exit', (code, signal) => {\n session.childExited = true;\n if (!session.closed) rejectPromise(failed('Agent process exited before the turn completed', { exitCode: code, signal }));\n });\n });\n\n try {\n // --- initialize ---------------------------------------------------------\n const initializeResult = await Promise.race([\n request('initialize', {\n protocolVersion: Math.max(...options.supportedProtocolVersions),\n clientCapabilities: {\n // `fs` is implemented above and confined to the session directory.\n fs: { readTextFile: true, writeTextFile: true },\n // `terminal` is NOT advertised. An agent that wants to run a command\n // runs it itself — measured, that is what the default agent does even\n // when the capability IS offered — so advertising it would add an\n // unexercised execution surface for no observed gain.\n terminal: false,\n },\n }),\n exitPromise,\n ]);\n if (!isRecord(initializeResult)) {\n throw failed('Agent returned a malformed initialize result', { initializeResult });\n }\n const negotiatedProtocolVersion = initializeResult.protocolVersion;\n if (typeof negotiatedProtocolVersion !== 'number' || !options.supportedProtocolVersions.includes(negotiatedProtocolVersion)) {\n // Refused rather than attempted. A version we do not implement is not a\n // version we can hold to a permission ceiling.\n throw failed('Agent negotiated an unsupported ACP protocol version', {\n negotiatedProtocolVersion,\n supportedProtocolVersions: [...options.supportedProtocolVersions],\n });\n }\n const agentInfo = isRecord(initializeResult.agentInfo) ? initializeResult.agentInfo : {};\n const agentCapabilities = isRecord(initializeResult.agentCapabilities) ? initializeResult.agentCapabilities : {};\n const loadSessionSupported = agentCapabilities.loadSession === true;\n\n let sessionId: string;\n let sessionModeId: string | undefined;\n\n if (options.resumeSessionId !== undefined) {\n // --- session/load (resume) -------------------------------------------\n if (!loadSessionSupported) {\n // Refused, not degraded. Starting a fresh session here would present a\n // context-less turn as a continuation of a parked one.\n throw failed('Agent does not advertise the loadSession capability; cannot resume the session', {\n resumeSessionId: options.resumeSessionId,\n });\n }\n session.replaying = true;\n await Promise.race([\n request('session/load', {\n sessionId: options.resumeSessionId,\n cwd: options.cwd,\n mcpServers: [],\n }),\n exitPromise,\n ]);\n session.replaying = false;\n sessionId = options.resumeSessionId;\n // Modes are reported by session/new, not session/load. The permission\n // handler is the guarantee regardless, so a resumed session simply runs\n // without a reselected mode.\n } else {\n // --- session/new ------------------------------------------------------\n const sessionResult = await Promise.race([\n request('session/new', {\n cwd: options.cwd,\n mcpServers: [],\n ...(options.sessionMetaExtensions ? { _meta: options.sessionMetaExtensions } : {}),\n }),\n exitPromise,\n ]);\n if (!isRecord(sessionResult) || typeof sessionResult.sessionId !== 'string') {\n throw failed('Agent returned a malformed session/new result', { sessionResult });\n }\n sessionId = sessionResult.sessionId;\n\n // --- best-effort mode selection (an optimisation, never the guarantee) -\n const modes = isRecord(sessionResult.modes) ? sessionResult.modes : undefined;\n const available = modes && Array.isArray(modes.availableModes) ? modes.availableModes : [];\n const preferred = options.preferredSessionModeIds ?? [];\n const match = available.find((entry) => isRecord(entry) && typeof entry.id === 'string' && preferred.includes(entry.id));\n if (isRecord(match) && typeof match.id === 'string') {\n try {\n // Raced against the death signal: before this, a `session/set_mode` sent\n // to an agent that then died left a promise nobody would ever settle,\n // with the turn timeout not yet armed — the run hung forever.\n await Promise.race([request('session/set_mode', { sessionId, modeId: match.id }), exitPromise]);\n sessionModeId = match.id;\n } catch {\n // The ceiling is still enforced by the permission handler, so a mode we\n // could not set costs round-trips, not safety.\n sessionModeId = undefined;\n }\n } else if (typeof modes?.currentModeId === 'string') {\n sessionModeId = modes.currentModeId;\n }\n }\n\n // --- model delivery, when the agent takes it over ACP -------------------\n //\n // Unlike the mode selection above, this is NOT best-effort. A model that\n // could not be set means the agent runs its own default while the run\n // records the model that was requested — a false result rather than a\n // degraded one, which is precisely the failure the provider-declared\n // delivery channel exists to end. So a rejection fails the session before\n // any prompt is sent, i.e. before the agent has touched the workspace.\n if (options.modelSelection) {\n const setModelResult = await Promise.race([\n request('session/set_config_option', {\n sessionId,\n configId: options.modelSelection.configId,\n value: options.modelSelection.model,\n }),\n exitPromise,\n ]).catch((error: unknown) => {\n throw failed(\n `Agent refused the model selection: ${error instanceof Error ? error.message : String(error)}`,\n { configId: options.modelSelection?.configId, model: options.modelSelection?.model },\n );\n });\n void setModelResult;\n }\n\n const promptTurn = async (prompt: string, turnOptions?: ACPPromptTurnOptions): Promise<ACPTurnResult> => {\n if (session.childExited) {\n throw failed('Agent process is no longer running; cannot start a turn', { sessionId });\n }\n\n // Per-turn slices are the cumulative arrays from this point on.\n const eventStart = session.events.length;\n const permissionStart = session.permissionDecisions.length;\n const deniedStart = session.deniedPermissionCount;\n const fileLocStart = session.reportedFileLocations.length;\n session.turnFinalMessage = '';\n session.turnLastUsageUpdate = undefined;\n\n let settled = false;\n let timedOut = false;\n let timer: NodeJS.Timeout | undefined;\n const cancelTurn = (): void => {\n write({ jsonrpc: '2.0', method: 'session/cancel', params: { sessionId } });\n setTimeout(() => {\n if (!settled) terminate();\n }, COOPERATIVE_CANCEL_GRACE_MS).unref?.();\n };\n const onAbort = (): void => cancelTurn();\n\n const turnPromise = request('session/prompt', {\n sessionId,\n prompt: [{ type: 'text', text: prompt }],\n });\n if (turnOptions?.turnTimeoutMs !== undefined) {\n timer = setTimeout(() => {\n timedOut = true;\n // Cooperative first: ACP requires the agent to answer a cancelled turn\n // with stop reason `cancelled`, which lets the caller distinguish an\n // interrupted run from a completed one. Kill only if it does not.\n cancelTurn();\n }, turnOptions.turnTimeoutMs);\n timer.unref?.();\n }\n if (turnOptions?.abortSignal) {\n if (turnOptions.abortSignal.aborted) cancelTurn();\n else turnOptions.abortSignal.addEventListener('abort', onAbort, { once: true });\n }\n\n try {\n const turnResult = await Promise.race([turnPromise, exitPromise]);\n settled = true;\n if (!isRecord(turnResult)) {\n throw failed('Agent returned a malformed session/prompt result', { turnResult, timedOut });\n }\n const { stopReason, rawStopReason } = parseStopReason(turnResult.stopReason);\n return {\n finalMessage: session.turnFinalMessage,\n stopReason,\n ...(rawStopReason ? { rawStopReason } : {}),\n usage: projectUsage(turnResult.usage, session.turnLastUsageUpdate),\n reportedFileLocations: session.reportedFileLocations.slice(fileLocStart),\n events: session.events.slice(eventStart),\n eventsTruncated: session.eventsTruncated,\n deniedPermissionCount: session.deniedPermissionCount - deniedStart,\n permissionDecisions: session.permissionDecisions.slice(permissionStart),\n };\n } finally {\n settled = true;\n if (timer) clearTimeout(timer);\n turnOptions?.abortSignal?.removeEventListener('abort', onAbort);\n }\n };\n\n return {\n sessionId,\n negotiatedProtocolVersion,\n ...(typeof agentInfo.name === 'string' ? { agentName: agentInfo.name } : {}),\n ...(typeof agentInfo.version === 'string' ? { agentVersion: agentInfo.version } : {}),\n ...(sessionModeId ? { sessionModeId } : {}),\n capabilities: { loadSession: loadSessionSupported },\n promptTurn,\n close: terminate,\n };\n } catch (error) {\n // Setup failed: the child must not be left running.\n terminate();\n throw error;\n }\n}\n\n/**\n * Drive exactly one coding turn end to end: open a session, send one prompt,\n * settle, and close.\n *\n * The compatibility surface for every caller that does not need the turn\n * cadence. It is a thin composition of {@link startACPAgentSession} +\n * `promptTurn` + `close`, so its behaviour tracks the handle by construction.\n */\nexport async function runACPCodingSession(options: ACPCodingSessionOptions): Promise<ACPCodingSessionResult> {\n const agentSession = await startACPAgentSession(options);\n try {\n const turn = await agentSession.promptTurn(options.prompt, {\n ...(options.turnTimeoutMs !== undefined ? { turnTimeoutMs: options.turnTimeoutMs } : {}),\n ...(options.abortSignal ? { abortSignal: options.abortSignal } : {}),\n });\n return {\n finalMessage: turn.finalMessage,\n stopReason: turn.stopReason,\n ...(turn.rawStopReason ? { rawStopReason: turn.rawStopReason } : {}),\n usage: turn.usage,\n reportedFileLocations: turn.reportedFileLocations,\n sessionId: agentSession.sessionId,\n negotiatedProtocolVersion: agentSession.negotiatedProtocolVersion,\n ...(agentSession.agentName ? { agentName: agentSession.agentName } : {}),\n ...(agentSession.agentVersion ? { agentVersion: agentSession.agentVersion } : {}),\n ...(agentSession.sessionModeId ? { sessionModeId: agentSession.sessionModeId } : {}),\n events: turn.events,\n eventsTruncated: turn.eventsTruncated,\n deniedPermissionCount: turn.deniedPermissionCount,\n permissionDecisions: turn.permissionDecisions,\n };\n } finally {\n agentSession.close();\n }\n}\n\n/** Re-exported so callers reason about ceilings through one ordering definition. */\nexport { agentClientProtocolPermissionCeilingRank };\n"]}
1
+ {"version":3,"file":"acp-session-runner.backend.utils.js","sourceRoot":"","sources":["../../../../src/flows-actors/utils/acp-session-runner.backend.utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Agent Client Protocol session runner.\n *\n * Two shapes over one transport:\n *\n * - {@link startACPAgentSession} opens a LIVE session — spawn the agent,\n * negotiate `initialize`, open (or `session/load`-resume) a session against a\n * confined working directory — and returns a handle whose `promptTurn` drives\n * ONE turn at a time. The caller decides whether to send another prompt on\n * the same session, which is what makes the interactive/continuation lane\n * possible: a turn that ended with a question is answered by the next\n * `promptTurn`, on the same `sessionId`, with the agent's context intact.\n * - {@link runACPCodingSession} is the single-turn wrapper kept for every\n * existing caller: start, one turn, close.\n *\n * # Why the transport is written here rather than taken from a package\n *\n * ACP is JSON-RPC 2.0 over newline-delimited stdio, and an official TypeScript\n * SDK exists. This runner speaks the wire directly instead, for two reasons.\n * The mechanical one: adopting the SDK adds a third-party runtime dependency to\n * an engine package, which is a toolchain-baseline decision with a version pin,\n * and it must not be taken incidentally inside a feature slice. The substantive\n * one: everything below is the part Wildo must OWN anyway — which protocol\n * versions are acceptable, who answers a permission request, what a working\n * directory may be, how long a turn may run. An SDK would have supplied the\n * framing, which is the cheap half.\n *\n * Revisit if ACP 2 lands: version negotiation is one place, and adopting the\n * SDK then is a contained change.\n *\n * # The permission ceiling is enforced HERE, not by the agent's session mode\n *\n * Agents advertise their own session modes (`default`, `acceptEdits`,\n * `bypassPermissions`, …) and those identifiers are agent-specific strings. The\n * runner will select a matching mode when one is advertised, because it saves\n * round-trips — but it NEVER relies on that for the guarantee. The ceiling is\n * enforced by this runner's answer to every `session/request_permission`, so an\n * agent that advertises no modes at all, or renames the ones it has, is still\n * held to the authored ceiling. Mode selection is an optimisation; the handler\n * is the mechanism.\n */\n\nimport { spawn, type ChildProcessWithoutNullStreams } from 'node:child_process';\nimport { realpathSync } from 'node:fs';\nimport { readFile, writeFile, mkdir } from 'node:fs/promises';\nimport { dirname, isAbsolute, relative, resolve, sep } from 'node:path';\n\nimport {\n AgentClientProtocol_PermissionCeiling,\n CodingAgent_StopReason,\n agentClientProtocolPermissionCeilingRank,\n type CodingAgent_Usage,\n} from '@wildo-ai/external-connectors-models';\n\n/** Milliseconds allowed for the agent to honour `session/cancel` before it is killed. */\nconst COOPERATIVE_CANCEL_GRACE_MS = 10_000;\n/** Extra grace after SIGKILL so an unreapable child cannot hang a caller. */\nconst TERMINATION_SETTLE_GRACE_MS = 1_000;\n/** Default ceiling on persisted session-event bytes. Truncates; never fails the run. */\nconst DEFAULT_MAX_RECORDED_EVENT_BYTES = 4 * 1024 * 1024;\n\nexport class ACPSessionRunnerError extends Error {\n constructor(\n message: string,\n public readonly details: Record<string, unknown>,\n ) {\n super(message);\n this.name = 'ACPSessionRunnerError';\n }\n}\n\n/** One `session/update` notification, recorded for the caller's traceability sink. */\nexport interface ACPSessionEvent {\n readonly kind: string;\n readonly payload: unknown;\n}\n\nexport interface ACPPermissionRequest {\n readonly toolCallTitle: string | undefined;\n readonly toolKind: string | undefined;\n /** Absolute paths the tool call declares it will touch, when it declares any. */\n readonly locations: readonly string[];\n readonly optionKinds: readonly string[];\n}\n\n/** Why a permission request was allowed or refused. */\nexport enum ACPPermissionDecisionReason {\n /** The declared ceiling does not admit this tool kind. */\n CEILING_REFUSED = 'ceiling_refused',\n /** A location the task's mutation scope does not authorise. */\n LOCATION_OUT_OF_SCOPE = 'location_out_of_scope',\n /** Admitted, and an `allow_once` option existed to say so with. */\n ALLOWED_ONCE = 'allowed_once',\n /**\n * Admitted by the ceiling and the scope, then refused anyway because the agent offered no\n * option this client is willing to select. `allow_always` is deliberately never chosen below\n * an UNRESTRICTED ceiling — it carries a session-wide permission change — so a request that\n * offers only that option has no answer other than refusal.\n */\n NO_SELECTABLE_OPTION = 'no_selectable_option',\n}\n\nexport interface ACPPermissionDecisionRecord {\n readonly allowed: boolean;\n readonly reason: ACPPermissionDecisionReason;\n /** The ACP tool kind (`edit`, `execute`, …), when the agent declared one. */\n readonly toolKind?: string;\n /** Paths the request declared. Empty when the agent declared none — which is why an\n * `execute` request cannot be scope-checked at all. */\n readonly locations: readonly string[];\n /** The option KINDS the agent offered, so a refusal for lack of a selectable one is visible. */\n readonly offeredOptionKinds: readonly string[];\n}\n\n/** Bounds the recorded decisions; a runaway agent must not grow this without limit. */\nconst PERMISSION_DECISION_RECORD_LIMIT = 200;\n\n/**\n * Options common to opening a session and running a one-shot turn.\n *\n * The single-turn {@link ACPCodingSessionOptions} extends this with `prompt`,\n * `turnTimeoutMs` and `abortSignal` — the per-turn concerns the live handle\n * takes as arguments to `promptTurn` instead.\n */\nexport interface ACPStartSessionOptions {\n command: string;\n args?: readonly string[];\n /** Already resolved and confined by `resolveTrustedWorkingDirectory`. */\n cwd: string;\n env: NodeJS.ProcessEnv;\n /** Protocol majors the caller will accept in the `initialize` response. */\n supportedProtocolVersions: readonly number[];\n permissionCeiling: AgentClientProtocol_PermissionCeiling;\n /**\n * Additional, caller-owned refusal on top of the ceiling — used to hold an\n * agent to a task's declared mutation scope. Returning false DENIES, whatever\n * the ceiling says. It can only narrow.\n */\n isPermittedLocation?: (absolutePath: string) => boolean;\n /**\n * The agent's OWN session-mode ids to prefer, most-preferred first.\n *\n * Supplied by the caller from the provider contract rather than derived here:\n * mode ids are agent vocabulary, and a map hardcoded in this neutral runner\n * matched `default` for every ceiling — correct for one adapter and silently\n * empty for an agent whose modes are, say, `build`/`plan`. An unmatched or\n * unsettable mode costs round-trips, never safety: the ceiling is enforced by\n * this runner's answer to every permission request.\n */\n preferredSessionModeIds?: readonly string[];\n /**\n * Set the model over ACP as a session config option, before the first prompt.\n *\n * Only for agents whose provider declares the `session-config-option`\n * delivery channel; agents that read the model from their environment have it\n * in `env` already. A rejected call FAILS the session rather than proceeding:\n * an unset model means the agent silently runs its own default while the run\n * records the model that was requested.\n */\n modelSelection?: { configId: string; model: string };\n /** Opaque `_meta` for `session/new`; agent-specific by construction. */\n sessionMetaExtensions?: Record<string, unknown>;\n maxRecordedEventBytes?: number;\n /** Live progress sink. Never allowed to fail the run. */\n onEvent?: (event: ACPSessionEvent) => void;\n /**\n * Resume a prior session by id instead of opening a new one.\n *\n * When set, the runner calls `session/load` rather than `session/new`, so the\n * agent restores the earlier conversation's context. REQUIRES the agent to\n * advertise the `loadSession` capability at `initialize`; a resume asked of an\n * agent that does not is REFUSED, not silently degraded to a fresh session —\n * presenting a context-less turn as a continuation is the failure this guards.\n * The replayed history is consumed and discarded: it is already on the durable\n * record from the run that parked, and re-recording it would double it.\n */\n resumeSessionId?: string;\n}\n\nexport interface ACPCodingSessionOptions extends ACPStartSessionOptions {\n prompt: string;\n turnTimeoutMs?: number;\n /**\n * Operator-initiated cancellation.\n *\n * Handled exactly like the timeout, and deliberately so: `session/cancel`\n * first, kill only if the agent does not honour it. An operator who stops a\n * run wants it to STOP, but a coding agent killed mid-edit leaves a worktree\n * nobody can characterise — whereas one that settles as `cancelled` leaves a\n * partial change set the caller knows is partial.\n */\n abortSignal?: AbortSignal;\n}\n\n/** Per-turn arguments to {@link ACPAgentSession.promptTurn}. */\nexport interface ACPPromptTurnOptions {\n turnTimeoutMs?: number;\n /** See {@link ACPCodingSessionOptions.abortSignal}. Scoped to this one turn. */\n abortSignal?: AbortSignal;\n}\n\n/** The outcome of one prompt turn on a live session. */\nexport interface ACPTurnResult {\n readonly finalMessage: string;\n readonly stopReason: CodingAgent_StopReason;\n /** The agent's verbatim value when `stopReason` is `UNRECOGNISED`. */\n readonly rawStopReason?: string;\n readonly usage?: CodingAgent_Usage;\n /** File paths the agent reported touching DURING THIS TURN. */\n readonly reportedFileLocations: readonly string[];\n /** `session/update` notifications recorded DURING THIS TURN. */\n readonly events: readonly ACPSessionEvent[];\n /** True when the session's cumulative event log hit its byte ceiling. */\n readonly eventsTruncated: boolean;\n /** Permission requests refused during this turn. */\n readonly deniedPermissionCount: number;\n /** Per-request decisions recorded during this turn, with the reason each was decided. */\n readonly permissionDecisions: readonly ACPPermissionDecisionRecord[];\n}\n\n/** What the agent declared about itself and the session at `initialize`/setup time. */\nexport interface ACPAgentSession {\n readonly sessionId: string;\n readonly negotiatedProtocolVersion: number;\n readonly agentName?: string;\n readonly agentVersion?: string;\n /** The agent-declared mode the session runs under, when one was selectable. */\n readonly sessionModeId?: string;\n /** Capabilities the agent advertised — the ones this runner branches on. */\n readonly capabilities: { readonly loadSession: boolean };\n /** Drive one turn. May be called repeatedly to continue the conversation. */\n promptTurn(prompt: string, options?: ACPPromptTurnOptions): Promise<ACPTurnResult>;\n /** Terminate the agent process. Idempotent; safe after any turn. */\n close(): void;\n}\n\nexport interface ACPCodingSessionResult {\n readonly finalMessage: string;\n readonly stopReason: CodingAgent_StopReason;\n /** The agent's verbatim value when `stopReason` is `UNRECOGNISED`. */\n readonly rawStopReason?: string;\n readonly usage?: CodingAgent_Usage;\n readonly reportedFileLocations: readonly string[];\n readonly sessionId: string;\n readonly negotiatedProtocolVersion: number;\n readonly agentName?: string;\n readonly agentVersion?: string;\n /** The agent-declared mode the turn ran under, when one was selectable. */\n readonly sessionModeId?: string;\n readonly events: readonly ACPSessionEvent[];\n /** True when the event log hit its byte ceiling and stopped recording. */\n readonly eventsTruncated: boolean;\n /** Permission requests denied by the ceiling or by the scope predicate. */\n readonly deniedPermissionCount: number;\n /**\n * One record per permission request, in order, with the REASON it was decided.\n *\n * A count alone is not diagnosable. A run under an UNRESTRICTED ceiling came back with two\n * denials and no files, and the recorded evidence could not say whether the scope predicate\n * had refused a path or the agent had simply offered no `allow_once` option — two very\n * different defects with the same visible outcome. This makes the decision auditable without\n * re-running an agent to find out.\n *\n * Carries no prompt or file CONTENT: tool kind, paths, the option kinds offered, and the\n * decision. Bounded by {@link PERMISSION_DECISION_RECORD_LIMIT}.\n */\n readonly permissionDecisions: readonly ACPPermissionDecisionRecord[];\n}\n\n/**\n * Agent-declared mode ids preferred for each ceiling.\n *\n * EVERY ceiling asks for the MOST-ESCALATING mode, and that is the correction\n * that matters. The obvious mapping — `AUTO_ACCEPT_EDITS` → the agent's own\n * `acceptEdits`, `UNRESTRICTED` → `bypassPermissions` — hands the decision to\n * the agent, which is exactly what this runner must not do. Measured live on\n * 2026-08-27: under `acceptEdits`, Claude's adapter auto-approved a mutating\n * shell command that wrote OUTSIDE the task's declared mutation scope, with no\n * permission request reaching the client at all. Under `default` the identical\n * prompt escalated, was denied, and nothing was written.\n *\n * Keeping the agent maximally escalating means every decision reaches\n * {@link permissionAllowedByCeiling}, where the ceiling means what it says —\n * and where the caller's mutation scope can still refuse a path.\n */\n\n/** Tool kinds that count as an EDIT for the AUTO_ACCEPT_EDITS ceiling. */\nconst EDIT_TOOL_KINDS = new Set(['edit', 'delete', 'move']);\n\n/**\n * Tool kinds the Agent Client Protocol itself classes as NON-MUTATING, for the AUTO_ACCEPT_READS\n * ceiling.\n *\n * Taken from the protocol's own tool-kind categorisation rather than invented here, so the set does\n * not drift from what an agent means when it declares a kind.\n * spec-cite: Agent Client Protocol — Tool Calls, tool-kind list\n * (https://agentclientprotocol.com/protocol/tool-calls): `read`, `search`, `fetch` and `think` are\n * the non-mutating kinds; `edit`, `delete` and `move` are the mutating ones.\n *\n * `execute` is deliberately EXCLUDED: a command can mutate anything, and a runner cannot tell a\n * read-only command from a destructive one by its kind. `other` is excluded because it is the\n * protocol's unclassified catch-all — measured 2026-08-29, the agent's own `ToolSearch` arrived as\n * `other`, so admitting it would mean admitting whatever an agent declines to classify.\n */\nconst NON_MUTATING_TOOL_KINDS = new Set(['read', 'search', 'fetch', 'think']);\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * Decide one permission request from the ceiling alone (before the caller's\n * scope predicate narrows it further).\n *\n * Exported for direct testing: this is the security decision of the whole\n * transport, and it should be provable without spawning anything.\n */\nexport function permissionAllowedByCeiling(\n ceiling: AgentClientProtocol_PermissionCeiling,\n toolKind: string | undefined,\n): boolean {\n switch (ceiling) {\n case AgentClientProtocol_PermissionCeiling.UNRESTRICTED:\n return true;\n case AgentClientProtocol_PermissionCeiling.AUTO_ACCEPT_EDITS:\n // Edits are pre-approved; anything else (executing a command, fetching a\n // URL, an unrecognised kind) still requires a decision this runner cannot\n // make on its own, so it is denied rather than guessed.\n //\n // This is only true because the agent is kept in its most-escalating\n // mode — `sessionModeIdsByPermissionCeiling` on the provider contract,\n // passed in as `preferredSessionModeIds`. (The runner-local\n // `PREFERRED_MODE_IDS` this used to name was deleted on 2026-09-04: mode\n // ids are agent vocabulary, so a map hardcoded here matched nothing for\n // every agent but the one it was written for.) Delegating to the agent's\n // own `acceptEdits` mode made `execute` bypass this branch entirely,\n // measured live.\n return toolKind !== undefined && EDIT_TOOL_KINDS.has(toolKind);\n case AgentClientProtocol_PermissionCeiling.AUTO_ACCEPT_READS_AND_EDITS:\n // The union of the two sets above, refusing exactly what both refuse:\n // `execute` (a command can mutate anything) and `other` (unclassified,\n // fail-closed). The evidence-persisting research lane's ceiling — the\n // location predicate is what keeps its writes inside the store.\n return toolKind !== undefined && (NON_MUTATING_TOOL_KINDS.has(toolKind) || EDIT_TOOL_KINDS.has(toolKind));\n case AgentClientProtocol_PermissionCeiling.AUTO_ACCEPT_READS:\n /*\n * Non-mutating kinds are pre-approved; everything else is denied rather than guessed — the\n * same posture AUTO_ACCEPT_EDITS takes for its complement, and for the same reason: with no\n * human at the other end there is nobody to ask.\n *\n * An UNDECLARED kind is denied. An agent that does not say what it is doing does not get the\n * benefit of the doubt on a ceiling whose whole promise is \"nothing mutates\".\n */\n return toolKind !== undefined && NON_MUTATING_TOOL_KINDS.has(toolKind);\n case AgentClientProtocol_PermissionCeiling.PROMPT_ALWAYS:\n // Nothing is pre-approved. With no human at the other end of this\n // transport, \"prompt\" resolves to \"deny\": a coding run that needed an\n // authorisation nobody could give did not have it.\n return false;\n default: {\n // An unknown ceiling is not a reason to proceed. Fail closed rather than\n // fall through to a permissive branch.\n const exhaustive: never = ceiling;\n void exhaustive;\n return false;\n }\n }\n}\n\n/**\n * Map an ACP stop-reason wire value onto the named vocabulary.\n *\n * An unknown value DEGRADES rather than throwing. This runs after the turn — so\n * after the workspace may already have been mutated — and throwing here would\n * turn a completed run into an error whose change set nobody records. The caller\n * gets `UNRECOGNISED` plus the verbatim value and can refuse it as a working\n * result while still capturing what changed.\n */\nexport function parseStopReason(raw: unknown): { stopReason: CodingAgent_StopReason; rawStopReason?: string } {\n const known = (Object.values(CodingAgent_StopReason) as string[])\n .filter((value) => value !== CodingAgent_StopReason.UNRECOGNISED);\n if (typeof raw === 'string' && known.includes(raw)) {\n return { stopReason: raw as CodingAgent_StopReason };\n }\n return {\n stopReason: CodingAgent_StopReason.UNRECOGNISED,\n rawStopReason: typeof raw === 'string' ? raw : JSON.stringify(raw ?? null),\n };\n}\n\n/** Project ACP's usage shapes onto the coding-agent usage contract. */\nexport function projectUsage(\n turnUsage: unknown,\n lastUsageUpdate: unknown,\n): CodingAgent_Usage | undefined {\n const usage: Record<string, unknown> = {};\n if (isRecord(turnUsage)) {\n for (const key of ['inputTokens', 'outputTokens', 'cachedReadTokens', 'cachedWriteTokens', 'totalTokens']) {\n if (typeof turnUsage[key] === 'number') usage[key] = turnUsage[key];\n }\n }\n if (isRecord(lastUsageUpdate)) {\n if (typeof lastUsageUpdate.used === 'number') usage.contextUsed = lastUsageUpdate.used;\n if (typeof lastUsageUpdate.size === 'number') usage.contextWindowSize = lastUsageUpdate.size;\n const cost = lastUsageUpdate.cost;\n if (isRecord(cost) && typeof cost.amount === 'number' && typeof cost.currency === 'string') {\n usage.cost = { amount: cost.amount, currency: cost.currency };\n }\n }\n return Object.keys(usage).length > 0 ? (usage as CodingAgent_Usage) : undefined;\n}\n\n/**\n * True when `candidate` resolves inside `root`. Both must be absolute.\n *\n * Compares against the root AND its physical realpath. Agents report canonical\n * paths, so a root reached through a symlink (`/var/...` → `/private/var/...` on\n * macOS) would otherwise reject every request — a guard that silently denies\n * everything, which reads as the agent failing rather than the guard misfiring.\n * The same defect was found live in the companion's scope predicate.\n */\nexport function isPathWithin(root: string, candidate: string): boolean {\n if (!isAbsolute(root) || !isAbsolute(candidate)) return false;\n const roots = [root];\n try {\n const physical = realpathSync.native(root);\n if (physical !== root) roots.push(physical);\n } catch {\n // An unresolvable root stays as given; the containment check below still applies.\n }\n const resolved = resolve(candidate);\n return roots.some((candidateRoot) => {\n const rel = relative(candidateRoot, resolved);\n return rel !== '..' && !rel.startsWith(`..${sep}`) && !isAbsolute(rel);\n });\n}\n\n/**\n * Open a live ACP session and return a handle whose `promptTurn` drives one\n * turn at a time.\n *\n * The caller owns the turn cadence — this is the whole point of the handle. A\n * turn that ends with a question is not the end of the session; the caller\n * inspects it and may `promptTurn` again with the answer.\n */\nexport async function startACPAgentSession(options: ACPStartSessionOptions): Promise<ACPAgentSession> {\n const maxRecordedEventBytes = options.maxRecordedEventBytes ?? DEFAULT_MAX_RECORDED_EVENT_BYTES;\n const child: ChildProcessWithoutNullStreams = spawn(options.command, [...(options.args ?? [])], {\n cwd: options.cwd,\n env: options.env,\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n\n // Cumulative session state. Per-turn slices are taken from these by index.\n const session = {\n nextId: 1,\n buffer: '',\n stderrTail: '',\n unparsedStdoutTail: '',\n events: [] as ACPSessionEvent[],\n recordedBytes: 0,\n eventsTruncated: false,\n reportedFileLocations: [] as string[],\n permissionDecisions: [] as ACPPermissionDecisionRecord[],\n deniedPermissionCount: 0,\n // Reset at the start of each turn.\n turnFinalMessage: '',\n turnLastUsageUpdate: undefined as unknown,\n // True while `session/load` replay is streaming: replayed history is\n // consumed and discarded (it is already on the durable record).\n replaying: false,\n // Set once the child exits; a later `promptTurn` refuses rather than hanging.\n childExited: false,\n // Set BEFORE a deliberate terminate() so the exit handler does not reject\n // the exit promise for a shutdown the caller asked for.\n closed: false,\n };\n const pending = new Map<number, { resolve: (value: unknown) => void; reject: (error: unknown) => void }>();\n\n const write = (payload: unknown): void => {\n if (child.stdin.writable) child.stdin.write(`${JSON.stringify(payload)}\\n`);\n };\n const request = (method: string, params: unknown): Promise<unknown> => {\n const id = session.nextId++;\n return new Promise<unknown>((resolvePromise, rejectPromise) => {\n pending.set(id, { resolve: resolvePromise, reject: rejectPromise });\n write({ jsonrpc: '2.0', id, method, params });\n });\n };\n const respond = (id: number, result: unknown): void => write({ jsonrpc: '2.0', id, result });\n const respondError = (id: number, message: string): void =>\n write({ jsonrpc: '2.0', id, error: { code: -32603, message } });\n\n const recordEvent = (event: ACPSessionEvent): void => {\n // Replayed `session/load` history is neither persisted nor forwarded: it is\n // already recorded from the run that produced it, and re-emitting it would\n // double every earlier frame on the resuming run's record.\n if (session.replaying) return;\n if (!session.eventsTruncated) {\n const size = JSON.stringify(event).length;\n if (session.recordedBytes + size > maxRecordedEventBytes) {\n // Truncate, never reject. Losing the tail of a transcript is a reporting\n // loss; failing the run here would discard work already written to the\n // workspace, which is the mistake the transport this replaces made.\n session.eventsTruncated = true;\n } else {\n session.recordedBytes += size;\n session.events.push(event);\n }\n }\n try {\n options.onEvent?.(event);\n } catch {\n // A progress sink must never be able to fail the run it observes.\n }\n };\n\n const decidePermission = (params: Record<string, unknown>): { allowed: boolean; optionId?: string } => {\n const toolCall = isRecord(params.toolCall) ? params.toolCall : {};\n const toolKind = typeof toolCall.kind === 'string' ? toolCall.kind : undefined;\n const locations = Array.isArray(toolCall.locations)\n ? toolCall.locations.flatMap((entry) => (isRecord(entry) && typeof entry.path === 'string' ? [entry.path] : []))\n : [];\n\n const rawOptions = Array.isArray(params.options) ? params.options : [];\n const offeredOptionKinds = rawOptions.flatMap((entry) => (isRecord(entry) && typeof entry.kind === 'string' ? [entry.kind] : []));\n const record = (allowed: boolean, reason: ACPPermissionDecisionReason): void => {\n if (session.permissionDecisions.length >= PERMISSION_DECISION_RECORD_LIMIT) return;\n session.permissionDecisions.push({\n allowed,\n reason,\n ...(toolKind !== undefined ? { toolKind } : {}),\n locations,\n offeredOptionKinds,\n });\n };\n\n if (!permissionAllowedByCeiling(options.permissionCeiling, toolKind)) {\n record(false, ACPPermissionDecisionReason.CEILING_REFUSED);\n return { allowed: false };\n }\n // The caller's scope predicate can only NARROW. A location the task did not\n // authorise is denied even under an UNRESTRICTED ceiling.\n //\n // But note WHAT IT IS QUANTIFIED OVER: `locations` comes from the request, and `some` over an\n // EMPTY array is `false`, so a request that declares NO locations passes this gate without the\n // predicate being consulted once. That is not an oversight to be closed here — a shell command\n // is unscoped BY NATURE (any derived scope is defeated by `sh -c \"$CMD\"` or a substituted\n // redirect), so the scope holds for DECLARED EDITS and commands are unbounded. It is stated\n // here because this is the line a reader arrives at believing the scope is total, and it is a\n // DIFFERENT hole from an agent whose guards never fire at all — see the `UNRESTRICTED` member\n // of `AgentClientProtocol_PermissionCeiling`, which carries the full reasoning.\n if (options.isPermittedLocation && locations.some((path) => !options.isPermittedLocation!(path))) {\n record(false, ACPPermissionDecisionReason.LOCATION_OUT_OF_SCOPE);\n return { allowed: false };\n }\n // `allow_always` is never selected. Measured against Claude's adapter, that\n // option carries a `_meta` permission change that switches the SESSION into\n // an auto-accepting mode — so answering one request with it silently raises\n // the ceiling for every request after it.\n const once = rawOptions.find((entry) => isRecord(entry) && entry.kind === 'allow_once');\n if (isRecord(once) && typeof once.optionId === 'string') {\n record(true, ACPPermissionDecisionReason.ALLOWED_ONCE);\n return { allowed: true, optionId: once.optionId };\n }\n record(false, ACPPermissionDecisionReason.NO_SELECTABLE_OPTION);\n return { allowed: false };\n };\n\n const handleAgentRequest = async (id: number, method: string, params: Record<string, unknown>): Promise<void> => {\n switch (method) {\n case 'session/request_permission': {\n const decision = decidePermission(params);\n if (decision.allowed && decision.optionId) {\n respond(id, { outcome: { outcome: 'selected', optionId: decision.optionId } });\n return;\n }\n session.deniedPermissionCount++;\n const rawOptions = Array.isArray(params.options) ? params.options : [];\n const reject = rawOptions.find((entry) => isRecord(entry) && entry.kind === 'reject_once');\n if (isRecord(reject) && typeof reject.optionId === 'string') {\n respond(id, { outcome: { outcome: 'selected', optionId: reject.optionId } });\n } else {\n // No refusal option offered: cancelling the request is the only\n // remaining way to say no, and saying no is required.\n respond(id, { outcome: { outcome: 'cancelled' } });\n }\n return;\n }\n case 'fs/read_text_file': {\n const path = typeof params.path === 'string' ? params.path : '';\n if (!isPathWithin(options.cwd, path)) {\n respondError(id, 'Path is outside the session working directory');\n return;\n }\n try {\n respond(id, { content: await readFile(path, 'utf8') });\n } catch (error) {\n respondError(id, `Unable to read file: ${(error as Error).message}`);\n }\n return;\n }\n case 'fs/write_text_file': {\n const path = typeof params.path === 'string' ? params.path : '';\n if (!isPathWithin(options.cwd, path)) {\n respondError(id, 'Path is outside the session working directory');\n return;\n }\n if (options.isPermittedLocation && !options.isPermittedLocation(path)) {\n respondError(id, 'Path is outside the task mutation scope');\n return;\n }\n try {\n await mkdir(dirname(path), { recursive: true });\n await writeFile(path, typeof params.content === 'string' ? params.content : '', 'utf8');\n respond(id, null);\n } catch (error) {\n respondError(id, `Unable to write file: ${(error as Error).message}`);\n }\n return;\n }\n default:\n // Deliberately including every `terminal/*` method: this runner does NOT\n // advertise the terminal capability, so an agent calling one has ignored\n // the negotiated capability set. Refusing names that plainly.\n respondError(id, `Unsupported client method: ${method}`);\n }\n };\n\n const onLine = (line: string): void => {\n let message: unknown;\n try {\n message = JSON.parse(line);\n } catch {\n /*\n * Non-JSON stdout is the agent's own logging — and it IS our concern when the turn fails.\n *\n * This used to `return` with the comment \"not our concern\", and that is how an agent could\n * exit with code 0 in the middle of a turn while the only thing we could report was \"Agent\n * process exited before the turn completed\". A process that exits SUCCESSFULLY has almost\n * always said why, and a CLI says it in prose — which by definition does not parse as JSON-RPC\n * and so landed exactly here, in a discard.\n *\n * Kept in a bounded tail, mirroring `stderrTail`, and surfaced only on failure. The protocol\n * frames are excluded by construction: they parse, so they never reach this branch, and the\n * tail cannot fill with the session's own traffic.\n */\n session.unparsedStdoutTail = `${session.unparsedStdoutTail}${line}\\n`.slice(-4_000);\n return;\n }\n if (!isRecord(message)) return;\n\n if (message.method === 'session/update') {\n const update = isRecord(message.params) && isRecord(message.params.update) ? message.params.update : {};\n const kind = typeof update.sessionUpdate === 'string' ? update.sessionUpdate : 'unknown';\n if (!session.replaying) {\n if (kind === 'agent_message_chunk') {\n const content = isRecord(update.content) ? update.content : {};\n if (typeof content.text === 'string') session.turnFinalMessage += content.text;\n }\n if (kind === 'usage_update') session.turnLastUsageUpdate = update;\n if (kind === 'tool_call' || kind === 'tool_call_update') {\n if (Array.isArray(update.locations)) {\n for (const entry of update.locations) {\n if (isRecord(entry) && typeof entry.path === 'string' && !session.reportedFileLocations.includes(entry.path)) {\n session.reportedFileLocations.push(entry.path);\n }\n }\n }\n }\n }\n recordEvent({ kind, payload: update });\n return;\n }\n\n if (typeof message.method === 'string' && typeof message.id === 'number') {\n void handleAgentRequest(message.id, message.method, isRecord(message.params) ? message.params : {});\n return;\n }\n\n if (typeof message.id === 'number' && pending.has(message.id)) {\n const waiter = pending.get(message.id)!;\n pending.delete(message.id);\n if (message.error !== undefined) {\n /*\n * A JSON-RPC error is an OBJECT ({code, message, data?}), and rejecting with it raw is how a\n * real adapter answer became \"[object Object]\" at the choreography seam and \"Unknown agent\n * invocation error\" in the trace — three layers each normalizing for Error-or-string and\n * discarding everything else. The adapter names its failures; carry the name. (Found\n * 2026-09-03: a research turn's session/prompt error cost a full diagnosis cycle because all\n * that survived was the coercion.)\n */\n const rpcError = message.error as { code?: unknown; message?: unknown; data?: unknown };\n const detail = typeof rpcError?.message === 'string' ? rpcError.message : JSON.stringify(message.error)?.slice(0, 500);\n const rejection = new Error(`ACP agent error${typeof rpcError?.code === 'number' ? ` ${rpcError.code}` : ''}: ${detail}`);\n (rejection as Error & { acpError?: unknown }).acpError = message.error;\n waiter.reject(rejection);\n } else waiter.resolve(message.result);\n }\n };\n\n child.stdout.setEncoding('utf8');\n child.stdout.on('data', (chunk: string) => {\n session.buffer += chunk;\n let index: number;\n while ((index = session.buffer.indexOf('\\n')) >= 0) {\n const line = session.buffer.slice(0, index).trim();\n session.buffer = session.buffer.slice(index + 1);\n if (line) onLine(line);\n }\n });\n child.stderr.setEncoding('utf8');\n child.stderr.on('data', (chunk: string) => {\n session.stderrTail = `${session.stderrTail}${chunk}`.slice(-4_000);\n });\n\n const terminate = (): void => {\n // Mark the shutdown as deliberate BEFORE killing so the exit handler does\n // not reject the exit promise for a close the caller asked for.\n session.closed = true;\n if (!child.killed) child.kill('SIGTERM');\n setTimeout(() => {\n if (!child.killed) child.kill('SIGKILL');\n }, TERMINATION_SETTLE_GRACE_MS).unref?.();\n };\n\n const failed = (message: string, details: Record<string, unknown>): ACPSessionRunnerError =>\n new ACPSessionRunnerError(message, {\n ...details,\n stderrTail: session.stderrTail.trim().slice(-1_000),\n stdoutTail: session.unparsedStdoutTail.trim().slice(-1_000),\n });\n\n // ONE persistent \"the child died\" promise, raced against every awaited\n // request. It rejects at most once, only for an UNDELIBERATE exit — a close()\n // the caller asked for sets `closed` first and leaves it pending. Raced at\n // `initialize`, so it always carries a rejection handler and a later reject\n // (e.g. a crash between turns) never surfaces as an unhandled rejection.\n const exitPromise = new Promise<never>((_, rejectPromise) => {\n child.on('error', (error) => {\n session.childExited = true;\n if (!session.closed) rejectPromise(failed(`Agent process failed to start: ${error.message}`, {}));\n });\n child.on('exit', (code, signal) => {\n session.childExited = true;\n if (!session.closed) rejectPromise(failed('Agent process exited before the turn completed', { exitCode: code, signal }));\n });\n });\n\n try {\n // --- initialize ---------------------------------------------------------\n const initializeResult = await Promise.race([\n request('initialize', {\n protocolVersion: Math.max(...options.supportedProtocolVersions),\n clientCapabilities: {\n // `fs` is implemented above and confined to the session directory.\n fs: { readTextFile: true, writeTextFile: true },\n // `terminal` is NOT advertised. An agent that wants to run a command\n // runs it itself — measured, that is what the default agent does even\n // when the capability IS offered — so advertising it would add an\n // unexercised execution surface for no observed gain.\n terminal: false,\n },\n }),\n exitPromise,\n ]);\n if (!isRecord(initializeResult)) {\n throw failed('Agent returned a malformed initialize result', { initializeResult });\n }\n const negotiatedProtocolVersion = initializeResult.protocolVersion;\n if (typeof negotiatedProtocolVersion !== 'number' || !options.supportedProtocolVersions.includes(negotiatedProtocolVersion)) {\n // Refused rather than attempted. A version we do not implement is not a\n // version we can hold to a permission ceiling.\n throw failed('Agent negotiated an unsupported ACP protocol version', {\n negotiatedProtocolVersion,\n supportedProtocolVersions: [...options.supportedProtocolVersions],\n });\n }\n const agentInfo = isRecord(initializeResult.agentInfo) ? initializeResult.agentInfo : {};\n const agentCapabilities = isRecord(initializeResult.agentCapabilities) ? initializeResult.agentCapabilities : {};\n const loadSessionSupported = agentCapabilities.loadSession === true;\n\n let sessionId: string;\n let sessionModeId: string | undefined;\n\n if (options.resumeSessionId !== undefined) {\n // --- session/load (resume) -------------------------------------------\n if (!loadSessionSupported) {\n // Refused, not degraded. Starting a fresh session here would present a\n // context-less turn as a continuation of a parked one.\n throw failed('Agent does not advertise the loadSession capability; cannot resume the session', {\n resumeSessionId: options.resumeSessionId,\n });\n }\n session.replaying = true;\n await Promise.race([\n request('session/load', {\n sessionId: options.resumeSessionId,\n cwd: options.cwd,\n mcpServers: [],\n }),\n exitPromise,\n ]);\n session.replaying = false;\n sessionId = options.resumeSessionId;\n // Modes are reported by session/new, not session/load. The permission\n // handler is the guarantee regardless, so a resumed session simply runs\n // without a reselected mode.\n } else {\n // --- session/new ------------------------------------------------------\n const sessionResult = await Promise.race([\n request('session/new', {\n cwd: options.cwd,\n mcpServers: [],\n ...(options.sessionMetaExtensions ? { _meta: options.sessionMetaExtensions } : {}),\n }),\n exitPromise,\n ]);\n if (!isRecord(sessionResult) || typeof sessionResult.sessionId !== 'string') {\n throw failed('Agent returned a malformed session/new result', { sessionResult });\n }\n sessionId = sessionResult.sessionId;\n\n // --- best-effort mode selection (an optimisation, never the guarantee) -\n const modes = isRecord(sessionResult.modes) ? sessionResult.modes : undefined;\n const available = modes && Array.isArray(modes.availableModes) ? modes.availableModes : [];\n const preferred = options.preferredSessionModeIds ?? [];\n const match = available.find((entry) => isRecord(entry) && typeof entry.id === 'string' && preferred.includes(entry.id));\n if (isRecord(match) && typeof match.id === 'string') {\n try {\n // Raced against the death signal: before this, a `session/set_mode` sent\n // to an agent that then died left a promise nobody would ever settle,\n // with the turn timeout not yet armed — the run hung forever.\n await Promise.race([request('session/set_mode', { sessionId, modeId: match.id }), exitPromise]);\n sessionModeId = match.id;\n } catch {\n // The ceiling is still enforced by the permission handler, so a mode we\n // could not set costs round-trips, not safety.\n sessionModeId = undefined;\n }\n } else if (typeof modes?.currentModeId === 'string') {\n sessionModeId = modes.currentModeId;\n }\n }\n\n // --- model delivery, when the agent takes it over ACP -------------------\n //\n // Unlike the mode selection above, this is NOT best-effort. A model that\n // could not be set means the agent runs its own default while the run\n // records the model that was requested — a false result rather than a\n // degraded one, which is precisely the failure the provider-declared\n // delivery channel exists to end. So a rejection fails the session before\n // any prompt is sent, i.e. before the agent has touched the workspace.\n if (options.modelSelection) {\n const setModelResult = await Promise.race([\n request('session/set_config_option', {\n sessionId,\n configId: options.modelSelection.configId,\n value: options.modelSelection.model,\n }),\n exitPromise,\n ]).catch((error: unknown) => {\n throw failed(\n `Agent refused the model selection: ${error instanceof Error ? error.message : String(error)}`,\n { configId: options.modelSelection?.configId, model: options.modelSelection?.model },\n );\n });\n void setModelResult;\n }\n\n const promptTurn = async (prompt: string, turnOptions?: ACPPromptTurnOptions): Promise<ACPTurnResult> => {\n if (session.childExited) {\n throw failed('Agent process is no longer running; cannot start a turn', { sessionId });\n }\n\n // Per-turn slices are the cumulative arrays from this point on.\n const eventStart = session.events.length;\n const permissionStart = session.permissionDecisions.length;\n const deniedStart = session.deniedPermissionCount;\n const fileLocStart = session.reportedFileLocations.length;\n session.turnFinalMessage = '';\n session.turnLastUsageUpdate = undefined;\n\n let settled = false;\n let timedOut = false;\n let timer: NodeJS.Timeout | undefined;\n const cancelTurn = (): void => {\n write({ jsonrpc: '2.0', method: 'session/cancel', params: { sessionId } });\n setTimeout(() => {\n if (!settled) terminate();\n }, COOPERATIVE_CANCEL_GRACE_MS).unref?.();\n };\n const onAbort = (): void => cancelTurn();\n\n const turnPromise = request('session/prompt', {\n sessionId,\n prompt: [{ type: 'text', text: prompt }],\n });\n if (turnOptions?.turnTimeoutMs !== undefined) {\n timer = setTimeout(() => {\n timedOut = true;\n // Cooperative first: ACP requires the agent to answer a cancelled turn\n // with stop reason `cancelled`, which lets the caller distinguish an\n // interrupted run from a completed one. Kill only if it does not.\n cancelTurn();\n }, turnOptions.turnTimeoutMs);\n timer.unref?.();\n }\n if (turnOptions?.abortSignal) {\n if (turnOptions.abortSignal.aborted) cancelTurn();\n else turnOptions.abortSignal.addEventListener('abort', onAbort, { once: true });\n }\n\n try {\n const turnResult = await Promise.race([turnPromise, exitPromise]);\n settled = true;\n if (!isRecord(turnResult)) {\n throw failed('Agent returned a malformed session/prompt result', { turnResult, timedOut });\n }\n const { stopReason, rawStopReason } = parseStopReason(turnResult.stopReason);\n return {\n finalMessage: session.turnFinalMessage,\n stopReason,\n ...(rawStopReason ? { rawStopReason } : {}),\n usage: projectUsage(turnResult.usage, session.turnLastUsageUpdate),\n reportedFileLocations: session.reportedFileLocations.slice(fileLocStart),\n events: session.events.slice(eventStart),\n eventsTruncated: session.eventsTruncated,\n deniedPermissionCount: session.deniedPermissionCount - deniedStart,\n permissionDecisions: session.permissionDecisions.slice(permissionStart),\n };\n } finally {\n settled = true;\n if (timer) clearTimeout(timer);\n turnOptions?.abortSignal?.removeEventListener('abort', onAbort);\n }\n };\n\n return {\n sessionId,\n negotiatedProtocolVersion,\n ...(typeof agentInfo.name === 'string' ? { agentName: agentInfo.name } : {}),\n ...(typeof agentInfo.version === 'string' ? { agentVersion: agentInfo.version } : {}),\n ...(sessionModeId ? { sessionModeId } : {}),\n capabilities: { loadSession: loadSessionSupported },\n promptTurn,\n close: terminate,\n };\n } catch (error) {\n // Setup failed: the child must not be left running.\n terminate();\n throw error;\n }\n}\n\n/**\n * Drive exactly one coding turn end to end: open a session, send one prompt,\n * settle, and close.\n *\n * The compatibility surface for every caller that does not need the turn\n * cadence. It is a thin composition of {@link startACPAgentSession} +\n * `promptTurn` + `close`, so its behaviour tracks the handle by construction.\n */\nexport async function runACPCodingSession(options: ACPCodingSessionOptions): Promise<ACPCodingSessionResult> {\n const agentSession = await startACPAgentSession(options);\n try {\n const turn = await agentSession.promptTurn(options.prompt, {\n ...(options.turnTimeoutMs !== undefined ? { turnTimeoutMs: options.turnTimeoutMs } : {}),\n ...(options.abortSignal ? { abortSignal: options.abortSignal } : {}),\n });\n return {\n finalMessage: turn.finalMessage,\n stopReason: turn.stopReason,\n ...(turn.rawStopReason ? { rawStopReason: turn.rawStopReason } : {}),\n usage: turn.usage,\n reportedFileLocations: turn.reportedFileLocations,\n sessionId: agentSession.sessionId,\n negotiatedProtocolVersion: agentSession.negotiatedProtocolVersion,\n ...(agentSession.agentName ? { agentName: agentSession.agentName } : {}),\n ...(agentSession.agentVersion ? { agentVersion: agentSession.agentVersion } : {}),\n ...(agentSession.sessionModeId ? { sessionModeId: agentSession.sessionModeId } : {}),\n events: turn.events,\n eventsTruncated: turn.eventsTruncated,\n deniedPermissionCount: turn.deniedPermissionCount,\n permissionDecisions: turn.permissionDecisions,\n };\n } finally {\n agentSession.close();\n }\n}\n\n/** Re-exported so callers reason about ceilings through one ordering definition. */\nexport { agentClientProtocolPermissionCeilingRank };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"bounded-subprocess.backend.utils.d.ts","sourceRoot":"","sources":["../../../../../src/flows-actors/utils/bounded-subprocess.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;CAC/B;AAKD,qBAAa,sBAAuB,SAAQ,KAAK;aAG7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBADhD,OAAO,EAAE,MAAM,EACC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAKnD;AAED;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE;IACP;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6FAA6F;IAC7F,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACA,MAAM,CA0ER;AAED,wBAAsB,wBAAwB,CAAC,OAAO,EAAE;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAiJnC"}
1
+ {"version":3,"file":"bounded-subprocess.backend.utils.d.ts","sourceRoot":"","sources":["../../../../src/flows-actors/utils/bounded-subprocess.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;CAC/B;AAKD,qBAAa,sBAAuB,SAAQ,KAAK;aAG7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBADhD,OAAO,EAAE,MAAM,EACC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAKnD;AAED;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE;IACP;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6FAA6F;IAC7F,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACA,MAAM,CA0ER;AAED,wBAAsB,wBAAwB,CAAC,OAAO,EAAE;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAiJnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"flows-actors-frontend-extractor.utils.d.ts","sourceRoot":"","sources":["../../../../../src/flows-actors/utils/flows-actors-frontend-extractor.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,4BAA4B,EAO7B,MAAM,uBAAuB,CAAC;AA8D/B;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,eAAe,GACtB,4BAA4B,CA2B9B;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,eAAe,EAAE,GACzB,eAAe,EAAE,CAInB;AAED;;GAEG;AACH,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,eAAe,EAAE,GACzB,4BAA4B,EAAE,CAGhC"}
1
+ {"version":3,"file":"flows-actors-frontend-extractor.utils.d.ts","sourceRoot":"","sources":["../../../../src/flows-actors/utils/flows-actors-frontend-extractor.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,4BAA4B,EAO7B,MAAM,uBAAuB,CAAC;AA8D/B;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,eAAe,GACtB,4BAA4B,CA2B9B;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,eAAe,EAAE,GACzB,eAAe,EAAE,CAInB;AAED;;GAEG;AACH,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,eAAe,EAAE,GACzB,4BAA4B,EAAE,CAGhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"meta-workflow-canonical-json.backend.utils.d.ts","sourceRoot":"","sources":["../../../../../src/flows-actors/utils/meta-workflow-canonical-json.backend.utils.ts"],"names":[],"mappings":"AAYA;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GACjB,IAAI,GACJ,OAAO,GACP,MAAM,GACN,MAAM,GACN,SAAS,SAAS,EAAE,GACpB;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAE1C;;;;GAIG;AACH,qBAAa,8BAA+B,SAAQ,SAAS;IAC3D,SAAgB,IAAI,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAKhD;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGnE;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAK1E"}
1
+ {"version":3,"file":"meta-workflow-canonical-json.backend.utils.d.ts","sourceRoot":"","sources":["../../../../src/flows-actors/utils/meta-workflow-canonical-json.backend.utils.ts"],"names":[],"mappings":"AAYA;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GACjB,IAAI,GACJ,OAAO,GACP,MAAM,GACN,MAAM,GACN,SAAS,SAAS,EAAE,GACpB;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAE1C;;;;GAIG;AACH,qBAAa,8BAA+B,SAAQ,SAAS;IAC3D,SAAgB,IAAI,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAKhD;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGnE;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAK1E"}
@@ -1 +1 @@
1
- {"version":3,"file":"meta-workflow-canonical-json.backend.utils.js","sourceRoot":"","sources":["../../../../../src/flows-actors/utils/meta-workflow-canonical-json.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAkBzC;;;;GAIG;AACH,MAAM,OAAO,8BAA+B,SAAQ,SAAS;IAC3C,IAAI,CAAS;IAE7B,YAAmB,IAAY,EAAE,MAAc;QAC7C,KAAK,CAAC,yCAAyC,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAAc;IACzD,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,OAAO,EAAU,CAAC,CAAC;IACzE,OAAO,4BAA4B,CAAC,UAAU,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gCAAgC,CAAC,KAAiB;IAChE,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,SAAS,CAAC,qDAAqD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,kBAAkB,CAAC,YAAoB;IAC9C,OAAO,UAAU,YAAY,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAc,EACd,IAAY,EACZ,SAA0B;IAE1B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ;YACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,8BAA8B,CACtC,IAAI,EACJ,wCAAwC,CACzC,CAAC;YACJ,CAAC;YACD,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ;YACX,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU,CAAC;QAChB,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ;YACX,MAAM,IAAI,8BAA8B,CACtC,IAAI,EACJ,GAAG,OAAO,KAAK,mBAAmB,CACnC,CAAC;QACJ,KAAK,QAAQ;YACX,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YACpD,CAAC;YACD,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,8BAA8B,CACtC,IAAI,EACJ,6EAA6E,CAC9E,CAAC;YACJ,CAAC;YACD,OAAO,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAC1D;YACE,MAAM,IAAI,8BAA8B,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAgB,EAChB,IAAY,EACZ,SAA0B;IAE1B,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;QACrD,MAAM,IAAI,8BAA8B,CAAC,IAAI,EAAE,oCAAoC,CAAC,CAAC;IACvF,CAAC;IACD,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAEvC,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA8B,CAAC;QAC/D,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,IAAI,8BAA8B,CACtC,IAAI,EACJ,iDAAiD,CAClD,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACrB,SAAS;YACX,CAAC;YAED,MAAM,KAAK,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC5C,MAAM,IAAI,8BAA8B,CACtC,IAAI,EACJ,kBAAkB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAC1D,CAAC;YACJ,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC/D,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;gBACnF,MAAM,IAAI,8BAA8B,CACtC,GAAG,IAAI,IAAI,KAAK,GAAG,EACnB,mDAAmD,CACpD,CAAC;YACJ,CAAC;YACD,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,gBAAgB,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YAC3C,MAAM,IAAI,8BAA8B,CAAC,IAAI,EAAE,iCAAiC,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,UAAU,GAAgB,EAAE,CAAC;QACnC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACrD,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,IAAI,8BAA8B,CAAC,IAAI,EAAE,iCAAiC,CAAC,CAAC;YACpF,CAAC;YACD,UAAU,CAAC,IAAI,CACb,kBAAkB,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,SAAS,CAAC,CACrE,CAAC;QACJ,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAAa,EACb,IAAY,EACZ,SAA0B,EAC1B,iBAAsC,IAAI,GAAG,EAAU;IAEvD,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,8BAA8B,CACtC,IAAI,EACJ,6EAA6E,CAC9E,CAAC;IACJ,CAAC;IACD,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAEvC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC5D,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,IAAI,8BAA8B,CACtC,IAAI,EACJ,kDAAkD,CACnD,CAAC;YACJ,CAAC;YACD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;gBACnF,MAAM,IAAI,8BAA8B,CACtC,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,EAC3B,mDAAmD,CACpD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAiC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAClE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,sBAAsB,CAAC,GAAG,EAAE,GAAG,IAAI,eAAe,CAAC,CAAC;YACpD,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,SAAS;YACX,CAAC;YACD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC;gBACzD,MAAM,IAAI,8BAA8B,CACtC,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,EAC3B,wCAAwC,CACzC,CAAC;YACJ,CAAC;YACD,UAAU,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAClC,UAAU,CAAC,KAAK,EAChB,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,EAC3B,SAAS,CACV,CAAC;QACJ,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAgB;IACpD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9E,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,8BAA8B,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAClE,CAAC;IAED,MAAM,WAAW,GAAG,KAA8C,CAAC;IACnE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;SACrC,IAAI,CAAC,qBAAqB,CAAC;SAC3B,GAAG,CACF,CAAC,GAAG,EAAE,EAAE,CACN,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,4BAA4B,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAC7E,CAAC;IACJ,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAClC,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC;AAC9D,CAAC;AAED,SAAS,cAAc,CACrB,KAAa,EACb,IAAY,EACZ,SAA0B;IAE1B,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,8BAA8B,CAAC,IAAI,EAAE,qCAAqC,CAAC,CAAC;IACxF,CAAC;IACD,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAW;IAC3C,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;WACrB,KAAK,GAAG,CAAC;WACT,KAAK,IAAI,WAAW;WACpB,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,EACxB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,KAAa;IACxD,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IACD,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa,EAAE,IAAY;IACzD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,QAAQ,IAAI,MAAM,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC7C,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACjD,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;mBAC3B,YAAY,GAAG,MAAM;mBACrB,YAAY,GAAG,MAAM,EACxB,CAAC;gBACD,MAAM,IAAI,8BAA8B,CACtC,IAAI,EACJ,qDAAqD,CACtD,CAAC;YACJ,CAAC;YACD,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,QAAQ,IAAI,MAAM,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC7C,MAAM,IAAI,8BAA8B,CACtC,IAAI,EACJ,qDAAqD,CACtD,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,GAAW;IACjD,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;AAC3C,CAAC","sourcesContent":["/**\n * App-neutral canonical JSON (RFC 8785/JCS-compatible) and a raw SHA-256 helper.\n *\n * This module used to carry the semantic-digest apparatus of the meta-workflow record layer — a\n * 60-domain policy table, domain-separated payload digests, a named-contract digest — every one of\n * them a digest that recorded AGREEMENT between two parts of the repository. That apparatus was\n * retired with the rest of the digest machinery (`.claude/rules/one-source-of-truth.md` Rule 0) once\n * nothing produced or compared those digests any more. What survives is the canonical serializer,\n * which the framework-knowledge generation pipeline uses for deterministic output bytes.\n */\nimport { createHash } from 'node:crypto';\n\n/**\n * The JSON data model accepted by the meta-workflow canonicalization boundary.\n *\n * The runtime functions intentionally accept `unknown` and validate it rather\n * than trusting this compile-time shape. Digest inputs may originate in parsed\n * artifacts or application-owned adapters, so a type assertion must never be\n * enough to admit a non-JSON value into semantic identity.\n */\nexport type JsonValue =\n | null\n | boolean\n | number\n | string\n | readonly JsonValue[]\n | { readonly [key: string]: JsonValue };\n\n/**\n * A fail-closed canonicalization error with the structural location of the\n * invalid value. Error messages intentionally describe shape/type only and do\n * not interpolate the rejected value, which may contain application data.\n */\nexport class MetaWorkflowCanonicalJsonError extends TypeError {\n public readonly path: string;\n\n public constructor(path: string, reason: string) {\n super(`Meta-workflow canonical JSON rejected ${path}: ${reason}`);\n this.name = 'MetaWorkflowCanonicalJsonError';\n this.path = path;\n }\n}\n\n/**\n * Produce RFC 8785/JCS-compatible JSON text from strict JSON data.\n *\n * Object keys are compared as raw UTF-16 code units, arrays retain their\n * authored order, numbers use ECMAScript's finite-number JSON form, strings\n * are preserved without Unicode normalization, and no whitespace is emitted.\n * Values that JavaScript's ordinary `JSON.stringify` would silently coerce or\n * omit are rejected instead, because such coercion would collapse distinct\n * semantic inputs onto one digest.\n */\nexport function canonicalizeMetaWorkflowJson(value: unknown): string {\n const normalized = normalizeJsonValue(value, '$', new WeakSet<object>());\n return serializeNormalizedJsonValue(normalized);\n}\n\n/**\n * Hash exact caller-supplied bytes with SHA-256.\n *\n * No decoding, newline normalization, JSON parsing, or canonicalization occurs\n * here. `Buffer` is accepted through its `Uint8Array` inheritance, and a view's\n * byte offset/length are respected by Node's hash implementation.\n */\nexport function computeMetaWorkflowRawByteDigest(bytes: Uint8Array): string {\n if (!(bytes instanceof Uint8Array)) {\n throw new TypeError('Meta-workflow raw-byte digest requires a Uint8Array');\n }\n return formatSha256Digest(createHash('sha256').update(bytes).digest('hex'));\n}\n\nfunction formatSha256Digest(lowercaseHex: string): string {\n return `sha256:${lowercaseHex}`;\n}\n\nfunction normalizeJsonValue(\n value: unknown,\n path: string,\n ancestors: WeakSet<object>,\n): JsonValue {\n if (value === null) {\n return null;\n }\n\n switch (typeof value) {\n case 'boolean':\n return value;\n case 'number':\n if (!Number.isFinite(value)) {\n throw new MetaWorkflowCanonicalJsonError(\n path,\n 'numbers must be finite IEEE-754 values',\n );\n }\n return value;\n case 'string':\n assertPairedSurrogates(value, path);\n return value;\n case 'undefined':\n case 'function':\n case 'symbol':\n case 'bigint':\n throw new MetaWorkflowCanonicalJsonError(\n path,\n `${typeof value} is not JSON data`,\n );\n case 'object':\n if (Array.isArray(value)) {\n return normalizeJsonArray(value, path, ancestors);\n }\n if (!isPlainJsonObject(value)) {\n throw new MetaWorkflowCanonicalJsonError(\n path,\n 'objects must have Object.prototype or null prototype and no toJSON behavior',\n );\n }\n return normalizePlainJsonObject(value, path, ancestors);\n default:\n throw new MetaWorkflowCanonicalJsonError(path, 'unsupported JavaScript value');\n }\n}\n\nfunction normalizeJsonArray(\n value: unknown[],\n path: string,\n ancestors: WeakSet<object>,\n): readonly JsonValue[] {\n if (Object.getPrototypeOf(value) !== Array.prototype) {\n throw new MetaWorkflowCanonicalJsonError(path, 'non-plain arrays are not JSON data');\n }\n enterContainer(value, path, ancestors);\n\n try {\n const indexDescriptors = new Map<number, PropertyDescriptor>();\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key === 'symbol') {\n throw new MetaWorkflowCanonicalJsonError(\n path,\n 'symbol-keyed array properties are not JSON data',\n );\n }\n if (key === 'length') {\n continue;\n }\n\n const index = parseCanonicalArrayIndex(key);\n if (index === null || index >= value.length) {\n throw new MetaWorkflowCanonicalJsonError(\n path,\n `array property ${JSON.stringify(key)} is not an element`,\n );\n }\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !('value' in descriptor) || !descriptor.enumerable) {\n throw new MetaWorkflowCanonicalJsonError(\n `${path}[${index}]`,\n 'array elements must be enumerable data properties',\n );\n }\n indexDescriptors.set(index, descriptor);\n }\n\n if (indexDescriptors.size !== value.length) {\n throw new MetaWorkflowCanonicalJsonError(path, 'sparse arrays are not permitted');\n }\n\n const normalized: JsonValue[] = [];\n for (let index = 0; index < value.length; index += 1) {\n const descriptor = indexDescriptors.get(index);\n if (descriptor === undefined) {\n throw new MetaWorkflowCanonicalJsonError(path, 'sparse arrays are not permitted');\n }\n normalized.push(\n normalizeJsonValue(descriptor.value, `${path}[${index}]`, ancestors),\n );\n }\n return normalized;\n } finally {\n ancestors.delete(value);\n }\n}\n\nfunction normalizePlainJsonObject(\n value: object,\n path: string,\n ancestors: WeakSet<object>,\n excludedFields: ReadonlySet<string> = new Set<string>(),\n): { readonly [key: string]: JsonValue } {\n if (!isPlainJsonObject(value)) {\n throw new MetaWorkflowCanonicalJsonError(\n path,\n 'objects must have Object.prototype or null prototype and no toJSON behavior',\n );\n }\n enterContainer(value, path, ancestors);\n\n try {\n const descriptors = Object.getOwnPropertyDescriptors(value);\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key === 'symbol') {\n throw new MetaWorkflowCanonicalJsonError(\n path,\n 'symbol-keyed object properties are not JSON data',\n );\n }\n const descriptor = descriptors[key];\n if (descriptor === undefined || !('value' in descriptor) || !descriptor.enumerable) {\n throw new MetaWorkflowCanonicalJsonError(\n appendObjectPath(path, key),\n 'object members must be enumerable data properties',\n );\n }\n }\n\n const normalized: { [key: string]: JsonValue } = Object.create(null);\n const keys = Object.keys(descriptors).sort(compareUtf16CodeUnits);\n for (const key of keys) {\n assertPairedSurrogates(key, `${path} (object key)`);\n if (excludedFields.has(key)) {\n continue;\n }\n const descriptor = descriptors[key];\n if (descriptor === undefined || !('value' in descriptor)) {\n throw new MetaWorkflowCanonicalJsonError(\n appendObjectPath(path, key),\n 'object members must be data properties',\n );\n }\n normalized[key] = normalizeJsonValue(\n descriptor.value,\n appendObjectPath(path, key),\n ancestors,\n );\n }\n return normalized;\n } finally {\n ancestors.delete(value);\n }\n}\n\nfunction serializeNormalizedJsonValue(value: JsonValue): string {\n if (value === null || typeof value === 'boolean' || typeof value === 'number') {\n const serialized = JSON.stringify(value);\n if (serialized === undefined) {\n throw new MetaWorkflowCanonicalJsonError('$', 'failed to serialize JSON primitive');\n }\n return serialized;\n }\n if (typeof value === 'string') {\n return JSON.stringify(value);\n }\n if (Array.isArray(value)) {\n return `[${value.map(serializeNormalizedJsonValue).join(',')}]`;\n }\n\n const objectValue = value as { readonly [key: string]: JsonValue };\n const entries = Object.keys(objectValue)\n .sort(compareUtf16CodeUnits)\n .map(\n (key) =>\n `${JSON.stringify(key)}:${serializeNormalizedJsonValue(objectValue[key])}`,\n );\n return `{${entries.join(',')}}`;\n}\n\nfunction isPlainJsonObject(value: unknown): value is Record<string, unknown> {\n if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\n\nfunction enterContainer(\n value: object,\n path: string,\n ancestors: WeakSet<object>,\n): void {\n if (ancestors.has(value)) {\n throw new MetaWorkflowCanonicalJsonError(path, 'cyclic references are not permitted');\n }\n ancestors.add(value);\n}\n\nfunction parseCanonicalArrayIndex(key: string): number | null {\n if (key === '') {\n return null;\n }\n const index = Number(key);\n if (\n !Number.isInteger(index)\n || index < 0\n || index >= 0xffff_ffff\n || String(index) !== key\n ) {\n return null;\n }\n return index;\n}\n\nfunction compareUtf16CodeUnits(left: string, right: string): number {\n if (left < right) {\n return -1;\n }\n if (left > right) {\n return 1;\n }\n return 0;\n}\n\nfunction assertPairedSurrogates(value: string, path: string): void {\n for (let index = 0; index < value.length; index += 1) {\n const codeUnit = value.charCodeAt(index);\n if (codeUnit >= 0xd800 && codeUnit <= 0xdbff) {\n const nextCodeUnit = value.charCodeAt(index + 1);\n if (\n !Number.isFinite(nextCodeUnit)\n || nextCodeUnit < 0xdc00\n || nextCodeUnit > 0xdfff\n ) {\n throw new MetaWorkflowCanonicalJsonError(\n path,\n 'strings must not contain unpaired UTF-16 surrogates',\n );\n }\n index += 1;\n continue;\n }\n if (codeUnit >= 0xdc00 && codeUnit <= 0xdfff) {\n throw new MetaWorkflowCanonicalJsonError(\n path,\n 'strings must not contain unpaired UTF-16 surrogates',\n );\n }\n }\n}\n\nfunction appendObjectPath(path: string, key: string): string {\n return `${path}[${JSON.stringify(key)}]`;\n}\n"]}
1
+ {"version":3,"file":"meta-workflow-canonical-json.backend.utils.js","sourceRoot":"","sources":["../../../../src/flows-actors/utils/meta-workflow-canonical-json.backend.utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * App-neutral canonical JSON (RFC 8785/JCS-compatible) and a raw SHA-256 helper.\n *\n * This module used to carry the semantic-digest apparatus of the meta-workflow record layer — a\n * 60-domain policy table, domain-separated payload digests, a named-contract digest — every one of\n * them a digest that recorded AGREEMENT between two parts of the repository. That apparatus was\n * retired with the rest of the digest machinery (`.claude/rules/one-source-of-truth.md` Rule 0) once\n * nothing produced or compared those digests any more. What survives is the canonical serializer,\n * which the framework-knowledge generation pipeline uses for deterministic output bytes.\n */\nimport { createHash } from 'node:crypto';\n\n/**\n * The JSON data model accepted by the meta-workflow canonicalization boundary.\n *\n * The runtime functions intentionally accept `unknown` and validate it rather\n * than trusting this compile-time shape. Digest inputs may originate in parsed\n * artifacts or application-owned adapters, so a type assertion must never be\n * enough to admit a non-JSON value into semantic identity.\n */\nexport type JsonValue =\n | null\n | boolean\n | number\n | string\n | readonly JsonValue[]\n | { readonly [key: string]: JsonValue };\n\n/**\n * A fail-closed canonicalization error with the structural location of the\n * invalid value. Error messages intentionally describe shape/type only and do\n * not interpolate the rejected value, which may contain application data.\n */\nexport class MetaWorkflowCanonicalJsonError extends TypeError {\n public readonly path: string;\n\n public constructor(path: string, reason: string) {\n super(`Meta-workflow canonical JSON rejected ${path}: ${reason}`);\n this.name = 'MetaWorkflowCanonicalJsonError';\n this.path = path;\n }\n}\n\n/**\n * Produce RFC 8785/JCS-compatible JSON text from strict JSON data.\n *\n * Object keys are compared as raw UTF-16 code units, arrays retain their\n * authored order, numbers use ECMAScript's finite-number JSON form, strings\n * are preserved without Unicode normalization, and no whitespace is emitted.\n * Values that JavaScript's ordinary `JSON.stringify` would silently coerce or\n * omit are rejected instead, because such coercion would collapse distinct\n * semantic inputs onto one digest.\n */\nexport function canonicalizeMetaWorkflowJson(value: unknown): string {\n const normalized = normalizeJsonValue(value, '$', new WeakSet<object>());\n return serializeNormalizedJsonValue(normalized);\n}\n\n/**\n * Hash exact caller-supplied bytes with SHA-256.\n *\n * No decoding, newline normalization, JSON parsing, or canonicalization occurs\n * here. `Buffer` is accepted through its `Uint8Array` inheritance, and a view's\n * byte offset/length are respected by Node's hash implementation.\n */\nexport function computeMetaWorkflowRawByteDigest(bytes: Uint8Array): string {\n if (!(bytes instanceof Uint8Array)) {\n throw new TypeError('Meta-workflow raw-byte digest requires a Uint8Array');\n }\n return formatSha256Digest(createHash('sha256').update(bytes).digest('hex'));\n}\n\nfunction formatSha256Digest(lowercaseHex: string): string {\n return `sha256:${lowercaseHex}`;\n}\n\nfunction normalizeJsonValue(\n value: unknown,\n path: string,\n ancestors: WeakSet<object>,\n): JsonValue {\n if (value === null) {\n return null;\n }\n\n switch (typeof value) {\n case 'boolean':\n return value;\n case 'number':\n if (!Number.isFinite(value)) {\n throw new MetaWorkflowCanonicalJsonError(\n path,\n 'numbers must be finite IEEE-754 values',\n );\n }\n return value;\n case 'string':\n assertPairedSurrogates(value, path);\n return value;\n case 'undefined':\n case 'function':\n case 'symbol':\n case 'bigint':\n throw new MetaWorkflowCanonicalJsonError(\n path,\n `${typeof value} is not JSON data`,\n );\n case 'object':\n if (Array.isArray(value)) {\n return normalizeJsonArray(value, path, ancestors);\n }\n if (!isPlainJsonObject(value)) {\n throw new MetaWorkflowCanonicalJsonError(\n path,\n 'objects must have Object.prototype or null prototype and no toJSON behavior',\n );\n }\n return normalizePlainJsonObject(value, path, ancestors);\n default:\n throw new MetaWorkflowCanonicalJsonError(path, 'unsupported JavaScript value');\n }\n}\n\nfunction normalizeJsonArray(\n value: unknown[],\n path: string,\n ancestors: WeakSet<object>,\n): readonly JsonValue[] {\n if (Object.getPrototypeOf(value) !== Array.prototype) {\n throw new MetaWorkflowCanonicalJsonError(path, 'non-plain arrays are not JSON data');\n }\n enterContainer(value, path, ancestors);\n\n try {\n const indexDescriptors = new Map<number, PropertyDescriptor>();\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key === 'symbol') {\n throw new MetaWorkflowCanonicalJsonError(\n path,\n 'symbol-keyed array properties are not JSON data',\n );\n }\n if (key === 'length') {\n continue;\n }\n\n const index = parseCanonicalArrayIndex(key);\n if (index === null || index >= value.length) {\n throw new MetaWorkflowCanonicalJsonError(\n path,\n `array property ${JSON.stringify(key)} is not an element`,\n );\n }\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !('value' in descriptor) || !descriptor.enumerable) {\n throw new MetaWorkflowCanonicalJsonError(\n `${path}[${index}]`,\n 'array elements must be enumerable data properties',\n );\n }\n indexDescriptors.set(index, descriptor);\n }\n\n if (indexDescriptors.size !== value.length) {\n throw new MetaWorkflowCanonicalJsonError(path, 'sparse arrays are not permitted');\n }\n\n const normalized: JsonValue[] = [];\n for (let index = 0; index < value.length; index += 1) {\n const descriptor = indexDescriptors.get(index);\n if (descriptor === undefined) {\n throw new MetaWorkflowCanonicalJsonError(path, 'sparse arrays are not permitted');\n }\n normalized.push(\n normalizeJsonValue(descriptor.value, `${path}[${index}]`, ancestors),\n );\n }\n return normalized;\n } finally {\n ancestors.delete(value);\n }\n}\n\nfunction normalizePlainJsonObject(\n value: object,\n path: string,\n ancestors: WeakSet<object>,\n excludedFields: ReadonlySet<string> = new Set<string>(),\n): { readonly [key: string]: JsonValue } {\n if (!isPlainJsonObject(value)) {\n throw new MetaWorkflowCanonicalJsonError(\n path,\n 'objects must have Object.prototype or null prototype and no toJSON behavior',\n );\n }\n enterContainer(value, path, ancestors);\n\n try {\n const descriptors = Object.getOwnPropertyDescriptors(value);\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key === 'symbol') {\n throw new MetaWorkflowCanonicalJsonError(\n path,\n 'symbol-keyed object properties are not JSON data',\n );\n }\n const descriptor = descriptors[key];\n if (descriptor === undefined || !('value' in descriptor) || !descriptor.enumerable) {\n throw new MetaWorkflowCanonicalJsonError(\n appendObjectPath(path, key),\n 'object members must be enumerable data properties',\n );\n }\n }\n\n const normalized: { [key: string]: JsonValue } = Object.create(null);\n const keys = Object.keys(descriptors).sort(compareUtf16CodeUnits);\n for (const key of keys) {\n assertPairedSurrogates(key, `${path} (object key)`);\n if (excludedFields.has(key)) {\n continue;\n }\n const descriptor = descriptors[key];\n if (descriptor === undefined || !('value' in descriptor)) {\n throw new MetaWorkflowCanonicalJsonError(\n appendObjectPath(path, key),\n 'object members must be data properties',\n );\n }\n normalized[key] = normalizeJsonValue(\n descriptor.value,\n appendObjectPath(path, key),\n ancestors,\n );\n }\n return normalized;\n } finally {\n ancestors.delete(value);\n }\n}\n\nfunction serializeNormalizedJsonValue(value: JsonValue): string {\n if (value === null || typeof value === 'boolean' || typeof value === 'number') {\n const serialized = JSON.stringify(value);\n if (serialized === undefined) {\n throw new MetaWorkflowCanonicalJsonError('$', 'failed to serialize JSON primitive');\n }\n return serialized;\n }\n if (typeof value === 'string') {\n return JSON.stringify(value);\n }\n if (Array.isArray(value)) {\n return `[${value.map(serializeNormalizedJsonValue).join(',')}]`;\n }\n\n const objectValue = value as { readonly [key: string]: JsonValue };\n const entries = Object.keys(objectValue)\n .sort(compareUtf16CodeUnits)\n .map(\n (key) =>\n `${JSON.stringify(key)}:${serializeNormalizedJsonValue(objectValue[key])}`,\n );\n return `{${entries.join(',')}}`;\n}\n\nfunction isPlainJsonObject(value: unknown): value is Record<string, unknown> {\n if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\n\nfunction enterContainer(\n value: object,\n path: string,\n ancestors: WeakSet<object>,\n): void {\n if (ancestors.has(value)) {\n throw new MetaWorkflowCanonicalJsonError(path, 'cyclic references are not permitted');\n }\n ancestors.add(value);\n}\n\nfunction parseCanonicalArrayIndex(key: string): number | null {\n if (key === '') {\n return null;\n }\n const index = Number(key);\n if (\n !Number.isInteger(index)\n || index < 0\n || index >= 0xffff_ffff\n || String(index) !== key\n ) {\n return null;\n }\n return index;\n}\n\nfunction compareUtf16CodeUnits(left: string, right: string): number {\n if (left < right) {\n return -1;\n }\n if (left > right) {\n return 1;\n }\n return 0;\n}\n\nfunction assertPairedSurrogates(value: string, path: string): void {\n for (let index = 0; index < value.length; index += 1) {\n const codeUnit = value.charCodeAt(index);\n if (codeUnit >= 0xd800 && codeUnit <= 0xdbff) {\n const nextCodeUnit = value.charCodeAt(index + 1);\n if (\n !Number.isFinite(nextCodeUnit)\n || nextCodeUnit < 0xdc00\n || nextCodeUnit > 0xdfff\n ) {\n throw new MetaWorkflowCanonicalJsonError(\n path,\n 'strings must not contain unpaired UTF-16 surrogates',\n );\n }\n index += 1;\n continue;\n }\n if (codeUnit >= 0xdc00 && codeUnit <= 0xdfff) {\n throw new MetaWorkflowCanonicalJsonError(\n path,\n 'strings must not contain unpaired UTF-16 surrogates',\n );\n }\n }\n}\n\nfunction appendObjectPath(path: string, key: string): string {\n return `${path}[${JSON.stringify(key)}]`;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"meta-workflow-structured-generation-plan.backend.utils.d.ts","sourceRoot":"","sources":["../../../../../src/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,wCAAwC,EAGzC,MAAM,sCAAsC,CAAC;AAG9C,eAAO,MAAM,yCAAyC,KAAK,CAAC;AAE5D,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,wCAAwC,CAAC;IAC5D,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;CAC/C;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,EAAE,wBAAwB,EAAE,MAAM,GAAG,6BAA6B,CAelI;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,GAAG,MAAM,CAe3E"}
1
+ {"version":3,"file":"meta-workflow-structured-generation-plan.backend.utils.d.ts","sourceRoot":"","sources":["../../../../src/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,wCAAwC,EAGzC,MAAM,sCAAsC,CAAC;AAG9C,eAAO,MAAM,yCAAyC,KAAK,CAAC;AAE5D,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,wCAAwC,CAAC;IAC5D,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;CAC/C;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,EAAE,wBAAwB,EAAE,MAAM,GAAG,6BAA6B,CAelI;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,GAAG,MAAM,CAe3E"}
@@ -1 +1 @@
1
- {"version":3,"file":"meta-workflow-structured-generation-plan.backend.utils.js","sourceRoot":"","sources":["../../../../../src/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,wCAAwC,GAGzC,MAAM,sCAAsC,CAAC;AAG9C,MAAM,CAAC,MAAM,yCAAyC,GAAG,EAAE,CAAC;AAS5D,MAAM,UAAU,6BAA6B,CAAC,MAAmB,EAAE,wBAAgC;IACjG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,wBAAwB,CAAC,IAAI,wBAAwB,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAClK,MAAM,cAAc,GAAG,+BAA+B,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,cAAc,IAAI,wBAAwB;QACzD,CAAC,CAAC,wCAAwC,CAAC,WAAW;QACtD,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;YACvB,CAAC,CAAC,wCAAwC,CAAC,OAAO;YAClD,CAAC,CAAC,wCAAwC,CAAC,sBAAsB,CAAC;IACtE,OAAO;QACL,cAAc;QACd,wBAAwB;QACxB,QAAQ;QACR,YAAY;KACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,MAAmB;IACjE,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3E,MAAM,GAAG,GAAI,MAA0D,CAAC,IAA2B,CAAC;IACpG,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC;IAC1C,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,+BAA+B,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7K,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,+BAA+B,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7I,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;QACxE,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAS,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,+BAA+B,CAAC,KAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7I,CAAC;IACD,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,+BAA+B,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IACrH,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5F,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAmB,EAAE,EAAE,CAAC,+BAA+B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAmB,EAAE,WAAqB,EAAE;IAC3E,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC;QAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACtG,MAAM,GAAG,GAAI,MAA0D,CAAC,IAA2B,CAAC;IACpG,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC;IAC1C,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5L,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;QACxE,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,IAAK,+BAGJ;AAHD,WAAK,+BAA+B;IAClC,wDAAqB,CAAA;IACrB,wDAAqB,CAAA;AACvB,CAAC,EAHI,+BAA+B,KAA/B,+BAA+B,QAGnC;AAED;;;;GAIG;AACH,SAAS,mCAAmC,CAAC,MAAmB;IAC9D,MAAM,QAAQ,GAAsC,EAAE,CAAC;IACvD,IAAI,OAAO,GAAG,MAAM,CAAC;IACrB,OAAO,OAAO,YAAY,CAAC,CAAC,WAAW,IAAI,OAAO,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5E,IAAI,OAAO,YAAY,CAAC,CAAC,WAAW;YAAE,QAAQ,CAAC,IAAI,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC;;YACzF,QAAQ,CAAC,IAAI,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC;QAC7D,OAAO,GAAG,OAAO,CAAC,MAAM,EAAiB,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,4CAA4C,CAAC,MAAmB,EAAE,QAAoD;IAC7H,OAAO,CAAC,GAAG,QAAQ,CAAC;SACjB,OAAO,EAAE;SACT,MAAM,CAAc,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AACzJ,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAqD;IACxF,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACrC,IAAI,OAAO,GAAG,MAA6B,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,GAAG,MAAM,CAAC;IAC3C,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,KAA0B,EAAe,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9N,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAmB,EAAE,wBAAgC;IAClF,IAAI,+BAA+B,CAAC,MAAM,CAAC,IAAI,wBAAwB;QAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzF,MAAM,aAAa,GAAG,mCAAmC,CAAC,MAAM,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,uBAAuB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAChE,oFAAoF;IACpF,+FAA+F;IAC/F,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAC/D,qEAAqE;IACrE,EAAE;IACF,uGAAuG;IACvG,kGAAkG;IAClG,uGAAuG;IACvG,oGAAoG;IACpG,wGAAwG;IACxG,qFAAqF;IACrF,EAAE;IACF,sGAAsG;IACtG,oGAAoG;IACpG,sGAAsG;IACtG,oGAAoG;IACpG,oGAAoG;IACpG,gGAAgG;IAChG,wEAAwE;IACxE,EAAE;IACF,yGAAyG;IACzG,0GAA0G;IAC1G,0GAA0G;IAC1G,8FAA8F;IAC9F,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAAC,CAAC;IACjF,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,IAAI,cAAc,GAAmD,EAAE,CAAC;IACxE,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,MAAM,iBAAiB,GAAG,GAAS,EAAE;QACnC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACxC,MAAM,CAAC,IAAI,CACT,4CAA4C,CAC1C,2BAA2B,CAAC,cAAc,CAAC,EAC3C,aAAa,CAAC,QAAQ,CACvB,CACF,CAAC;QACF,cAAc,GAAG,EAAE,CAAC;QACpB,iBAAiB,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,eAAe,GAAG,+BAA+B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtE,kGAAkG;QAClG,8FAA8F;QAC9F,IAAI,eAAe,GAAG,wBAAwB;YAAE,OAAO,EAAE,CAAC;QAC1D,uGAAuG;QACvG,kGAAkG;QAClG,2CAA2C;QAC3C,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,GAAG,eAAe,GAAG,eAAe;YAAE,iBAAiB,EAAE,CAAC;QAC5G,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,iBAAiB,IAAI,eAAe,CAAC;IACvC,CAAC;IACD,iBAAiB,EAAE,CAAC;IACpB,2FAA2F;IAC3F,mGAAmG;IACnG,6FAA6F;IAC7F,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,+BAA+B,CAAC,KAAK,CAAC,GAAG,wBAAwB,CAAC;QAAE,OAAO,EAAE,CAAC;IACzG,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import { z } from 'zod';\nimport {\n MetaWorkflowStructuredGenerationPlanKind,\n MetaWorkflowStructuredGenerationPlanV1Schema,\n type MetaWorkflowStructuredGenerationPlanV1,\n} from '@wildo-ai/saas-models/meta-workflows';\n\n\nexport const DEFAULT_MAX_STRUCTURED_DATA_FIELD_ALLOWED = 99;\n\nexport interface StructuredGenerationShapePlan {\n readonly leafFieldCount: number;\n readonly maximumLeafFieldsPerCall: number;\n readonly planKind: MetaWorkflowStructuredGenerationPlanKind;\n readonly schemaChunks: readonly z.ZodSchema[];\n}\n\nexport function planStructuredGenerationShape(schema: z.ZodSchema, maximumLeafFieldsPerCall: number): StructuredGenerationShapePlan {\n if (!Number.isSafeInteger(maximumLeafFieldsPerCall) || maximumLeafFieldsPerCall <= 0) throw new Error('maximumLeafFieldsPerCall must be a positive safe integer');\n const leafFieldCount = countStructuredSchemaLeafFields(schema);\n const schemaChunks = chunkStructuredSchema(schema, maximumLeafFieldsPerCall);\n const planKind = leafFieldCount <= maximumLeafFieldsPerCall\n ? MetaWorkflowStructuredGenerationPlanKind.SINGLE_CALL\n : schemaChunks.length > 1\n ? MetaWorkflowStructuredGenerationPlanKind.CHUNKED\n : MetaWorkflowStructuredGenerationPlanKind.UNCHUNKABLE_OVER_LIMIT;\n return {\n leafFieldCount,\n maximumLeafFieldsPerCall,\n planKind,\n schemaChunks,\n };\n}\n\nexport function countStructuredSchemaLeafFields(schema: z.ZodSchema): number {\n if (!schema || typeof schema !== 'object' || !('_def' in schema)) return 1;\n const def = (schema as z.ZodSchema & { _def: Record<string, unknown> })._def as Record<string, any>;\n const typeName = def.typeName || def.type;\n if (['ZodOptional', 'optional', 'ZodNullable', 'nullable', 'ZodDefault', 'default'].includes(typeName)) return countStructuredSchemaLeafFields(def.innerType || def.wrapped);\n if (['ZodEffects', 'effects', 'transform', 'refine'].includes(typeName)) return countStructuredSchemaLeafFields(def.schema || def.innerType);\n if (typeName === 'ZodObject' || typeName === 'object') {\n const shape = typeof def.shape === 'function' ? def.shape() : def.shape;\n return shape ? Object.values(shape).reduce<number>((count, child) => count + countStructuredSchemaLeafFields(child as z.ZodSchema), 0) : 1;\n }\n if (typeName === 'ZodArray' || typeName === 'array') return countStructuredSchemaLeafFields(def.element || def.type);\n if (['ZodUnion', 'union', 'ZodDiscriminatedUnion', 'discriminatedUnion'].includes(typeName)) {\n return Math.max(1, ...(def.options || []).map((option: z.ZodSchema) => countStructuredSchemaLeafFields(option)));\n }\n return 1;\n}\n\nfunction flattenStructuredSchema(schema: z.ZodSchema, basePath: string[] = []): Array<{ path: string[]; schema: z.ZodSchema }> {\n if (!schema || typeof schema !== 'object' || !('_def' in schema)) return [{ path: basePath, schema }];\n const def = (schema as z.ZodSchema & { _def: Record<string, unknown> })._def as Record<string, any>;\n const typeName = def.typeName || def.type;\n if (['ZodOptional', 'optional', 'ZodNullable', 'nullable', 'ZodDefault', 'default', 'ZodEffects', 'effects', 'transform', 'refine'].includes(typeName)) return [{ path: basePath, schema }];\n if (typeName === 'ZodObject' || typeName === 'object') {\n const shape = typeof def.shape === 'function' ? def.shape() : def.shape;\n if (!shape) return [{ path: basePath, schema }];\n return Object.keys(shape).flatMap((key) => flattenStructuredSchema(shape[key], [...basePath, key]));\n }\n return [{ path: basePath, schema }];\n}\n\nenum StructuredSchemaRootWrapperKind {\n OPTIONAL = 'OPTIONAL',\n NULLABLE = 'NULLABLE',\n}\n\n/**\n * Remove only root wrappers whose semantics can be preserved independently on every object chunk.\n * Default/effect wrappers remain indivisible because duplicating their transformation or default\n * across partial objects would change the caller-authored schema semantics.\n */\nfunction unwrapChunkableStructuredSchemaRoot(schema: z.ZodSchema): { schema: z.ZodSchema; wrappers: readonly StructuredSchemaRootWrapperKind[] } {\n const wrappers: StructuredSchemaRootWrapperKind[] = [];\n let current = schema;\n while (current instanceof z.ZodOptional || current instanceof z.ZodNullable) {\n if (current instanceof z.ZodOptional) wrappers.push(StructuredSchemaRootWrapperKind.OPTIONAL);\n else wrappers.push(StructuredSchemaRootWrapperKind.NULLABLE);\n current = current.unwrap() as z.ZodSchema;\n }\n return { schema: current, wrappers };\n}\n\nfunction reapplyChunkableStructuredSchemaRootWrappers(schema: z.ZodSchema, wrappers: readonly StructuredSchemaRootWrapperKind[]): z.ZodSchema {\n return [...wrappers]\n .reverse()\n .reduce<z.ZodSchema>((wrapped, wrapper) => (wrapper === StructuredSchemaRootWrapperKind.OPTIONAL ? wrapped.optional() : wrapped.nullable()), schema);\n}\n\nfunction buildNestedStructuredSchema(paths: Array<{ path: string[]; schema: z.ZodSchema }>): z.ZodSchema {\n const nested: Record<string, unknown> = {};\n for (const { path, schema } of paths) {\n let current = nested as Record<string, any>;\n for (const part of path.slice(0, -1)) current = current[part] ??= {};\n current[path[path.length - 1]!] = schema;\n }\n const convert = (value: Record<string, any>): z.ZodSchema => z.object(Object.fromEntries(Object.entries(value).map(([key, child]) => [key, child && typeof child === 'object' && '_def' in child ? child : convert(child)])));\n return convert(nested);\n}\n\nfunction chunkStructuredSchema(schema: z.ZodSchema, maximumLeafFieldsPerCall: number): readonly z.ZodSchema[] {\n if (countStructuredSchemaLeafFields(schema) <= maximumLeafFieldsPerCall) return [schema];\n const unwrappedRoot = unwrapChunkableStructuredSchemaRoot(schema);\n const flattened = flattenStructuredSchema(unwrappedRoot.schema);\n // A non-object root (including a default/effect wrapper) has no safe partial-object\n // reconstruction. Return no calls so both the sealed planner and executor refuse before spend.\n if (flattened.some(({ path }) => path.length === 0)) return [];\n // Pack by LEAF COUNT, which is the unit the ceiling is expressed in.\n //\n // This previously sliced `flattened` by a chunk SIZE derived from the ceiling -- but `flattened` holds\n // one entry per indivisible PATH, and a path is not a leaf: an array-of-objects is a single entry\n // carrying its element's whole leaf count. So an entry count was being compared against a leaf budget,\n // and for any schema whose paths carry more than one leaf the arithmetic ran the wrong way: with 16\n // paths and a 60-leaf ceiling the slice width was 57, every path landed in ONE chunk of 178 leaves, the\n // post-condition below rejected it, and the planner reported UNCHUNKABLE_OVER_LIMIT.\n //\n // That report was a false negative, and an expensive one: UNCHUNKABLE_OVER_LIMIT means \"this schema's\n // root semantics cannot survive being split\", which is a refusal no ceiling can resolve. The market\n // snapshot -- 16 independent top-level collections, the most splittable shape there is -- was refused\n // at every ceiling below its own leaf count, so lowering the ceiling could only ever turn a working\n // single call into a hard refusal. Greedy packing is sufficient here because every entry is already\n // indivisible; there is nothing to gain from a better bin-packing than \"fill until the next one\n // doesn't fit\", and a deterministic order keeps the plan digest stable.\n //\n // The 0.95 cushion is KEPT and simply moved onto the right unit. It was never a fudge: a provider counts\n // total properties, including the intermediate objects a nested chunk rebuilds, while this ceiling counts\n // LEAVES -- so packing flush to the ceiling can overshoot the provider's own limit. Applying it to leaves\n // preserves that headroom for the first time; applied to an entry count it protected nothing.\n const chunkLeafBudget = Math.max(1, Math.floor(maximumLeafFieldsPerCall * 0.95));\n const chunks: z.ZodSchema[] = [];\n let currentEntries: Array<{ path: string[]; schema: z.ZodSchema }> = [];\n let currentLeafFields = 0;\n const flushCurrentChunk = (): void => {\n if (currentEntries.length === 0) return;\n chunks.push(\n reapplyChunkableStructuredSchemaRootWrappers(\n buildNestedStructuredSchema(currentEntries),\n unwrappedRoot.wrappers,\n ),\n );\n currentEntries = [];\n currentLeafFields = 0;\n };\n for (const entry of flattened) {\n const entryLeafFields = countStructuredSchemaLeafFields(entry.schema);\n // One indivisible path that alone exceeds the ceiling. No packing resolves it, so refuse the plan\n // rather than emit a chunk the provider would reject -- this is the genuine UNCHUNKABLE case.\n if (entryLeafFields > maximumLeafFieldsPerCall) return [];\n // Packed against the cushioned budget, but a single entry that clears the true ceiling while exceeding\n // the cushion still gets its own chunk -- the ceiling is the real limit, and refusing there would\n // reject a schema the provider can answer.\n if (currentEntries.length > 0 && currentLeafFields + entryLeafFields > chunkLeafBudget) flushCurrentChunk();\n currentEntries.push(entry);\n currentLeafFields += entryLeafFields;\n }\n flushCurrentChunk();\n // Post-condition. The packing loop above cannot exceed the ceiling, so this now guards the\n // RECONSTRUCTION rather than the arithmetic: if rebuilding a chunk's nested shape ever changed its\n // leaf count, the plan would under-report provider fan-out. Refuse rather than under-report.\n if (chunks.some((chunk) => countStructuredSchemaLeafFields(chunk) > maximumLeafFieldsPerCall)) return [];\n return chunks;\n}\n"]}
1
+ {"version":3,"file":"meta-workflow-structured-generation-plan.backend.utils.js","sourceRoot":"","sources":["../../../../src/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport {\n MetaWorkflowStructuredGenerationPlanKind,\n MetaWorkflowStructuredGenerationPlanV1Schema,\n type MetaWorkflowStructuredGenerationPlanV1,\n} from '@wildo-ai/saas-models/meta-workflows';\n\n\nexport const DEFAULT_MAX_STRUCTURED_DATA_FIELD_ALLOWED = 99;\n\nexport interface StructuredGenerationShapePlan {\n readonly leafFieldCount: number;\n readonly maximumLeafFieldsPerCall: number;\n readonly planKind: MetaWorkflowStructuredGenerationPlanKind;\n readonly schemaChunks: readonly z.ZodSchema[];\n}\n\nexport function planStructuredGenerationShape(schema: z.ZodSchema, maximumLeafFieldsPerCall: number): StructuredGenerationShapePlan {\n if (!Number.isSafeInteger(maximumLeafFieldsPerCall) || maximumLeafFieldsPerCall <= 0) throw new Error('maximumLeafFieldsPerCall must be a positive safe integer');\n const leafFieldCount = countStructuredSchemaLeafFields(schema);\n const schemaChunks = chunkStructuredSchema(schema, maximumLeafFieldsPerCall);\n const planKind = leafFieldCount <= maximumLeafFieldsPerCall\n ? MetaWorkflowStructuredGenerationPlanKind.SINGLE_CALL\n : schemaChunks.length > 1\n ? MetaWorkflowStructuredGenerationPlanKind.CHUNKED\n : MetaWorkflowStructuredGenerationPlanKind.UNCHUNKABLE_OVER_LIMIT;\n return {\n leafFieldCount,\n maximumLeafFieldsPerCall,\n planKind,\n schemaChunks,\n };\n}\n\nexport function countStructuredSchemaLeafFields(schema: z.ZodSchema): number {\n if (!schema || typeof schema !== 'object' || !('_def' in schema)) return 1;\n const def = (schema as z.ZodSchema & { _def: Record<string, unknown> })._def as Record<string, any>;\n const typeName = def.typeName || def.type;\n if (['ZodOptional', 'optional', 'ZodNullable', 'nullable', 'ZodDefault', 'default'].includes(typeName)) return countStructuredSchemaLeafFields(def.innerType || def.wrapped);\n if (['ZodEffects', 'effects', 'transform', 'refine'].includes(typeName)) return countStructuredSchemaLeafFields(def.schema || def.innerType);\n if (typeName === 'ZodObject' || typeName === 'object') {\n const shape = typeof def.shape === 'function' ? def.shape() : def.shape;\n return shape ? Object.values(shape).reduce<number>((count, child) => count + countStructuredSchemaLeafFields(child as z.ZodSchema), 0) : 1;\n }\n if (typeName === 'ZodArray' || typeName === 'array') return countStructuredSchemaLeafFields(def.element || def.type);\n if (['ZodUnion', 'union', 'ZodDiscriminatedUnion', 'discriminatedUnion'].includes(typeName)) {\n return Math.max(1, ...(def.options || []).map((option: z.ZodSchema) => countStructuredSchemaLeafFields(option)));\n }\n return 1;\n}\n\nfunction flattenStructuredSchema(schema: z.ZodSchema, basePath: string[] = []): Array<{ path: string[]; schema: z.ZodSchema }> {\n if (!schema || typeof schema !== 'object' || !('_def' in schema)) return [{ path: basePath, schema }];\n const def = (schema as z.ZodSchema & { _def: Record<string, unknown> })._def as Record<string, any>;\n const typeName = def.typeName || def.type;\n if (['ZodOptional', 'optional', 'ZodNullable', 'nullable', 'ZodDefault', 'default', 'ZodEffects', 'effects', 'transform', 'refine'].includes(typeName)) return [{ path: basePath, schema }];\n if (typeName === 'ZodObject' || typeName === 'object') {\n const shape = typeof def.shape === 'function' ? def.shape() : def.shape;\n if (!shape) return [{ path: basePath, schema }];\n return Object.keys(shape).flatMap((key) => flattenStructuredSchema(shape[key], [...basePath, key]));\n }\n return [{ path: basePath, schema }];\n}\n\nenum StructuredSchemaRootWrapperKind {\n OPTIONAL = 'OPTIONAL',\n NULLABLE = 'NULLABLE',\n}\n\n/**\n * Remove only root wrappers whose semantics can be preserved independently on every object chunk.\n * Default/effect wrappers remain indivisible because duplicating their transformation or default\n * across partial objects would change the caller-authored schema semantics.\n */\nfunction unwrapChunkableStructuredSchemaRoot(schema: z.ZodSchema): { schema: z.ZodSchema; wrappers: readonly StructuredSchemaRootWrapperKind[] } {\n const wrappers: StructuredSchemaRootWrapperKind[] = [];\n let current = schema;\n while (current instanceof z.ZodOptional || current instanceof z.ZodNullable) {\n if (current instanceof z.ZodOptional) wrappers.push(StructuredSchemaRootWrapperKind.OPTIONAL);\n else wrappers.push(StructuredSchemaRootWrapperKind.NULLABLE);\n current = current.unwrap() as z.ZodSchema;\n }\n return { schema: current, wrappers };\n}\n\nfunction reapplyChunkableStructuredSchemaRootWrappers(schema: z.ZodSchema, wrappers: readonly StructuredSchemaRootWrapperKind[]): z.ZodSchema {\n return [...wrappers]\n .reverse()\n .reduce<z.ZodSchema>((wrapped, wrapper) => (wrapper === StructuredSchemaRootWrapperKind.OPTIONAL ? wrapped.optional() : wrapped.nullable()), schema);\n}\n\nfunction buildNestedStructuredSchema(paths: Array<{ path: string[]; schema: z.ZodSchema }>): z.ZodSchema {\n const nested: Record<string, unknown> = {};\n for (const { path, schema } of paths) {\n let current = nested as Record<string, any>;\n for (const part of path.slice(0, -1)) current = current[part] ??= {};\n current[path[path.length - 1]!] = schema;\n }\n const convert = (value: Record<string, any>): z.ZodSchema => z.object(Object.fromEntries(Object.entries(value).map(([key, child]) => [key, child && typeof child === 'object' && '_def' in child ? child : convert(child)])));\n return convert(nested);\n}\n\nfunction chunkStructuredSchema(schema: z.ZodSchema, maximumLeafFieldsPerCall: number): readonly z.ZodSchema[] {\n if (countStructuredSchemaLeafFields(schema) <= maximumLeafFieldsPerCall) return [schema];\n const unwrappedRoot = unwrapChunkableStructuredSchemaRoot(schema);\n const flattened = flattenStructuredSchema(unwrappedRoot.schema);\n // A non-object root (including a default/effect wrapper) has no safe partial-object\n // reconstruction. Return no calls so both the sealed planner and executor refuse before spend.\n if (flattened.some(({ path }) => path.length === 0)) return [];\n // Pack by LEAF COUNT, which is the unit the ceiling is expressed in.\n //\n // This previously sliced `flattened` by a chunk SIZE derived from the ceiling -- but `flattened` holds\n // one entry per indivisible PATH, and a path is not a leaf: an array-of-objects is a single entry\n // carrying its element's whole leaf count. So an entry count was being compared against a leaf budget,\n // and for any schema whose paths carry more than one leaf the arithmetic ran the wrong way: with 16\n // paths and a 60-leaf ceiling the slice width was 57, every path landed in ONE chunk of 178 leaves, the\n // post-condition below rejected it, and the planner reported UNCHUNKABLE_OVER_LIMIT.\n //\n // That report was a false negative, and an expensive one: UNCHUNKABLE_OVER_LIMIT means \"this schema's\n // root semantics cannot survive being split\", which is a refusal no ceiling can resolve. The market\n // snapshot -- 16 independent top-level collections, the most splittable shape there is -- was refused\n // at every ceiling below its own leaf count, so lowering the ceiling could only ever turn a working\n // single call into a hard refusal. Greedy packing is sufficient here because every entry is already\n // indivisible; there is nothing to gain from a better bin-packing than \"fill until the next one\n // doesn't fit\", and a deterministic order keeps the plan digest stable.\n //\n // The 0.95 cushion is KEPT and simply moved onto the right unit. It was never a fudge: a provider counts\n // total properties, including the intermediate objects a nested chunk rebuilds, while this ceiling counts\n // LEAVES -- so packing flush to the ceiling can overshoot the provider's own limit. Applying it to leaves\n // preserves that headroom for the first time; applied to an entry count it protected nothing.\n const chunkLeafBudget = Math.max(1, Math.floor(maximumLeafFieldsPerCall * 0.95));\n const chunks: z.ZodSchema[] = [];\n let currentEntries: Array<{ path: string[]; schema: z.ZodSchema }> = [];\n let currentLeafFields = 0;\n const flushCurrentChunk = (): void => {\n if (currentEntries.length === 0) return;\n chunks.push(\n reapplyChunkableStructuredSchemaRootWrappers(\n buildNestedStructuredSchema(currentEntries),\n unwrappedRoot.wrappers,\n ),\n );\n currentEntries = [];\n currentLeafFields = 0;\n };\n for (const entry of flattened) {\n const entryLeafFields = countStructuredSchemaLeafFields(entry.schema);\n // One indivisible path that alone exceeds the ceiling. No packing resolves it, so refuse the plan\n // rather than emit a chunk the provider would reject -- this is the genuine UNCHUNKABLE case.\n if (entryLeafFields > maximumLeafFieldsPerCall) return [];\n // Packed against the cushioned budget, but a single entry that clears the true ceiling while exceeding\n // the cushion still gets its own chunk -- the ceiling is the real limit, and refusing there would\n // reject a schema the provider can answer.\n if (currentEntries.length > 0 && currentLeafFields + entryLeafFields > chunkLeafBudget) flushCurrentChunk();\n currentEntries.push(entry);\n currentLeafFields += entryLeafFields;\n }\n flushCurrentChunk();\n // Post-condition. The packing loop above cannot exceed the ceiling, so this now guards the\n // RECONSTRUCTION rather than the arithmetic: if rebuilding a chunk's nested shape ever changed its\n // leaf count, the plan would under-report provider fan-out. Refuse rather than under-report.\n if (chunks.some((chunk) => countStructuredSchemaLeafFields(chunk) > maximumLeafFieldsPerCall)) return [];\n return chunks;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-ir-adapters.backend.utils.d.ts","sourceRoot":"","sources":["../../../../../src/flows-actors/utils/prompt-ir-adapters.backend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EACL,oBAAoB,EAGpB,qBAAqB,EAGrB,gBAAgB,EAEjB,MAAM,uBAAuB,CAAC;AAmE/B;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,CAAC,EAAE,MAAM,GAChB,oBAAoB,EAAE,CAoBxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,oBAAoB,CAiCtF;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,gBAAgB,EAAE,GAAG,oBAAoB,EAAE,CAE7F;AAgBD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,OAAO,EAAE,MAAM,GACd,oBAAoB,CAetB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,MAAM,EAAE,oBAAoB,EAAE,EAAE,GAAG,oBAAoB,EAAE,CAc7F"}
1
+ {"version":3,"file":"prompt-ir-adapters.backend.utils.d.ts","sourceRoot":"","sources":["../../../../src/flows-actors/utils/prompt-ir-adapters.backend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EACL,oBAAoB,EAGpB,qBAAqB,EAGrB,gBAAgB,EAEjB,MAAM,uBAAuB,CAAC;AAmE/B;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,CAAC,EAAE,MAAM,GAChB,oBAAoB,EAAE,CAoBxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,oBAAoB,CAiCtF;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,gBAAgB,EAAE,GAAG,oBAAoB,EAAE,CAE7F;AAgBD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,OAAO,EAAE,MAAM,GACd,oBAAoB,CAetB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,MAAM,EAAE,oBAAoB,EAAE,EAAE,GAAG,oBAAoB,EAAE,CAc7F"}