@dxos/functions 0.8.4-main.84f28bd → 0.8.4-main.b97322e

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 (73) hide show
  1. package/dist/lib/browser/{chunk-54U464M4.mjs → chunk-3NGCSUEW.mjs} +74 -106
  2. package/dist/lib/browser/chunk-3NGCSUEW.mjs.map +7 -0
  3. package/dist/lib/browser/edge/index.mjs.map +1 -1
  4. package/dist/lib/browser/index.mjs +23 -12
  5. package/dist/lib/browser/index.mjs.map +4 -4
  6. package/dist/lib/browser/meta.json +1 -1
  7. package/dist/lib/browser/testing/index.mjs +19 -7
  8. package/dist/lib/browser/testing/index.mjs.map +4 -4
  9. package/dist/lib/node-esm/{chunk-XDSX35BS.mjs → chunk-FJ2MU7TL.mjs} +74 -106
  10. package/dist/lib/node-esm/chunk-FJ2MU7TL.mjs.map +7 -0
  11. package/dist/lib/node-esm/edge/index.mjs.map +1 -1
  12. package/dist/lib/node-esm/index.mjs +23 -12
  13. package/dist/lib/node-esm/index.mjs.map +4 -4
  14. package/dist/lib/node-esm/meta.json +1 -1
  15. package/dist/lib/node-esm/testing/index.mjs +19 -7
  16. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  17. package/dist/types/src/edge/functions.d.ts +1 -1
  18. package/dist/types/src/edge/functions.d.ts.map +1 -1
  19. package/dist/types/src/errors.d.ts +68 -0
  20. package/dist/types/src/errors.d.ts.map +1 -0
  21. package/dist/types/src/handler.d.ts +7 -6
  22. package/dist/types/src/handler.d.ts.map +1 -1
  23. package/dist/types/src/index.d.ts +1 -0
  24. package/dist/types/src/index.d.ts.map +1 -1
  25. package/dist/types/src/schema.d.ts +1 -1
  26. package/dist/types/src/services/credentials.d.ts +2 -1
  27. package/dist/types/src/services/credentials.d.ts.map +1 -1
  28. package/dist/types/src/services/database.d.ts +17 -3
  29. package/dist/types/src/services/database.d.ts.map +1 -1
  30. package/dist/types/src/services/index.d.ts +0 -2
  31. package/dist/types/src/services/index.d.ts.map +1 -1
  32. package/dist/types/src/services/queues.d.ts +13 -1
  33. package/dist/types/src/services/queues.d.ts.map +1 -1
  34. package/dist/types/src/services/service-container.d.ts +26 -16
  35. package/dist/types/src/services/service-container.d.ts.map +1 -1
  36. package/dist/types/src/services/service-registry.d.ts +29 -0
  37. package/dist/types/src/services/service-registry.d.ts.map +1 -0
  38. package/dist/types/src/services/service-registry.test.d.ts +2 -0
  39. package/dist/types/src/services/service-registry.test.d.ts.map +1 -0
  40. package/dist/types/src/services/tracing.d.ts +11 -1
  41. package/dist/types/src/services/tracing.d.ts.map +1 -1
  42. package/dist/types/src/testing/index.d.ts +1 -0
  43. package/dist/types/src/testing/index.d.ts.map +1 -1
  44. package/dist/types/src/testing/layer.d.ts +10 -0
  45. package/dist/types/src/testing/layer.d.ts.map +1 -0
  46. package/dist/types/src/testing/services.d.ts +3 -4
  47. package/dist/types/src/testing/services.d.ts.map +1 -1
  48. package/dist/types/src/types.d.ts +8 -8
  49. package/dist/types/tsconfig.tsbuildinfo +1 -1
  50. package/package.json +25 -23
  51. package/src/edge/functions.ts +1 -1
  52. package/src/errors.ts +13 -0
  53. package/src/handler.ts +23 -16
  54. package/src/index.ts +1 -0
  55. package/src/services/credentials.ts +8 -2
  56. package/src/services/database.ts +27 -7
  57. package/src/services/index.ts +0 -2
  58. package/src/services/queues.ts +15 -2
  59. package/src/services/service-container.ts +37 -51
  60. package/src/services/service-registry.test.ts +42 -0
  61. package/src/services/service-registry.ts +56 -0
  62. package/src/services/tracing.ts +16 -1
  63. package/src/testing/index.ts +1 -0
  64. package/src/testing/layer.ts +31 -0
  65. package/src/testing/services.ts +2 -8
  66. package/dist/lib/browser/chunk-54U464M4.mjs.map +0 -7
  67. package/dist/lib/node-esm/chunk-XDSX35BS.mjs.map +0 -7
  68. package/dist/types/src/services/ai.d.ts +0 -12
  69. package/dist/types/src/services/ai.d.ts.map +0 -1
  70. package/dist/types/src/services/tool-resolver.d.ts +0 -14
  71. package/dist/types/src/services/tool-resolver.d.ts.map +0 -1
  72. package/src/services/ai.ts +0 -32
  73. package/src/services/tool-resolver.ts +0 -31
@@ -1 +1 @@
1
- {"inputs":{"src/bundler/bundler.ts":{"bytes":32934,"imports":[{"path":"@effect/platform","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"esbuild-wasm","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/bundler/index.ts":{"bytes":457,"imports":[{"path":"src/bundler/bundler.ts","kind":"import-statement","original":"./bundler"}],"format":"esm"},"src/edge/functions.ts":{"bytes":6596,"imports":[{"path":"@dxos/client/edge","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/edge/index.ts":{"bytes":864,"imports":[{"path":"src/edge/functions.ts","kind":"import-statement","original":"./functions"}],"format":"esm"},"src/handler.ts":{"bytes":6273,"imports":[{"path":"effect","kind":"import-statement","external":true}],"format":"esm"},"src/schema.ts":{"bytes":5364,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"format":"esm"},"src/types.ts":{"bytes":21469,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"src/schema.ts","kind":"import-statement","original":"./schema"}],"format":"esm"},"src/trace.ts":{"bytes":16911,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/url.ts":{"bytes":5989,"imports":[],"format":"esm"},"src/services/ai.ts":{"bytes":2422,"imports":[{"path":"effect","kind":"import-statement","external":true}],"format":"esm"},"src/services/database.ts":{"bytes":4341,"imports":[{"path":"effect","kind":"import-statement","external":true}],"format":"esm"},"src/services/queues.ts":{"bytes":2801,"imports":[{"path":"effect","kind":"import-statement","external":true}],"format":"esm"},"src/services/credentials.ts":{"bytes":4253,"imports":[{"path":"effect","kind":"import-statement","external":true}],"format":"esm"},"src/services/event-logger.ts":{"bytes":6497,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/services/function-call-service.ts":{"bytes":7067,"imports":[{"path":"effect","kind":"import-statement","external":true}],"format":"esm"},"src/services/tool-resolver.ts":{"bytes":2065,"imports":[{"path":"effect","kind":"import-statement","external":true}],"format":"esm"},"src/services/tracing.ts":{"bytes":1881,"imports":[{"path":"effect","kind":"import-statement","external":true}],"format":"esm"},"src/services/service-container.ts":{"bytes":12392,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"src/services/ai.ts","kind":"import-statement","original":"./ai"},{"path":"src/services/credentials.ts","kind":"import-statement","original":"./credentials"},{"path":"src/services/database.ts","kind":"import-statement","original":"./database"},{"path":"src/services/event-logger.ts","kind":"import-statement","original":"./event-logger"},{"path":"src/services/function-call-service.ts","kind":"import-statement","original":"./function-call-service"},{"path":"src/services/queues.ts","kind":"import-statement","original":"./queues"},{"path":"src/services/tool-resolver.ts","kind":"import-statement","original":"./tool-resolver"},{"path":"src/services/tracing.ts","kind":"import-statement","original":"./tracing"}],"format":"esm"},"src/services/index.ts":{"bytes":1236,"imports":[{"path":"src/services/ai.ts","kind":"import-statement","original":"./ai"},{"path":"src/services/database.ts","kind":"import-statement","original":"./database"},{"path":"src/services/queues.ts","kind":"import-statement","original":"./queues"},{"path":"src/services/service-container.ts","kind":"import-statement","original":"./service-container"},{"path":"src/services/credentials.ts","kind":"import-statement","original":"./credentials"},{"path":"src/services/tracing.ts","kind":"import-statement","original":"./tracing"},{"path":"src/services/event-logger.ts","kind":"import-statement","original":"./event-logger"},{"path":"src/services/function-call-service.ts","kind":"import-statement","original":"./function-call-service"},{"path":"src/services/tool-resolver.ts","kind":"import-statement","original":"./tool-resolver"}],"format":"esm"},"src/executor/executor.ts":{"bytes":5494,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true}],"format":"esm"},"src/executor/index.ts":{"bytes":459,"imports":[{"path":"src/executor/executor.ts","kind":"import-statement","original":"./executor"}],"format":"esm"},"src/index.ts":{"bytes":1009,"imports":[{"path":"src/handler.ts","kind":"import-statement","original":"./handler"},{"path":"src/schema.ts","kind":"import-statement","original":"./schema"},{"path":"src/trace.ts","kind":"import-statement","original":"./trace"},{"path":"src/types.ts","kind":"import-statement","original":"./types"},{"path":"src/url.ts","kind":"import-statement","original":"./url"},{"path":"src/services/index.ts","kind":"import-statement","original":"./services"},{"path":"src/executor/index.ts","kind":"import-statement","original":"./executor"}],"format":"esm"},"src/testing/logger.ts":{"bytes":1607,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/services/index.ts","kind":"import-statement","original":"../services"}],"format":"esm"},"src/testing/services.ts":{"bytes":11700,"imports":[{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/ai/testing","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"src/testing/logger.ts","kind":"import-statement","original":"./logger"},{"path":"src/services/index.ts","kind":"import-statement","original":"../services"}],"format":"esm"},"src/testing/index.ts":{"bytes":458,"imports":[{"path":"src/testing/services.ts","kind":"import-statement","original":"./services"}],"format":"esm"}},"outputs":{"dist/lib/browser/bundler/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":16045},"dist/lib/browser/bundler/index.mjs":{"imports":[{"path":"@effect/platform","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"esbuild-wasm","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["Bundler","initializeBundler"],"entryPoint":"src/bundler/index.ts","inputs":{"src/bundler/bundler.ts":{"bytesInOutput":7755},"src/bundler/index.ts":{"bytesInOutput":0}},"bytes":7859},"dist/lib/browser/edge/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3361},"dist/lib/browser/edge/index.mjs":{"imports":[{"path":"@dxos/client/edge","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["incrementSemverPatch","publicKeyToDid","uploadWorkerFunction"],"entryPoint":"src/edge/index.ts","inputs":{"src/edge/functions.ts":{"bytesInOutput":1679},"src/edge/index.ts":{"bytesInOutput":0}},"bytes":1816},"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":32419},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-54U464M4.mjs","kind":"import-statement"},{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true}],"exports":["AiService","ConfiguredCredentialsService","CredentialsService","DatabaseService","EmailTriggerOutput","EventLogger","FUNCTIONS_PRESET_META_KEY","FUNCTION_TYPES","FunctionCallService","FunctionExecutor","FunctionManifestSchema","FunctionTrigger","FunctionTriggerSchema","FunctionType","InvocationOutcome","InvocationTraceEndEvent","InvocationTraceEventType","InvocationTraceStartEvent","QueueService","QueueTriggerOutput","SERVICE_TAGS","ScriptType","ServiceContainer","SubscriptionTriggerOutput","TimerTriggerOutput","ToolResolverService","TraceEvent","TraceEventException","TraceEventLog","TracingService","TriggerKind","TriggerSchema","WebhookTriggerOutput","createDefectLogger","createEventLogger","createInvocationSpans","defineFunction","getInvocationUrl","getUserFunctionUrlInMetadata","logCustomEvent","makeFunctionUrl","setUserFunctionUrlInMetadata"],"entryPoint":"src/index.ts","inputs":{"src/handler.ts":{"bytesInOutput":453},"src/index.ts":{"bytesInOutput":0},"src/schema.ts":{"bytesInOutput":1255},"src/trace.ts":{"bytesInOutput":4266},"src/types.ts":{"bytesInOutput":4732},"src/url.ts":{"bytesInOutput":1189},"src/executor/executor.ts":{"bytesInOutput":1104},"src/executor/index.ts":{"bytesInOutput":0}},"bytes":14395},"dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7518},"dist/lib/browser/testing/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-54U464M4.mjs","kind":"import-statement"},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/ai/testing","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["createTestServices"],"entryPoint":"src/testing/index.ts","inputs":{"src/testing/services.ts":{"bytesInOutput":2001},"src/testing/logger.ts":{"bytesInOutput":201},"src/testing/index.ts":{"bytesInOutput":0}},"bytes":2536},"dist/lib/browser/chunk-54U464M4.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":23039},"dist/lib/browser/chunk-54U464M4.mjs":{"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true}],"exports":["AiService","ConfiguredCredentialsService","CredentialsService","DatabaseService","EventLogger","FunctionCallService","QueueService","SERVICE_TAGS","ServiceContainer","ToolResolverService","TracingService","createDefectLogger","createEventLogger","logCustomEvent"],"inputs":{"src/services/ai.ts":{"bytesInOutput":504},"src/services/database.ts":{"bytesInOutput":960},"src/services/queues.ts":{"bytesInOutput":565},"src/services/credentials.ts":{"bytesInOutput":737},"src/services/event-logger.ts":{"bytesInOutput":1425},"src/services/function-call-service.ts":{"bytesInOutput":1522},"src/services/tool-resolver.ts":{"bytesInOutput":411},"src/services/tracing.ts":{"bytesInOutput":293},"src/services/service-container.ts":{"bytesInOutput":2641},"src/services/index.ts":{"bytesInOutput":0}},"bytes":9677}}}
1
+ {"inputs":{"src/bundler/bundler.ts":{"bytes":32934,"imports":[{"path":"@effect/platform","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"esbuild-wasm","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/bundler/index.ts":{"bytes":457,"imports":[{"path":"src/bundler/bundler.ts","kind":"import-statement","original":"./bundler"}],"format":"esm"},"src/edge/functions.ts":{"bytes":6596,"imports":[{"path":"@dxos/client/edge","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/edge/index.ts":{"bytes":864,"imports":[{"path":"src/edge/functions.ts","kind":"import-statement","original":"./functions"}],"format":"esm"},"src/handler.ts":{"bytes":6202,"imports":[{"path":"effect","kind":"import-statement","external":true}],"format":"esm"},"src/schema.ts":{"bytes":5364,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"format":"esm"},"src/types.ts":{"bytes":21469,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"src/schema.ts","kind":"import-statement","original":"./schema"}],"format":"esm"},"src/trace.ts":{"bytes":16911,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/url.ts":{"bytes":5989,"imports":[],"format":"esm"},"src/services/database.ts":{"bytes":6586,"imports":[{"path":"effect","kind":"import-statement","external":true}],"format":"esm"},"src/services/queues.ts":{"bytes":3431,"imports":[{"path":"effect","kind":"import-statement","external":true}],"format":"esm"},"src/services/credentials.ts":{"bytes":5097,"imports":[{"path":"effect","kind":"import-statement","external":true}],"format":"esm"},"src/services/event-logger.ts":{"bytes":6497,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/services/function-call-service.ts":{"bytes":7067,"imports":[{"path":"effect","kind":"import-statement","external":true}],"format":"esm"},"src/services/tracing.ts":{"bytes":3480,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true}],"format":"esm"},"src/services/service-container.ts":{"bytes":11855,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/services/credentials.ts","kind":"import-statement","original":"./credentials"},{"path":"src/services/database.ts","kind":"import-statement","original":"./database"},{"path":"src/services/event-logger.ts","kind":"import-statement","original":"./event-logger"},{"path":"src/services/function-call-service.ts","kind":"import-statement","original":"./function-call-service"},{"path":"src/services/queues.ts","kind":"import-statement","original":"./queues"},{"path":"src/services/tracing.ts","kind":"import-statement","original":"./tracing"}],"format":"esm"},"src/services/index.ts":{"bytes":1061,"imports":[{"path":"src/services/database.ts","kind":"import-statement","original":"./database"},{"path":"src/services/queues.ts","kind":"import-statement","original":"./queues"},{"path":"src/services/service-container.ts","kind":"import-statement","original":"./service-container"},{"path":"src/services/credentials.ts","kind":"import-statement","original":"./credentials"},{"path":"src/services/tracing.ts","kind":"import-statement","original":"./tracing"},{"path":"src/services/event-logger.ts","kind":"import-statement","original":"./event-logger"},{"path":"src/services/function-call-service.ts","kind":"import-statement","original":"./function-call-service"}],"format":"esm"},"src/executor/executor.ts":{"bytes":5494,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true}],"format":"esm"},"src/executor/index.ts":{"bytes":459,"imports":[{"path":"src/executor/executor.ts","kind":"import-statement","original":"./executor"}],"format":"esm"},"src/errors.ts":{"bytes":1431,"imports":[{"path":"@dxos/errors","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":1091,"imports":[{"path":"src/handler.ts","kind":"import-statement","original":"./handler"},{"path":"src/schema.ts","kind":"import-statement","original":"./schema"},{"path":"src/trace.ts","kind":"import-statement","original":"./trace"},{"path":"src/types.ts","kind":"import-statement","original":"./types"},{"path":"src/url.ts","kind":"import-statement","original":"./url"},{"path":"src/services/index.ts","kind":"import-statement","original":"./services"},{"path":"src/executor/index.ts","kind":"import-statement","original":"./executor"},{"path":"src/errors.ts","kind":"import-statement","original":"./errors"}],"format":"esm"},"src/testing/logger.ts":{"bytes":1607,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/services/index.ts","kind":"import-statement","original":"../services"}],"format":"esm"},"src/testing/services.ts":{"bytes":11101,"imports":[{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/ai/testing","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"src/testing/logger.ts","kind":"import-statement","original":"./logger"},{"path":"src/services/index.ts","kind":"import-statement","original":"../services"}],"format":"esm"},"src/testing/layer.ts":{"bytes":3597,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo-db/testing","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"src/services/index.ts","kind":"import-statement","original":"../services"}],"format":"esm"},"src/testing/index.ts":{"bytes":539,"imports":[{"path":"src/testing/services.ts","kind":"import-statement","original":"./services"},{"path":"src/testing/layer.ts","kind":"import-statement","original":"./layer"}],"format":"esm"}},"outputs":{"dist/lib/browser/bundler/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":16045},"dist/lib/browser/bundler/index.mjs":{"imports":[{"path":"@effect/platform","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"esbuild-wasm","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["Bundler","initializeBundler"],"entryPoint":"src/bundler/index.ts","inputs":{"src/bundler/bundler.ts":{"bytesInOutput":7755},"src/bundler/index.ts":{"bytesInOutput":0}},"bytes":7859},"dist/lib/browser/edge/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3361},"dist/lib/browser/edge/index.mjs":{"imports":[{"path":"@dxos/client/edge","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["incrementSemverPatch","publicKeyToDid","uploadWorkerFunction"],"entryPoint":"src/edge/index.ts","inputs":{"src/edge/functions.ts":{"bytesInOutput":1679},"src/edge/index.ts":{"bytesInOutput":0}},"bytes":1816},"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":33046},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-3NGCSUEW.mjs","kind":"import-statement"},{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/errors","kind":"import-statement","external":true}],"exports":["ConfiguredCredentialsService","ContextQueueService","CredentialsService","DatabaseService","EmailTriggerOutput","EventLogger","FUNCTIONS_PRESET_META_KEY","FUNCTION_TYPES","FunctionCallService","FunctionError","FunctionExecutor","FunctionManifestSchema","FunctionTrigger","FunctionTriggerSchema","FunctionType","InvocationOutcome","InvocationTraceEndEvent","InvocationTraceEventType","InvocationTraceStartEvent","QueueService","QueueTriggerOutput","SERVICE_TAGS","ScriptType","ServiceContainer","ServiceNotAvailableError","SubscriptionTriggerOutput","TimerTriggerOutput","TraceEvent","TraceEventException","TraceEventLog","TracingService","TriggerKind","TriggerSchema","WebhookTriggerOutput","createDefectLogger","createEventLogger","createInvocationSpans","defineFunction","getInvocationUrl","getUserFunctionUrlInMetadata","logCustomEvent","makeFunctionUrl","setUserFunctionUrlInMetadata"],"entryPoint":"src/index.ts","inputs":{"src/handler.ts":{"bytesInOutput":422},"src/index.ts":{"bytesInOutput":0},"src/schema.ts":{"bytesInOutput":1255},"src/trace.ts":{"bytesInOutput":4266},"src/types.ts":{"bytesInOutput":4732},"src/url.ts":{"bytesInOutput":1189},"src/executor/executor.ts":{"bytesInOutput":1104},"src/executor/index.ts":{"bytesInOutput":0},"src/errors.ts":{"bytesInOutput":293}},"bytes":14694},"dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9124},"dist/lib/browser/testing/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-3NGCSUEW.mjs","kind":"import-statement"},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/ai/testing","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo-db/testing","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true}],"exports":["TestDatabaseLayer","createTestServices"],"entryPoint":"src/testing/index.ts","inputs":{"src/testing/services.ts":{"bytesInOutput":1902},"src/testing/logger.ts":{"bytesInOutput":201},"src/testing/index.ts":{"bytesInOutput":0},"src/testing/layer.ts":{"bytesInOutput":644}},"bytes":3091},"dist/lib/browser/chunk-3NGCSUEW.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":23515},"dist/lib/browser/chunk-3NGCSUEW.mjs":{"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["ConfiguredCredentialsService","ContextQueueService","CredentialsService","DatabaseService","EventLogger","FunctionCallService","QueueService","SERVICE_TAGS","ServiceContainer","TracingService","createDefectLogger","createEventLogger","logCustomEvent"],"inputs":{"src/services/database.ts":{"bytesInOutput":1363},"src/services/queues.ts":{"bytesInOutput":648},"src/services/credentials.ts":{"bytesInOutput":993},"src/services/event-logger.ts":{"bytesInOutput":1425},"src/services/function-call-service.ts":{"bytesInOutput":1522},"src/services/tracing.ts":{"bytesInOutput":652},"src/services/service-container.ts":{"bytesInOutput":2435},"src/services/index.ts":{"bytesInOutput":0}},"bytes":9587}}}
@@ -1,15 +1,13 @@
1
1
  import {
2
- AiService,
3
2
  ConfiguredCredentialsService,
4
3
  DatabaseService,
5
4
  QueueService,
6
5
  ServiceContainer,
7
- ToolResolverService,
8
6
  createEventLogger
9
- } from "../chunk-54U464M4.mjs";
7
+ } from "../chunk-3NGCSUEW.mjs";
10
8
 
11
9
  // src/testing/services.ts
12
- import { EdgeAiServiceClient, ToolRegistry } from "@dxos/ai";
10
+ import { AiService, EdgeAiServiceClient } from "@dxos/ai";
13
11
  import { AI_SERVICE_ENDPOINT, createTestAiServiceClient } from "@dxos/ai/testing";
14
12
  import { assertArgument } from "@dxos/invariant";
15
13
 
@@ -23,7 +21,7 @@ var noopLogger = {
23
21
  var consoleLogger = createEventLogger(LogLevel.INFO);
24
22
 
25
23
  // src/testing/services.ts
26
- var createTestServices = ({ ai, credentials, db, logging, queues, space, tracing, toolResolver } = {}) => {
24
+ var createTestServices = ({ ai, credentials, db, logging, queues, space, tracing } = {}) => {
27
25
  assertArgument(!(!!space && (!!db || !!queues)), "space can be provided only if db and queues are not");
28
26
  return new ServiceContainer().setServices({
29
27
  ai: createAiService(ai),
@@ -31,8 +29,7 @@ var createTestServices = ({ ai, credentials, db, logging, queues, space, tracing
31
29
  database: space || db ? DatabaseService.make(space?.db || db) : void 0,
32
30
  eventLogger: logging?.logger ?? logging?.enabled ? consoleLogger : noopLogger,
33
31
  queues: space || queues ? QueueService.make(space?.queues || queues, void 0) : void 0,
34
- tracing: tracing?.service,
35
- toolResolver: toolResolver ?? ToolResolverService.make(new ToolRegistry([]))
32
+ tracing: tracing?.service
36
33
  });
37
34
  };
38
35
  var createAiService = (ai) => {
@@ -73,7 +70,22 @@ var createCredentialsService = (credentials) => {
73
70
  return credentials.service;
74
71
  }
75
72
  };
73
+
74
+ // src/testing/layer.ts
75
+ import { Context, Effect as Effect2, Layer } from "effect";
76
+ import { EchoTestBuilder } from "@dxos/echo-db/testing";
77
+ import { accuireReleaseResource } from "@dxos/effect";
78
+ var testBuilder = accuireReleaseResource(() => new EchoTestBuilder());
79
+ var TestDatabaseLayer = ({ indexing, types } = {}) => Layer.scopedContext(Effect2.gen(function* () {
80
+ const builder = yield* testBuilder;
81
+ const { db, queues } = yield* Effect2.promise(() => builder.createDatabase({
82
+ indexing,
83
+ types
84
+ }));
85
+ return Context.mergeAll(Context.make(DatabaseService, DatabaseService.make(db)), Context.make(QueueService, QueueService.make(queues, void 0)));
86
+ }));
76
87
  export {
88
+ TestDatabaseLayer,
77
89
  createTestServices
78
90
  };
79
91
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/testing/services.ts", "../../../../src/testing/logger.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Context } from 'effect';\n\nimport { type AiServiceEdgeClientOptions, EdgeAiServiceClient, type AiServiceClient, ToolRegistry } from '@dxos/ai';\nimport { AI_SERVICE_ENDPOINT, createTestAiServiceClient } from '@dxos/ai/testing';\nimport type { Space } from '@dxos/client/echo';\nimport type { EchoDatabase, QueueFactory } from '@dxos/echo-db';\nimport { assertArgument } from '@dxos/invariant';\n\nimport { consoleLogger, noopLogger } from './logger';\nimport {\n AiService,\n ConfiguredCredentialsService,\n type CredentialsService,\n DatabaseService,\n type EventLogger,\n QueueService,\n ServiceContainer,\n type ServiceCredential,\n ToolResolverService,\n type TracingService,\n} from '../services';\n\n// TODO(burdon): Factor out.\nexport type OneOf<T> = {\n [K in keyof T]: { [P in K]: T[P] } & { [P in Exclude<keyof T, K>]?: never };\n}[keyof T];\n\nexport type AiServiceProvider = 'dev' | 'edge' | 'ollama' | 'lmstudio';\n\nexport type TestServiceOptions = {\n /**\n * AI service configuration.\n */\n ai?: OneOf<{\n /**\n * Custom AI service client.\n */\n client?: AiServiceClient;\n\n /**\n * Edge AI service at specified endpoint.\n */\n endpoint?: AiServiceEdgeClientOptions['endpoint'];\n\n /**\n * Predefined AI service configuration.\n */\n // TODO(burdon): 'dev' and 'edge' are redundant with providing an endpoint.\n provider?: AiServiceProvider;\n }>;\n\n /**\n * Credentials service configuration.\n */\n credentials?: OneOf<{\n /**\n * Predefined credentials list.\n */\n services?: ServiceCredential[];\n\n /**\n * Custom credentials service.\n */\n service?: Context.Tag.Service<CredentialsService>;\n }>;\n\n /**\n * Database configuration.\n */\n db?: EchoDatabase;\n\n /**\n * Gets database and queue services from the space.\n * Exclusive with: `db`, `queues`\n */\n space?: Space;\n\n /**\n * Logging configuration.\n */\n logging?: {\n enabled?: boolean;\n logger?: Context.Tag.Service<EventLogger>;\n };\n\n /**\n * Queue service configuration.\n */\n queues?: QueueFactory;\n\n tracing?: {\n service?: Context.Tag.Service<TracingService>;\n };\n\n toolResolver?: Context.Tag.Service<ToolResolverService>;\n};\n\nexport const createTestServices = ({\n ai,\n credentials,\n db,\n logging,\n queues,\n space,\n tracing,\n toolResolver,\n}: TestServiceOptions = {}): ServiceContainer => {\n assertArgument(!(!!space && (!!db || !!queues)), 'space can be provided only if db and queues are not');\n\n return new ServiceContainer().setServices({\n ai: createAiService(ai),\n credentials: createCredentialsService(credentials),\n database: space || db ? DatabaseService.make(space?.db || db!) : undefined,\n eventLogger: logging?.logger ?? logging?.enabled ? consoleLogger : noopLogger,\n queues: space || queues ? QueueService.make(space?.queues || queues!, undefined) : undefined,\n tracing: tracing?.service,\n toolResolver: toolResolver ?? ToolResolverService.make(new ToolRegistry([])),\n });\n};\n\n// TODO(burdon): Enable model configuration.\nconst createAiService = (ai: TestServiceOptions['ai']): Context.Tag.Service<AiService> | undefined => {\n if (ai?.client != null) {\n return AiService.make(ai.client);\n }\n\n if (ai?.endpoint != null) {\n return AiService.make(new EdgeAiServiceClient({ endpoint: ai.endpoint }));\n }\n\n switch (ai?.provider) {\n case 'dev':\n return AiService.make(\n new EdgeAiServiceClient({\n endpoint: AI_SERVICE_ENDPOINT.LOCAL,\n defaultGenerationOptions: {\n model: '@anthropic/claude-3-5-sonnet-20241022',\n },\n }),\n );\n\n case 'edge':\n return AiService.make(\n new EdgeAiServiceClient({\n endpoint: AI_SERVICE_ENDPOINT.REMOTE,\n defaultGenerationOptions: {\n model: '@anthropic/claude-3-5-sonnet-20241022',\n },\n }),\n );\n\n case 'ollama':\n return AiService.make(createTestAiServiceClient());\n\n case 'lmstudio':\n throw new Error('LMStudio is not supported');\n }\n};\n\nconst createCredentialsService = (\n credentials: TestServiceOptions['credentials'] | undefined,\n): Context.Tag.Service<CredentialsService> | undefined => {\n if (credentials?.services) {\n return new ConfiguredCredentialsService(credentials.services);\n }\n\n if (credentials?.service) {\n return credentials.service;\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Effect, type Context } from 'effect';\n\nimport { LogLevel } from '@dxos/log';\n\nimport { type EventLogger, createEventLogger } from '../services';\n\nexport const noopLogger: Context.Tag.Service<EventLogger> = {\n log: () => Effect.succeed(undefined),\n nodeId: undefined,\n};\n\nexport const consoleLogger: Context.Tag.Service<EventLogger> = createEventLogger(LogLevel.INFO);\n"],
5
- "mappings": ";;;;;;;;;;;AAMA,SAA0CA,qBAA2CC,oBAAoB;AACzG,SAASC,qBAAqBC,iCAAiC;AAG/D,SAASC,sBAAsB;;;ACN/B,SAASC,cAA4B;AAErC,SAASC,gBAAgB;AAIlB,IAAMC,aAA+C;EAC1DC,KAAK,MAAMC,OAAOC,QAAQC,MAAAA;EAC1BC,QAAQD;AACV;AAEO,IAAME,gBAAkDC,kBAAkBC,SAASC,IAAI;;;ADsFvF,IAAMC,qBAAqB,CAAC,EACjCC,IACAC,aACAC,IACAC,SACAC,QACAC,OACAC,SACAC,aAAY,IACU,CAAC,MAAC;AACxBC,iBAAe,EAAE,CAAC,CAACH,UAAU,CAAC,CAACH,MAAM,CAAC,CAACE,UAAU,qDAAA;AAEjD,SAAO,IAAIK,iBAAAA,EAAmBC,YAAY;IACxCV,IAAIW,gBAAgBX,EAAAA;IACpBC,aAAaW,yBAAyBX,WAAAA;IACtCY,UAAUR,SAASH,KAAKY,gBAAgBC,KAAKV,OAAOH,MAAMA,EAAAA,IAAOc;IACjEC,aAAad,SAASe,UAAUf,SAASgB,UAAUC,gBAAgBC;IACnEjB,QAAQC,SAASD,SAASkB,aAAaP,KAAKV,OAAOD,UAAUA,QAASY,MAAAA,IAAaA;IACnFV,SAASA,SAASiB;IAClBhB,cAAcA,gBAAgBiB,oBAAoBT,KAAK,IAAIU,aAAa,CAAA,CAAE,CAAA;EAC5E,CAAA;AACF;AAGA,IAAMd,kBAAkB,CAACX,OAAAA;AACvB,MAAIA,IAAI0B,UAAU,MAAM;AACtB,WAAOC,UAAUZ,KAAKf,GAAG0B,MAAM;EACjC;AAEA,MAAI1B,IAAI4B,YAAY,MAAM;AACxB,WAAOD,UAAUZ,KAAK,IAAIc,oBAAoB;MAAED,UAAU5B,GAAG4B;IAAS,CAAA,CAAA;EACxE;AAEA,UAAQ5B,IAAI8B,UAAAA;IACV,KAAK;AACH,aAAOH,UAAUZ,KACf,IAAIc,oBAAoB;QACtBD,UAAUG,oBAAoBC;QAC9BC,0BAA0B;UACxBC,OAAO;QACT;MACF,CAAA,CAAA;IAGJ,KAAK;AACH,aAAOP,UAAUZ,KACf,IAAIc,oBAAoB;QACtBD,UAAUG,oBAAoBI;QAC9BF,0BAA0B;UACxBC,OAAO;QACT;MACF,CAAA,CAAA;IAGJ,KAAK;AACH,aAAOP,UAAUZ,KAAKqB,0BAAAA,CAAAA;IAExB,KAAK;AACH,YAAM,IAAIC,MAAM,2BAAA;EACpB;AACF;AAEA,IAAMzB,2BAA2B,CAC/BX,gBAAAA;AAEA,MAAIA,aAAaqC,UAAU;AACzB,WAAO,IAAIC,6BAA6BtC,YAAYqC,QAAQ;EAC9D;AAEA,MAAIrC,aAAasB,SAAS;AACxB,WAAOtB,YAAYsB;EACrB;AACF;",
6
- "names": ["EdgeAiServiceClient", "ToolRegistry", "AI_SERVICE_ENDPOINT", "createTestAiServiceClient", "assertArgument", "Effect", "LogLevel", "noopLogger", "log", "Effect", "succeed", "undefined", "nodeId", "consoleLogger", "createEventLogger", "LogLevel", "INFO", "createTestServices", "ai", "credentials", "db", "logging", "queues", "space", "tracing", "toolResolver", "assertArgument", "ServiceContainer", "setServices", "createAiService", "createCredentialsService", "database", "DatabaseService", "make", "undefined", "eventLogger", "logger", "enabled", "consoleLogger", "noopLogger", "QueueService", "service", "ToolResolverService", "ToolRegistry", "client", "AiService", "endpoint", "EdgeAiServiceClient", "provider", "AI_SERVICE_ENDPOINT", "LOCAL", "defaultGenerationOptions", "model", "REMOTE", "createTestAiServiceClient", "Error", "services", "ConfiguredCredentialsService"]
3
+ "sources": ["../../../../src/testing/services.ts", "../../../../src/testing/logger.ts", "../../../../src/testing/layer.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Context } from 'effect';\n\nimport { AiService, type AiServiceClient, type AiServiceEdgeClientOptions, EdgeAiServiceClient } from '@dxos/ai';\nimport { AI_SERVICE_ENDPOINT, createTestAiServiceClient } from '@dxos/ai/testing';\nimport type { Space } from '@dxos/client/echo';\nimport type { EchoDatabase, QueueFactory } from '@dxos/echo-db';\nimport { assertArgument } from '@dxos/invariant';\n\nimport { consoleLogger, noopLogger } from './logger';\nimport {\n ConfiguredCredentialsService,\n type CredentialsService,\n DatabaseService,\n type EventLogger,\n QueueService,\n ServiceContainer,\n type ServiceCredential,\n type TracingService,\n} from '../services';\n\n// TODO(burdon): Factor out.\nexport type OneOf<T> = {\n [K in keyof T]: { [P in K]: T[P] } & { [P in Exclude<keyof T, K>]?: never };\n}[keyof T];\n\nexport type AiServiceProvider = 'dev' | 'edge' | 'ollama' | 'lmstudio';\n\nexport type TestServiceOptions = {\n /**\n * AI service configuration.\n */\n ai?: OneOf<{\n /**\n * Custom AI service client.\n */\n client?: AiServiceClient;\n\n /**\n * Edge AI service at specified endpoint.\n */\n endpoint?: AiServiceEdgeClientOptions['endpoint'];\n\n /**\n * Predefined AI service configuration.\n */\n // TODO(burdon): 'dev' and 'edge' are redundant with providing an endpoint.\n provider?: AiServiceProvider;\n }>;\n\n /**\n * Credentials service configuration.\n */\n credentials?: OneOf<{\n /**\n * Predefined credentials list.\n */\n services?: ServiceCredential[];\n\n /**\n * Custom credentials service.\n */\n service?: Context.Tag.Service<CredentialsService>;\n }>;\n\n /**\n * Database configuration.\n */\n db?: EchoDatabase;\n\n /**\n * Gets database and queue services from the space.\n * Exclusive with: `db`, `queues`\n */\n space?: Space;\n\n /**\n * Logging configuration.\n */\n logging?: {\n enabled?: boolean;\n logger?: Context.Tag.Service<EventLogger>;\n };\n\n /**\n * Queue service configuration.\n */\n queues?: QueueFactory;\n\n tracing?: {\n service?: Context.Tag.Service<TracingService>;\n };\n};\n\nexport const createTestServices = ({\n ai,\n credentials,\n db,\n logging,\n queues,\n space,\n tracing,\n}: TestServiceOptions = {}): ServiceContainer => {\n assertArgument(!(!!space && (!!db || !!queues)), 'space can be provided only if db and queues are not');\n\n return new ServiceContainer().setServices({\n ai: createAiService(ai),\n credentials: createCredentialsService(credentials),\n database: space || db ? DatabaseService.make(space?.db || db!) : undefined,\n eventLogger: (logging?.logger ?? logging?.enabled) ? consoleLogger : noopLogger,\n queues: space || queues ? QueueService.make(space?.queues || queues!, undefined) : undefined,\n tracing: tracing?.service,\n });\n};\n\n// TODO(burdon): Enable model configuration.\nconst createAiService = (ai: TestServiceOptions['ai']): Context.Tag.Service<AiService> | undefined => {\n if (ai?.client != null) {\n return AiService.make(ai.client);\n }\n\n if (ai?.endpoint != null) {\n return AiService.make(new EdgeAiServiceClient({ endpoint: ai.endpoint }));\n }\n\n switch (ai?.provider) {\n case 'dev':\n return AiService.make(\n new EdgeAiServiceClient({\n endpoint: AI_SERVICE_ENDPOINT.LOCAL,\n defaultGenerationOptions: {\n model: '@anthropic/claude-3-5-sonnet-20241022',\n },\n }),\n );\n\n case 'edge':\n return AiService.make(\n new EdgeAiServiceClient({\n endpoint: AI_SERVICE_ENDPOINT.REMOTE,\n defaultGenerationOptions: {\n model: '@anthropic/claude-3-5-sonnet-20241022',\n },\n }),\n );\n\n case 'ollama':\n return AiService.make(createTestAiServiceClient());\n\n case 'lmstudio':\n throw new Error('LMStudio is not supported');\n }\n};\n\nconst createCredentialsService = (\n credentials: TestServiceOptions['credentials'] | undefined,\n): Context.Tag.Service<CredentialsService> | undefined => {\n if (credentials?.services) {\n return new ConfiguredCredentialsService(credentials.services);\n }\n\n if (credentials?.service) {\n return credentials.service;\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Effect, type Context } from 'effect';\n\nimport { LogLevel } from '@dxos/log';\n\nimport { type EventLogger, createEventLogger } from '../services';\n\nexport const noopLogger: Context.Tag.Service<EventLogger> = {\n log: () => Effect.succeed(undefined),\n nodeId: undefined,\n};\n\nexport const consoleLogger: Context.Tag.Service<EventLogger> = createEventLogger(LogLevel.INFO);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Context, Effect, Layer } from 'effect';\nimport type { Schema } from 'effect';\n\nimport { EchoTestBuilder } from '@dxos/echo-db/testing';\nimport type { EchoHostIndexingConfig } from '@dxos/echo-pipeline';\nimport { accuireReleaseResource } from '@dxos/effect';\n\nimport { DatabaseService, QueueService } from '../services';\n\nconst testBuilder = accuireReleaseResource(() => new EchoTestBuilder());\n\nexport type TestDatabaseOptions = {\n indexing?: Partial<EchoHostIndexingConfig>;\n types?: Schema.Schema.AnyNoContext[];\n};\n\nexport const TestDatabaseLayer = ({ indexing, types }: TestDatabaseOptions = {}) =>\n Layer.scopedContext(\n Effect.gen(function* () {\n const builder = yield* testBuilder;\n const { db, queues } = yield* Effect.promise(() => builder.createDatabase({ indexing, types }));\n return Context.mergeAll(\n Context.make(DatabaseService, DatabaseService.make(db)),\n Context.make(QueueService, QueueService.make(queues, undefined)),\n );\n }),\n );\n"],
5
+ "mappings": ";;;;;;;;;AAMA,SAASA,WAAkEC,2BAA2B;AACtG,SAASC,qBAAqBC,iCAAiC;AAG/D,SAASC,sBAAsB;;;ACN/B,SAASC,cAA4B;AAErC,SAASC,gBAAgB;AAIlB,IAAMC,aAA+C;EAC1DC,KAAK,MAAMC,OAAOC,QAAQC,MAAAA;EAC1BC,QAAQD;AACV;AAEO,IAAME,gBAAkDC,kBAAkBC,SAASC,IAAI;;;ADkFvF,IAAMC,qBAAqB,CAAC,EACjCC,IACAC,aACAC,IACAC,SACAC,QACAC,OACAC,QAAO,IACe,CAAC,MAAC;AACxBC,iBAAe,EAAE,CAAC,CAACF,UAAU,CAAC,CAACH,MAAM,CAAC,CAACE,UAAU,qDAAA;AAEjD,SAAO,IAAII,iBAAAA,EAAmBC,YAAY;IACxCT,IAAIU,gBAAgBV,EAAAA;IACpBC,aAAaU,yBAAyBV,WAAAA;IACtCW,UAAUP,SAASH,KAAKW,gBAAgBC,KAAKT,OAAOH,MAAMA,EAAAA,IAAOa;IACjEC,aAAcb,SAASc,UAAUd,SAASe,UAAWC,gBAAgBC;IACrEhB,QAAQC,SAASD,SAASiB,aAAaP,KAAKT,OAAOD,UAAUA,QAASW,MAAAA,IAAaA;IACnFT,SAASA,SAASgB;EACpB,CAAA;AACF;AAGA,IAAMZ,kBAAkB,CAACV,OAAAA;AACvB,MAAIA,IAAIuB,UAAU,MAAM;AACtB,WAAOC,UAAUV,KAAKd,GAAGuB,MAAM;EACjC;AAEA,MAAIvB,IAAIyB,YAAY,MAAM;AACxB,WAAOD,UAAUV,KAAK,IAAIY,oBAAoB;MAAED,UAAUzB,GAAGyB;IAAS,CAAA,CAAA;EACxE;AAEA,UAAQzB,IAAI2B,UAAAA;IACV,KAAK;AACH,aAAOH,UAAUV,KACf,IAAIY,oBAAoB;QACtBD,UAAUG,oBAAoBC;QAC9BC,0BAA0B;UACxBC,OAAO;QACT;MACF,CAAA,CAAA;IAGJ,KAAK;AACH,aAAOP,UAAUV,KACf,IAAIY,oBAAoB;QACtBD,UAAUG,oBAAoBI;QAC9BF,0BAA0B;UACxBC,OAAO;QACT;MACF,CAAA,CAAA;IAGJ,KAAK;AACH,aAAOP,UAAUV,KAAKmB,0BAAAA,CAAAA;IAExB,KAAK;AACH,YAAM,IAAIC,MAAM,2BAAA;EACpB;AACF;AAEA,IAAMvB,2BAA2B,CAC/BV,gBAAAA;AAEA,MAAIA,aAAakC,UAAU;AACzB,WAAO,IAAIC,6BAA6BnC,YAAYkC,QAAQ;EAC9D;AAEA,MAAIlC,aAAaqB,SAAS;AACxB,WAAOrB,YAAYqB;EACrB;AACF;;;AEnKA,SAASe,SAASC,UAAAA,SAAQC,aAAa;AAGvC,SAASC,uBAAuB;AAEhC,SAASC,8BAA8B;AAIvC,IAAMC,cAAcC,uBAAuB,MAAM,IAAIC,gBAAAA,CAAAA;AAO9C,IAAMC,oBAAoB,CAAC,EAAEC,UAAUC,MAAK,IAA0B,CAAC,MAC5EC,MAAMC,cACJC,QAAOC,IAAI,aAAA;AACT,QAAMC,UAAU,OAAOV;AACvB,QAAM,EAAEW,IAAIC,OAAM,IAAK,OAAOJ,QAAOK,QAAQ,MAAMH,QAAQI,eAAe;IAAEV;IAAUC;EAAM,CAAA,CAAA;AAC5F,SAAOU,QAAQC,SACbD,QAAQE,KAAKC,iBAAiBA,gBAAgBD,KAAKN,EAAAA,CAAAA,GACnDI,QAAQE,KAAKE,cAAcA,aAAaF,KAAKL,QAAQQ,MAAAA,CAAAA,CAAAA;AAEzD,CAAA,CAAA;",
6
+ "names": ["AiService", "EdgeAiServiceClient", "AI_SERVICE_ENDPOINT", "createTestAiServiceClient", "assertArgument", "Effect", "LogLevel", "noopLogger", "log", "Effect", "succeed", "undefined", "nodeId", "consoleLogger", "createEventLogger", "LogLevel", "INFO", "createTestServices", "ai", "credentials", "db", "logging", "queues", "space", "tracing", "assertArgument", "ServiceContainer", "setServices", "createAiService", "createCredentialsService", "database", "DatabaseService", "make", "undefined", "eventLogger", "logger", "enabled", "consoleLogger", "noopLogger", "QueueService", "service", "client", "AiService", "endpoint", "EdgeAiServiceClient", "provider", "AI_SERVICE_ENDPOINT", "LOCAL", "defaultGenerationOptions", "model", "REMOTE", "createTestAiServiceClient", "Error", "services", "ConfiguredCredentialsService", "Context", "Effect", "Layer", "EchoTestBuilder", "accuireReleaseResource", "testBuilder", "accuireReleaseResource", "EchoTestBuilder", "TestDatabaseLayer", "indexing", "types", "Layer", "scopedContext", "Effect", "gen", "builder", "db", "queues", "promise", "createDatabase", "Context", "mergeAll", "make", "DatabaseService", "QueueService", "undefined"]
7
7
  }
@@ -1,34 +1,10 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
 
3
- // src/services/ai.ts
4
- import { Context, Layer } from "effect";
5
- var AiService = class _AiService extends Context.Tag("AiService")() {
6
- static {
7
- this.make = (client) => {
8
- return {
9
- get client() {
10
- return client;
11
- }
12
- };
13
- };
14
- }
15
- static {
16
- this.makeLayer = (client) => Layer.succeed(_AiService, _AiService.make(client));
17
- }
18
- static {
19
- this.notAvailable = Layer.succeed(_AiService, {
20
- get client() {
21
- throw new Error("AiService not available");
22
- }
23
- });
24
- }
25
- };
26
-
27
3
  // src/services/database.ts
28
- import { Context as Context2, Effect, Layer as Layer2 } from "effect";
29
- var DatabaseService = class _DatabaseService extends Context2.Tag("DatabaseService")() {
4
+ import { Context, Effect, Layer } from "effect";
5
+ var DatabaseService = class _DatabaseService extends Context.Tag("DatabaseService")() {
30
6
  static {
31
- this.notAvailable = Layer2.succeed(_DatabaseService, {
7
+ this.notAvailable = Layer.succeed(_DatabaseService, {
32
8
  get db() {
33
9
  throw new Error("Database not available");
34
10
  }
@@ -58,19 +34,28 @@ var DatabaseService = class _DatabaseService extends Context2.Tag("DatabaseServi
58
34
  }
59
35
  static {
60
36
  this.loadRef = Effect.fn(function* (ref) {
61
- return yield* Effect.tryPromise({
62
- try: () => ref.load(),
63
- catch: (error) => error
64
- });
37
+ return yield* Effect.promise(() => ref.load());
65
38
  });
66
39
  }
40
+ static {
41
+ /**
42
+ * Creates a `QueryResult` object that can be subscribed to.
43
+ */
44
+ this.query = (queryOrFilter) => _DatabaseService.pipe(Effect.map(({ db }) => db.query(queryOrFilter)), Effect.withSpan("DatabaseService.query"));
45
+ }
46
+ static {
47
+ /**
48
+ * Executes the query once and returns the results.
49
+ */
50
+ this.runQuery = (queryOrFilter) => _DatabaseService.query(queryOrFilter).pipe(Effect.flatMap((queryResult) => Effect.promise(() => queryResult.run())));
51
+ }
67
52
  };
68
53
 
69
54
  // src/services/queues.ts
70
- import { Context as Context3, Layer as Layer3 } from "effect";
71
- var QueueService = class _QueueService extends Context3.Tag("QueueService")() {
55
+ import { Context as Context2, Layer as Layer2 } from "effect";
56
+ var QueueService = class _QueueService extends Context2.Tag("QueueService")() {
72
57
  static {
73
- this.notAvailable = Layer3.succeed(_QueueService, {
58
+ this.notAvailable = Layer2.succeed(_QueueService, {
74
59
  queues: {
75
60
  get(dxn) {
76
61
  throw new Error("Queues not available");
@@ -91,10 +76,18 @@ var QueueService = class _QueueService extends Context3.Tag("QueueService")() {
91
76
  };
92
77
  }
93
78
  };
79
+ var ContextQueueService = class extends Context2.Tag("ContextQueueService")() {
80
+ };
94
81
 
95
82
  // src/services/credentials.ts
96
- import { Context as Context4 } from "effect";
97
- var CredentialsService = class extends Context4.Tag("CredentialsService")() {
83
+ import { Context as Context3, Effect as Effect2 } from "effect";
84
+ var CredentialsService = class _CredentialsService extends Context3.Tag("CredentialsService")() {
85
+ static {
86
+ this.getCredential = (query) => Effect2.gen(function* () {
87
+ const credentials = yield* _CredentialsService;
88
+ return yield* Effect2.promise(() => credentials.getCredential(query));
89
+ });
90
+ }
98
91
  };
99
92
  var ConfiguredCredentialsService = class {
100
93
  constructor(credentials = []) {
@@ -117,11 +110,11 @@ var ConfiguredCredentialsService = class {
117
110
  };
118
111
 
119
112
  // src/services/event-logger.ts
120
- import { Effect as Effect2, Context as Context5 } from "effect";
113
+ import { Effect as Effect3, Context as Context4 } from "effect";
121
114
  import { invariant } from "@dxos/invariant";
122
115
  import { log, LogLevel } from "@dxos/log";
123
116
  var __dxlog_file = "/__w/dxos/dxos/packages/core/functions/src/services/event-logger.ts";
124
- var EventLogger = class extends Context5.Tag("EventLogger")() {
117
+ var EventLogger = class extends Context4.Tag("EventLogger")() {
125
118
  static {
126
119
  this.noop = {
127
120
  log: () => {
@@ -130,7 +123,7 @@ var EventLogger = class extends Context5.Tag("EventLogger")() {
130
123
  };
131
124
  }
132
125
  };
133
- var logCustomEvent = (data) => Effect2.gen(function* () {
126
+ var logCustomEvent = (data) => Effect3.gen(function* () {
134
127
  const logger = yield* EventLogger;
135
128
  if (!logger.nodeId) {
136
129
  throw new Error("logCustomEvent must be called within a node compute function");
@@ -141,7 +134,7 @@ var logCustomEvent = (data) => Effect2.gen(function* () {
141
134
  event: data
142
135
  });
143
136
  });
144
- var createDefectLogger = () => Effect2.catchAll((error) => Effect2.gen(function* () {
137
+ var createDefectLogger = () => Effect3.catchAll((error) => Effect3.gen(function* () {
145
138
  log.error("unhandled effect error", {
146
139
  error
147
140
  }, {
@@ -178,8 +171,8 @@ var createEventLogger = (level, message = "event") => {
178
171
  };
179
172
 
180
173
  // src/services/function-call-service.ts
181
- import { Context as Context6 } from "effect";
182
- var FunctionCallService = class extends Context6.Tag("FunctionCallService")() {
174
+ import { Context as Context5 } from "effect";
175
+ var FunctionCallService = class extends Context5.Tag("FunctionCallService")() {
183
176
  static fromClient(baseUrl, spaceId) {
184
177
  return {
185
178
  callFunction: async (deployedFunctionId, input) => {
@@ -225,30 +218,11 @@ var isSecure = (protocol) => {
225
218
  return protocol === "https:" || protocol === "wss:";
226
219
  };
227
220
 
228
- // src/services/tool-resolver.ts
229
- import { Context as Context7 } from "effect";
230
- var ToolResolverService = class extends Context7.Tag("ToolResolverService")() {
231
- static {
232
- this.notAvailable = {
233
- toolResolver: {
234
- resolve: async (id) => {
235
- throw new Error("Tool resolver not available");
236
- }
237
- }
238
- };
239
- }
240
- static {
241
- this.make = (toolResolver) => {
242
- return {
243
- toolResolver
244
- };
245
- };
246
- }
247
- };
248
-
249
221
  // src/services/tracing.ts
250
- import { Context as Context8 } from "effect";
251
- var TracingService = class extends Context8.Tag("TracingService")() {
222
+ import { Context as Context6, Effect as Effect4 } from "effect";
223
+ import { AgentStatus } from "@dxos/ai";
224
+ import { Obj } from "@dxos/echo";
225
+ var TracingService = class _TracingService extends Context6.Tag("TracingService")() {
252
226
  static {
253
227
  this.noop = {
254
228
  write: () => {
@@ -262,29 +236,35 @@ var TracingService = class extends Context8.Tag("TracingService")() {
262
236
  }
263
237
  };
264
238
  }
239
+ static {
240
+ /**
241
+ * Emit the current human-readable execution status.
242
+ */
243
+ this.emitStatus = Effect4.fnUntraced(function* (data) {
244
+ const tracing = yield* _TracingService;
245
+ tracing.write(Obj.make(AgentStatus, data));
246
+ });
247
+ }
265
248
  };
266
249
 
267
250
  // src/services/service-container.ts
268
- import { Layer as Layer4 } from "effect";
269
- var SERVICE_MAPPING = {
270
- [AiService.key]: "ai",
271
- [CredentialsService.key]: "credentials",
272
- [DatabaseService.key]: "database",
273
- [EventLogger.key]: "eventLogger",
274
- [FunctionCallService.key]: "functionCallService",
275
- [QueueService.key]: "queues",
276
- [TracingService.key]: "tracing",
277
- [ToolResolverService.key]: "toolResolver"
251
+ import { Layer as Layer3 } from "effect";
252
+ import { AiService } from "@dxos/ai";
253
+ import { entries } from "@dxos/util";
254
+ var SERVICES = {
255
+ ai: AiService,
256
+ credentials: CredentialsService,
257
+ database: DatabaseService,
258
+ eventLogger: EventLogger,
259
+ functionCallService: FunctionCallService,
260
+ queues: QueueService,
261
+ tracing: TracingService
278
262
  };
279
- var SERVICE_TAGS = [
280
- AiService,
281
- CredentialsService,
282
- DatabaseService,
283
- EventLogger,
284
- FunctionCallService,
285
- TracingService,
286
- QueueService
287
- ];
263
+ var SERVICE_MAPPING = Object.fromEntries(entries(SERVICES).map(([name, tag]) => [
264
+ tag.key,
265
+ name
266
+ ]));
267
+ var SERVICE_TAGS = Object.values(SERVICES);
288
268
  var DEFAULT_SERVICES = {
289
269
  tracing: TracingService.noop
290
270
  };
@@ -321,32 +301,21 @@ var ServiceContainer = class _ServiceContainer {
321
301
  }
322
302
  // TODO(dmaretskyi): `getService` is designed to error at runtime if the service is not available, but layer forces us to provide all services and makes stubs for the ones that are not available.
323
303
  createLayer() {
324
- const ai = this._services.ai != null ? Layer4.succeed(AiService, this._services.ai) : AiService.notAvailable;
325
- const credentials = Layer4.succeed(CredentialsService, new ConfiguredCredentialsService());
326
- const database = this._services.database != null ? Layer4.succeed(DatabaseService, this._services.database) : DatabaseService.notAvailable;
327
- const queues = this._services.queues != null ? Layer4.succeed(QueueService, this._services.queues) : QueueService.notAvailable;
328
- const tracing = Layer4.succeed(TracingService, this._services.tracing ?? TracingService.noop);
329
- const eventLogger = Layer4.succeed(EventLogger, this._services.eventLogger ?? EventLogger.noop);
330
- const functionCallService = Layer4.succeed(FunctionCallService, this._services.functionCallService ?? FunctionCallService.mock());
331
- const toolResolver = Layer4.succeed(ToolResolverService, this._services.toolResolver ?? ToolResolverService.notAvailable);
332
- return Layer4.mergeAll(
333
- //
334
- ai,
335
- credentials,
336
- database,
337
- queues,
338
- tracing,
339
- eventLogger,
340
- functionCallService,
341
- toolResolver
342
- );
304
+ const ai = this._services.ai != null ? Layer3.succeed(AiService, this._services.ai) : AiService.notAvailable;
305
+ const credentials = Layer3.succeed(CredentialsService, this._services.credentials ?? new ConfiguredCredentialsService());
306
+ const database = this._services.database != null ? Layer3.succeed(DatabaseService, this._services.database) : DatabaseService.notAvailable;
307
+ const queues = this._services.queues != null ? Layer3.succeed(QueueService, this._services.queues) : QueueService.notAvailable;
308
+ const tracing = Layer3.succeed(TracingService, this._services.tracing ?? TracingService.noop);
309
+ const eventLogger = Layer3.succeed(EventLogger, this._services.eventLogger ?? EventLogger.noop);
310
+ const functionCallService = Layer3.succeed(FunctionCallService, this._services.functionCallService ?? FunctionCallService.mock());
311
+ return Layer3.mergeAll(ai, credentials, database, queues, tracing, eventLogger, functionCallService);
343
312
  }
344
313
  };
345
314
 
346
315
  export {
347
- AiService,
348
316
  DatabaseService,
349
317
  QueueService,
318
+ ContextQueueService,
350
319
  CredentialsService,
351
320
  ConfiguredCredentialsService,
352
321
  EventLogger,
@@ -354,9 +323,8 @@ export {
354
323
  createDefectLogger,
355
324
  createEventLogger,
356
325
  FunctionCallService,
357
- ToolResolverService,
358
326
  TracingService,
359
327
  SERVICE_TAGS,
360
328
  ServiceContainer
361
329
  };
362
- //# sourceMappingURL=chunk-XDSX35BS.mjs.map
330
+ //# sourceMappingURL=chunk-FJ2MU7TL.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/services/database.ts", "../../../src/services/queues.ts", "../../../src/services/credentials.ts", "../../../src/services/event-logger.ts", "../../../src/services/function-call-service.ts", "../../../src/services/tracing.ts", "../../../src/services/service-container.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Context, Effect, Layer } from 'effect';\n\nimport type { Filter, Live, Obj, Query, Ref, Relation } from '@dxos/echo';\nimport type { EchoDatabase, OneShotQueryResult, QueryResult } from '@dxos/echo-db';\nimport type { DXN } from '@dxos/keys';\n\nexport class DatabaseService extends Context.Tag('DatabaseService')<\n DatabaseService,\n {\n readonly db: EchoDatabase;\n }\n>() {\n static notAvailable = Layer.succeed(DatabaseService, {\n get db(): EchoDatabase {\n throw new Error('Database not available');\n },\n });\n\n static make = (db: EchoDatabase): Context.Tag.Service<DatabaseService> => {\n return {\n get db() {\n return db;\n },\n };\n };\n\n static resolve: (dxn: DXN) => Effect.Effect<Obj.Any | Relation.Any, Error, DatabaseService> = Effect.fn(\n function* (dxn) {\n const { db } = yield* DatabaseService;\n return yield* Effect.tryPromise({\n try: () =>\n db.graph.createRefResolver({ context: { space: db.spaceId } }).resolve(dxn) as Promise<\n Obj.Any | Relation.Any\n >,\n catch: (error) => error as Error,\n });\n },\n );\n\n static loadRef: <T>(ref: Ref.Ref<T>) => Effect.Effect<T, never, never> = Effect.fn(function* (ref) {\n return yield* Effect.promise(() => ref.load());\n });\n\n /**\n * Creates a `QueryResult` object that can be subscribed to.\n */\n static query: {\n <Q extends Query.Any>(query: Q): Effect.Effect<QueryResult<Live<Query.Type<Q>>>, never, DatabaseService>;\n <F extends Filter.Any>(filter: F): Effect.Effect<QueryResult<Live<Filter.Type<F>>>, never, DatabaseService>;\n } = (queryOrFilter: Query.Any | Filter.Any) =>\n DatabaseService.pipe(\n Effect.map(({ db }) => db.query(queryOrFilter as any)),\n Effect.withSpan('DatabaseService.query'),\n );\n\n /**\n * Executes the query once and returns the results.\n */\n static runQuery: {\n <Q extends Query.Any>(query: Q): Effect.Effect<OneShotQueryResult<Live<Query.Type<Q>>>, never, DatabaseService>;\n <F extends Filter.Any>(filter: F): Effect.Effect<OneShotQueryResult<Live<Filter.Type<F>>>, never, DatabaseService>;\n } = (queryOrFilter: Query.Any | Filter.Any) =>\n DatabaseService.query(queryOrFilter as any).pipe(\n Effect.flatMap((queryResult) => Effect.promise(() => queryResult.run())),\n );\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Context, Layer } from 'effect';\n\nimport type { Queue, QueueAPI, QueueFactory } from '@dxos/echo-db';\n\n/**\n * Gives access to all queues.\n */\nexport class QueueService extends Context.Tag('QueueService')<\n QueueService,\n {\n /**\n * API to access the queues.\n */\n readonly queues: QueueAPI;\n\n /**\n * The queue that is used to store the context of the current research.\n * @deprecated Use `ContextQueueService` instead.\n */\n readonly contextQueue: Queue | undefined;\n }\n>() {\n static notAvailable = Layer.succeed(QueueService, {\n queues: {\n get(dxn) {\n throw new Error('Queues not available');\n },\n create() {\n throw new Error('Queues not available');\n },\n },\n contextQueue: undefined,\n });\n\n static make = (queues: QueueFactory, contextQueue?: Queue): Context.Tag.Service<QueueService> => {\n return {\n queues,\n contextQueue,\n };\n };\n}\n\n/**\n * Gives access to a specific queue passed as a context.\n */\nexport class ContextQueueService extends Context.Tag('ContextQueueService')<\n ContextQueueService,\n {\n readonly contextQueue: Queue;\n }\n>() {}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Context, Effect } from 'effect';\n\ntype CredentialQuery = {\n service?: string;\n};\n\n// TODO(dmaretskyi): Unify with other apis.\n// packages/sdk/schema/src/common/access-token.ts\nexport type ServiceCredential = {\n service: string;\n\n // TODO(dmaretskyi): Build out.\n apiKey?: string;\n};\n\nexport class CredentialsService extends Context.Tag('CredentialsService')<\n CredentialsService,\n {\n /**\n * Query all.\n */\n queryCredentials: (query: CredentialQuery) => Promise<ServiceCredential[]>;\n\n /**\n * Get a single credential.\n * @throws {Error} If no credential is found.\n */\n getCredential: (query: CredentialQuery) => Promise<ServiceCredential>;\n }\n>() {\n static getCredential = (query: CredentialQuery): Effect.Effect<ServiceCredential, never, CredentialsService> =>\n Effect.gen(function* () {\n const credentials = yield* CredentialsService;\n return yield* Effect.promise(() => credentials.getCredential(query));\n });\n}\n\nexport class ConfiguredCredentialsService implements Context.Tag.Service<CredentialsService> {\n constructor(private readonly credentials: ServiceCredential[] = []) {}\n\n addCredentials(credentials: ServiceCredential[]): ConfiguredCredentialsService {\n this.credentials.push(...credentials);\n return this;\n }\n\n async queryCredentials(query: CredentialQuery): Promise<ServiceCredential[]> {\n return this.credentials.filter((credential) => credential.service === query.service);\n }\n\n async getCredential(query: CredentialQuery): Promise<ServiceCredential> {\n const credential = this.credentials.find((credential) => credential.service === query.service);\n if (!credential) {\n throw new Error(`Credential not found for service: ${query.service}`);\n }\n return credential;\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Effect, Context } from 'effect';\n\nimport { invariant } from '@dxos/invariant';\nimport { log, LogLevel } from '@dxos/log';\n\nexport type ComputeEvent =\n | {\n type: 'begin-compute';\n nodeId: string;\n inputs: Record<string, any>;\n }\n | {\n type: 'end-compute';\n nodeId: string;\n outputs: Record<string, any>;\n }\n | {\n type: 'compute-input';\n nodeId: string;\n property: string;\n value: any;\n }\n | {\n type: 'compute-output';\n nodeId: string;\n property: string;\n value: any;\n }\n | {\n type: 'custom';\n nodeId: string;\n event: any;\n };\n\nexport class EventLogger extends Context.Tag('EventLogger')<\n EventLogger,\n { readonly log: (event: ComputeEvent) => void; readonly nodeId: string | undefined }\n>() {\n static noop: Context.Tag.Service<EventLogger> = {\n log: () => {},\n nodeId: undefined,\n };\n}\n\nexport const logCustomEvent = (data: any) =>\n Effect.gen(function* () {\n const logger = yield* EventLogger;\n if (!logger.nodeId) {\n throw new Error('logCustomEvent must be called within a node compute function');\n }\n logger.log({\n type: 'custom',\n nodeId: logger.nodeId,\n event: data,\n });\n });\n\nexport const createDefectLogger = <A, E, R>(): ((self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>) =>\n Effect.catchAll((error) =>\n Effect.gen(function* () {\n log.error('unhandled effect error', { error });\n throw error;\n }),\n );\n\nexport const createEventLogger = (level: LogLevel, message: string = 'event'): Context.Tag.Service<EventLogger> => {\n const logFunction = (\n {\n [LogLevel.WARN]: log.warn,\n [LogLevel.VERBOSE]: log.verbose,\n [LogLevel.DEBUG]: log.debug,\n [LogLevel.INFO]: log.info,\n [LogLevel.ERROR]: log.error,\n } as any\n )[level];\n invariant(logFunction);\n return {\n log: (event: ComputeEvent) => {\n logFunction(message, event);\n },\n nodeId: undefined,\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Context } from 'effect';\n\nimport type { SpaceId } from '@dxos/keys';\n\n/**\n * Allows calling into other functions.\n */\nexport class FunctionCallService extends Context.Tag('FunctionCallService')<\n FunctionCallService,\n {\n callFunction(deployedFunctionId: string, input: any, spaceId?: SpaceId): Promise<any>;\n }\n>() {\n static fromClient(baseUrl: string, spaceId: SpaceId): Context.Tag.Service<FunctionCallService> {\n return {\n callFunction: async (deployedFunctionId: string, input: any) => {\n const url = getInvocationUrl(deployedFunctionId, baseUrl, { spaceId });\n const result = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(input),\n });\n if (result.status >= 300 || result.status < 200) {\n throw new Error('Failed to invoke function', { cause: new Error(`HTTP error: ${await result.text()}`) });\n }\n return await result.json();\n },\n };\n }\n\n static mock = () => {\n return {\n callFunction: async (deployedFunctionId: string, input: any) => {\n return input;\n },\n };\n };\n}\n\n// TODO(dmaretskyi): Reconcile with `getInvocationUrl` in `@dxos/functions/edge`.\nconst getInvocationUrl = (functionUrl: string, edgeUrl: string, options: InvocationOptions = {}) => {\n const baseUrl = new URL('functions/', edgeUrl);\n\n // Leading slashes cause the URL to be treated as an absolute path.\n const relativeUrl = functionUrl.replace(/^\\//, '');\n const url = new URL(`./${relativeUrl}`, baseUrl.toString());\n options.spaceId && url.searchParams.set('spaceId', options.spaceId);\n options.subjectId && url.searchParams.set('subjectId', options.subjectId);\n url.protocol = isSecure(url.protocol) ? 'https' : 'http';\n return url.toString();\n};\n\nconst isSecure = (protocol: string) => {\n return protocol === 'https:' || protocol === 'wss:';\n};\n\ntype InvocationOptions = {\n spaceId?: SpaceId;\n subjectId?: string;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Context, Effect } from 'effect';\n\nimport { AgentStatus } from '@dxos/ai';\nimport { Obj } from '@dxos/echo';\nimport type { AnyEchoObject } from '@dxos/echo-schema';\n\n/**\n * Provides a way for compute primitives (functions, workflows, tools)\n * to emit an execution trace as a series of structured ECHO objects.\n */\nexport class TracingService extends Context.Tag('TracingService')<\n TracingService,\n {\n /**\n * Write an event to the tracing queue.\n * @param event - The event to write. Must be an a typed object.\n */\n write(event: AnyEchoObject): void;\n }\n>() {\n static noop: Context.Tag.Service<TracingService> = { write: () => {} };\n\n static console: Context.Tag.Service<TracingService> = {\n write: (event) => {\n // eslint-disable-next-line no-console\n console.log(event);\n },\n };\n\n /**\n * Emit the current human-readable execution status.\n */\n static emitStatus: (data: Obj.MakeProps<typeof AgentStatus>) => Effect.Effect<unknown, never, void> =\n Effect.fnUntraced(function* (data) {\n const tracing = yield* TracingService;\n tracing.write(Obj.make(AgentStatus, data));\n });\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Context, Layer } from 'effect';\n\nimport { AiService } from '@dxos/ai';\nimport { entries } from '@dxos/util';\n\nimport { ConfiguredCredentialsService, CredentialsService } from './credentials';\nimport { DatabaseService } from './database';\nimport { EventLogger } from './event-logger';\nimport { FunctionCallService } from './function-call-service';\nimport { QueueService } from './queues';\nimport { TracingService } from './tracing';\n\n// TODO(dmaretskyi): Refactor this module to only rely on tags and not the human-assigned names.\n\n/**\n * List of all services.\n */\nconst SERVICES = {\n ai: AiService,\n credentials: CredentialsService,\n database: DatabaseService,\n eventLogger: EventLogger,\n functionCallService: FunctionCallService,\n queues: QueueService,\n tracing: TracingService,\n} as const satisfies Record<string, Context.TagClass<any, string, any>>;\n\n/**\n * Mapping of service names to their tags.\n */\nexport type ServiceTagRecord = {\n [K in keyof typeof SERVICES]: (typeof SERVICES)[K] extends { new (_: never): infer T } ? T : never;\n};\n\n/**\n * Mapping of service names to their runtime types.\n */\nexport type ServiceRecord = {\n [K in keyof ServiceTagRecord]: Context.Tag.Service<ServiceTagRecord[K]>;\n};\n\n/**\n * Union of all services tags.\n */\nexport type Services = ServiceTagRecord[keyof ServiceTagRecord];\n\nconst SERVICE_MAPPING: Record<string, keyof ServiceRecord> = Object.fromEntries(\n entries(SERVICES).map(([name, tag]) => [tag.key, name]),\n);\n\nexport const SERVICE_TAGS: Context.Tag<any, any>[] = Object.values(SERVICES);\n\nconst DEFAULT_SERVICES: Partial<ServiceRecord> = {\n tracing: TracingService.noop,\n};\n\n/**\n * @deprecated\n */\nexport class ServiceContainer {\n private _services: Partial<ServiceRecord> = { ...DEFAULT_SERVICES };\n\n /**\n * Set services.\n * @param services - Services to set.\n * @returns The container instance.\n */\n setServices(services: Partial<ServiceRecord>): this {\n this._services = { ...this._services, ...services };\n return this;\n }\n\n getService<Id, T>(tag: Context.Tag<Id, T>): T {\n const serviceKey = SERVICE_MAPPING[tag.key];\n const service = serviceKey != null ? this._services[serviceKey] : undefined;\n if (!service) {\n throw new Error(`Service not available: ${tag.key}`);\n }\n\n return service as T;\n }\n\n clone(): ServiceContainer {\n return new ServiceContainer().setServices({ ...this._services });\n }\n\n // TODO(dmaretskyi): `getService` is designed to error at runtime if the service is not available, but layer forces us to provide all services and makes stubs for the ones that are not available.\n createLayer(): Layer.Layer<Services> {\n const ai = this._services.ai != null ? Layer.succeed(AiService, this._services.ai) : AiService.notAvailable;\n const credentials = Layer.succeed(\n CredentialsService,\n this._services.credentials ?? new ConfiguredCredentialsService(),\n );\n const database =\n this._services.database != null\n ? Layer.succeed(DatabaseService, this._services.database)\n : DatabaseService.notAvailable;\n const queues =\n this._services.queues != null ? Layer.succeed(QueueService, this._services.queues) : QueueService.notAvailable;\n const tracing = Layer.succeed(TracingService, this._services.tracing ?? TracingService.noop);\n const eventLogger = Layer.succeed(EventLogger, this._services.eventLogger ?? EventLogger.noop);\n const functionCallService = Layer.succeed(\n FunctionCallService,\n this._services.functionCallService ?? FunctionCallService.mock(),\n );\n\n return Layer.mergeAll(ai, credentials, database, queues, tracing, eventLogger, functionCallService);\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["Context", "Effect", "Layer", "DatabaseService", "Context", "Tag", "notAvailable", "Layer", "succeed", "db", "Error", "make", "resolve", "Effect", "fn", "dxn", "tryPromise", "try", "graph", "createRefResolver", "context", "space", "spaceId", "catch", "error", "loadRef", "ref", "promise", "load", "query", "queryOrFilter", "pipe", "map", "withSpan", "runQuery", "flatMap", "queryResult", "run", "Context", "Layer", "QueueService", "Context", "Tag", "notAvailable", "Layer", "succeed", "queues", "get", "dxn", "Error", "create", "contextQueue", "undefined", "make", "ContextQueueService", "Context", "Effect", "CredentialsService", "Context", "Tag", "getCredential", "query", "Effect", "gen", "credentials", "promise", "ConfiguredCredentialsService", "addCredentials", "push", "queryCredentials", "filter", "credential", "service", "find", "Error", "Effect", "Context", "invariant", "log", "LogLevel", "EventLogger", "Tag", "noop", "nodeId", "undefined", "logCustomEvent", "data", "gen", "logger", "Error", "type", "event", "createDefectLogger", "catchAll", "error", "createEventLogger", "level", "message", "logFunction", "WARN", "warn", "VERBOSE", "verbose", "DEBUG", "debug", "INFO", "info", "ERROR", "Context", "FunctionCallService", "Context", "Tag", "fromClient", "baseUrl", "spaceId", "callFunction", "deployedFunctionId", "input", "url", "getInvocationUrl", "result", "fetch", "method", "headers", "body", "JSON", "stringify", "status", "Error", "cause", "text", "json", "mock", "functionUrl", "edgeUrl", "options", "URL", "relativeUrl", "replace", "toString", "searchParams", "set", "subjectId", "protocol", "isSecure", "Context", "Effect", "AgentStatus", "Obj", "TracingService", "Context", "Tag", "noop", "write", "console", "event", "log", "emitStatus", "Effect", "fnUntraced", "data", "tracing", "Obj", "make", "AgentStatus", "Layer", "AiService", "entries", "SERVICES", "ai", "AiService", "credentials", "CredentialsService", "database", "DatabaseService", "eventLogger", "EventLogger", "functionCallService", "FunctionCallService", "queues", "QueueService", "tracing", "TracingService", "SERVICE_MAPPING", "Object", "fromEntries", "entries", "map", "name", "tag", "key", "SERVICE_TAGS", "values", "DEFAULT_SERVICES", "noop", "ServiceContainer", "_services", "setServices", "services", "getService", "serviceKey", "service", "undefined", "Error", "clone", "createLayer", "Layer", "succeed", "notAvailable", "ConfiguredCredentialsService", "mock", "mergeAll"]
7
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/edge/functions.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { type DID } from 'iso-did/types';\n\nimport { type Client } from '@dxos/client';\nimport { createEdgeIdentity } from '@dxos/client/edge';\nimport { EdgeHttpClient } from '@dxos/edge-client';\nimport { invariant } from '@dxos/invariant';\nimport type { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type UploadFunctionResponseBody } from '@dxos/protocols';\n\nexport type UploadWorkerArgs = {\n client: Client;\n source: string;\n version: string;\n name?: string;\n functionId?: string;\n ownerPublicKey: PublicKey;\n};\n\nexport const uploadWorkerFunction = async ({\n client,\n version,\n source,\n name,\n functionId,\n ownerPublicKey,\n}: UploadWorkerArgs): Promise<UploadFunctionResponseBody> => {\n const edgeUrl = client.config.values.runtime?.services?.edge?.url;\n invariant(edgeUrl, 'Edge is not configured.');\n const edgeClient = new EdgeHttpClient(edgeUrl);\n const edgeIdentity = createEdgeIdentity(client);\n edgeClient.setIdentity(edgeIdentity);\n const response = await edgeClient.uploadFunction(\n { functionId },\n { name, version, script: source, ownerPublicKey: ownerPublicKey.toHex() },\n );\n\n // TODO(burdon): Edge service log.\n log.info('Uploaded', {\n identityKey: edgeIdentity.identityKey,\n functionId,\n name,\n source: source.length,\n response,\n });\n\n return response;\n};\n\nexport const incrementSemverPatch = (version: string): string => {\n const [major, minor, patch] = version.split('.');\n const patchNum = Number(patch);\n invariant(!Number.isNaN(patchNum), `Unexpected function version format: ${version}`);\n return [major, minor, String(patchNum + 1)].join('.');\n};\n\n// TODO(burdon): Factor out.\nexport const publicKeyToDid = (key: PublicKey): DID => {\n return `did:key:${key.toHex()}`;\n};\n"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { type DID } from 'iso-did/types';\n\nimport { type Client } from '@dxos/client';\nimport { createEdgeIdentity } from '@dxos/client/edge';\nimport { EdgeHttpClient } from '@dxos/edge-client';\nimport { invariant } from '@dxos/invariant';\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type UploadFunctionResponseBody } from '@dxos/protocols';\n\nexport type UploadWorkerArgs = {\n client: Client;\n source: string;\n version: string;\n name?: string;\n functionId?: string;\n ownerPublicKey: PublicKey;\n};\n\nexport const uploadWorkerFunction = async ({\n client,\n version,\n source,\n name,\n functionId,\n ownerPublicKey,\n}: UploadWorkerArgs): Promise<UploadFunctionResponseBody> => {\n const edgeUrl = client.config.values.runtime?.services?.edge?.url;\n invariant(edgeUrl, 'Edge is not configured.');\n const edgeClient = new EdgeHttpClient(edgeUrl);\n const edgeIdentity = createEdgeIdentity(client);\n edgeClient.setIdentity(edgeIdentity);\n const response = await edgeClient.uploadFunction(\n { functionId },\n { name, version, script: source, ownerPublicKey: ownerPublicKey.toHex() },\n );\n\n // TODO(burdon): Edge service log.\n log.info('Uploaded', {\n identityKey: edgeIdentity.identityKey,\n functionId,\n name,\n source: source.length,\n response,\n });\n\n return response;\n};\n\nexport const incrementSemverPatch = (version: string): string => {\n const [major, minor, patch] = version.split('.');\n const patchNum = Number(patch);\n invariant(!Number.isNaN(patchNum), `Unexpected function version format: ${version}`);\n return [major, minor, String(patchNum + 1)].join('.');\n};\n\n// TODO(burdon): Factor out.\nexport const publicKeyToDid = (key: PublicKey): DID => {\n return `did:key:${key.toHex()}`;\n};\n"],
5
5
  "mappings": ";;;AAOA,SAASA,0BAA0B;AACnC,SAASC,sBAAsB;AAC/B,SAASC,iBAAiB;AAE1B,SAASC,WAAW;;AAYb,IAAMC,uBAAuB,OAAO,EACzCC,QACAC,SACAC,QACAC,MACAC,YACAC,eAAc,MACG;AACjB,QAAMC,UAAUN,OAAOO,OAAOC,OAAOC,SAASC,UAAUC,MAAMC;AAC9Df,YAAUS,SAAS,2BAAA;;;;;;;;;AACnB,QAAMO,aAAa,IAAIjB,eAAeU,OAAAA;AACtC,QAAMQ,eAAenB,mBAAmBK,MAAAA;AACxCa,aAAWE,YAAYD,YAAAA;AACvB,QAAME,WAAW,MAAMH,WAAWI,eAChC;IAAEb;EAAW,GACb;IAAED;IAAMF;IAASiB,QAAQhB;IAAQG,gBAAgBA,eAAec,MAAK;EAAG,CAAA;AAI1ErB,MAAIsB,KAAK,YAAY;IACnBC,aAAaP,aAAaO;IAC1BjB;IACAD;IACAD,QAAQA,OAAOoB;IACfN;EACF,GAAA;;;;;;AAEA,SAAOA;AACT;AAEO,IAAMO,uBAAuB,CAACtB,YAAAA;AACnC,QAAM,CAACuB,OAAOC,OAAOC,KAAAA,IAASzB,QAAQ0B,MAAM,GAAA;AAC5C,QAAMC,WAAWC,OAAOH,KAAAA;AACxB7B,YAAU,CAACgC,OAAOC,MAAMF,QAAAA,GAAW,uCAAuC3B,OAAAA,IAAS;;;;;;;;;AACnF,SAAO;IAACuB;IAAOC;IAAOM,OAAOH,WAAW,CAAA;IAAII,KAAK,GAAA;AACnD;AAGO,IAAMC,iBAAiB,CAACC,QAAAA;AAC7B,SAAO,WAAWA,IAAIf,MAAK,CAAA;AAC7B;",
6
6
  "names": ["createEdgeIdentity", "EdgeHttpClient", "invariant", "log", "uploadWorkerFunction", "client", "version", "source", "name", "functionId", "ownerPublicKey", "edgeUrl", "config", "values", "runtime", "services", "edge", "url", "edgeClient", "edgeIdentity", "setIdentity", "response", "uploadFunction", "script", "toHex", "info", "identityKey", "length", "incrementSemverPatch", "major", "minor", "patch", "split", "patchNum", "Number", "isNaN", "String", "join", "publicKeyToDid", "key"]
7
7
  }