abstractnote 0.1.0__py3-none-any.whl

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 (80) hide show
  1. abstractnote/__init__.py +18 -0
  2. abstractnote/cli.py +240 -0
  3. abstractnote/flows/__init__.py +2 -0
  4. abstractnote/flows/build.py +970 -0
  5. abstractnote/flows/bundle.py +62 -0
  6. abstractnote/flows/contract.py +88 -0
  7. abstractnote/flows/graph.py +540 -0
  8. abstractnote/flows/json/note-capture.json +2280 -0
  9. abstractnote/flows/json/note-drain.json +2012 -0
  10. abstractnote/flows/json/note-mine.json +2392 -0
  11. abstractnote/flows/json/note-process.json +1853 -0
  12. abstractnote/flows/json/note-recall.json +1876 -0
  13. abstractnote/flows/json/note-reflect.json +2057 -0
  14. abstractnote/flows/prompts_fallback.py +119 -0
  15. abstractnote/flows/runner.py +320 -0
  16. abstractnote/flows/schemas_fallback.py +175 -0
  17. abstractnote/gateway/__init__.py +24 -0
  18. abstractnote/gateway/appspec.py +10 -0
  19. abstractnote/gateway/router.py +571 -0
  20. abstractnote/gateway/tools.py +74 -0
  21. abstractnote/ids.py +177 -0
  22. abstractnote/importers/__init__.py +142 -0
  23. abstractnote/importers/__main__.py +3 -0
  24. abstractnote/importers/agora.py +203 -0
  25. abstractnote/importers/claude_sessions.py +415 -0
  26. abstractnote/importers/cli.py +113 -0
  27. abstractnote/importers/files.py +72 -0
  28. abstractnote/importers/markdown.py +165 -0
  29. abstractnote/ingest/__init__.py +7 -0
  30. abstractnote/ingest/blobs.py +47 -0
  31. abstractnote/ingest/capture.py +265 -0
  32. abstractnote/ingest/extract.py +118 -0
  33. abstractnote/ingest/normalise.py +95 -0
  34. abstractnote/model.py +229 -0
  35. abstractnote/process/__init__.py +5 -0
  36. abstractnote/process/context.py +218 -0
  37. abstractnote/process/merge.py +60 -0
  38. abstractnote/process/prompts/__init__.py +39 -0
  39. abstractnote/process/prompts/extract.md +30 -0
  40. abstractnote/process/prompts/link.md +32 -0
  41. abstractnote/process/prompts/mine_dossier.md +13 -0
  42. abstractnote/process/prompts/mine_findings.md +13 -0
  43. abstractnote/process/prompts/mine_plan.md +13 -0
  44. abstractnote/process/prompts/quick_filing.md +23 -0
  45. abstractnote/process/prompts/reflect.md +10 -0
  46. abstractnote/process/prompts/synthesize.md +17 -0
  47. abstractnote/process/resolve.py +96 -0
  48. abstractnote/process/revise.py +410 -0
  49. abstractnote/process/schemas.py +377 -0
  50. abstractnote/process/vocabulary.py +68 -0
  51. abstractnote/recall/__init__.py +1 -0
  52. abstractnote/recall/changes.py +191 -0
  53. abstractnote/recall/expand.py +379 -0
  54. abstractnote/recall/insights.py +62 -0
  55. abstractnote/recall/reflect.py +202 -0
  56. abstractnote/recall/review.py +191 -0
  57. abstractnote/recall/search.py +205 -0
  58. abstractnote/recall/shapes.py +52 -0
  59. abstractnote/recall/then_now.py +100 -0
  60. abstractnote/store/__init__.py +12 -0
  61. abstractnote/store/archive.py +166 -0
  62. abstractnote/store/embeddings.py +275 -0
  63. abstractnote/store/kg.py +219 -0
  64. abstractnote/store/notebook.py +829 -0
  65. abstractnote/store/notes.py +1190 -0
  66. abstractnote/store/queue.py +159 -0
  67. abstractnote/store/schema.py +348 -0
  68. abstractnote/store/vector_index.py +88 -0
  69. abstractnote/tools/__init__.py +215 -0
  70. abstractnote/tools/capture.py +121 -0
  71. abstractnote/tools/context.py +19 -0
  72. abstractnote/tools/process.py +22 -0
  73. abstractnote/tools/queue.py +23 -0
  74. abstractnote/tools/recall.py +64 -0
  75. abstractnote-0.1.0.dist-info/METADATA +145 -0
  76. abstractnote-0.1.0.dist-info/RECORD +80 -0
  77. abstractnote-0.1.0.dist-info/WHEEL +5 -0
  78. abstractnote-0.1.0.dist-info/entry_points.txt +2 -0
  79. abstractnote-0.1.0.dist-info/licenses/LICENSE +21 -0
  80. abstractnote-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,2280 @@
1
+ {
2
+ "id": "note-capture",
3
+ "name": "Capture a note",
4
+ "description": "Store a note, file it quickly, answer, and queue it for understanding (optionally right away).",
5
+ "interfaces": [
6
+ "abstractnote.capture.v1"
7
+ ],
8
+ "nodes": [
9
+ {
10
+ "id": "start",
11
+ "type": "on_flow_start",
12
+ "position": {
13
+ "x": 0.0,
14
+ "y": 0.0
15
+ },
16
+ "data": {
17
+ "nodeType": "on_flow_start",
18
+ "label": "Start",
19
+ "inputs": [],
20
+ "outputs": [
21
+ {
22
+ "id": "exec-out",
23
+ "label": "",
24
+ "type": "execution"
25
+ },
26
+ {
27
+ "id": "text",
28
+ "label": "text",
29
+ "type": "string"
30
+ },
31
+ {
32
+ "id": "title",
33
+ "label": "title",
34
+ "type": "string"
35
+ },
36
+ {
37
+ "id": "occurred_at",
38
+ "label": "occurred_at",
39
+ "type": "string"
40
+ },
41
+ {
42
+ "id": "location",
43
+ "label": "location",
44
+ "type": "object"
45
+ },
46
+ {
47
+ "id": "source",
48
+ "label": "source",
49
+ "type": "object"
50
+ },
51
+ {
52
+ "id": "idempotency_key",
53
+ "label": "idempotency_key",
54
+ "type": "string"
55
+ },
56
+ {
57
+ "id": "priority",
58
+ "label": "priority",
59
+ "type": "number"
60
+ },
61
+ {
62
+ "id": "process_inline",
63
+ "label": "process_inline",
64
+ "type": "boolean"
65
+ },
66
+ {
67
+ "id": "session_id",
68
+ "label": "session_id",
69
+ "type": "string"
70
+ },
71
+ {
72
+ "id": "context",
73
+ "label": "context",
74
+ "type": "object"
75
+ },
76
+ {
77
+ "id": "provider",
78
+ "label": "provider",
79
+ "type": "provider_text"
80
+ },
81
+ {
82
+ "id": "model",
83
+ "label": "model",
84
+ "type": "model"
85
+ }
86
+ ],
87
+ "pinDefaults": {
88
+ "text": "",
89
+ "process_inline": false,
90
+ "provider": "",
91
+ "model": ""
92
+ }
93
+ }
94
+ },
95
+ {
96
+ "id": "attachments",
97
+ "type": "get",
98
+ "position": {
99
+ "x": 0.0,
100
+ "y": 502.0
101
+ },
102
+ "data": {
103
+ "nodeType": "get",
104
+ "label": "Attachments",
105
+ "inputs": [
106
+ {
107
+ "id": "object",
108
+ "label": "object",
109
+ "type": "object"
110
+ },
111
+ {
112
+ "id": "key",
113
+ "label": "key",
114
+ "type": "string"
115
+ },
116
+ {
117
+ "id": "default",
118
+ "label": "default",
119
+ "type": "any"
120
+ }
121
+ ],
122
+ "outputs": [
123
+ {
124
+ "id": "value",
125
+ "label": "value",
126
+ "type": "any"
127
+ }
128
+ ],
129
+ "pinDefaults": {
130
+ "key": "attachments",
131
+ "default": []
132
+ }
133
+ }
134
+ },
135
+ {
136
+ "id": "about",
137
+ "type": "get",
138
+ "position": {
139
+ "x": 0.0,
140
+ "y": 822.0
141
+ },
142
+ "data": {
143
+ "nodeType": "get",
144
+ "label": "What it is about",
145
+ "inputs": [
146
+ {
147
+ "id": "object",
148
+ "label": "object",
149
+ "type": "object"
150
+ },
151
+ {
152
+ "id": "key",
153
+ "label": "key",
154
+ "type": "string"
155
+ },
156
+ {
157
+ "id": "default",
158
+ "label": "default",
159
+ "type": "any"
160
+ }
161
+ ],
162
+ "outputs": [
163
+ {
164
+ "id": "value",
165
+ "label": "value",
166
+ "type": "any"
167
+ }
168
+ ],
169
+ "pinDefaults": {
170
+ "key": "about",
171
+ "default": null
172
+ }
173
+ }
174
+ },
175
+ {
176
+ "id": "answer",
177
+ "type": "get",
178
+ "position": {
179
+ "x": 0.0,
180
+ "y": 1142.0
181
+ },
182
+ "data": {
183
+ "nodeType": "get",
184
+ "label": "A saved answer?",
185
+ "inputs": [
186
+ {
187
+ "id": "object",
188
+ "label": "object",
189
+ "type": "object"
190
+ },
191
+ {
192
+ "id": "key",
193
+ "label": "key",
194
+ "type": "string"
195
+ },
196
+ {
197
+ "id": "default",
198
+ "label": "default",
199
+ "type": "any"
200
+ }
201
+ ],
202
+ "outputs": [
203
+ {
204
+ "id": "value",
205
+ "label": "value",
206
+ "type": "any"
207
+ }
208
+ ],
209
+ "pinDefaults": {
210
+ "key": "answer",
211
+ "default": null
212
+ }
213
+ }
214
+ },
215
+ {
216
+ "id": "capture_args",
217
+ "type": "code",
218
+ "position": {
219
+ "x": 480.0,
220
+ "y": 0.0
221
+ },
222
+ "data": {
223
+ "nodeType": "code",
224
+ "label": "Store the note: arguments",
225
+ "inputs": [
226
+ {
227
+ "id": "exec-in",
228
+ "label": "",
229
+ "type": "execution"
230
+ },
231
+ {
232
+ "id": "text",
233
+ "label": "text",
234
+ "type": "string"
235
+ },
236
+ {
237
+ "id": "title",
238
+ "label": "title",
239
+ "type": "string"
240
+ },
241
+ {
242
+ "id": "occurred_at",
243
+ "label": "occurred_at",
244
+ "type": "string"
245
+ },
246
+ {
247
+ "id": "location",
248
+ "label": "location",
249
+ "type": "object"
250
+ },
251
+ {
252
+ "id": "source",
253
+ "label": "source",
254
+ "type": "object"
255
+ },
256
+ {
257
+ "id": "idempotency_key",
258
+ "label": "idempotency_key",
259
+ "type": "string"
260
+ },
261
+ {
262
+ "id": "priority",
263
+ "label": "priority",
264
+ "type": "number"
265
+ },
266
+ {
267
+ "id": "session_id",
268
+ "label": "session_id",
269
+ "type": "string"
270
+ },
271
+ {
272
+ "id": "attachments",
273
+ "label": "attachments",
274
+ "type": "array"
275
+ },
276
+ {
277
+ "id": "about",
278
+ "label": "about",
279
+ "type": "object"
280
+ },
281
+ {
282
+ "id": "answer",
283
+ "label": "answer",
284
+ "type": "object"
285
+ },
286
+ {
287
+ "id": "permissions",
288
+ "label": "permissions",
289
+ "type": "string"
290
+ }
291
+ ],
292
+ "outputs": [
293
+ {
294
+ "id": "exec-out",
295
+ "label": "",
296
+ "type": "execution"
297
+ },
298
+ {
299
+ "id": "tool_calls",
300
+ "label": "tool_calls",
301
+ "type": "array"
302
+ }
303
+ ],
304
+ "pinDefaults": {
305
+ "permissions": "sandbox"
306
+ },
307
+ "functionName": "transform",
308
+ "codeBody": "arguments = {}\nif text is not None and text != \"\":\n arguments[\"text\"] = text\nif title is not None and title != \"\":\n arguments[\"title\"] = title\nif occurred_at is not None and occurred_at != \"\":\n arguments[\"occurred_at\"] = occurred_at\nif location is not None and location != \"\":\n arguments[\"location\"] = location\nif source is not None and source != \"\":\n arguments[\"source\"] = source\nif idempotency_key is not None and idempotency_key != \"\":\n arguments[\"idempotency_key\"] = idempotency_key\nif priority is not None and priority != \"\":\n arguments[\"priority\"] = priority\nif session_id is not None and session_id != \"\":\n arguments[\"session_id\"] = session_id\nif attachments is not None and attachments != \"\":\n arguments[\"attachments\"] = attachments\nif about is not None and about != \"\":\n arguments[\"about\"] = about\nif answer is not None and answer != \"\":\n arguments[\"answer\"] = answer\nreturn {\"tool_calls\": [{\"name\": \"note_capture\", \"call_id\": \"capture\", \"arguments\": arguments}]}\n"
309
+ }
310
+ },
311
+ {
312
+ "id": "capture",
313
+ "type": "tool_calls",
314
+ "position": {
315
+ "x": 960.0,
316
+ "y": 0.0
317
+ },
318
+ "data": {
319
+ "nodeType": "tool_calls",
320
+ "label": "Store the note",
321
+ "inputs": [
322
+ {
323
+ "id": "exec-in",
324
+ "label": "",
325
+ "type": "execution"
326
+ },
327
+ {
328
+ "id": "tool_calls",
329
+ "label": "tool_calls",
330
+ "type": "array"
331
+ },
332
+ {
333
+ "id": "allowed_tools",
334
+ "label": "allowed_tools",
335
+ "type": "array"
336
+ }
337
+ ],
338
+ "outputs": [
339
+ {
340
+ "id": "exec-out",
341
+ "label": "",
342
+ "type": "execution"
343
+ },
344
+ {
345
+ "id": "results",
346
+ "label": "results",
347
+ "type": "array"
348
+ },
349
+ {
350
+ "id": "success",
351
+ "label": "success",
352
+ "type": "boolean"
353
+ }
354
+ ],
355
+ "pinDefaults": {
356
+ "allowed_tools": [
357
+ "note_capture"
358
+ ]
359
+ },
360
+ "effectConfig": {
361
+ "allowed_tools": [
362
+ "note_capture"
363
+ ]
364
+ }
365
+ }
366
+ },
367
+ {
368
+ "id": "capture_out",
369
+ "type": "code",
370
+ "position": {
371
+ "x": 1440.0,
372
+ "y": 0.0
373
+ },
374
+ "data": {
375
+ "nodeType": "code",
376
+ "label": "Store the note: result",
377
+ "inputs": [
378
+ {
379
+ "id": "exec-in",
380
+ "label": "",
381
+ "type": "execution"
382
+ },
383
+ {
384
+ "id": "results",
385
+ "label": "results",
386
+ "type": "array"
387
+ },
388
+ {
389
+ "id": "permissions",
390
+ "label": "permissions",
391
+ "type": "string"
392
+ }
393
+ ],
394
+ "outputs": [
395
+ {
396
+ "id": "exec-out",
397
+ "label": "",
398
+ "type": "execution"
399
+ },
400
+ {
401
+ "id": "note_id",
402
+ "label": "note_id",
403
+ "type": "string"
404
+ },
405
+ {
406
+ "id": "status",
407
+ "label": "status",
408
+ "type": "string"
409
+ },
410
+ {
411
+ "id": "first_saved_at",
412
+ "label": "first_saved_at",
413
+ "type": "string"
414
+ },
415
+ {
416
+ "id": "similar",
417
+ "label": "similar",
418
+ "type": "array"
419
+ },
420
+ {
421
+ "id": "revisits",
422
+ "label": "revisits",
423
+ "type": "array"
424
+ },
425
+ {
426
+ "id": "topics",
427
+ "label": "topics",
428
+ "type": "array"
429
+ },
430
+ {
431
+ "id": "warnings",
432
+ "label": "warnings",
433
+ "type": "array"
434
+ },
435
+ {
436
+ "id": "tool_output",
437
+ "label": "tool_output",
438
+ "type": "object"
439
+ }
440
+ ],
441
+ "pinDefaults": {
442
+ "permissions": "sandbox"
443
+ },
444
+ "functionName": "transform",
445
+ "codeBody": "r = results[0] if isinstance(results, list) and results else None\nfailure = None\nout = None\nif not isinstance(r, dict):\n failure = \"note_capture returned no result.\"\nelif not r.get(\"success\"):\n failure = str(r.get(\"error\") or \"note_capture failed.\")\nelse:\n out = r.get(\"output\")\n if not isinstance(out, dict):\n failure = \"note_capture returned something other than an object.\"\nif failure is not None:\n raise ValueError(failure)\nreturn dict(out, tool_output=out)\n"
446
+ }
447
+ },
448
+ {
449
+ "id": "is_dup",
450
+ "type": "code",
451
+ "position": {
452
+ "x": 1440.0,
453
+ "y": 398.0
454
+ },
455
+ "data": {
456
+ "nodeType": "code",
457
+ "label": "Saved before?",
458
+ "inputs": [
459
+ {
460
+ "id": "status",
461
+ "label": "status",
462
+ "type": "string"
463
+ },
464
+ {
465
+ "id": "permissions",
466
+ "label": "permissions",
467
+ "type": "string"
468
+ }
469
+ ],
470
+ "outputs": [
471
+ {
472
+ "id": "duplicate",
473
+ "label": "duplicate",
474
+ "type": "boolean"
475
+ }
476
+ ],
477
+ "pinDefaults": {
478
+ "permissions": "sandbox"
479
+ },
480
+ "functionName": "transform",
481
+ "codeBody": "return {\"duplicate\": status == \"duplicate\"}\n"
482
+ }
483
+ },
484
+ {
485
+ "id": "dup_branch",
486
+ "type": "if",
487
+ "position": {
488
+ "x": 1920.0,
489
+ "y": 0.0
490
+ },
491
+ "data": {
492
+ "nodeType": "if",
493
+ "label": "Already saved?",
494
+ "inputs": [
495
+ {
496
+ "id": "exec-in",
497
+ "label": "",
498
+ "type": "execution"
499
+ },
500
+ {
501
+ "id": "condition",
502
+ "label": "condition",
503
+ "type": "boolean"
504
+ }
505
+ ],
506
+ "outputs": [
507
+ {
508
+ "id": "true",
509
+ "label": "true",
510
+ "type": "execution"
511
+ },
512
+ {
513
+ "id": "false",
514
+ "label": "false",
515
+ "type": "execution"
516
+ }
517
+ ]
518
+ }
519
+ },
520
+ {
521
+ "id": "dup_msg",
522
+ "type": "code",
523
+ "position": {
524
+ "x": 2400.0,
525
+ "y": 0.0
526
+ },
527
+ "data": {
528
+ "nodeType": "code",
529
+ "label": "Already-saved answer",
530
+ "inputs": [
531
+ {
532
+ "id": "exec-in",
533
+ "label": "",
534
+ "type": "execution"
535
+ },
536
+ {
537
+ "id": "first_saved_at",
538
+ "label": "first_saved_at",
539
+ "type": "string"
540
+ },
541
+ {
542
+ "id": "permissions",
543
+ "label": "permissions",
544
+ "type": "string"
545
+ }
546
+ ],
547
+ "outputs": [
548
+ {
549
+ "id": "exec-out",
550
+ "label": "",
551
+ "type": "execution"
552
+ },
553
+ {
554
+ "id": "message",
555
+ "label": "message",
556
+ "type": "string"
557
+ }
558
+ ],
559
+ "pinDefaults": {
560
+ "permissions": "sandbox"
561
+ },
562
+ "functionName": "transform",
563
+ "codeBody": "when = str(first_saved_at or \"\")[:10]\nreturn {\"message\": (\"Already saved on \" + when + \".\") if when else \"Already saved.\"}\n"
564
+ }
565
+ },
566
+ {
567
+ "id": "dup_answer",
568
+ "type": "answer_user",
569
+ "position": {
570
+ "x": 2880.0,
571
+ "y": 0.0
572
+ },
573
+ "data": {
574
+ "nodeType": "answer_user",
575
+ "label": "Say it was saved before",
576
+ "inputs": [
577
+ {
578
+ "id": "exec-in",
579
+ "label": "",
580
+ "type": "execution"
581
+ },
582
+ {
583
+ "id": "message",
584
+ "label": "message",
585
+ "type": "string"
586
+ },
587
+ {
588
+ "id": "level",
589
+ "label": "level",
590
+ "type": "string"
591
+ }
592
+ ],
593
+ "outputs": [
594
+ {
595
+ "id": "exec-out",
596
+ "label": "",
597
+ "type": "execution"
598
+ },
599
+ {
600
+ "id": "message",
601
+ "label": "message",
602
+ "type": "string"
603
+ }
604
+ ],
605
+ "pinDefaults": {
606
+ "level": "message"
607
+ }
608
+ }
609
+ },
610
+ {
611
+ "id": "end_duplicate",
612
+ "type": "on_flow_end",
613
+ "position": {
614
+ "x": 3360.0,
615
+ "y": 0.0
616
+ },
617
+ "data": {
618
+ "nodeType": "on_flow_end",
619
+ "label": "Done (already saved)",
620
+ "inputs": [
621
+ {
622
+ "id": "exec-in",
623
+ "label": "",
624
+ "type": "execution"
625
+ },
626
+ {
627
+ "id": "response",
628
+ "label": "response",
629
+ "type": "string"
630
+ },
631
+ {
632
+ "id": "note_id",
633
+ "label": "note_id",
634
+ "type": "string"
635
+ },
636
+ {
637
+ "id": "status",
638
+ "label": "status",
639
+ "type": "string"
640
+ }
641
+ ],
642
+ "outputs": [],
643
+ "pinDefaults": {
644
+ "status": "duplicate"
645
+ }
646
+ }
647
+ },
648
+ {
649
+ "id": "filing_prompt",
650
+ "type": "string_template",
651
+ "position": {
652
+ "x": 1920.0,
653
+ "y": 320.0
654
+ },
655
+ "data": {
656
+ "nodeType": "string_template",
657
+ "label": "Filing prompt",
658
+ "inputs": [
659
+ {
660
+ "id": "template",
661
+ "label": "template",
662
+ "type": "string"
663
+ },
664
+ {
665
+ "id": "title",
666
+ "label": "title",
667
+ "type": "any"
668
+ },
669
+ {
670
+ "id": "text",
671
+ "label": "text",
672
+ "type": "any"
673
+ },
674
+ {
675
+ "id": "similar",
676
+ "label": "similar",
677
+ "type": "any"
678
+ },
679
+ {
680
+ "id": "revisits",
681
+ "label": "revisits",
682
+ "type": "any"
683
+ },
684
+ {
685
+ "id": "topics",
686
+ "label": "topics",
687
+ "type": "any"
688
+ }
689
+ ],
690
+ "outputs": [
691
+ {
692
+ "id": "result",
693
+ "label": "result",
694
+ "type": "string"
695
+ }
696
+ ],
697
+ "pinDefaults": {
698
+ "template": "You file one note the moment it arrives. Be quick and literal.\n\nNote title (may be empty): {{title}}\n\nNote text:\n{{text}}\n\nSimilar earlier notes: {{similar}}\nEarlier notes with the same words: {{revisits}}\nExisting topics (prefer these): {{topics}}\n\nReturn:\n- `title`: a short title of at most 80 characters, in the note's own words where possible;\n- `kind`: idea, task, decision, fact, event, question, reflection, reference, log, conversation or personal;\n- `topics`: at most 4, chosen from the existing topics first; propose a new topic only when none fits;\n- `urgency`: urgent or high only for deadlines, warnings, or anything the author marks as urgent; normal otherwise (never bulk for a note written now);\n- `language`: the note's language as a BCP-47 tag (for example `en`, `fr`);\n- `one_line`: the note in one plain sentence.\n\nRules:\n- Use only the note and the context above; never invent people, dates or facts.\n- Keep names as the author wrote them.\n- Output JSON only, matching the schema.\n"
699
+ }
700
+ }
701
+ },
702
+ {
703
+ "id": "filing",
704
+ "type": "llm_call",
705
+ "position": {
706
+ "x": 2400.0,
707
+ "y": 320.0
708
+ },
709
+ "data": {
710
+ "nodeType": "llm_call",
711
+ "label": "File it quickly",
712
+ "inputs": [
713
+ {
714
+ "id": "exec-in",
715
+ "label": "",
716
+ "type": "execution"
717
+ },
718
+ {
719
+ "id": "provider",
720
+ "label": "provider",
721
+ "type": "provider_text"
722
+ },
723
+ {
724
+ "id": "model",
725
+ "label": "model",
726
+ "type": "model"
727
+ },
728
+ {
729
+ "id": "system",
730
+ "label": "system",
731
+ "type": "string"
732
+ },
733
+ {
734
+ "id": "prompt",
735
+ "label": "prompt",
736
+ "type": "string"
737
+ },
738
+ {
739
+ "id": "tools",
740
+ "label": "tools",
741
+ "type": "tools"
742
+ },
743
+ {
744
+ "id": "temperature",
745
+ "label": "temperature",
746
+ "type": "number"
747
+ },
748
+ {
749
+ "id": "resp_schema",
750
+ "label": "resp_schema",
751
+ "type": "json_schema"
752
+ }
753
+ ],
754
+ "outputs": [
755
+ {
756
+ "id": "exec-out",
757
+ "label": "",
758
+ "type": "execution"
759
+ },
760
+ {
761
+ "id": "response",
762
+ "label": "response",
763
+ "type": "string"
764
+ },
765
+ {
766
+ "id": "data",
767
+ "label": "data",
768
+ "type": "object"
769
+ },
770
+ {
771
+ "id": "success",
772
+ "label": "success",
773
+ "type": "boolean"
774
+ },
775
+ {
776
+ "id": "meta",
777
+ "label": "meta",
778
+ "type": "object"
779
+ },
780
+ {
781
+ "id": "tool_calls",
782
+ "label": "tool_calls",
783
+ "type": "array"
784
+ }
785
+ ],
786
+ "pinDefaults": {
787
+ "tools": [],
788
+ "system": "You file and connect a person's notes. Output JSON only, matching the schema.",
789
+ "temperature": 0.2,
790
+ "resp_schema": {
791
+ "type": "object",
792
+ "properties": {
793
+ "title": {
794
+ "type": "string",
795
+ "maxLength": 80,
796
+ "description": "short title, at most 80 characters"
797
+ },
798
+ "kind": {
799
+ "type": "string",
800
+ "enum": [
801
+ "idea",
802
+ "task",
803
+ "decision",
804
+ "fact",
805
+ "event",
806
+ "question",
807
+ "reflection",
808
+ "reference",
809
+ "log",
810
+ "conversation",
811
+ "personal"
812
+ ]
813
+ },
814
+ "topics": {
815
+ "type": "array",
816
+ "items": {
817
+ "type": "string"
818
+ },
819
+ "description": "prefer existing topics, at most 4",
820
+ "maxItems": 4
821
+ },
822
+ "urgency": {
823
+ "type": "string",
824
+ "enum": [
825
+ "bulk",
826
+ "normal",
827
+ "high",
828
+ "urgent"
829
+ ]
830
+ },
831
+ "language": {
832
+ "type": "string",
833
+ "description": "BCP-47 language tag"
834
+ },
835
+ "one_line": {
836
+ "type": "string",
837
+ "description": "the note in one line"
838
+ }
839
+ },
840
+ "required": [
841
+ "title",
842
+ "kind",
843
+ "topics",
844
+ "urgency",
845
+ "language",
846
+ "one_line"
847
+ ]
848
+ }
849
+ }
850
+ }
851
+ },
852
+ {
853
+ "id": "filing_fields",
854
+ "type": "break_object",
855
+ "position": {
856
+ "x": 2400.0,
857
+ "y": 692.0
858
+ },
859
+ "data": {
860
+ "nodeType": "break_object",
861
+ "label": "Filing",
862
+ "inputs": [
863
+ {
864
+ "id": "object",
865
+ "label": "object",
866
+ "type": "object"
867
+ }
868
+ ],
869
+ "outputs": [
870
+ {
871
+ "id": "title",
872
+ "label": "title",
873
+ "type": "string"
874
+ },
875
+ {
876
+ "id": "kind",
877
+ "label": "kind",
878
+ "type": "string"
879
+ },
880
+ {
881
+ "id": "topics",
882
+ "label": "topics",
883
+ "type": "array"
884
+ },
885
+ {
886
+ "id": "urgency",
887
+ "label": "urgency",
888
+ "type": "string"
889
+ },
890
+ {
891
+ "id": "language",
892
+ "label": "language",
893
+ "type": "string"
894
+ },
895
+ {
896
+ "id": "one_line",
897
+ "label": "one_line",
898
+ "type": "string"
899
+ }
900
+ ],
901
+ "breakConfig": {
902
+ "selectedPaths": [
903
+ "title",
904
+ "kind",
905
+ "topics",
906
+ "urgency",
907
+ "language",
908
+ "one_line"
909
+ ]
910
+ }
911
+ }
912
+ },
913
+ {
914
+ "id": "file_args",
915
+ "type": "code",
916
+ "position": {
917
+ "x": 2880.0,
918
+ "y": 320.0
919
+ },
920
+ "data": {
921
+ "nodeType": "code",
922
+ "label": "File the note: arguments",
923
+ "inputs": [
924
+ {
925
+ "id": "exec-in",
926
+ "label": "",
927
+ "type": "execution"
928
+ },
929
+ {
930
+ "id": "note_id",
931
+ "label": "note_id",
932
+ "type": "string"
933
+ },
934
+ {
935
+ "id": "title",
936
+ "label": "title",
937
+ "type": "string"
938
+ },
939
+ {
940
+ "id": "kind",
941
+ "label": "kind",
942
+ "type": "string"
943
+ },
944
+ {
945
+ "id": "topics",
946
+ "label": "topics",
947
+ "type": "array"
948
+ },
949
+ {
950
+ "id": "urgency",
951
+ "label": "urgency",
952
+ "type": "string"
953
+ },
954
+ {
955
+ "id": "language",
956
+ "label": "language",
957
+ "type": "string"
958
+ },
959
+ {
960
+ "id": "one_line",
961
+ "label": "one_line",
962
+ "type": "string"
963
+ },
964
+ {
965
+ "id": "permissions",
966
+ "label": "permissions",
967
+ "type": "string"
968
+ }
969
+ ],
970
+ "outputs": [
971
+ {
972
+ "id": "exec-out",
973
+ "label": "",
974
+ "type": "execution"
975
+ },
976
+ {
977
+ "id": "tool_calls",
978
+ "label": "tool_calls",
979
+ "type": "array"
980
+ }
981
+ ],
982
+ "pinDefaults": {
983
+ "permissions": "sandbox"
984
+ },
985
+ "functionName": "transform",
986
+ "codeBody": "arguments = {}\nif note_id is not None and note_id != \"\":\n arguments[\"note_id\"] = note_id\nif title is not None and title != \"\":\n arguments[\"title\"] = title\nif kind is not None and kind != \"\":\n arguments[\"kind\"] = kind\nif topics is not None and topics != \"\":\n arguments[\"topics\"] = topics\nif urgency is not None and urgency != \"\":\n arguments[\"urgency\"] = urgency\nif language is not None and language != \"\":\n arguments[\"language\"] = language\nif one_line is not None and one_line != \"\":\n arguments[\"one_line\"] = one_line\nreturn {\"tool_calls\": [{\"name\": \"note_file\", \"call_id\": \"file\", \"arguments\": arguments}]}\n"
987
+ }
988
+ },
989
+ {
990
+ "id": "file",
991
+ "type": "tool_calls",
992
+ "position": {
993
+ "x": 3360.0,
994
+ "y": 320.0
995
+ },
996
+ "data": {
997
+ "nodeType": "tool_calls",
998
+ "label": "File the note",
999
+ "inputs": [
1000
+ {
1001
+ "id": "exec-in",
1002
+ "label": "",
1003
+ "type": "execution"
1004
+ },
1005
+ {
1006
+ "id": "tool_calls",
1007
+ "label": "tool_calls",
1008
+ "type": "array"
1009
+ },
1010
+ {
1011
+ "id": "allowed_tools",
1012
+ "label": "allowed_tools",
1013
+ "type": "array"
1014
+ }
1015
+ ],
1016
+ "outputs": [
1017
+ {
1018
+ "id": "exec-out",
1019
+ "label": "",
1020
+ "type": "execution"
1021
+ },
1022
+ {
1023
+ "id": "results",
1024
+ "label": "results",
1025
+ "type": "array"
1026
+ },
1027
+ {
1028
+ "id": "success",
1029
+ "label": "success",
1030
+ "type": "boolean"
1031
+ }
1032
+ ],
1033
+ "pinDefaults": {
1034
+ "allowed_tools": [
1035
+ "note_file"
1036
+ ]
1037
+ },
1038
+ "effectConfig": {
1039
+ "allowed_tools": [
1040
+ "note_file"
1041
+ ]
1042
+ }
1043
+ }
1044
+ },
1045
+ {
1046
+ "id": "file_out",
1047
+ "type": "code",
1048
+ "position": {
1049
+ "x": 3840.0,
1050
+ "y": 0.0
1051
+ },
1052
+ "data": {
1053
+ "nodeType": "code",
1054
+ "label": "File the note: result",
1055
+ "inputs": [
1056
+ {
1057
+ "id": "exec-in",
1058
+ "label": "",
1059
+ "type": "execution"
1060
+ },
1061
+ {
1062
+ "id": "results",
1063
+ "label": "results",
1064
+ "type": "array"
1065
+ },
1066
+ {
1067
+ "id": "permissions",
1068
+ "label": "permissions",
1069
+ "type": "string"
1070
+ }
1071
+ ],
1072
+ "outputs": [
1073
+ {
1074
+ "id": "exec-out",
1075
+ "label": "",
1076
+ "type": "execution"
1077
+ },
1078
+ {
1079
+ "id": "priority",
1080
+ "label": "priority",
1081
+ "type": "number"
1082
+ },
1083
+ {
1084
+ "id": "status",
1085
+ "label": "status",
1086
+ "type": "string"
1087
+ },
1088
+ {
1089
+ "id": "tool_output",
1090
+ "label": "tool_output",
1091
+ "type": "object"
1092
+ }
1093
+ ],
1094
+ "pinDefaults": {
1095
+ "permissions": "sandbox"
1096
+ },
1097
+ "functionName": "transform",
1098
+ "codeBody": "r = results[0] if isinstance(results, list) and results else None\nfailure = None\nout = None\nif not isinstance(r, dict):\n failure = \"note_file returned no result.\"\nelif not r.get(\"success\"):\n failure = str(r.get(\"error\") or \"note_file failed.\")\nelse:\n out = r.get(\"output\")\n if not isinstance(out, dict):\n failure = \"note_file returned something other than an object.\"\nif failure is not None:\n raise ValueError(failure)\nreturn dict(out, tool_output=out)\n"
1099
+ }
1100
+ },
1101
+ {
1102
+ "id": "saved_msg",
1103
+ "type": "code",
1104
+ "position": {
1105
+ "x": 4320.0,
1106
+ "y": 0.0
1107
+ },
1108
+ "data": {
1109
+ "nodeType": "code",
1110
+ "label": "Saved answer",
1111
+ "inputs": [
1112
+ {
1113
+ "id": "exec-in",
1114
+ "label": "",
1115
+ "type": "execution"
1116
+ },
1117
+ {
1118
+ "id": "kind",
1119
+ "label": "kind",
1120
+ "type": "string"
1121
+ },
1122
+ {
1123
+ "id": "title",
1124
+ "label": "title",
1125
+ "type": "string"
1126
+ },
1127
+ {
1128
+ "id": "similar",
1129
+ "label": "similar",
1130
+ "type": "array"
1131
+ },
1132
+ {
1133
+ "id": "revisits",
1134
+ "label": "revisits",
1135
+ "type": "array"
1136
+ },
1137
+ {
1138
+ "id": "warnings",
1139
+ "label": "warnings",
1140
+ "type": "array"
1141
+ },
1142
+ {
1143
+ "id": "permissions",
1144
+ "label": "permissions",
1145
+ "type": "string"
1146
+ }
1147
+ ],
1148
+ "outputs": [
1149
+ {
1150
+ "id": "exec-out",
1151
+ "label": "",
1152
+ "type": "execution"
1153
+ },
1154
+ {
1155
+ "id": "message",
1156
+ "label": "message",
1157
+ "type": "string"
1158
+ }
1159
+ ],
1160
+ "pinDefaults": {
1161
+ "permissions": "sandbox"
1162
+ },
1163
+ "functionName": "transform",
1164
+ "codeBody": "titles = []\nfor s in similar or []:\n t = s.get(\"title\") if isinstance(s, dict) else None\n if t and t not in titles:\n titles.append(t)\nparts = [\"Saved as \" + str(kind or \"note\") + \" \\u201c\" + str(title or \"\") + \"\\u201d.\"]\nif titles:\n parts.append(\"Related: \" + \", \".join(titles[:3]) + \".\")\ndates = [str(r.get(\"occurred_at\") or \"\")[:10] for r in (revisits or []) if isinstance(r, dict)]\ndates = [d for d in dates if d]\nif dates:\n parts.append(\"You noted this on \" + dates[0] + \".\")\nfor w in warnings or []:\n if isinstance(w, str) and w.strip():\n parts.append(w.strip())\nreturn {\"message\": \" \".join(parts)}\n"
1165
+ }
1166
+ },
1167
+ {
1168
+ "id": "saved_answer",
1169
+ "type": "answer_user",
1170
+ "position": {
1171
+ "x": 4800.0,
1172
+ "y": 0.0
1173
+ },
1174
+ "data": {
1175
+ "nodeType": "answer_user",
1176
+ "label": "Say where it was filed",
1177
+ "inputs": [
1178
+ {
1179
+ "id": "exec-in",
1180
+ "label": "",
1181
+ "type": "execution"
1182
+ },
1183
+ {
1184
+ "id": "message",
1185
+ "label": "message",
1186
+ "type": "string"
1187
+ },
1188
+ {
1189
+ "id": "level",
1190
+ "label": "level",
1191
+ "type": "string"
1192
+ }
1193
+ ],
1194
+ "outputs": [
1195
+ {
1196
+ "id": "exec-out",
1197
+ "label": "",
1198
+ "type": "execution"
1199
+ },
1200
+ {
1201
+ "id": "message",
1202
+ "label": "message",
1203
+ "type": "string"
1204
+ }
1205
+ ],
1206
+ "pinDefaults": {
1207
+ "level": "message"
1208
+ }
1209
+ }
1210
+ },
1211
+ {
1212
+ "id": "inline_branch",
1213
+ "type": "if",
1214
+ "position": {
1215
+ "x": 5280.0,
1216
+ "y": 0.0
1217
+ },
1218
+ "data": {
1219
+ "nodeType": "if",
1220
+ "label": "Process now?",
1221
+ "inputs": [
1222
+ {
1223
+ "id": "exec-in",
1224
+ "label": "",
1225
+ "type": "execution"
1226
+ },
1227
+ {
1228
+ "id": "condition",
1229
+ "label": "condition",
1230
+ "type": "boolean"
1231
+ }
1232
+ ],
1233
+ "outputs": [
1234
+ {
1235
+ "id": "true",
1236
+ "label": "true",
1237
+ "type": "execution"
1238
+ },
1239
+ {
1240
+ "id": "false",
1241
+ "label": "false",
1242
+ "type": "execution"
1243
+ }
1244
+ ]
1245
+ }
1246
+ },
1247
+ {
1248
+ "id": "end_queued",
1249
+ "type": "on_flow_end",
1250
+ "position": {
1251
+ "x": 5760.0,
1252
+ "y": 0.0
1253
+ },
1254
+ "data": {
1255
+ "nodeType": "on_flow_end",
1256
+ "label": "Done (queued)",
1257
+ "inputs": [
1258
+ {
1259
+ "id": "exec-in",
1260
+ "label": "",
1261
+ "type": "execution"
1262
+ },
1263
+ {
1264
+ "id": "response",
1265
+ "label": "response",
1266
+ "type": "string"
1267
+ },
1268
+ {
1269
+ "id": "note_id",
1270
+ "label": "note_id",
1271
+ "type": "string"
1272
+ },
1273
+ {
1274
+ "id": "status",
1275
+ "label": "status",
1276
+ "type": "string"
1277
+ }
1278
+ ],
1279
+ "outputs": [],
1280
+ "pinDefaults": {
1281
+ "status": "queued"
1282
+ }
1283
+ }
1284
+ },
1285
+ {
1286
+ "id": "process",
1287
+ "type": "subflow",
1288
+ "position": {
1289
+ "x": 5760.0,
1290
+ "y": 320.0
1291
+ },
1292
+ "data": {
1293
+ "nodeType": "subflow",
1294
+ "label": "Understand the note",
1295
+ "inputs": [
1296
+ {
1297
+ "id": "exec-in",
1298
+ "label": "",
1299
+ "type": "execution"
1300
+ },
1301
+ {
1302
+ "id": "inherit_context",
1303
+ "label": "inherit_context",
1304
+ "type": "boolean"
1305
+ },
1306
+ {
1307
+ "id": "note_id",
1308
+ "label": "note_id",
1309
+ "type": "string"
1310
+ },
1311
+ {
1312
+ "id": "provider",
1313
+ "label": "provider",
1314
+ "type": "provider_text"
1315
+ },
1316
+ {
1317
+ "id": "model",
1318
+ "label": "model",
1319
+ "type": "model"
1320
+ }
1321
+ ],
1322
+ "outputs": [
1323
+ {
1324
+ "id": "exec-out",
1325
+ "label": "",
1326
+ "type": "execution"
1327
+ },
1328
+ {
1329
+ "id": "output",
1330
+ "label": "output",
1331
+ "type": "object"
1332
+ },
1333
+ {
1334
+ "id": "child_output",
1335
+ "label": "child_output",
1336
+ "type": "object"
1337
+ },
1338
+ {
1339
+ "id": "response",
1340
+ "label": "response",
1341
+ "type": "string"
1342
+ },
1343
+ {
1344
+ "id": "revision_id",
1345
+ "label": "revision_id",
1346
+ "type": "string"
1347
+ },
1348
+ {
1349
+ "id": "revision",
1350
+ "label": "revision",
1351
+ "type": "object"
1352
+ }
1353
+ ],
1354
+ "pinDefaults": {
1355
+ "inherit_context": false
1356
+ },
1357
+ "subflowId": "note-process"
1358
+ }
1359
+ },
1360
+ {
1361
+ "id": "process_ok",
1362
+ "type": "code",
1363
+ "position": {
1364
+ "x": 6240.0,
1365
+ "y": 0.0
1366
+ },
1367
+ "data": {
1368
+ "nodeType": "code",
1369
+ "label": "Understood?",
1370
+ "inputs": [
1371
+ {
1372
+ "id": "exec-in",
1373
+ "label": "",
1374
+ "type": "execution"
1375
+ },
1376
+ {
1377
+ "id": "output",
1378
+ "label": "output",
1379
+ "type": "object"
1380
+ },
1381
+ {
1382
+ "id": "child_output",
1383
+ "label": "child_output",
1384
+ "type": "object"
1385
+ },
1386
+ {
1387
+ "id": "permissions",
1388
+ "label": "permissions",
1389
+ "type": "string"
1390
+ }
1391
+ ],
1392
+ "outputs": [
1393
+ {
1394
+ "id": "exec-out",
1395
+ "label": "",
1396
+ "type": "execution"
1397
+ },
1398
+ {
1399
+ "id": "checked",
1400
+ "label": "checked",
1401
+ "type": "boolean"
1402
+ }
1403
+ ],
1404
+ "pinDefaults": {
1405
+ "permissions": "sandbox"
1406
+ },
1407
+ "functionName": "transform",
1408
+ "codeBody": "o = output if isinstance(output, dict) else {}\nc = child_output if isinstance(child_output, dict) else {}\nif c.get(\"success\") is False or o.get(\"success\") is False:\n err = str(c.get(\"error\") or o.get(\"error\") or \"The step could not finish.\")\n for prefix in (\"Runtime error: \", \"Execution error: \"):\n if err.startswith(prefix):\n err = err[len(prefix):]\n raise ValueError(err)\nreturn {\"checked\": True}\n"
1409
+ }
1410
+ },
1411
+ {
1412
+ "id": "inline_ack_args",
1413
+ "type": "code",
1414
+ "position": {
1415
+ "x": 6720.0,
1416
+ "y": 0.0
1417
+ },
1418
+ "data": {
1419
+ "nodeType": "code",
1420
+ "label": "Mark it processed: arguments",
1421
+ "inputs": [
1422
+ {
1423
+ "id": "exec-in",
1424
+ "label": "",
1425
+ "type": "execution"
1426
+ },
1427
+ {
1428
+ "id": "note_id",
1429
+ "label": "note_id",
1430
+ "type": "string"
1431
+ },
1432
+ {
1433
+ "id": "outcome",
1434
+ "label": "outcome",
1435
+ "type": "string"
1436
+ },
1437
+ {
1438
+ "id": "revision_id",
1439
+ "label": "revision_id",
1440
+ "type": "string"
1441
+ },
1442
+ {
1443
+ "id": "permissions",
1444
+ "label": "permissions",
1445
+ "type": "string"
1446
+ }
1447
+ ],
1448
+ "outputs": [
1449
+ {
1450
+ "id": "exec-out",
1451
+ "label": "",
1452
+ "type": "execution"
1453
+ },
1454
+ {
1455
+ "id": "tool_calls",
1456
+ "label": "tool_calls",
1457
+ "type": "array"
1458
+ }
1459
+ ],
1460
+ "pinDefaults": {
1461
+ "permissions": "sandbox",
1462
+ "outcome": "ok"
1463
+ },
1464
+ "functionName": "transform",
1465
+ "codeBody": "arguments = {}\nif note_id is not None and note_id != \"\":\n arguments[\"note_id\"] = note_id\nif outcome is not None and outcome != \"\":\n arguments[\"outcome\"] = outcome\nif revision_id is not None and revision_id != \"\":\n arguments[\"revision_id\"] = revision_id\nreturn {\"tool_calls\": [{\"name\": \"note_queue_ack\", \"call_id\": \"inline_ack\", \"arguments\": arguments}]}\n"
1466
+ }
1467
+ },
1468
+ {
1469
+ "id": "inline_ack",
1470
+ "type": "tool_calls",
1471
+ "position": {
1472
+ "x": 7200.0,
1473
+ "y": 0.0
1474
+ },
1475
+ "data": {
1476
+ "nodeType": "tool_calls",
1477
+ "label": "Mark it processed",
1478
+ "inputs": [
1479
+ {
1480
+ "id": "exec-in",
1481
+ "label": "",
1482
+ "type": "execution"
1483
+ },
1484
+ {
1485
+ "id": "tool_calls",
1486
+ "label": "tool_calls",
1487
+ "type": "array"
1488
+ },
1489
+ {
1490
+ "id": "allowed_tools",
1491
+ "label": "allowed_tools",
1492
+ "type": "array"
1493
+ }
1494
+ ],
1495
+ "outputs": [
1496
+ {
1497
+ "id": "exec-out",
1498
+ "label": "",
1499
+ "type": "execution"
1500
+ },
1501
+ {
1502
+ "id": "results",
1503
+ "label": "results",
1504
+ "type": "array"
1505
+ },
1506
+ {
1507
+ "id": "success",
1508
+ "label": "success",
1509
+ "type": "boolean"
1510
+ }
1511
+ ],
1512
+ "pinDefaults": {
1513
+ "allowed_tools": [
1514
+ "note_queue_ack"
1515
+ ]
1516
+ },
1517
+ "effectConfig": {
1518
+ "allowed_tools": [
1519
+ "note_queue_ack"
1520
+ ]
1521
+ }
1522
+ }
1523
+ },
1524
+ {
1525
+ "id": "inline_ack_out",
1526
+ "type": "code",
1527
+ "position": {
1528
+ "x": 7680.0,
1529
+ "y": 0.0
1530
+ },
1531
+ "data": {
1532
+ "nodeType": "code",
1533
+ "label": "Mark it processed: result",
1534
+ "inputs": [
1535
+ {
1536
+ "id": "exec-in",
1537
+ "label": "",
1538
+ "type": "execution"
1539
+ },
1540
+ {
1541
+ "id": "results",
1542
+ "label": "results",
1543
+ "type": "array"
1544
+ },
1545
+ {
1546
+ "id": "permissions",
1547
+ "label": "permissions",
1548
+ "type": "string"
1549
+ }
1550
+ ],
1551
+ "outputs": [
1552
+ {
1553
+ "id": "exec-out",
1554
+ "label": "",
1555
+ "type": "execution"
1556
+ },
1557
+ {
1558
+ "id": "status",
1559
+ "label": "status",
1560
+ "type": "string"
1561
+ },
1562
+ {
1563
+ "id": "tool_output",
1564
+ "label": "tool_output",
1565
+ "type": "object"
1566
+ }
1567
+ ],
1568
+ "pinDefaults": {
1569
+ "permissions": "sandbox"
1570
+ },
1571
+ "functionName": "transform",
1572
+ "codeBody": "r = results[0] if isinstance(results, list) and results else None\nfailure = None\nout = None\nif not isinstance(r, dict):\n failure = \"note_queue_ack returned no result.\"\nelif not r.get(\"success\"):\n failure = str(r.get(\"error\") or \"note_queue_ack failed.\")\nelse:\n out = r.get(\"output\")\n if not isinstance(out, dict):\n failure = \"note_queue_ack returned something other than an object.\"\nif failure is not None:\n raise ValueError(failure)\nreturn dict(out, tool_output=out)\n"
1573
+ }
1574
+ },
1575
+ {
1576
+ "id": "processed_msg",
1577
+ "type": "code",
1578
+ "position": {
1579
+ "x": 8160.0,
1580
+ "y": 0.0
1581
+ },
1582
+ "data": {
1583
+ "nodeType": "code",
1584
+ "label": "Processed answer",
1585
+ "inputs": [
1586
+ {
1587
+ "id": "exec-in",
1588
+ "label": "",
1589
+ "type": "execution"
1590
+ },
1591
+ {
1592
+ "id": "message",
1593
+ "label": "message",
1594
+ "type": "string"
1595
+ },
1596
+ {
1597
+ "id": "summary",
1598
+ "label": "summary",
1599
+ "type": "string"
1600
+ },
1601
+ {
1602
+ "id": "permissions",
1603
+ "label": "permissions",
1604
+ "type": "string"
1605
+ }
1606
+ ],
1607
+ "outputs": [
1608
+ {
1609
+ "id": "exec-out",
1610
+ "label": "",
1611
+ "type": "execution"
1612
+ },
1613
+ {
1614
+ "id": "message",
1615
+ "label": "message",
1616
+ "type": "string"
1617
+ }
1618
+ ],
1619
+ "pinDefaults": {
1620
+ "permissions": "sandbox"
1621
+ },
1622
+ "functionName": "transform",
1623
+ "codeBody": "extra = str(summary or \"\").strip()\nreturn {\"message\": (str(message) + \" \" + extra).strip()}\n"
1624
+ }
1625
+ },
1626
+ {
1627
+ "id": "end_processed",
1628
+ "type": "on_flow_end",
1629
+ "position": {
1630
+ "x": 8640.0,
1631
+ "y": 0.0
1632
+ },
1633
+ "data": {
1634
+ "nodeType": "on_flow_end",
1635
+ "label": "Done (processed)",
1636
+ "inputs": [
1637
+ {
1638
+ "id": "exec-in",
1639
+ "label": "",
1640
+ "type": "execution"
1641
+ },
1642
+ {
1643
+ "id": "response",
1644
+ "label": "response",
1645
+ "type": "string"
1646
+ },
1647
+ {
1648
+ "id": "note_id",
1649
+ "label": "note_id",
1650
+ "type": "string"
1651
+ },
1652
+ {
1653
+ "id": "status",
1654
+ "label": "status",
1655
+ "type": "string"
1656
+ },
1657
+ {
1658
+ "id": "revision_summary",
1659
+ "label": "revision_summary",
1660
+ "type": "string"
1661
+ },
1662
+ {
1663
+ "id": "revision",
1664
+ "label": "revision",
1665
+ "type": "object"
1666
+ }
1667
+ ],
1668
+ "outputs": [],
1669
+ "pinDefaults": {
1670
+ "status": "processed"
1671
+ }
1672
+ }
1673
+ }
1674
+ ],
1675
+ "edges": [
1676
+ {
1677
+ "id": "e-start-context-attachments-object",
1678
+ "source": "start",
1679
+ "sourceHandle": "context",
1680
+ "target": "attachments",
1681
+ "targetHandle": "object"
1682
+ },
1683
+ {
1684
+ "id": "e-start-context-about-object",
1685
+ "source": "start",
1686
+ "sourceHandle": "context",
1687
+ "target": "about",
1688
+ "targetHandle": "object"
1689
+ },
1690
+ {
1691
+ "id": "e-start-context-answer-object",
1692
+ "source": "start",
1693
+ "sourceHandle": "context",
1694
+ "target": "answer",
1695
+ "targetHandle": "object"
1696
+ },
1697
+ {
1698
+ "id": "e-start-text-capture_args-text",
1699
+ "source": "start",
1700
+ "sourceHandle": "text",
1701
+ "target": "capture_args",
1702
+ "targetHandle": "text"
1703
+ },
1704
+ {
1705
+ "id": "e-start-title-capture_args-title",
1706
+ "source": "start",
1707
+ "sourceHandle": "title",
1708
+ "target": "capture_args",
1709
+ "targetHandle": "title"
1710
+ },
1711
+ {
1712
+ "id": "e-start-occurred_at-capture_args-occurred_at",
1713
+ "source": "start",
1714
+ "sourceHandle": "occurred_at",
1715
+ "target": "capture_args",
1716
+ "targetHandle": "occurred_at"
1717
+ },
1718
+ {
1719
+ "id": "e-start-location-capture_args-location",
1720
+ "source": "start",
1721
+ "sourceHandle": "location",
1722
+ "target": "capture_args",
1723
+ "targetHandle": "location"
1724
+ },
1725
+ {
1726
+ "id": "e-start-source-capture_args-source",
1727
+ "source": "start",
1728
+ "sourceHandle": "source",
1729
+ "target": "capture_args",
1730
+ "targetHandle": "source"
1731
+ },
1732
+ {
1733
+ "id": "e-start-idempotency_key-capture_args-idempotency_key",
1734
+ "source": "start",
1735
+ "sourceHandle": "idempotency_key",
1736
+ "target": "capture_args",
1737
+ "targetHandle": "idempotency_key"
1738
+ },
1739
+ {
1740
+ "id": "e-start-priority-capture_args-priority",
1741
+ "source": "start",
1742
+ "sourceHandle": "priority",
1743
+ "target": "capture_args",
1744
+ "targetHandle": "priority"
1745
+ },
1746
+ {
1747
+ "id": "e-start-session_id-capture_args-session_id",
1748
+ "source": "start",
1749
+ "sourceHandle": "session_id",
1750
+ "target": "capture_args",
1751
+ "targetHandle": "session_id"
1752
+ },
1753
+ {
1754
+ "id": "e-attachments-value-capture_args-attachments",
1755
+ "source": "attachments",
1756
+ "sourceHandle": "value",
1757
+ "target": "capture_args",
1758
+ "targetHandle": "attachments"
1759
+ },
1760
+ {
1761
+ "id": "e-about-value-capture_args-about",
1762
+ "source": "about",
1763
+ "sourceHandle": "value",
1764
+ "target": "capture_args",
1765
+ "targetHandle": "about"
1766
+ },
1767
+ {
1768
+ "id": "e-answer-value-capture_args-answer",
1769
+ "source": "answer",
1770
+ "sourceHandle": "value",
1771
+ "target": "capture_args",
1772
+ "targetHandle": "answer"
1773
+ },
1774
+ {
1775
+ "id": "e-start-exec-out-capture_args-exec-in",
1776
+ "source": "start",
1777
+ "sourceHandle": "exec-out",
1778
+ "target": "capture_args",
1779
+ "targetHandle": "exec-in"
1780
+ },
1781
+ {
1782
+ "id": "e-capture_args-tool_calls-capture-tool_calls",
1783
+ "source": "capture_args",
1784
+ "sourceHandle": "tool_calls",
1785
+ "target": "capture",
1786
+ "targetHandle": "tool_calls"
1787
+ },
1788
+ {
1789
+ "id": "e-capture_args-exec-out-capture-exec-in",
1790
+ "source": "capture_args",
1791
+ "sourceHandle": "exec-out",
1792
+ "target": "capture",
1793
+ "targetHandle": "exec-in"
1794
+ },
1795
+ {
1796
+ "id": "e-capture-results-capture_out-results",
1797
+ "source": "capture",
1798
+ "sourceHandle": "results",
1799
+ "target": "capture_out",
1800
+ "targetHandle": "results"
1801
+ },
1802
+ {
1803
+ "id": "e-capture-exec-out-capture_out-exec-in",
1804
+ "source": "capture",
1805
+ "sourceHandle": "exec-out",
1806
+ "target": "capture_out",
1807
+ "targetHandle": "exec-in"
1808
+ },
1809
+ {
1810
+ "id": "e-capture_out-status-is_dup-status",
1811
+ "source": "capture_out",
1812
+ "sourceHandle": "status",
1813
+ "target": "is_dup",
1814
+ "targetHandle": "status"
1815
+ },
1816
+ {
1817
+ "id": "e-is_dup-duplicate-dup_branch-condition",
1818
+ "source": "is_dup",
1819
+ "sourceHandle": "duplicate",
1820
+ "target": "dup_branch",
1821
+ "targetHandle": "condition"
1822
+ },
1823
+ {
1824
+ "id": "e-capture_out-exec-out-dup_branch-exec-in",
1825
+ "source": "capture_out",
1826
+ "sourceHandle": "exec-out",
1827
+ "target": "dup_branch",
1828
+ "targetHandle": "exec-in"
1829
+ },
1830
+ {
1831
+ "id": "e-capture_out-first_saved_at-dup_msg-first_saved_at",
1832
+ "source": "capture_out",
1833
+ "sourceHandle": "first_saved_at",
1834
+ "target": "dup_msg",
1835
+ "targetHandle": "first_saved_at"
1836
+ },
1837
+ {
1838
+ "id": "e-dup_branch-true-dup_msg-exec-in",
1839
+ "source": "dup_branch",
1840
+ "sourceHandle": "true",
1841
+ "target": "dup_msg",
1842
+ "targetHandle": "exec-in"
1843
+ },
1844
+ {
1845
+ "id": "e-dup_msg-message-dup_answer-message",
1846
+ "source": "dup_msg",
1847
+ "sourceHandle": "message",
1848
+ "target": "dup_answer",
1849
+ "targetHandle": "message"
1850
+ },
1851
+ {
1852
+ "id": "e-dup_msg-exec-out-dup_answer-exec-in",
1853
+ "source": "dup_msg",
1854
+ "sourceHandle": "exec-out",
1855
+ "target": "dup_answer",
1856
+ "targetHandle": "exec-in"
1857
+ },
1858
+ {
1859
+ "id": "e-dup_msg-message-end_duplicate-response",
1860
+ "source": "dup_msg",
1861
+ "sourceHandle": "message",
1862
+ "target": "end_duplicate",
1863
+ "targetHandle": "response"
1864
+ },
1865
+ {
1866
+ "id": "e-capture_out-note_id-end_duplicate-note_id",
1867
+ "source": "capture_out",
1868
+ "sourceHandle": "note_id",
1869
+ "target": "end_duplicate",
1870
+ "targetHandle": "note_id"
1871
+ },
1872
+ {
1873
+ "id": "e-dup_answer-exec-out-end_duplicate-exec-in",
1874
+ "source": "dup_answer",
1875
+ "sourceHandle": "exec-out",
1876
+ "target": "end_duplicate",
1877
+ "targetHandle": "exec-in"
1878
+ },
1879
+ {
1880
+ "id": "e-start-title-filing_prompt-title",
1881
+ "source": "start",
1882
+ "sourceHandle": "title",
1883
+ "target": "filing_prompt",
1884
+ "targetHandle": "title"
1885
+ },
1886
+ {
1887
+ "id": "e-start-text-filing_prompt-text",
1888
+ "source": "start",
1889
+ "sourceHandle": "text",
1890
+ "target": "filing_prompt",
1891
+ "targetHandle": "text"
1892
+ },
1893
+ {
1894
+ "id": "e-capture_out-similar-filing_prompt-similar",
1895
+ "source": "capture_out",
1896
+ "sourceHandle": "similar",
1897
+ "target": "filing_prompt",
1898
+ "targetHandle": "similar"
1899
+ },
1900
+ {
1901
+ "id": "e-capture_out-revisits-filing_prompt-revisits",
1902
+ "source": "capture_out",
1903
+ "sourceHandle": "revisits",
1904
+ "target": "filing_prompt",
1905
+ "targetHandle": "revisits"
1906
+ },
1907
+ {
1908
+ "id": "e-capture_out-topics-filing_prompt-topics",
1909
+ "source": "capture_out",
1910
+ "sourceHandle": "topics",
1911
+ "target": "filing_prompt",
1912
+ "targetHandle": "topics"
1913
+ },
1914
+ {
1915
+ "id": "e-filing_prompt-result-filing-prompt",
1916
+ "source": "filing_prompt",
1917
+ "sourceHandle": "result",
1918
+ "target": "filing",
1919
+ "targetHandle": "prompt"
1920
+ },
1921
+ {
1922
+ "id": "e-start-provider-filing-provider",
1923
+ "source": "start",
1924
+ "sourceHandle": "provider",
1925
+ "target": "filing",
1926
+ "targetHandle": "provider"
1927
+ },
1928
+ {
1929
+ "id": "e-start-model-filing-model",
1930
+ "source": "start",
1931
+ "sourceHandle": "model",
1932
+ "target": "filing",
1933
+ "targetHandle": "model"
1934
+ },
1935
+ {
1936
+ "id": "e-dup_branch-false-filing-exec-in",
1937
+ "source": "dup_branch",
1938
+ "sourceHandle": "false",
1939
+ "target": "filing",
1940
+ "targetHandle": "exec-in"
1941
+ },
1942
+ {
1943
+ "id": "e-filing-data-filing_fields-object",
1944
+ "source": "filing",
1945
+ "sourceHandle": "data",
1946
+ "target": "filing_fields",
1947
+ "targetHandle": "object"
1948
+ },
1949
+ {
1950
+ "id": "e-capture_out-note_id-file_args-note_id",
1951
+ "source": "capture_out",
1952
+ "sourceHandle": "note_id",
1953
+ "target": "file_args",
1954
+ "targetHandle": "note_id"
1955
+ },
1956
+ {
1957
+ "id": "e-filing_fields-title-file_args-title",
1958
+ "source": "filing_fields",
1959
+ "sourceHandle": "title",
1960
+ "target": "file_args",
1961
+ "targetHandle": "title"
1962
+ },
1963
+ {
1964
+ "id": "e-filing_fields-kind-file_args-kind",
1965
+ "source": "filing_fields",
1966
+ "sourceHandle": "kind",
1967
+ "target": "file_args",
1968
+ "targetHandle": "kind"
1969
+ },
1970
+ {
1971
+ "id": "e-filing_fields-topics-file_args-topics",
1972
+ "source": "filing_fields",
1973
+ "sourceHandle": "topics",
1974
+ "target": "file_args",
1975
+ "targetHandle": "topics"
1976
+ },
1977
+ {
1978
+ "id": "e-filing_fields-urgency-file_args-urgency",
1979
+ "source": "filing_fields",
1980
+ "sourceHandle": "urgency",
1981
+ "target": "file_args",
1982
+ "targetHandle": "urgency"
1983
+ },
1984
+ {
1985
+ "id": "e-filing_fields-language-file_args-language",
1986
+ "source": "filing_fields",
1987
+ "sourceHandle": "language",
1988
+ "target": "file_args",
1989
+ "targetHandle": "language"
1990
+ },
1991
+ {
1992
+ "id": "e-filing_fields-one_line-file_args-one_line",
1993
+ "source": "filing_fields",
1994
+ "sourceHandle": "one_line",
1995
+ "target": "file_args",
1996
+ "targetHandle": "one_line"
1997
+ },
1998
+ {
1999
+ "id": "e-filing-exec-out-file_args-exec-in",
2000
+ "source": "filing",
2001
+ "sourceHandle": "exec-out",
2002
+ "target": "file_args",
2003
+ "targetHandle": "exec-in"
2004
+ },
2005
+ {
2006
+ "id": "e-file_args-tool_calls-file-tool_calls",
2007
+ "source": "file_args",
2008
+ "sourceHandle": "tool_calls",
2009
+ "target": "file",
2010
+ "targetHandle": "tool_calls"
2011
+ },
2012
+ {
2013
+ "id": "e-file_args-exec-out-file-exec-in",
2014
+ "source": "file_args",
2015
+ "sourceHandle": "exec-out",
2016
+ "target": "file",
2017
+ "targetHandle": "exec-in"
2018
+ },
2019
+ {
2020
+ "id": "e-file-results-file_out-results",
2021
+ "source": "file",
2022
+ "sourceHandle": "results",
2023
+ "target": "file_out",
2024
+ "targetHandle": "results"
2025
+ },
2026
+ {
2027
+ "id": "e-file-exec-out-file_out-exec-in",
2028
+ "source": "file",
2029
+ "sourceHandle": "exec-out",
2030
+ "target": "file_out",
2031
+ "targetHandle": "exec-in"
2032
+ },
2033
+ {
2034
+ "id": "e-filing_fields-kind-saved_msg-kind",
2035
+ "source": "filing_fields",
2036
+ "sourceHandle": "kind",
2037
+ "target": "saved_msg",
2038
+ "targetHandle": "kind"
2039
+ },
2040
+ {
2041
+ "id": "e-filing_fields-title-saved_msg-title",
2042
+ "source": "filing_fields",
2043
+ "sourceHandle": "title",
2044
+ "target": "saved_msg",
2045
+ "targetHandle": "title"
2046
+ },
2047
+ {
2048
+ "id": "e-capture_out-similar-saved_msg-similar",
2049
+ "source": "capture_out",
2050
+ "sourceHandle": "similar",
2051
+ "target": "saved_msg",
2052
+ "targetHandle": "similar"
2053
+ },
2054
+ {
2055
+ "id": "e-capture_out-revisits-saved_msg-revisits",
2056
+ "source": "capture_out",
2057
+ "sourceHandle": "revisits",
2058
+ "target": "saved_msg",
2059
+ "targetHandle": "revisits"
2060
+ },
2061
+ {
2062
+ "id": "e-capture_out-warnings-saved_msg-warnings",
2063
+ "source": "capture_out",
2064
+ "sourceHandle": "warnings",
2065
+ "target": "saved_msg",
2066
+ "targetHandle": "warnings"
2067
+ },
2068
+ {
2069
+ "id": "e-file_out-exec-out-saved_msg-exec-in",
2070
+ "source": "file_out",
2071
+ "sourceHandle": "exec-out",
2072
+ "target": "saved_msg",
2073
+ "targetHandle": "exec-in"
2074
+ },
2075
+ {
2076
+ "id": "e-saved_msg-message-saved_answer-message",
2077
+ "source": "saved_msg",
2078
+ "sourceHandle": "message",
2079
+ "target": "saved_answer",
2080
+ "targetHandle": "message"
2081
+ },
2082
+ {
2083
+ "id": "e-saved_msg-exec-out-saved_answer-exec-in",
2084
+ "source": "saved_msg",
2085
+ "sourceHandle": "exec-out",
2086
+ "target": "saved_answer",
2087
+ "targetHandle": "exec-in"
2088
+ },
2089
+ {
2090
+ "id": "e-start-process_inline-inline_branch-condition",
2091
+ "source": "start",
2092
+ "sourceHandle": "process_inline",
2093
+ "target": "inline_branch",
2094
+ "targetHandle": "condition"
2095
+ },
2096
+ {
2097
+ "id": "e-saved_answer-exec-out-inline_branch-exec-in",
2098
+ "source": "saved_answer",
2099
+ "sourceHandle": "exec-out",
2100
+ "target": "inline_branch",
2101
+ "targetHandle": "exec-in"
2102
+ },
2103
+ {
2104
+ "id": "e-saved_msg-message-end_queued-response",
2105
+ "source": "saved_msg",
2106
+ "sourceHandle": "message",
2107
+ "target": "end_queued",
2108
+ "targetHandle": "response"
2109
+ },
2110
+ {
2111
+ "id": "e-capture_out-note_id-end_queued-note_id",
2112
+ "source": "capture_out",
2113
+ "sourceHandle": "note_id",
2114
+ "target": "end_queued",
2115
+ "targetHandle": "note_id"
2116
+ },
2117
+ {
2118
+ "id": "e-inline_branch-false-end_queued-exec-in",
2119
+ "source": "inline_branch",
2120
+ "sourceHandle": "false",
2121
+ "target": "end_queued",
2122
+ "targetHandle": "exec-in"
2123
+ },
2124
+ {
2125
+ "id": "e-capture_out-note_id-process-note_id",
2126
+ "source": "capture_out",
2127
+ "sourceHandle": "note_id",
2128
+ "target": "process",
2129
+ "targetHandle": "note_id"
2130
+ },
2131
+ {
2132
+ "id": "e-start-provider-process-provider",
2133
+ "source": "start",
2134
+ "sourceHandle": "provider",
2135
+ "target": "process",
2136
+ "targetHandle": "provider"
2137
+ },
2138
+ {
2139
+ "id": "e-start-model-process-model",
2140
+ "source": "start",
2141
+ "sourceHandle": "model",
2142
+ "target": "process",
2143
+ "targetHandle": "model"
2144
+ },
2145
+ {
2146
+ "id": "e-inline_branch-true-process-exec-in",
2147
+ "source": "inline_branch",
2148
+ "sourceHandle": "true",
2149
+ "target": "process",
2150
+ "targetHandle": "exec-in"
2151
+ },
2152
+ {
2153
+ "id": "e-process-output-process_ok-output",
2154
+ "source": "process",
2155
+ "sourceHandle": "output",
2156
+ "target": "process_ok",
2157
+ "targetHandle": "output"
2158
+ },
2159
+ {
2160
+ "id": "e-process-child_output-process_ok-child_output",
2161
+ "source": "process",
2162
+ "sourceHandle": "child_output",
2163
+ "target": "process_ok",
2164
+ "targetHandle": "child_output"
2165
+ },
2166
+ {
2167
+ "id": "e-process-exec-out-process_ok-exec-in",
2168
+ "source": "process",
2169
+ "sourceHandle": "exec-out",
2170
+ "target": "process_ok",
2171
+ "targetHandle": "exec-in"
2172
+ },
2173
+ {
2174
+ "id": "e-capture_out-note_id-inline_ack_args-note_id",
2175
+ "source": "capture_out",
2176
+ "sourceHandle": "note_id",
2177
+ "target": "inline_ack_args",
2178
+ "targetHandle": "note_id"
2179
+ },
2180
+ {
2181
+ "id": "e-process-revision_id-inline_ack_args-revision_id",
2182
+ "source": "process",
2183
+ "sourceHandle": "revision_id",
2184
+ "target": "inline_ack_args",
2185
+ "targetHandle": "revision_id"
2186
+ },
2187
+ {
2188
+ "id": "e-process_ok-exec-out-inline_ack_args-exec-in",
2189
+ "source": "process_ok",
2190
+ "sourceHandle": "exec-out",
2191
+ "target": "inline_ack_args",
2192
+ "targetHandle": "exec-in"
2193
+ },
2194
+ {
2195
+ "id": "e-inline_ack_args-tool_calls-inline_ack-tool_calls",
2196
+ "source": "inline_ack_args",
2197
+ "sourceHandle": "tool_calls",
2198
+ "target": "inline_ack",
2199
+ "targetHandle": "tool_calls"
2200
+ },
2201
+ {
2202
+ "id": "e-inline_ack_args-exec-out-inline_ack-exec-in",
2203
+ "source": "inline_ack_args",
2204
+ "sourceHandle": "exec-out",
2205
+ "target": "inline_ack",
2206
+ "targetHandle": "exec-in"
2207
+ },
2208
+ {
2209
+ "id": "e-inline_ack-results-inline_ack_out-results",
2210
+ "source": "inline_ack",
2211
+ "sourceHandle": "results",
2212
+ "target": "inline_ack_out",
2213
+ "targetHandle": "results"
2214
+ },
2215
+ {
2216
+ "id": "e-inline_ack-exec-out-inline_ack_out-exec-in",
2217
+ "source": "inline_ack",
2218
+ "sourceHandle": "exec-out",
2219
+ "target": "inline_ack_out",
2220
+ "targetHandle": "exec-in"
2221
+ },
2222
+ {
2223
+ "id": "e-saved_msg-message-processed_msg-message",
2224
+ "source": "saved_msg",
2225
+ "sourceHandle": "message",
2226
+ "target": "processed_msg",
2227
+ "targetHandle": "message"
2228
+ },
2229
+ {
2230
+ "id": "e-process-response-processed_msg-summary",
2231
+ "source": "process",
2232
+ "sourceHandle": "response",
2233
+ "target": "processed_msg",
2234
+ "targetHandle": "summary"
2235
+ },
2236
+ {
2237
+ "id": "e-inline_ack_out-exec-out-processed_msg-exec-in",
2238
+ "source": "inline_ack_out",
2239
+ "sourceHandle": "exec-out",
2240
+ "target": "processed_msg",
2241
+ "targetHandle": "exec-in"
2242
+ },
2243
+ {
2244
+ "id": "e-processed_msg-message-end_processed-response",
2245
+ "source": "processed_msg",
2246
+ "sourceHandle": "message",
2247
+ "target": "end_processed",
2248
+ "targetHandle": "response"
2249
+ },
2250
+ {
2251
+ "id": "e-capture_out-note_id-end_processed-note_id",
2252
+ "source": "capture_out",
2253
+ "sourceHandle": "note_id",
2254
+ "target": "end_processed",
2255
+ "targetHandle": "note_id"
2256
+ },
2257
+ {
2258
+ "id": "e-process-response-end_processed-revision_summary",
2259
+ "source": "process",
2260
+ "sourceHandle": "response",
2261
+ "target": "end_processed",
2262
+ "targetHandle": "revision_summary"
2263
+ },
2264
+ {
2265
+ "id": "e-process-revision-end_processed-revision",
2266
+ "source": "process",
2267
+ "sourceHandle": "revision",
2268
+ "target": "end_processed",
2269
+ "targetHandle": "revision"
2270
+ },
2271
+ {
2272
+ "id": "e-processed_msg-exec-out-end_processed-exec-in",
2273
+ "source": "processed_msg",
2274
+ "sourceHandle": "exec-out",
2275
+ "target": "end_processed",
2276
+ "targetHandle": "exec-in"
2277
+ }
2278
+ ],
2279
+ "entryNode": "start"
2280
+ }