@dxos/functions 0.8.4-main.406dc2a → 0.8.4-main.422d1c7879

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 (231) hide show
  1. package/README.md +4 -6
  2. package/dist/lib/neutral/Trace.mjs +42 -0
  3. package/dist/lib/neutral/chunk-27Y24OTY.mjs +167 -0
  4. package/dist/lib/neutral/chunk-27Y24OTY.mjs.map +7 -0
  5. package/dist/lib/neutral/chunk-IVDUS56O.mjs +49 -0
  6. package/dist/lib/neutral/chunk-IVDUS56O.mjs.map +7 -0
  7. package/dist/lib/neutral/fib-N45KAC7C.mjs +23 -0
  8. package/dist/lib/neutral/fib-N45KAC7C.mjs.map +7 -0
  9. package/dist/lib/neutral/index.mjs +1218 -0
  10. package/dist/lib/neutral/index.mjs.map +7 -0
  11. package/dist/lib/neutral/meta.json +1 -0
  12. package/dist/lib/neutral/reply-EUEPKNJF.mjs +19 -0
  13. package/dist/lib/neutral/reply-EUEPKNJF.mjs.map +7 -0
  14. package/dist/lib/neutral/sleep-PUK3D4FF.mjs +15 -0
  15. package/dist/lib/neutral/sleep-PUK3D4FF.mjs.map +7 -0
  16. package/dist/types/src/Trace.d.ts +174 -0
  17. package/dist/types/src/Trace.d.ts.map +1 -0
  18. package/dist/types/src/errors.d.ts +44 -60
  19. package/dist/types/src/errors.d.ts.map +1 -1
  20. package/dist/types/src/example/definitions.d.ts +11 -0
  21. package/dist/types/src/example/definitions.d.ts.map +1 -0
  22. package/dist/types/src/example/fib.d.ts +8 -0
  23. package/dist/types/src/example/fib.d.ts.map +1 -0
  24. package/dist/types/src/example/forex-effect.d.ts +3 -0
  25. package/dist/types/src/example/forex-effect.d.ts.map +1 -0
  26. package/dist/types/src/example/index.d.ts +4 -0
  27. package/dist/types/src/example/index.d.ts.map +1 -0
  28. package/dist/types/src/example/reply.d.ts +4 -0
  29. package/dist/types/src/example/reply.d.ts.map +1 -0
  30. package/dist/types/src/example/sleep.d.ts +6 -0
  31. package/dist/types/src/example/sleep.d.ts.map +1 -0
  32. package/dist/types/src/index.d.ts +8 -8
  33. package/dist/types/src/index.d.ts.map +1 -1
  34. package/dist/types/src/process/Process.d.ts +246 -0
  35. package/dist/types/src/process/Process.d.ts.map +1 -0
  36. package/dist/types/src/process/ServiceResolver.d.ts +74 -0
  37. package/dist/types/src/process/ServiceResolver.d.ts.map +1 -0
  38. package/dist/types/src/process/StorageService.d.ts +58 -0
  39. package/dist/types/src/process/StorageService.d.ts.map +1 -0
  40. package/dist/types/src/protocol/functions-ai-http-client.d.ts +12 -0
  41. package/dist/types/src/protocol/functions-ai-http-client.d.ts.map +1 -0
  42. package/dist/types/src/protocol/index.d.ts +2 -0
  43. package/dist/types/src/protocol/index.d.ts.map +1 -0
  44. package/dist/types/src/protocol/protocol.d.ts +7 -0
  45. package/dist/types/src/protocol/protocol.d.ts.map +1 -0
  46. package/dist/types/src/protocol/protocol.test.d.ts +2 -0
  47. package/dist/types/src/protocol/protocol.test.d.ts.map +1 -0
  48. package/dist/types/src/sdk.d.ts +11 -0
  49. package/dist/types/src/sdk.d.ts.map +1 -0
  50. package/dist/types/src/services/credentials.d.ts +6 -4
  51. package/dist/types/src/services/credentials.d.ts.map +1 -1
  52. package/dist/types/src/services/event-logger.d.ts +34 -32
  53. package/dist/types/src/services/event-logger.d.ts.map +1 -1
  54. package/dist/types/src/services/function-invocation-service.d.ts +7 -19
  55. package/dist/types/src/services/function-invocation-service.d.ts.map +1 -1
  56. package/dist/types/src/services/index.d.ts +3 -5
  57. package/dist/types/src/services/index.d.ts.map +1 -1
  58. package/dist/types/src/services/queues.d.ts +8 -5
  59. package/dist/types/src/services/queues.d.ts.map +1 -1
  60. package/dist/types/src/services/tracing.d.ts +1 -55
  61. package/dist/types/src/services/tracing.d.ts.map +1 -1
  62. package/dist/types/src/types/Script.d.ts +22 -0
  63. package/dist/types/src/types/Script.d.ts.map +1 -0
  64. package/dist/types/src/types/Trigger.d.ts +150 -0
  65. package/dist/types/src/types/Trigger.d.ts.map +1 -0
  66. package/dist/types/src/types/TriggerEvent.d.ts +75 -0
  67. package/dist/types/src/types/TriggerEvent.d.ts.map +1 -0
  68. package/dist/types/src/types/index.d.ts +5 -0
  69. package/dist/types/src/types/index.d.ts.map +1 -0
  70. package/dist/types/src/types/url.d.ts +13 -0
  71. package/dist/types/src/types/url.d.ts.map +1 -0
  72. package/dist/types/tsconfig.tsbuildinfo +1 -1
  73. package/package.json +29 -62
  74. package/src/Trace.ts +225 -0
  75. package/src/errors.ts +5 -5
  76. package/src/example/definitions.ts +49 -0
  77. package/src/example/fib.ts +23 -0
  78. package/src/example/forex-effect.ts +40 -0
  79. package/src/example/index.ts +12 -0
  80. package/src/example/reply.ts +19 -0
  81. package/src/example/sleep.ts +17 -0
  82. package/src/index.ts +8 -8
  83. package/src/process/Process.ts +487 -0
  84. package/src/process/ServiceResolver.ts +174 -0
  85. package/src/process/StorageService.ts +99 -0
  86. package/src/protocol/functions-ai-http-client.ts +67 -0
  87. package/src/{executor → protocol}/index.ts +1 -1
  88. package/src/protocol/protocol.test.ts +58 -0
  89. package/src/protocol/protocol.ts +273 -0
  90. package/src/sdk.ts +30 -0
  91. package/src/services/credentials.ts +32 -17
  92. package/src/services/event-logger.ts +11 -21
  93. package/src/services/function-invocation-service.ts +20 -69
  94. package/src/services/index.ts +3 -5
  95. package/src/services/queues.ts +15 -8
  96. package/src/services/tracing.ts +1 -136
  97. package/src/types/Script.ts +38 -0
  98. package/src/types/Trigger.ts +207 -0
  99. package/src/types/TriggerEvent.ts +62 -0
  100. package/src/types/index.ts +8 -0
  101. package/src/types/url.ts +32 -0
  102. package/dist/lib/browser/bundler/index.mjs +0 -269
  103. package/dist/lib/browser/bundler/index.mjs.map +0 -7
  104. package/dist/lib/browser/chunk-LKYT2SAL.mjs +0 -665
  105. package/dist/lib/browser/chunk-LKYT2SAL.mjs.map +0 -7
  106. package/dist/lib/browser/edge/index.mjs +0 -83
  107. package/dist/lib/browser/edge/index.mjs.map +0 -7
  108. package/dist/lib/browser/index.mjs +0 -1395
  109. package/dist/lib/browser/index.mjs.map +0 -7
  110. package/dist/lib/browser/meta.json +0 -1
  111. package/dist/lib/browser/testing/index.mjs +0 -131
  112. package/dist/lib/browser/testing/index.mjs.map +0 -7
  113. package/dist/lib/node-esm/bundler/index.mjs +0 -270
  114. package/dist/lib/node-esm/bundler/index.mjs.map +0 -7
  115. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  116. package/dist/lib/node-esm/chunk-NAQIKLZB.mjs +0 -667
  117. package/dist/lib/node-esm/chunk-NAQIKLZB.mjs.map +0 -7
  118. package/dist/lib/node-esm/edge/index.mjs +0 -84
  119. package/dist/lib/node-esm/edge/index.mjs.map +0 -7
  120. package/dist/lib/node-esm/index.mjs +0 -1396
  121. package/dist/lib/node-esm/index.mjs.map +0 -7
  122. package/dist/lib/node-esm/meta.json +0 -1
  123. package/dist/lib/node-esm/testing/index.mjs +0 -132
  124. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  125. package/dist/types/src/bundler/bundler.d.ts +0 -49
  126. package/dist/types/src/bundler/bundler.d.ts.map +0 -1
  127. package/dist/types/src/bundler/bundler.test.d.ts +0 -2
  128. package/dist/types/src/bundler/bundler.test.d.ts.map +0 -1
  129. package/dist/types/src/bundler/index.d.ts +0 -2
  130. package/dist/types/src/bundler/index.d.ts.map +0 -1
  131. package/dist/types/src/edge/functions.d.ts +0 -17
  132. package/dist/types/src/edge/functions.d.ts.map +0 -1
  133. package/dist/types/src/edge/index.d.ts +0 -2
  134. package/dist/types/src/edge/index.d.ts.map +0 -1
  135. package/dist/types/src/examples/fib.d.ts +0 -7
  136. package/dist/types/src/examples/fib.d.ts.map +0 -1
  137. package/dist/types/src/examples/index.d.ts +0 -4
  138. package/dist/types/src/examples/index.d.ts.map +0 -1
  139. package/dist/types/src/examples/reply.d.ts +0 -3
  140. package/dist/types/src/examples/reply.d.ts.map +0 -1
  141. package/dist/types/src/examples/sleep.d.ts +0 -5
  142. package/dist/types/src/examples/sleep.d.ts.map +0 -1
  143. package/dist/types/src/executor/executor.d.ts +0 -14
  144. package/dist/types/src/executor/executor.d.ts.map +0 -1
  145. package/dist/types/src/executor/index.d.ts +0 -2
  146. package/dist/types/src/executor/index.d.ts.map +0 -1
  147. package/dist/types/src/handler.d.ts +0 -109
  148. package/dist/types/src/handler.d.ts.map +0 -1
  149. package/dist/types/src/schema.d.ts +0 -43
  150. package/dist/types/src/schema.d.ts.map +0 -1
  151. package/dist/types/src/services/database.d.ts +0 -67
  152. package/dist/types/src/services/database.d.ts.map +0 -1
  153. package/dist/types/src/services/function-invocation-service.test.d.ts +0 -2
  154. package/dist/types/src/services/function-invocation-service.test.d.ts.map +0 -1
  155. package/dist/types/src/services/local-function-execution.d.ts +0 -34
  156. package/dist/types/src/services/local-function-execution.d.ts.map +0 -1
  157. package/dist/types/src/services/remote-function-execution-service.d.ts +0 -22
  158. package/dist/types/src/services/remote-function-execution-service.d.ts.map +0 -1
  159. package/dist/types/src/services/service-container.d.ts +0 -57
  160. package/dist/types/src/services/service-container.d.ts.map +0 -1
  161. package/dist/types/src/services/service-registry.d.ts +0 -31
  162. package/dist/types/src/services/service-registry.d.ts.map +0 -1
  163. package/dist/types/src/services/service-registry.test.d.ts +0 -2
  164. package/dist/types/src/services/service-registry.test.d.ts.map +0 -1
  165. package/dist/types/src/testing/index.d.ts +0 -3
  166. package/dist/types/src/testing/index.d.ts.map +0 -1
  167. package/dist/types/src/testing/layer.d.ts +0 -18
  168. package/dist/types/src/testing/layer.d.ts.map +0 -1
  169. package/dist/types/src/testing/logger.d.ts +0 -5
  170. package/dist/types/src/testing/logger.d.ts.map +0 -1
  171. package/dist/types/src/testing/persist-database.test.d.ts +0 -2
  172. package/dist/types/src/testing/persist-database.test.d.ts.map +0 -1
  173. package/dist/types/src/testing/services.d.ts +0 -59
  174. package/dist/types/src/testing/services.d.ts.map +0 -1
  175. package/dist/types/src/trace.d.ts +0 -122
  176. package/dist/types/src/trace.d.ts.map +0 -1
  177. package/dist/types/src/translations.d.ts +0 -12
  178. package/dist/types/src/translations.d.ts.map +0 -1
  179. package/dist/types/src/triggers/index.d.ts +0 -4
  180. package/dist/types/src/triggers/index.d.ts.map +0 -1
  181. package/dist/types/src/triggers/input-builder.d.ts +0 -3
  182. package/dist/types/src/triggers/input-builder.d.ts.map +0 -1
  183. package/dist/types/src/triggers/invocation-tracer.d.ts +0 -37
  184. package/dist/types/src/triggers/invocation-tracer.d.ts.map +0 -1
  185. package/dist/types/src/triggers/trigger-dispatcher.d.ts +0 -78
  186. package/dist/types/src/triggers/trigger-dispatcher.d.ts.map +0 -1
  187. package/dist/types/src/triggers/trigger-dispatcher.test.d.ts +0 -2
  188. package/dist/types/src/triggers/trigger-dispatcher.test.d.ts.map +0 -1
  189. package/dist/types/src/triggers/trigger-state-store.d.ts +0 -28
  190. package/dist/types/src/triggers/trigger-state-store.d.ts.map +0 -1
  191. package/dist/types/src/types.d.ts +0 -230
  192. package/dist/types/src/types.d.ts.map +0 -1
  193. package/dist/types/src/url.d.ts +0 -21
  194. package/dist/types/src/url.d.ts.map +0 -1
  195. package/src/bundler/bundler.test.ts +0 -58
  196. package/src/bundler/bundler.ts +0 -295
  197. package/src/bundler/index.ts +0 -5
  198. package/src/edge/functions.ts +0 -67
  199. package/src/edge/index.ts +0 -9
  200. package/src/examples/fib.ts +0 -32
  201. package/src/examples/index.ts +0 -7
  202. package/src/examples/reply.ts +0 -21
  203. package/src/examples/sleep.ts +0 -24
  204. package/src/executor/executor.ts +0 -58
  205. package/src/handler.ts +0 -225
  206. package/src/schema.ts +0 -71
  207. package/src/services/database.ts +0 -175
  208. package/src/services/function-invocation-service.test.ts +0 -81
  209. package/src/services/local-function-execution.ts +0 -153
  210. package/src/services/remote-function-execution-service.ts +0 -63
  211. package/src/services/service-container.ts +0 -115
  212. package/src/services/service-registry.test.ts +0 -45
  213. package/src/services/service-registry.ts +0 -63
  214. package/src/testing/index.ts +0 -6
  215. package/src/testing/layer.ts +0 -114
  216. package/src/testing/logger.ts +0 -17
  217. package/src/testing/persist-database.test.ts +0 -87
  218. package/src/testing/services.ts +0 -115
  219. package/src/trace.ts +0 -178
  220. package/src/translations.ts +0 -20
  221. package/src/triggers/index.ts +0 -7
  222. package/src/triggers/input-builder.ts +0 -35
  223. package/src/triggers/invocation-tracer.ts +0 -101
  224. package/src/triggers/trigger-dispatcher.test.ts +0 -665
  225. package/src/triggers/trigger-dispatcher.ts +0 -533
  226. package/src/triggers/trigger-state-store.ts +0 -61
  227. package/src/types.ts +0 -218
  228. package/src/url.ts +0 -55
  229. /package/dist/lib/{browser/chunk-J5LGTIGS.mjs.map → neutral/Trace.mjs.map} +0 -0
  230. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
  231. /package/dist/lib/{node-esm/chunk-HSLMI22Q.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
package/README.md CHANGED
@@ -27,11 +27,9 @@ import { FunctionContext } from '@dxos/functions';
27
27
 
28
28
  export default (event: any, context: FunctionContext) => {
29
29
  const identity = context.client.halo.identity.get();
30
- return context
31
- .status(200)
32
- .succeed({
33
- message: `Hello ${identity?.profile?.displayName}`
34
- });
30
+ return context.status(200).succeed({
31
+ message: `Hello ${identity?.profile?.displayName}`,
32
+ });
35
33
  };
36
34
  ```
37
35
 
@@ -69,7 +67,7 @@ nodemon -w ./src -e ts --exec $(git rev-parse --show-toplevel)/packages/devtools
69
67
  > NOTE: The port (7001) must match the one in config.
70
68
 
71
69
  ```bash
72
- curl http://localhost:7001/dev/hello -X POST -H 'Content-Type: application/json' -w '\n' --data '{ "message": "Hello World!" }'
70
+ curl http://localhost:7001/dev/hello -X POST -H 'Content-Type: application/json' -w '\n' --data '{ "message": "Hello World!" }'
73
71
  ```
74
72
 
75
73
  ## DXOS Resources
@@ -0,0 +1,42 @@
1
+ import {
2
+ Event,
3
+ EventType,
4
+ Message,
5
+ MessageData,
6
+ Meta,
7
+ OperationEnd,
8
+ OperationStart,
9
+ StatusUpdate,
10
+ TraceService,
11
+ TraceSink,
12
+ emitStatus,
13
+ isOfType,
14
+ layerConsole,
15
+ layerNoop,
16
+ noopWriter,
17
+ testTraceService,
18
+ write,
19
+ writerLayerNoop
20
+ } from "./chunk-27Y24OTY.mjs";
21
+ import "./chunk-J5LGTIGS.mjs";
22
+ export {
23
+ Event,
24
+ EventType,
25
+ Message,
26
+ MessageData,
27
+ Meta,
28
+ OperationEnd,
29
+ OperationStart,
30
+ StatusUpdate,
31
+ TraceService,
32
+ TraceSink,
33
+ emitStatus,
34
+ isOfType,
35
+ layerConsole,
36
+ layerNoop,
37
+ noopWriter,
38
+ testTraceService,
39
+ write,
40
+ writerLayerNoop
41
+ };
42
+ //# sourceMappingURL=Trace.mjs.map
@@ -0,0 +1,167 @@
1
+ import {
2
+ __export
3
+ } from "./chunk-J5LGTIGS.mjs";
4
+
5
+ // src/Trace.ts
6
+ var Trace_exports = {};
7
+ __export(Trace_exports, {
8
+ Event: () => Event,
9
+ EventType: () => EventType,
10
+ Message: () => Message,
11
+ MessageData: () => MessageData,
12
+ Meta: () => Meta,
13
+ OperationEnd: () => OperationEnd,
14
+ OperationStart: () => OperationStart,
15
+ StatusUpdate: () => StatusUpdate,
16
+ TraceService: () => TraceService,
17
+ TraceSink: () => TraceSink,
18
+ emitStatus: () => emitStatus,
19
+ isOfType: () => isOfType,
20
+ layerConsole: () => layerConsole,
21
+ layerNoop: () => layerNoop,
22
+ noopWriter: () => noopWriter,
23
+ testTraceService: () => testTraceService,
24
+ write: () => write,
25
+ writerLayerNoop: () => writerLayerNoop
26
+ });
27
+ import * as Context from "effect/Context";
28
+ import * as Effect from "effect/Effect";
29
+ import * as Layer from "effect/Layer";
30
+ import * as Schema from "effect/Schema";
31
+ import { Annotation, Obj, Type } from "@dxos/echo";
32
+ var TraceService = class extends Context.Tag("@dxos/functions/TraceService")() {
33
+ };
34
+ var write = Effect.serviceFunction(TraceService, (_) => _.write);
35
+ var EventType = (key, opts) => {
36
+ return {
37
+ key,
38
+ schema: opts.schema,
39
+ isEphemeral: opts.isEphemeral
40
+ };
41
+ };
42
+ var Event = Schema.Struct({
43
+ timestamp: Schema.Number,
44
+ type: Schema.String,
45
+ data: Schema.Unknown
46
+ });
47
+ var isOfType = (eventType, event) => {
48
+ return event.type === eventType.key;
49
+ };
50
+ var Meta = Schema.Struct({
51
+ pid: Schema.optional(Schema.String),
52
+ parentPid: Schema.optional(Schema.String),
53
+ processName: Schema.optional(Schema.String),
54
+ /**
55
+ * ID of the conversation feed object if present.
56
+ */
57
+ conversationId: Schema.optional(Obj.ID),
58
+ /**
59
+ * ID of the trigger object if invocation resulted from a trigger.
60
+ */
61
+ triggerId: Schema.optional(Obj.ID),
62
+ /**
63
+ * ID of the tool call that created the current process.
64
+ */
65
+ toolCallId: Schema.optional(Schema.String)
66
+ });
67
+ var MessageData = Schema.Struct({
68
+ meta: Meta,
69
+ isEphemeral: Schema.Boolean,
70
+ events: Schema.Array(Event)
71
+ });
72
+ var Message = MessageData.pipe(Type.object({
73
+ typename: "org.dxos.type.traceMessage",
74
+ version: "0.1.0"
75
+ }), Annotation.IconAnnotation.set({
76
+ icon: "ph--note--regular",
77
+ hue: "rose"
78
+ }));
79
+ var TraceSink = class extends Context.Tag("@dxos/functions/TraceSink")() {
80
+ };
81
+ var noopWriter = {
82
+ write: () => {
83
+ }
84
+ };
85
+ var writerLayerNoop = Layer.succeed(TraceService, noopWriter);
86
+ var layerNoop = Layer.succeed(TraceSink, {
87
+ write: () => {
88
+ }
89
+ });
90
+ var layerConsole = Layer.succeed(TraceSink, {
91
+ write: (message) => {
92
+ console.log(message);
93
+ }
94
+ });
95
+ var testTraceService = (opts = {}) => Layer.effect(TraceService, Effect.gen(function* () {
96
+ const sink = yield* TraceSink;
97
+ return {
98
+ write: (event, data) => {
99
+ sink.write(Obj.make(Message, {
100
+ meta: opts.meta ?? {},
101
+ isEphemeral: event.isEphemeral,
102
+ events: [
103
+ {
104
+ type: event.key,
105
+ timestamp: Date.now(),
106
+ data
107
+ }
108
+ ]
109
+ }));
110
+ }
111
+ };
112
+ }));
113
+ var OperationStart = EventType("operation.start", {
114
+ schema: Schema.Struct({
115
+ /** Operation key. */
116
+ key: Schema.String,
117
+ /** Human-readable operation name. */
118
+ name: Schema.optional(Schema.String)
119
+ }),
120
+ isEphemeral: false
121
+ });
122
+ var OperationEnd = EventType("operation.end", {
123
+ schema: Schema.Struct({
124
+ /** Operation key. */
125
+ key: Schema.String,
126
+ /** Human-readable operation name. */
127
+ name: Schema.optional(Schema.String),
128
+ /** Outcome of the operation. */
129
+ outcome: Schema.Literal("success", "failure"),
130
+ /** Error message if the operation failed. */
131
+ error: Schema.optional(Schema.String)
132
+ }),
133
+ isEphemeral: false
134
+ });
135
+ var StatusUpdate = EventType("status.update", {
136
+ schema: Schema.Struct({
137
+ /** Human-readable status message. */
138
+ message: Schema.String
139
+ }),
140
+ isEphemeral: true
141
+ });
142
+ var emitStatus = (message) => write(StatusUpdate, {
143
+ message
144
+ });
145
+
146
+ export {
147
+ TraceService,
148
+ write,
149
+ EventType,
150
+ Event,
151
+ isOfType,
152
+ Meta,
153
+ MessageData,
154
+ Message,
155
+ TraceSink,
156
+ noopWriter,
157
+ writerLayerNoop,
158
+ layerNoop,
159
+ layerConsole,
160
+ testTraceService,
161
+ OperationStart,
162
+ OperationEnd,
163
+ StatusUpdate,
164
+ emitStatus,
165
+ Trace_exports
166
+ };
167
+ //# sourceMappingURL=chunk-27Y24OTY.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Trace.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Context from 'effect/Context';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport * as Schema from 'effect/Schema';\n\nimport { Annotation, Obj, Type } from '@dxos/echo';\n\n/**\n * Writes ephemeral or persistent events to the trace.\n * Exposed to processes and operations to record events to the trace.\n */\nexport interface TraceWriter {\n write<T>(eventType: EventType<T>, payload: NoInfer<T>): void;\n}\n\n/**\n * Service that writes events to the trace.\n * Exposed to processes and operations to record events to the trace.\n */\nexport class TraceService extends Context.Tag('@dxos/functions/TraceService')<TraceService, TraceWriter>() {}\n\n/**\n * Writes an event to the trace.\n */\nexport const write: <T>(eventType: EventType<T>, payload: NoInfer<T>) => Effect.Effect<void, never, TraceService> =\n Effect.serviceFunction(TraceService, (_) => _.write);\n\n/**\n * Defines an event type for the trace.\n */\nexport interface EventType<T> {\n readonly key: string;\n readonly schema: Schema.Schema<T, any>;\n readonly isEphemeral: boolean;\n}\n\nexport const EventType = <T>(\n key: string,\n opts: { schema: Schema.Schema<T, any>; isEphemeral: boolean },\n): EventType<T> => {\n return {\n key,\n schema: opts.schema,\n isEphemeral: opts.isEphemeral,\n };\n};\n\n/**\n * Extracts the payload type from an event type.\n */\nexport type PayloadType<E extends EventType<any>> = E extends EventType<infer T> ? T : never;\n\nexport const Event = Schema.Struct({\n timestamp: Schema.Number,\n type: Schema.String,\n data: Schema.Unknown, // Type-specific payload;\n});\nexport interface Event extends Schema.Schema.Type<typeof Event> {}\n\n/**\n * Checks if an event is of a given type.\n */\nexport const isOfType = <T, E extends Event>(eventType: EventType<T>, event: E): event is E & { data: T } => {\n return event.type === eventType.key;\n};\n\n/**\n * Metadata on the context of a trace message.\n */\n// TODO(dmaretskyi): Expand on this: conversation id, tool call id, etc.\nexport const Meta = Schema.Struct({\n pid: Schema.optional(Schema.String), // NOTE: Not Process.ID to avoid circular dependency.\n parentPid: Schema.optional(Schema.String),\n processName: Schema.optional(Schema.String),\n\n /**\n * ID of the conversation feed object if present.\n */\n conversationId: Schema.optional(Obj.ID),\n\n /**\n * ID of the trigger object if invocation resulted from a trigger.\n */\n triggerId: Schema.optional(Obj.ID),\n\n /**\n * ID of the tool call that created the current process.\n */\n toolCallId: Schema.optional(Schema.String),\n});\nexport interface Meta extends Schema.Schema.Type<typeof Meta> {}\n\n/**\n * Envelope for a set of events.\n */\nexport const MessageData = Schema.Struct({\n meta: Meta,\n\n isEphemeral: Schema.Boolean,\n events: Schema.Array(Event),\n});\nexport interface MessageData extends Schema.Schema.Type<typeof MessageData> {}\n\nexport const Message = MessageData.pipe(\n Type.object({\n typename: 'org.dxos.type.traceMessage',\n version: '0.1.0',\n }),\n Annotation.IconAnnotation.set({\n icon: 'ph--note--regular',\n hue: 'rose',\n }),\n);\nexport interface Message extends Schema.Schema.Type<typeof Message> {}\n\n/**\n * Sink for complete trace messages.\n */\nexport interface Sink {\n write(message: Message): void;\n}\n\n/**\n * Sink for complete trace messages.\n * The Process Manager forwards trace messages to it.\n */\n// TODO(dmaretskyi): Consider moving sink to the Process Manager.\nexport class TraceSink extends Context.Tag('@dxos/functions/TraceSink')<TraceSink, Sink>() {}\n\nexport const noopWriter: TraceWriter = {\n write: () => {},\n};\n\nexport const writerLayerNoop: Layer.Layer<TraceService> = Layer.succeed(TraceService, noopWriter);\n\nexport const layerNoop: Layer.Layer<TraceSink> = Layer.succeed(TraceSink, {\n write: () => {},\n});\n\nexport const layerConsole: Layer.Layer<TraceSink> = Layer.succeed(TraceSink, {\n write: (message) => {\n console.log(message);\n },\n});\n\nexport const testTraceService = (opts: { meta?: Meta } = {}): Layer.Layer<TraceService, never, TraceSink> =>\n Layer.effect(\n TraceService,\n Effect.gen(function* () {\n const sink = yield* TraceSink;\n return {\n write: (event, data) => {\n sink.write(\n Obj.make(Message, {\n meta: opts.meta ?? {},\n isEphemeral: event.isEphemeral,\n events: [{ type: event.key, timestamp: Date.now(), data }],\n }),\n );\n },\n };\n }),\n );\n\n//\n// Operation Trace Events\n//\n\n/**\n * Outcome of an operation invocation.\n */\nexport type OperationOutcome = 'success' | 'failure';\n\n/**\n * Operation invocation started.\n */\nexport const OperationStart = EventType('operation.start', {\n schema: Schema.Struct({\n /** Operation key. */\n key: Schema.String,\n /** Human-readable operation name. */\n name: Schema.optional(Schema.String),\n }),\n isEphemeral: false,\n});\n\n/**\n * Operation invocation ended.\n */\nexport const OperationEnd = EventType('operation.end', {\n schema: Schema.Struct({\n /** Operation key. */\n key: Schema.String,\n /** Human-readable operation name. */\n name: Schema.optional(Schema.String),\n /** Outcome of the operation. */\n outcome: Schema.Literal('success', 'failure'),\n /** Error message if the operation failed. */\n error: Schema.optional(Schema.String),\n }),\n isEphemeral: false,\n});\n\n/**\n * Human-readable status update emitted by an agent or operation.\n */\nexport const StatusUpdate = EventType('status.update', {\n schema: Schema.Struct({\n /** Human-readable status message. */\n message: Schema.String,\n }),\n isEphemeral: true,\n});\n\n/**\n * Emit the current human-readable execution status to the trace.\n */\nexport const emitStatus: (message: string) => Effect.Effect<void, never, TraceService> = (message) =>\n write(StatusUpdate, { message });\n"],
5
+ "mappings": "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",
6
+ "names": ["Context", "Effect", "Layer", "Schema", "Annotation", "Obj", "Type", "TraceService", "Tag", "write", "serviceFunction", "_", "EventType", "key", "opts", "schema", "isEphemeral", "Event", "Struct", "timestamp", "Number", "type", "String", "data", "Unknown", "isOfType", "eventType", "event", "Meta", "pid", "optional", "parentPid", "processName", "conversationId", "Obj", "ID", "triggerId", "toolCallId", "MessageData", "meta", "Boolean", "events", "Array", "Message", "pipe", "Type", "object", "typename", "version", "Annotation", "IconAnnotation", "set", "icon", "hue", "TraceSink", "noopWriter", "writerLayerNoop", "succeed", "layerNoop", "layerConsole", "message", "console", "log", "testTraceService", "effect", "gen", "sink", "make", "Date", "now", "OperationStart", "name", "OperationEnd", "outcome", "Literal", "error", "StatusUpdate", "emitStatus"]
7
+ }
@@ -0,0 +1,49 @@
1
+ // src/example/definitions.ts
2
+ import * as Schema from "effect/Schema";
3
+ import { Operation } from "@dxos/operation";
4
+ var Fibonacci = Operation.make({
5
+ meta: {
6
+ key: "example.org/function/fib",
7
+ name: "Fibonacci",
8
+ description: "Function that calculates a Fibonacci number"
9
+ },
10
+ input: Schema.Struct({
11
+ iterations: Schema.optional(Schema.Number).annotations({
12
+ description: "Number of iterations",
13
+ default: 1e5
14
+ })
15
+ }),
16
+ output: Schema.Struct({
17
+ result: Schema.String
18
+ })
19
+ });
20
+ var Reply = Operation.make({
21
+ meta: {
22
+ key: "example.org/function/reply",
23
+ name: "Reply",
24
+ description: "Function that echoes the input"
25
+ },
26
+ input: Schema.Any,
27
+ output: Schema.Any
28
+ });
29
+ var Sleep = Operation.make({
30
+ meta: {
31
+ key: "example.org/function/sleep",
32
+ name: "Sleep",
33
+ description: "Function that sleeps for a given amount of time"
34
+ },
35
+ input: Schema.Struct({
36
+ duration: Schema.optional(Schema.Number).annotations({
37
+ description: "Milliseconds to sleep",
38
+ default: 1e5
39
+ })
40
+ }),
41
+ output: Schema.Void
42
+ });
43
+
44
+ export {
45
+ Fibonacci,
46
+ Reply,
47
+ Sleep
48
+ };
49
+ //# sourceMappingURL=chunk-IVDUS56O.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/example/definitions.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Operation } from '@dxos/operation';\n\nexport const Fibonacci = Operation.make({\n meta: {\n key: 'example.org/function/fib',\n name: 'Fibonacci',\n description: 'Function that calculates a Fibonacci number',\n },\n input: Schema.Struct({\n iterations: Schema.optional(Schema.Number).annotations({\n description: 'Number of iterations',\n default: 100_000,\n }),\n }),\n output: Schema.Struct({\n result: Schema.String,\n }),\n});\n\nexport const Reply = Operation.make({\n meta: {\n key: 'example.org/function/reply',\n name: 'Reply',\n description: 'Function that echoes the input',\n },\n input: Schema.Any,\n output: Schema.Any,\n});\n\nexport const Sleep = Operation.make({\n meta: {\n key: 'example.org/function/sleep',\n name: 'Sleep',\n description: 'Function that sleeps for a given amount of time',\n },\n input: Schema.Struct({\n duration: Schema.optional(Schema.Number).annotations({\n description: 'Milliseconds to sleep',\n default: 100_000,\n }),\n }),\n output: Schema.Void,\n});\n"],
5
+ "mappings": ";AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiB;AAEnB,IAAMC,YAAYC,UAAUC,KAAK;EACtCC,MAAM;IACJC,KAAK;IACLC,MAAM;IACNC,aAAa;EACf;EACAC,OAAcC,cAAO;IACnBC,YAAmBC,gBAAgBC,aAAM,EAAEC,YAAY;MACrDN,aAAa;MACbO,SAAS;IACX,CAAA;EACF,CAAA;EACAC,QAAeN,cAAO;IACpBO,QAAeC;EACjB,CAAA;AACF,CAAA;AAEO,IAAMC,QAAQhB,UAAUC,KAAK;EAClCC,MAAM;IACJC,KAAK;IACLC,MAAM;IACNC,aAAa;EACf;EACAC,OAAcW;EACdJ,QAAeI;AACjB,CAAA;AAEO,IAAMC,QAAQlB,UAAUC,KAAK;EAClCC,MAAM;IACJC,KAAK;IACLC,MAAM;IACNC,aAAa;EACf;EACAC,OAAcC,cAAO;IACnBY,UAAiBV,gBAAgBC,aAAM,EAAEC,YAAY;MACnDN,aAAa;MACbO,SAAS;IACX,CAAA;EACF,CAAA;EACAC,QAAeO;AACjB,CAAA;",
6
+ "names": ["Schema", "Operation", "Fibonacci", "Operation", "make", "meta", "key", "name", "description", "input", "Struct", "iterations", "optional", "Number", "annotations", "default", "output", "result", "String", "Reply", "Any", "Sleep", "duration", "Void"]
7
+ }
@@ -0,0 +1,23 @@
1
+ import {
2
+ Fibonacci
3
+ } from "./chunk-IVDUS56O.mjs";
4
+ import "./chunk-J5LGTIGS.mjs";
5
+
6
+ // src/example/fib.ts
7
+ import * as Effect from "effect/Effect";
8
+ import { Operation } from "@dxos/operation";
9
+ var fib_default = Fibonacci.pipe(Operation.withHandler(Effect.fn(function* ({ iterations = 1e5 }) {
10
+ let a = 0n;
11
+ let b = 1n;
12
+ for (let i = 0; i < iterations; i++) {
13
+ a += b;
14
+ b = a - b;
15
+ }
16
+ return {
17
+ result: a.toString()
18
+ };
19
+ })));
20
+ export {
21
+ fib_default as default
22
+ };
23
+ //# sourceMappingURL=fib-N45KAC7C.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/example/fib.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Operation } from '@dxos/operation';\n\nimport { Fibonacci } from './definitions';\n\nexport default Fibonacci.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ iterations = 100_000 }) {\n let a = 0n;\n let b = 1n;\n for (let i = 0; i < iterations; i++) {\n a += b;\n b = a - b;\n }\n return { result: a.toString() };\n }),\n ),\n);\n"],
5
+ "mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiB;AAI1B,IAAA,cAAeC,UAAUC,KACvBC,UAAUC,YACDC,UAAG,WAAW,EAAEC,aAAa,IAAO,GAAE;AAC3C,MAAIC,IAAI;AACR,MAAIC,IAAI;AACR,WAASC,IAAI,GAAGA,IAAIH,YAAYG,KAAK;AACnCF,SAAKC;AACLA,QAAID,IAAIC;EACV;AACA,SAAO;IAAEE,QAAQH,EAAEI,SAAQ;EAAG;AAChC,CAAA,CAAA,CAAA;",
6
+ "names": ["Effect", "Operation", "Fibonacci", "pipe", "Operation", "withHandler", "fn", "iterations", "a", "b", "i", "result", "toString"]
7
+ }