@arke-institute/rhiza 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/README.md +106 -0
  2. package/dist/__tests__/fixtures/index.d.ts +9 -0
  3. package/dist/__tests__/fixtures/index.d.ts.map +1 -0
  4. package/dist/__tests__/fixtures/index.js +12 -0
  5. package/dist/__tests__/fixtures/index.js.map +1 -0
  6. package/dist/__tests__/fixtures/kladoi/index.d.ts +165 -0
  7. package/dist/__tests__/fixtures/kladoi/index.d.ts.map +1 -0
  8. package/dist/__tests__/fixtures/kladoi/index.js +270 -0
  9. package/dist/__tests__/fixtures/kladoi/index.js.map +1 -0
  10. package/dist/__tests__/fixtures/logs/index.d.ts +19 -0
  11. package/dist/__tests__/fixtures/logs/index.d.ts.map +1 -0
  12. package/dist/__tests__/fixtures/logs/index.js +545 -0
  13. package/dist/__tests__/fixtures/logs/index.js.map +1 -0
  14. package/dist/__tests__/fixtures/mock-client.d.ts +127 -0
  15. package/dist/__tests__/fixtures/mock-client.d.ts.map +1 -0
  16. package/dist/__tests__/fixtures/mock-client.js +415 -0
  17. package/dist/__tests__/fixtures/mock-client.js.map +1 -0
  18. package/dist/__tests__/fixtures/rhizai/index.d.ts +54 -0
  19. package/dist/__tests__/fixtures/rhizai/index.d.ts.map +1 -0
  20. package/dist/__tests__/fixtures/rhizai/index.js +283 -0
  21. package/dist/__tests__/fixtures/rhizai/index.js.map +1 -0
  22. package/dist/__tests__/unit/fixtures.test.d.ts +10 -0
  23. package/dist/__tests__/unit/fixtures.test.d.ts.map +1 -0
  24. package/dist/__tests__/unit/fixtures.test.js +275 -0
  25. package/dist/__tests__/unit/fixtures.test.js.map +1 -0
  26. package/dist/__tests__/unit/handoff/gather.test.d.ts +8 -0
  27. package/dist/__tests__/unit/handoff/gather.test.d.ts.map +1 -0
  28. package/dist/__tests__/unit/handoff/gather.test.js +176 -0
  29. package/dist/__tests__/unit/handoff/gather.test.js.map +1 -0
  30. package/dist/__tests__/unit/handoff/interpret.test.d.ts +9 -0
  31. package/dist/__tests__/unit/handoff/interpret.test.d.ts.map +1 -0
  32. package/dist/__tests__/unit/handoff/interpret.test.js +370 -0
  33. package/dist/__tests__/unit/handoff/interpret.test.js.map +1 -0
  34. package/dist/__tests__/unit/handoff/route.test.d.ts +8 -0
  35. package/dist/__tests__/unit/handoff/route.test.d.ts.map +1 -0
  36. package/dist/__tests__/unit/handoff/route.test.js +271 -0
  37. package/dist/__tests__/unit/handoff/route.test.js.map +1 -0
  38. package/dist/__tests__/unit/handoff/scatter.test.d.ts +7 -0
  39. package/dist/__tests__/unit/handoff/scatter.test.d.ts.map +1 -0
  40. package/dist/__tests__/unit/handoff/scatter.test.js +54 -0
  41. package/dist/__tests__/unit/handoff/scatter.test.js.map +1 -0
  42. package/dist/__tests__/unit/resume.test.d.ts +8 -0
  43. package/dist/__tests__/unit/resume.test.d.ts.map +1 -0
  44. package/dist/__tests__/unit/resume.test.js +134 -0
  45. package/dist/__tests__/unit/resume.test.js.map +1 -0
  46. package/dist/__tests__/unit/status.test.d.ts +8 -0
  47. package/dist/__tests__/unit/status.test.d.ts.map +1 -0
  48. package/dist/__tests__/unit/status.test.js +164 -0
  49. package/dist/__tests__/unit/status.test.js.map +1 -0
  50. package/dist/__tests__/unit/target.test.d.ts +8 -0
  51. package/dist/__tests__/unit/target.test.d.ts.map +1 -0
  52. package/dist/__tests__/unit/target.test.js +116 -0
  53. package/dist/__tests__/unit/target.test.js.map +1 -0
  54. package/dist/__tests__/unit/traverse.test.d.ts +8 -0
  55. package/dist/__tests__/unit/traverse.test.d.ts.map +1 -0
  56. package/dist/__tests__/unit/traverse.test.js +143 -0
  57. package/dist/__tests__/unit/traverse.test.js.map +1 -0
  58. package/dist/__tests__/unit/validation/klados.test.d.ts +16 -0
  59. package/dist/__tests__/unit/validation/klados.test.d.ts.map +1 -0
  60. package/dist/__tests__/unit/validation/klados.test.js +275 -0
  61. package/dist/__tests__/unit/validation/klados.test.js.map +1 -0
  62. package/dist/__tests__/unit/validation/rhiza.test.d.ts +16 -0
  63. package/dist/__tests__/unit/validation/rhiza.test.d.ts.map +1 -0
  64. package/dist/__tests__/unit/validation/rhiza.test.js +612 -0
  65. package/dist/__tests__/unit/validation/rhiza.test.js.map +1 -0
  66. package/dist/__tests__/unit/validation/runtime.test.d.ts +11 -0
  67. package/dist/__tests__/unit/validation/runtime.test.d.ts.map +1 -0
  68. package/dist/__tests__/unit/validation/runtime.test.js +553 -0
  69. package/dist/__tests__/unit/validation/runtime.test.js.map +1 -0
  70. package/dist/__tests__/unit/worker/errors.test.d.ts +2 -0
  71. package/dist/__tests__/unit/worker/errors.test.d.ts.map +1 -0
  72. package/dist/__tests__/unit/worker/errors.test.js +226 -0
  73. package/dist/__tests__/unit/worker/errors.test.js.map +1 -0
  74. package/dist/__tests__/unit/worker/job.test.d.ts +2 -0
  75. package/dist/__tests__/unit/worker/job.test.d.ts.map +1 -0
  76. package/dist/__tests__/unit/worker/job.test.js +233 -0
  77. package/dist/__tests__/unit/worker/job.test.js.map +1 -0
  78. package/dist/client/index.d.ts +10 -0
  79. package/dist/client/index.d.ts.map +1 -0
  80. package/dist/client/index.js +8 -0
  81. package/dist/client/index.js.map +1 -0
  82. package/dist/client/interface.d.ts +142 -0
  83. package/dist/client/interface.d.ts.map +1 -0
  84. package/dist/client/interface.js +8 -0
  85. package/dist/client/interface.js.map +1 -0
  86. package/dist/client/mock.d.ts +95 -0
  87. package/dist/client/mock.d.ts.map +1 -0
  88. package/dist/client/mock.js +795 -0
  89. package/dist/client/mock.js.map +1 -0
  90. package/dist/client/types.d.ts +344 -0
  91. package/dist/client/types.d.ts.map +1 -0
  92. package/dist/client/types.js +8 -0
  93. package/dist/client/types.js.map +1 -0
  94. package/dist/handoff/gather-api.d.ts +60 -0
  95. package/dist/handoff/gather-api.d.ts.map +1 -0
  96. package/dist/handoff/gather-api.js +130 -0
  97. package/dist/handoff/gather-api.js.map +1 -0
  98. package/dist/handoff/gather.d.ts +59 -0
  99. package/dist/handoff/gather.d.ts.map +1 -0
  100. package/dist/handoff/gather.js +134 -0
  101. package/dist/handoff/gather.js.map +1 -0
  102. package/dist/handoff/index.d.ts +19 -0
  103. package/dist/handoff/index.d.ts.map +1 -0
  104. package/dist/handoff/index.js +25 -0
  105. package/dist/handoff/index.js.map +1 -0
  106. package/dist/handoff/interpret.d.ts +79 -0
  107. package/dist/handoff/interpret.d.ts.map +1 -0
  108. package/dist/handoff/interpret.js +197 -0
  109. package/dist/handoff/interpret.js.map +1 -0
  110. package/dist/handoff/invoke.d.ts +82 -0
  111. package/dist/handoff/invoke.d.ts.map +1 -0
  112. package/dist/handoff/invoke.js +196 -0
  113. package/dist/handoff/invoke.js.map +1 -0
  114. package/dist/handoff/route.d.ts +25 -0
  115. package/dist/handoff/route.d.ts.map +1 -0
  116. package/dist/handoff/route.js +65 -0
  117. package/dist/handoff/route.js.map +1 -0
  118. package/dist/handoff/scatter-api.d.ts +62 -0
  119. package/dist/handoff/scatter-api.d.ts.map +1 -0
  120. package/dist/handoff/scatter-api.js +81 -0
  121. package/dist/handoff/scatter-api.js.map +1 -0
  122. package/dist/handoff/scatter.d.ts +19 -0
  123. package/dist/handoff/scatter.d.ts.map +1 -0
  124. package/dist/handoff/scatter.js +27 -0
  125. package/dist/handoff/scatter.js.map +1 -0
  126. package/dist/handoff/target.d.ts +16 -0
  127. package/dist/handoff/target.d.ts.map +1 -0
  128. package/dist/handoff/target.js +51 -0
  129. package/dist/handoff/target.js.map +1 -0
  130. package/dist/index.d.ts +42 -0
  131. package/dist/index.d.ts.map +1 -0
  132. package/dist/index.js +52 -0
  133. package/dist/index.js.map +1 -0
  134. package/dist/logging/index.d.ts +4 -0
  135. package/dist/logging/index.d.ts.map +1 -0
  136. package/dist/logging/index.js +3 -0
  137. package/dist/logging/index.js.map +1 -0
  138. package/dist/logging/logger.d.ts +52 -0
  139. package/dist/logging/logger.d.ts.map +1 -0
  140. package/dist/logging/logger.js +70 -0
  141. package/dist/logging/logger.js.map +1 -0
  142. package/dist/logging/writer.d.ts +63 -0
  143. package/dist/logging/writer.d.ts.map +1 -0
  144. package/dist/logging/writer.js +160 -0
  145. package/dist/logging/writer.js.map +1 -0
  146. package/dist/resume/index.d.ts +77 -0
  147. package/dist/resume/index.d.ts.map +1 -0
  148. package/dist/resume/index.js +110 -0
  149. package/dist/resume/index.js.map +1 -0
  150. package/dist/status/index.d.ts +54 -0
  151. package/dist/status/index.d.ts.map +1 -0
  152. package/dist/status/index.js +107 -0
  153. package/dist/status/index.js.map +1 -0
  154. package/dist/traverse/index.d.ts +53 -0
  155. package/dist/traverse/index.d.ts.map +1 -0
  156. package/dist/traverse/index.js +142 -0
  157. package/dist/traverse/index.js.map +1 -0
  158. package/dist/types/batch.d.ts +53 -0
  159. package/dist/types/batch.d.ts.map +1 -0
  160. package/dist/types/batch.js +2 -0
  161. package/dist/types/batch.js.map +1 -0
  162. package/dist/types/index.d.ts +10 -0
  163. package/dist/types/index.d.ts.map +1 -0
  164. package/dist/types/index.js +2 -0
  165. package/dist/types/index.js.map +1 -0
  166. package/dist/types/klados.d.ts +63 -0
  167. package/dist/types/klados.d.ts.map +1 -0
  168. package/dist/types/klados.js +2 -0
  169. package/dist/types/klados.js.map +1 -0
  170. package/dist/types/log.d.ts +107 -0
  171. package/dist/types/log.d.ts.map +1 -0
  172. package/dist/types/log.js +2 -0
  173. package/dist/types/log.js.map +1 -0
  174. package/dist/types/refs.d.ts +58 -0
  175. package/dist/types/refs.d.ts.map +1 -0
  176. package/dist/types/refs.js +43 -0
  177. package/dist/types/refs.js.map +1 -0
  178. package/dist/types/request.d.ts +69 -0
  179. package/dist/types/request.d.ts.map +1 -0
  180. package/dist/types/request.js +2 -0
  181. package/dist/types/request.js.map +1 -0
  182. package/dist/types/response.d.ts +31 -0
  183. package/dist/types/response.d.ts.map +1 -0
  184. package/dist/types/response.js +2 -0
  185. package/dist/types/response.js.map +1 -0
  186. package/dist/types/rhiza.d.ts +100 -0
  187. package/dist/types/rhiza.d.ts.map +1 -0
  188. package/dist/types/rhiza.js +2 -0
  189. package/dist/types/rhiza.js.map +1 -0
  190. package/dist/types/status.d.ts +84 -0
  191. package/dist/types/status.d.ts.map +1 -0
  192. package/dist/types/status.js +2 -0
  193. package/dist/types/status.js.map +1 -0
  194. package/dist/utils/id.d.ts +15 -0
  195. package/dist/utils/id.d.ts.map +1 -0
  196. package/dist/utils/id.js +25 -0
  197. package/dist/utils/id.js.map +1 -0
  198. package/dist/utils/index.d.ts +2 -0
  199. package/dist/utils/index.d.ts.map +1 -0
  200. package/dist/utils/index.js +2 -0
  201. package/dist/utils/index.js.map +1 -0
  202. package/dist/validation/index.d.ts +9 -0
  203. package/dist/validation/index.d.ts.map +1 -0
  204. package/dist/validation/index.js +9 -0
  205. package/dist/validation/index.js.map +1 -0
  206. package/dist/validation/validate-klados.d.ts +38 -0
  207. package/dist/validation/validate-klados.d.ts.map +1 -0
  208. package/dist/validation/validate-klados.js +139 -0
  209. package/dist/validation/validate-klados.js.map +1 -0
  210. package/dist/validation/validate-rhiza.d.ts +29 -0
  211. package/dist/validation/validate-rhiza.d.ts.map +1 -0
  212. package/dist/validation/validate-rhiza.js +382 -0
  213. package/dist/validation/validate-rhiza.js.map +1 -0
  214. package/dist/validation/validate-runtime.d.ts +28 -0
  215. package/dist/validation/validate-runtime.d.ts.map +1 -0
  216. package/dist/validation/validate-runtime.js +212 -0
  217. package/dist/validation/validate-runtime.js.map +1 -0
  218. package/dist/worker/errors.d.ts +77 -0
  219. package/dist/worker/errors.d.ts.map +1 -0
  220. package/dist/worker/errors.js +143 -0
  221. package/dist/worker/errors.js.map +1 -0
  222. package/dist/worker/index.d.ts +8 -0
  223. package/dist/worker/index.d.ts.map +1 -0
  224. package/dist/worker/index.js +8 -0
  225. package/dist/worker/index.js.map +1 -0
  226. package/dist/worker/job.d.ts +150 -0
  227. package/dist/worker/job.d.ts.map +1 -0
  228. package/dist/worker/job.js +280 -0
  229. package/dist/worker/job.js.map +1 -0
  230. package/package.json +48 -0
@@ -0,0 +1,280 @@
1
+ /**
2
+ * KladosJob - High-level klados job management
3
+ *
4
+ * Manages the full lifecycle of a klados job:
5
+ * - Logging (create, update, finalize)
6
+ * - Error handling (log + batch slot)
7
+ * - Workflow handoff (via interpretThen)
8
+ *
9
+ * Reduces ~80 lines of boilerplate to ~15 lines.
10
+ */
11
+ import { ArkeClient } from '@arke-institute/sdk';
12
+ import { KladosLogger } from '../logging/logger';
13
+ import { writeKladosLog, updateLogWithHandoffs, updateLogStatus } from '../logging/writer';
14
+ import { interpretThen } from '../handoff/interpret';
15
+ import { generateId } from '../utils';
16
+ import { failKlados, toKladosError } from './errors';
17
+ /**
18
+ * KladosJob - Manages the full lifecycle of a klados job
19
+ *
20
+ * Usage:
21
+ * ```typescript
22
+ * const job = KladosJob.accept(request, { agentId, agentVersion, authToken });
23
+ *
24
+ * ctx.waitUntil(job.run(async () => {
25
+ * job.log.info('Processing...');
26
+ * const outputs = await doWork();
27
+ * return outputs; // Job handles handoff + finalization
28
+ * }));
29
+ *
30
+ * return Response.json(job.acceptResponse);
31
+ * ```
32
+ */
33
+ export class KladosJob {
34
+ /** The Arke client */
35
+ client;
36
+ /** Logger for this job */
37
+ log;
38
+ /** The original request */
39
+ request;
40
+ /** The acceptance response to return to caller */
41
+ acceptResponse;
42
+ /** Job configuration */
43
+ config;
44
+ /** Generated log ID */
45
+ logId;
46
+ // Internal state
47
+ state = 'accepted';
48
+ logFileId = null;
49
+ flow = null;
50
+ /**
51
+ * Create a new KladosJob (private - use static methods)
52
+ */
53
+ constructor(request, config) {
54
+ this.request = request;
55
+ this.config = config;
56
+ this.log = new KladosLogger();
57
+ this.logId = `log_${generateId()}`;
58
+ // Create Arke client
59
+ this.client = new ArkeClient({
60
+ baseUrl: request.api_base,
61
+ authToken: config.authToken,
62
+ });
63
+ // Build acceptance response
64
+ this.acceptResponse = {
65
+ accepted: true,
66
+ job_id: request.job_id,
67
+ };
68
+ }
69
+ /**
70
+ * Accept a klados request and create a job
71
+ *
72
+ * This is the main factory method. Call this immediately when receiving
73
+ * a request, then process the job asynchronously.
74
+ *
75
+ * @param request - The incoming KladosRequest
76
+ * @param config - Job configuration
77
+ * @returns A new KladosJob instance
78
+ */
79
+ static accept(request, config) {
80
+ return new KladosJob(request, config);
81
+ }
82
+ /**
83
+ * Get the batch context (if in a scatter/gather)
84
+ */
85
+ get batchContext() {
86
+ return this.request.rhiza?.batch;
87
+ }
88
+ /**
89
+ * Check if this job is part of a workflow
90
+ */
91
+ get isWorkflow() {
92
+ return !!this.request.rhiza;
93
+ }
94
+ /**
95
+ * Run the job with automatic lifecycle management
96
+ *
97
+ * This is the recommended way to process a klados job. It handles:
98
+ * - Writing the initial log entry
99
+ * - Catching and recording errors
100
+ * - Executing workflow handoffs
101
+ * - Finalizing the log
102
+ *
103
+ * @param fn - The processing function that returns output entity IDs
104
+ * @returns The job result
105
+ */
106
+ async run(fn, options) {
107
+ // Start the job (write initial log)
108
+ await this.start();
109
+ try {
110
+ // Execute the processing function
111
+ const outputs = await fn();
112
+ // Complete the job (handoff + finalize)
113
+ return await this.complete(outputs, options?.outputProperties);
114
+ }
115
+ catch (error) {
116
+ // Handle failure
117
+ await this.fail(error);
118
+ throw error; // Re-throw so caller knows it failed
119
+ }
120
+ }
121
+ /**
122
+ * Start the job (write initial log entry)
123
+ *
124
+ * For advanced use cases where you need more control over the lifecycle.
125
+ * Most users should use `run()` instead.
126
+ */
127
+ async start() {
128
+ if (this.state !== 'accepted') {
129
+ throw new Error(`Cannot start job in state: ${this.state}`);
130
+ }
131
+ // Build log entry
132
+ const logEntry = {
133
+ id: this.logId,
134
+ type: 'klados_log',
135
+ klados_id: this.config.agentId,
136
+ rhiza_id: this.request.rhiza?.id,
137
+ job_id: this.request.job_id,
138
+ started_at: new Date().toISOString(),
139
+ status: 'running',
140
+ received: {
141
+ target: this.request.target,
142
+ from_logs: this.request.rhiza?.parent_logs,
143
+ batch: this.request.rhiza?.batch,
144
+ },
145
+ };
146
+ // Write initial log entry
147
+ const { fileId } = await writeKladosLog({
148
+ client: this.client,
149
+ jobCollectionId: this.request.job_collection,
150
+ entry: logEntry,
151
+ messages: this.log.getMessages(),
152
+ agentId: this.config.agentId,
153
+ agentVersion: this.config.agentVersion,
154
+ });
155
+ this.logFileId = fileId;
156
+ this.state = 'started';
157
+ // Fetch rhiza flow if in a workflow
158
+ if (this.request.rhiza) {
159
+ await this.fetchFlow();
160
+ }
161
+ }
162
+ /**
163
+ * Complete the job with outputs
164
+ *
165
+ * For advanced use cases. Handles workflow handoff and log finalization.
166
+ *
167
+ * @param outputs - Output entity IDs produced by this job
168
+ * @param outputProperties - Properties of the primary output (for routing)
169
+ */
170
+ async complete(outputs, outputProperties) {
171
+ if (this.state !== 'started') {
172
+ throw new Error(`Cannot complete job in state: ${this.state}`);
173
+ }
174
+ if (!this.logFileId) {
175
+ throw new Error('Job not started - logFileId is null');
176
+ }
177
+ let handoffResult;
178
+ const handoffs = [];
179
+ // Execute workflow handoff if in a workflow
180
+ if (this.request.rhiza && this.flow) {
181
+ const myStep = this.flow[this.config.agentId];
182
+ if (myStep?.then) {
183
+ handoffResult = await interpretThen(myStep.then, {
184
+ client: this.client,
185
+ rhizaId: this.request.rhiza.id,
186
+ kladosId: this.config.agentId,
187
+ jobId: this.request.job_id,
188
+ jobCollectionId: this.request.job_collection,
189
+ flow: this.flow,
190
+ outputs,
191
+ outputProperties,
192
+ fromLogId: this.logId,
193
+ path: this.request.rhiza.path,
194
+ apiBase: this.request.api_base,
195
+ network: this.request.network,
196
+ batchContext: this.request.rhiza.batch,
197
+ });
198
+ if (handoffResult.handoffRecord) {
199
+ handoffs.push(handoffResult.handoffRecord);
200
+ }
201
+ this.log.info(`Handoff: ${handoffResult.action}`, {
202
+ target: handoffResult.target,
203
+ targetType: handoffResult.targetType,
204
+ });
205
+ }
206
+ }
207
+ // Update log with handoffs
208
+ if (handoffs.length > 0) {
209
+ await updateLogWithHandoffs(this.client, this.logFileId, handoffs);
210
+ }
211
+ // Mark log as done
212
+ await updateLogStatus(this.client, this.logFileId, 'done');
213
+ this.state = 'completed';
214
+ this.log.success('Job completed');
215
+ return {
216
+ handoff: handoffResult,
217
+ outputs,
218
+ };
219
+ }
220
+ /**
221
+ * Mark the job as failed
222
+ *
223
+ * Handles both log status update AND batch slot error (if applicable).
224
+ *
225
+ * @param error - The error that caused the failure
226
+ */
227
+ async fail(error) {
228
+ if (this.state === 'completed' || this.state === 'failed') {
229
+ return; // Already finalized
230
+ }
231
+ const kladosError = toKladosError(error);
232
+ this.log.error('Job failed', { code: kladosError.code, message: kladosError.message });
233
+ // If we haven't started yet, we can't update the log
234
+ if (!this.logFileId) {
235
+ this.state = 'failed';
236
+ return;
237
+ }
238
+ // Use failKlados to handle both log and batch slot
239
+ await failKlados(this.client, {
240
+ logFileId: this.logFileId,
241
+ batchContext: this.request.rhiza?.batch,
242
+ error: kladosError,
243
+ });
244
+ this.state = 'failed';
245
+ }
246
+ /**
247
+ * Fetch the target entity
248
+ *
249
+ * Convenience method to fetch the entity being processed.
250
+ */
251
+ async fetchTarget() {
252
+ const { data, error } = await this.client.api.GET('/entities/{id}', {
253
+ params: { path: { id: this.request.target } },
254
+ });
255
+ if (error || !data) {
256
+ throw new Error(`Failed to fetch target entity: ${this.request.target}`);
257
+ }
258
+ return {
259
+ id: data.id,
260
+ type: data.type,
261
+ properties: data.properties,
262
+ };
263
+ }
264
+ /**
265
+ * Fetch the rhiza flow definition
266
+ */
267
+ async fetchFlow() {
268
+ if (!this.request.rhiza) {
269
+ return;
270
+ }
271
+ const { data, error } = await this.client.api.GET('/entities/{id}', {
272
+ params: { path: { id: this.request.rhiza.id } },
273
+ });
274
+ if (error || !data) {
275
+ throw new Error(`Failed to fetch rhiza: ${this.request.rhiza.id}`);
276
+ }
277
+ this.flow = data.properties.flow;
278
+ }
279
+ }
280
+ //# sourceMappingURL=job.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job.js","sourceRoot":"","sources":["../../src/worker/job.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@arke-institute/rhiza",
3
+ "version": "0.1.0",
4
+ "description": "Workflow protocol for Arke - cascading handoff pattern for distributed actions",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "scripts": {
18
+ "build": "tsc",
19
+ "dev": "tsc --watch",
20
+ "test": "vitest",
21
+ "test:run": "vitest run",
22
+ "type-check": "tsc --noEmit",
23
+ "clean": "rm -rf dist"
24
+ },
25
+ "peerDependencies": {
26
+ "@arke-institute/sdk": "^2.9.0"
27
+ },
28
+ "peerDependenciesMeta": {
29
+ "@arke-institute/sdk": {
30
+ "optional": true
31
+ }
32
+ },
33
+ "devDependencies": {
34
+ "@arke-institute/sdk": "^2.9.0",
35
+ "@types/node": "^22.0.0",
36
+ "typescript": "^5.7.2",
37
+ "vitest": "^2.0.0"
38
+ },
39
+ "keywords": [
40
+ "arke",
41
+ "workflow",
42
+ "orchestration",
43
+ "distributed",
44
+ "protocol"
45
+ ],
46
+ "author": "Arke Institute",
47
+ "license": "MIT"
48
+ }