loopable-cli 0.2.1 → 0.3.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 (134) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/_connectorId-CDCuSgpN.js +1 -0
  3. package/.output/public/assets/_loopId-DOnIsVTW.js +1 -0
  4. package/.output/public/assets/_taskId-BO5MZnlZ.js +1 -0
  5. package/.output/public/assets/agents-CBozi7oi.js +1 -0
  6. package/.output/public/assets/alert-Bn_wjgTX.js +1 -0
  7. package/.output/public/assets/button-K3ypIhAZ.js +1 -0
  8. package/.output/public/assets/card-DiVnaTIE.js +1 -0
  9. package/.output/public/assets/chevron-right-BrctLtFK.js +1 -0
  10. package/.output/public/assets/connection-status-DKWelvLO.js +1 -0
  11. package/.output/public/assets/connector-icon-CEbdE71G.js +1 -0
  12. package/.output/public/assets/connectors-JyX3IzJj.js +1 -0
  13. package/.output/public/assets/gaps-PjmcbaWo.js +1 -0
  14. package/.output/public/assets/inbox-CujRR0Cz.js +1 -0
  15. package/.output/public/assets/index-C9SQ_Baq.js +16 -0
  16. package/.output/public/assets/loop-form-Dw3cuTzw.js +1 -0
  17. package/.output/public/assets/loops-DcEfZa2_.js +1 -0
  18. package/.output/public/assets/manifests-yJpevyye.js +1 -0
  19. package/.output/public/assets/new-CwsnNuRW.js +1 -0
  20. package/.output/public/assets/page-bvnfRMum.js +1 -0
  21. package/.output/public/assets/play-yHLs4DjK.js +1 -0
  22. package/.output/public/assets/plus-Ber25lrU.js +1 -0
  23. package/.output/public/assets/preload-helper-BoU_7EQC.js +3 -0
  24. package/.output/public/assets/{refresh-cw-C3xBnKfy.js → refresh-cw-BzSY7M8I.js} +1 -1
  25. package/.output/public/assets/rotate-ccw-DLv9EfCX.js +1 -0
  26. package/.output/public/assets/runners-DzX-RU3i.js +2 -0
  27. package/.output/public/assets/select-C9grIFwG.js +1 -0
  28. package/.output/public/assets/setting-fields-DUc3npgh.js +3 -0
  29. package/.output/public/assets/styles-B9B98zLk.css +2 -0
  30. package/.output/public/assets/switch-DwABVI6d.js +1 -0
  31. package/.output/public/assets/task-list-Ddk8-qt7.js +1 -0
  32. package/.output/public/assets/textarea-Ds-gIYUQ.js +1 -0
  33. package/.output/public/assets/time-goBWd-5J.js +1 -0
  34. package/.output/public/assets/use-live-tasks-DZNNuECy.js +1 -0
  35. package/.output/public/assets/useCompositeListItem-P4Nmmn7j.js +1 -0
  36. package/.output/public/assets/usePositioner-B7i9Ejzh.js +1 -0
  37. package/.output/server/_chunks/ssr-renderer.mjs +1 -1
  38. package/.output/server/{_connectorId-C9yydJrC.mjs → _connectorId-COuQN02a.mjs} +198 -188
  39. package/.output/server/_libs/@base-ui/react+[...].mjs +1410 -804
  40. package/.output/server/_libs/@tanstack/react-router+[...].mjs +1 -1
  41. package/.output/server/_libs/lucide-react.mjs +93 -84
  42. package/.output/server/_libs/next-themes.mjs +1 -1
  43. package/.output/server/_libs/sonner.mjs +1 -1
  44. package/.output/server/_loopId-CZh6_Yhr.mjs +310 -0
  45. package/.output/server/_ssr/{agents-DG643yoJ.mjs → agents-B_qo1gpL.mjs} +195 -6
  46. package/.output/server/_ssr/{agents-C7B6RJ6-.mjs → agents-Bz10gz_m.mjs} +8 -8
  47. package/.output/server/_ssr/agents-CjbOUp3Z.mjs +206 -0
  48. package/.output/server/_ssr/{alert-DQvzE7bu.mjs → alert-C2WBWfzo.mjs} +2 -2
  49. package/.output/server/_ssr/card-r1cV-PCN.mjs +36 -0
  50. package/.output/server/_ssr/{client-BtVRVhQ2.mjs → client-Dk3SD8Il.mjs} +5 -1
  51. package/.output/server/_ssr/connection-status-BogAL-Fj.mjs +32 -0
  52. package/.output/server/_ssr/{connections-Df-aDpfJ.mjs → connections-Cqvb6Gw2.mjs} +372 -325
  53. package/.output/server/_ssr/connector-icon-DrhVbhs6.mjs +190 -0
  54. package/.output/server/_ssr/connectors-BfS5tQKr.mjs +81 -0
  55. package/.output/server/_ssr/{connectors-e0mf2pMs.mjs → connectors-DJI-rzPU.mjs} +10 -10
  56. package/.output/server/_ssr/{createServerRpc-DPDrnFdH.mjs → createServerRpc-DDrp2nLT.mjs} +2 -2
  57. package/.output/server/_ssr/{gaps-Cz76ZicM.mjs → gaps-CcvHiLcj.mjs} +15 -7
  58. package/.output/server/_ssr/inbox-D1ef761v.mjs +178 -0
  59. package/.output/server/_ssr/loop-form-DWwOR05R.mjs +346 -0
  60. package/.output/server/_ssr/{loops-D8WuK7Ke.mjs → loops-6WhUe_lc.mjs} +37 -27
  61. package/.output/server/_ssr/loops-DHPjzG-t.mjs +217 -0
  62. package/.output/server/_ssr/new-ChKBdcXJ.mjs +245 -0
  63. package/.output/server/_ssr/page-DZVxKvdn.mjs +120 -0
  64. package/.output/server/_ssr/{router-54IDWTVz.mjs → router-DdwREiOf.mjs} +162 -489
  65. package/.output/server/_ssr/runners-CK9Cx9fS.mjs +217 -0
  66. package/.output/server/_ssr/runners-CrznFPHt.mjs +140 -0
  67. package/.output/server/_ssr/{runners-Cj6z9Mqh.mjs → runners-W-pgo5yo.mjs} +5 -5
  68. package/.output/server/_ssr/{secrets-CRnpwGBh.mjs → secrets-CV5scFlt.mjs} +2 -2
  69. package/.output/server/_ssr/select-BtndHhHb.mjs +76 -0
  70. package/.output/server/_ssr/{setting-fields-DzBlslan.mjs → setting-fields-LNgywAW7.mjs} +25 -20
  71. package/.output/server/_ssr/ssr.mjs +43 -42
  72. package/.output/server/_ssr/{start-Vq3Oan3v.mjs → start-C_j-e4vF.mjs} +9 -4
  73. package/.output/server/_ssr/{switch-1pnd_bPJ.mjs → switch-odxNO_S4.mjs} +3 -3
  74. package/.output/server/_ssr/task-list-Dnmq_WeE.mjs +150 -0
  75. package/.output/server/_ssr/{tasks-Qtml5TlK.mjs → tasks-D-kXLgVP.mjs} +13 -13
  76. package/.output/server/_ssr/{tasks-BDqznm57.mjs → tasks-D7aUvA33.mjs} +44 -17
  77. package/.output/server/_ssr/{textarea-CHJTKtsJ.mjs → textarea-D2c_vTIC.mjs} +2 -2
  78. package/.output/server/_ssr/time-Cy8TZP0Z.mjs +13 -0
  79. package/.output/server/_ssr/use-live-tasks-BzhTkEOL.mjs +40 -0
  80. package/.output/server/_tanstack-start-manifest_v-2HUdn-2E.mjs +166 -0
  81. package/.output/server/_taskId-D3KkNJW1.mjs +263 -0
  82. package/.output/server/index.mjs +199 -164
  83. package/README.md +36 -6
  84. package/dist/cli.mjs +161 -8
  85. package/dist/dispatcher.mjs +671 -285
  86. package/dist/runner.mjs +333 -46
  87. package/drizzle/0025_prompt_tasks_done.sql +2 -0
  88. package/drizzle/0026_guidance_into_prompt.sql +3 -0
  89. package/drizzle/0027_relative_folders.sql +5 -0
  90. package/drizzle/0028_runner_version.sql +5 -0
  91. package/drizzle/meta/_journal.json +29 -1
  92. package/package.json +4 -2
  93. package/.output/public/assets/_connectorId-CkygNLny.js +0 -1
  94. package/.output/public/assets/_loopId-Cshlc5Ja.js +0 -1
  95. package/.output/public/assets/_taskId-BKDIJ_Fg.js +0 -1
  96. package/.output/public/assets/alert-BT2EVMJP.js +0 -1
  97. package/.output/public/assets/arrow-left-CWUZt6k2.js +0 -1
  98. package/.output/public/assets/arrow-right-dy_oOg_c.js +0 -1
  99. package/.output/public/assets/connection-status-DCqqmY_6.js +0 -1
  100. package/.output/public/assets/connector-icon-BUoK6Cru.js +0 -1
  101. package/.output/public/assets/connectors-CeLBtEtg.js +0 -1
  102. package/.output/public/assets/external-link-DC11orFA.js +0 -1
  103. package/.output/public/assets/gaps-BtFoD7mF.js +0 -1
  104. package/.output/public/assets/inbox-BYNjkNDJ.js +0 -1
  105. package/.output/public/assets/index-0yP3Jn_G.js +0 -18
  106. package/.output/public/assets/loader-B4Epchm_.js +0 -1
  107. package/.output/public/assets/loop-form-DnSJNc1k.js +0 -1
  108. package/.output/public/assets/loops-1CvbqO6m.js +0 -1
  109. package/.output/public/assets/new-m5NlqYQT.js +0 -1
  110. package/.output/public/assets/play-DD4xQgvi.js +0 -1
  111. package/.output/public/assets/preload-helper-CfdAYKD7.js +0 -3
  112. package/.output/public/assets/rolldown-runtime-CbXtAM7H.js +0 -1
  113. package/.output/public/assets/runners-D8QVl-Y6.js +0 -1
  114. package/.output/public/assets/select-Cppu-hti.js +0 -1
  115. package/.output/public/assets/setting-fields-bJ_gTG7Q.js +0 -3
  116. package/.output/public/assets/styles-ClTGaXU0.css +0 -2
  117. package/.output/public/assets/switch-hRIbNGOj.js +0 -1
  118. package/.output/public/assets/task-list-BAxjcVgr.js +0 -1
  119. package/.output/public/assets/textarea-Fyuzi6Vp.js +0 -1
  120. package/.output/public/assets/trash-2-BXZzBsoV.js +0 -1
  121. package/.output/public/assets/useValueChanged-VVyq4hb9.js +0 -1
  122. package/.output/server/_loopId-B0VG-eBC.mjs +0 -301
  123. package/.output/server/_ssr/connection-status-BZr3Y-IC.mjs +0 -31
  124. package/.output/server/_ssr/connector-icon-WvxwZ5TF.mjs +0 -56
  125. package/.output/server/_ssr/connectors-BU0IiRge.mjs +0 -107
  126. package/.output/server/_ssr/inbox-CAUBa1I3.mjs +0 -114
  127. package/.output/server/_ssr/loop-form-FqSaXiHl.mjs +0 -413
  128. package/.output/server/_ssr/loops-Dqoebe8q.mjs +0 -222
  129. package/.output/server/_ssr/new-bBsVaWD6.mjs +0 -169
  130. package/.output/server/_ssr/runners-D2UAdLyj.mjs +0 -106
  131. package/.output/server/_ssr/runners-DGWaVvWi.mjs +0 -116
  132. package/.output/server/_ssr/task-list-_qgBS9LU.mjs +0 -187
  133. package/.output/server/_tanstack-start-manifest_v-CvheE7ZF.mjs +0 -131
  134. package/.output/server/_taskId-V4QLBO2N.mjs +0 -256
@@ -14,261 +14,296 @@ var public_assets_data_default = {
14
14
  "/apple-touch-icon.png": {
15
15
  "type": "image/png",
16
16
  "etag": "\"6e2-DpcPkINR92ffme+04R4KBRmf4jE\"",
17
- "mtime": "2026-09-18T06:00:41.671Z",
17
+ "mtime": "2026-10-05T23:18:14.326Z",
18
18
  "size": 1762,
19
19
  "path": "../public/apple-touch-icon.png"
20
20
  },
21
21
  "/favicon.svg": {
22
22
  "type": "image/svg+xml",
23
23
  "etag": "\"1b3-uNgdb2Q4nmFEpsmW/cpMJbfKeng\"",
24
- "mtime": "2026-09-18T06:00:41.671Z",
24
+ "mtime": "2026-10-05T23:18:14.326Z",
25
25
  "size": 435,
26
26
  "path": "../public/favicon.svg"
27
27
  },
28
- "/assets/_connectorId-CkygNLny.js": {
28
+ "/assets/_connectorId-CDCuSgpN.js": {
29
29
  "type": "text/javascript; charset=utf-8",
30
- "etag": "\"352c-zFynWi8xF9nWUk+DQMFFE4tIwr0\"",
31
- "mtime": "2026-09-18T06:00:41.319Z",
32
- "size": 13612,
33
- "path": "../public/assets/_connectorId-CkygNLny.js"
30
+ "etag": "\"34a7-IUDgJohPQyOsDHdV/5A7yNMOwkg\"",
31
+ "mtime": "2026-10-05T23:18:13.855Z",
32
+ "size": 13479,
33
+ "path": "../public/assets/_connectorId-CDCuSgpN.js"
34
34
  },
35
- "/assets/alert-BT2EVMJP.js": {
35
+ "/assets/_taskId-BO5MZnlZ.js": {
36
36
  "type": "text/javascript; charset=utf-8",
37
- "etag": "\"518-O5UdHKN5UMK7ObJJfTGdkF6Ce2Y\"",
38
- "mtime": "2026-09-18T06:00:41.320Z",
39
- "size": 1304,
40
- "path": "../public/assets/alert-BT2EVMJP.js"
37
+ "etag": "\"1a33-wV+WeM638h9ux3vza7mZbQ3kfbM\"",
38
+ "mtime": "2026-10-05T23:18:13.855Z",
39
+ "size": 6707,
40
+ "path": "../public/assets/_taskId-BO5MZnlZ.js"
41
41
  },
42
- "/assets/arrow-left-CWUZt6k2.js": {
42
+ "/assets/agents-CBozi7oi.js": {
43
43
  "type": "text/javascript; charset=utf-8",
44
- "etag": "\"a3-m5hDdztvA9zAbs7sHlKigsZ1zhI\"",
45
- "mtime": "2026-09-18T06:00:41.320Z",
46
- "size": 163,
47
- "path": "../public/assets/arrow-left-CWUZt6k2.js"
44
+ "etag": "\"1345-6elPLC9b7/viDAmycTJHpiCp94o\"",
45
+ "mtime": "2026-10-05T23:18:13.856Z",
46
+ "size": 4933,
47
+ "path": "../public/assets/agents-CBozi7oi.js"
48
48
  },
49
- "/assets/_loopId-Cshlc5Ja.js": {
49
+ "/assets/alert-Bn_wjgTX.js": {
50
50
  "type": "text/javascript; charset=utf-8",
51
- "etag": "\"4c7f-vl0h8RZxNI2m547/Ul6ryBDNvnw\"",
52
- "mtime": "2026-09-18T06:00:41.319Z",
53
- "size": 19583,
54
- "path": "../public/assets/_loopId-Cshlc5Ja.js"
51
+ "etag": "\"512-H3jYu5RonBQQIJvLc8RxomisWcE\"",
52
+ "mtime": "2026-10-05T23:18:13.856Z",
53
+ "size": 1298,
54
+ "path": "../public/assets/alert-Bn_wjgTX.js"
55
55
  },
56
- "/assets/_taskId-BKDIJ_Fg.js": {
56
+ "/assets/_loopId-DOnIsVTW.js": {
57
57
  "type": "text/javascript; charset=utf-8",
58
- "etag": "\"19f6-bk4pwe6A6IGpoc9WlvluE3UtWEE\"",
59
- "mtime": "2026-09-18T06:00:41.319Z",
60
- "size": 6646,
61
- "path": "../public/assets/_taskId-BKDIJ_Fg.js"
58
+ "etag": "\"195d-GujkwM/vDe23v1OyENClIGhemGI\"",
59
+ "mtime": "2026-10-05T23:18:13.855Z",
60
+ "size": 6493,
61
+ "path": "../public/assets/_loopId-DOnIsVTW.js"
62
62
  },
63
- "/assets/connection-status-DCqqmY_6.js": {
63
+ "/assets/button-K3ypIhAZ.js": {
64
64
  "type": "text/javascript; charset=utf-8",
65
- "etag": "\"17c-sqOdQ5h8t+NrtNGo4gNUn47RJ5U\"",
66
- "mtime": "2026-09-18T06:00:41.320Z",
67
- "size": 380,
68
- "path": "../public/assets/connection-status-DCqqmY_6.js"
65
+ "etag": "\"31ac-a3StExGms0X+9tV2FlRL+mVCiqQ\"",
66
+ "mtime": "2026-10-05T23:18:13.856Z",
67
+ "size": 12716,
68
+ "path": "../public/assets/button-K3ypIhAZ.js"
69
69
  },
70
- "/assets/arrow-right-dy_oOg_c.js": {
70
+ "/assets/card-DiVnaTIE.js": {
71
71
  "type": "text/javascript; charset=utf-8",
72
- "etag": "\"a3-7KoKsSsK6/3kMyHB+xQq/+3ZuYI\"",
73
- "mtime": "2026-09-18T06:00:41.320Z",
74
- "size": 163,
75
- "path": "../public/assets/arrow-right-dy_oOg_c.js"
72
+ "etag": "\"51c-MBQ28GRB77i9V3GttyjJCXH5Ho0\"",
73
+ "mtime": "2026-10-05T23:18:13.856Z",
74
+ "size": 1308,
75
+ "path": "../public/assets/card-DiVnaTIE.js"
76
76
  },
77
- "/assets/connector-icon-BUoK6Cru.js": {
77
+ "/assets/chevron-right-BrctLtFK.js": {
78
78
  "type": "text/javascript; charset=utf-8",
79
- "etag": "\"266c-r9XAEg0at7HpSKzgEFAqgNewEJw\"",
80
- "mtime": "2026-09-18T06:00:41.320Z",
81
- "size": 9836,
82
- "path": "../public/assets/connector-icon-BUoK6Cru.js"
79
+ "etag": "\"80-7lRbXBo5rsYwR2128RL7e1opGaI\"",
80
+ "mtime": "2026-10-05T23:18:13.856Z",
81
+ "size": 128,
82
+ "path": "../public/assets/chevron-right-BrctLtFK.js"
83
83
  },
84
- "/assets/connectors-CeLBtEtg.js": {
84
+ "/assets/connector-icon-CEbdE71G.js": {
85
85
  "type": "text/javascript; charset=utf-8",
86
- "etag": "\"954-fD1AFysaAcDpkRyyJo+exIQCOtI\"",
87
- "mtime": "2026-09-18T06:00:41.320Z",
88
- "size": 2388,
89
- "path": "../public/assets/connectors-CeLBtEtg.js"
86
+ "etag": "\"347c-bZ3czGhdAEymZzQrljxbvZS5zl8\"",
87
+ "mtime": "2026-10-05T23:18:13.856Z",
88
+ "size": 13436,
89
+ "path": "../public/assets/connector-icon-CEbdE71G.js"
90
90
  },
91
- "/assets/gaps-BtFoD7mF.js": {
91
+ "/assets/gaps-PjmcbaWo.js": {
92
92
  "type": "text/javascript; charset=utf-8",
93
- "etag": "\"5ad-2XESYTVUINlJ6ulDlIg9Jz2qx40\"",
94
- "mtime": "2026-09-18T06:00:41.320Z",
95
- "size": 1453,
96
- "path": "../public/assets/gaps-BtFoD7mF.js"
93
+ "etag": "\"830-K+Qc8OCw6EFbiRQJb+ZBoEl5FuY\"",
94
+ "mtime": "2026-10-05T23:18:13.856Z",
95
+ "size": 2096,
96
+ "path": "../public/assets/gaps-PjmcbaWo.js"
97
97
  },
98
- "/assets/external-link-DC11orFA.js": {
98
+ "/assets/connectors-JyX3IzJj.js": {
99
99
  "type": "text/javascript; charset=utf-8",
100
- "etag": "\"f9-Hk5Mt6w6TLri3QHcB8yNexVi7wU\"",
101
- "mtime": "2026-09-18T06:00:41.320Z",
102
- "size": 249,
103
- "path": "../public/assets/external-link-DC11orFA.js"
100
+ "etag": "\"72c-EVOOaen9vr4EshJ3AlQ7z9aVbsU\"",
101
+ "mtime": "2026-10-05T23:18:13.856Z",
102
+ "size": 1836,
103
+ "path": "../public/assets/connectors-JyX3IzJj.js"
104
104
  },
105
- "/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2": {
105
+ "/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2": {
106
106
  "type": "font/woff2",
107
- "etag": "\"3aec-5kpQSZEtAzzU5kdiuro3Zr2YR54\"",
108
- "mtime": "2026-09-18T06:00:41.322Z",
109
- "size": 15084,
110
- "path": "../public/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2"
107
+ "etag": "\"1cfc-yYSDXNlt/tTRaj6rJo8ZMqvY7pQ\"",
108
+ "mtime": "2026-10-05T23:18:13.859Z",
109
+ "size": 7420,
110
+ "path": "../public/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2"
111
111
  },
112
112
  "/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2": {
113
113
  "type": "font/woff2",
114
114
  "etag": "\"4080-mZu3Z7sOWqglha+kefNbUA9Pp+Q\"",
115
- "mtime": "2026-09-18T06:00:41.322Z",
115
+ "mtime": "2026-10-05T23:18:13.859Z",
116
116
  "size": 16512,
117
117
  "path": "../public/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2"
118
118
  },
119
- "/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2": {
119
+ "/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2": {
120
120
  "type": "font/woff2",
121
- "etag": "\"1cfc-yYSDXNlt/tTRaj6rJo8ZMqvY7pQ\"",
122
- "mtime": "2026-09-18T06:00:41.322Z",
123
- "size": 7420,
124
- "path": "../public/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2"
121
+ "etag": "\"3aec-5kpQSZEtAzzU5kdiuro3Zr2YR54\"",
122
+ "mtime": "2026-10-05T23:18:13.859Z",
123
+ "size": 15084,
124
+ "path": "../public/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2"
125
125
  },
126
126
  "/assets/geist-latin-wght-normal-BgDaEnEv.woff2": {
127
127
  "type": "font/woff2",
128
128
  "etag": "\"72d8-9J+D7/6th5UzRxIgoFX9awJv47A\"",
129
- "mtime": "2026-09-18T06:00:41.322Z",
129
+ "mtime": "2026-10-05T23:18:13.859Z",
130
130
  "size": 29400,
131
131
  "path": "../public/assets/geist-latin-wght-normal-BgDaEnEv.woff2"
132
132
  },
133
133
  "/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2": {
134
134
  "type": "font/woff2",
135
135
  "etag": "\"1f44-6MZ7/PEEOeDVF0eHI650KpwKQV8\"",
136
- "mtime": "2026-09-18T06:00:41.322Z",
136
+ "mtime": "2026-10-05T23:18:13.859Z",
137
137
  "size": 8004,
138
138
  "path": "../public/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2"
139
139
  },
140
- "/assets/inbox-BYNjkNDJ.js": {
140
+ "/assets/inbox-CujRR0Cz.js": {
141
+ "type": "text/javascript; charset=utf-8",
142
+ "etag": "\"1561-8nH4d2WSoexyZjDnmylgJLGOnrg\"",
143
+ "mtime": "2026-10-05T23:18:13.856Z",
144
+ "size": 5473,
145
+ "path": "../public/assets/inbox-CujRR0Cz.js"
146
+ },
147
+ "/assets/loop-form-Dw3cuTzw.js": {
148
+ "type": "text/javascript; charset=utf-8",
149
+ "etag": "\"1be9-3uim5fcKfearkYTAyM2e6kIImtc\"",
150
+ "mtime": "2026-10-05T23:18:13.856Z",
151
+ "size": 7145,
152
+ "path": "../public/assets/loop-form-Dw3cuTzw.js"
153
+ },
154
+ "/assets/index-C9SQ_Baq.js": {
155
+ "type": "text/javascript; charset=utf-8",
156
+ "etag": "\"4e7bc-N0medteM/sMNhOo4Y8JlWqys26I\"",
157
+ "mtime": "2026-10-05T23:18:13.855Z",
158
+ "size": 321468,
159
+ "path": "../public/assets/index-C9SQ_Baq.js"
160
+ },
161
+ "/assets/loops-DcEfZa2_.js": {
162
+ "type": "text/javascript; charset=utf-8",
163
+ "etag": "\"6a97-zHHr+/aE9xIobsfkVUGfqHaRKNI\"",
164
+ "mtime": "2026-10-05T23:18:13.857Z",
165
+ "size": 27287,
166
+ "path": "../public/assets/loops-DcEfZa2_.js"
167
+ },
168
+ "/assets/manifests-yJpevyye.js": {
141
169
  "type": "text/javascript; charset=utf-8",
142
- "etag": "\"af6-MTB/xkyur8KgiPetiOnxbQbYs6M\"",
143
- "mtime": "2026-09-18T06:00:41.320Z",
144
- "size": 2806,
145
- "path": "../public/assets/inbox-BYNjkNDJ.js"
170
+ "etag": "\"644-hIvlgVVCDwLCaT/UuMEfAxnzKQM\"",
171
+ "mtime": "2026-10-05T23:18:13.857Z",
172
+ "size": 1604,
173
+ "path": "../public/assets/manifests-yJpevyye.js"
146
174
  },
147
- "/assets/loader-B4Epchm_.js": {
175
+ "/assets/connection-status-DKWelvLO.js": {
148
176
  "type": "text/javascript; charset=utf-8",
149
- "etag": "\"199-3kmluGVUQQj/qxW5n5mcbXA3Z/0\"",
150
- "mtime": "2026-09-18T06:00:41.320Z",
151
- "size": 409,
152
- "path": "../public/assets/loader-B4Epchm_.js"
177
+ "etag": "\"238-Bs8KXkqFT6oO1vHIPQFlTZYFlmk\"",
178
+ "mtime": "2026-10-05T23:18:13.856Z",
179
+ "size": 568,
180
+ "path": "../public/assets/connection-status-DKWelvLO.js"
153
181
  },
154
- "/assets/loops-1CvbqO6m.js": {
182
+ "/assets/new-CwsnNuRW.js": {
155
183
  "type": "text/javascript; charset=utf-8",
156
- "etag": "\"13a7-cm8GZK27hxhqmzsWZMI5QH2US4c\"",
157
- "mtime": "2026-09-18T06:00:41.320Z",
158
- "size": 5031,
159
- "path": "../public/assets/loops-1CvbqO6m.js"
184
+ "etag": "\"1134-XmQlOHOwPgThXSj2F5c1PklXZLM\"",
185
+ "mtime": "2026-10-05T23:18:13.857Z",
186
+ "size": 4404,
187
+ "path": "../public/assets/new-CwsnNuRW.js"
160
188
  },
161
- "/assets/index-0yP3Jn_G.js": {
189
+ "/assets/page-bvnfRMum.js": {
162
190
  "type": "text/javascript; charset=utf-8",
163
- "etag": "\"50659-m9Q2/jKlnvBcUKitIphuane0WM8\"",
164
- "mtime": "2026-09-18T06:00:41.319Z",
165
- "size": 329305,
166
- "path": "../public/assets/index-0yP3Jn_G.js"
191
+ "etag": "\"aaf-T29Udqf+EolfmsoUIwdvUJCFOfk\"",
192
+ "mtime": "2026-10-05T23:18:13.857Z",
193
+ "size": 2735,
194
+ "path": "../public/assets/page-bvnfRMum.js"
167
195
  },
168
- "/assets/new-m5NlqYQT.js": {
196
+ "/assets/plus-Ber25lrU.js": {
169
197
  "type": "text/javascript; charset=utf-8",
170
- "etag": "\"ca3-6Xz/VexiTbfexiPEUQtUJV5c/pc\"",
171
- "mtime": "2026-09-18T06:00:41.321Z",
172
- "size": 3235,
173
- "path": "../public/assets/new-m5NlqYQT.js"
198
+ "etag": "\"97-lYmBVbASHr4M29XmcRIe+1I6liI\"",
199
+ "mtime": "2026-10-05T23:18:13.857Z",
200
+ "size": 151,
201
+ "path": "../public/assets/plus-Ber25lrU.js"
174
202
  },
175
- "/assets/play-DD4xQgvi.js": {
203
+ "/assets/play-yHLs4DjK.js": {
176
204
  "type": "text/javascript; charset=utf-8",
177
- "etag": "\"bc-alsbjWPSyChVi7eXGM6zPUOzF28\"",
178
- "mtime": "2026-09-18T06:00:41.321Z",
205
+ "etag": "\"bc-EP4b/5OALd5znWpm5fnSSbR8bB8\"",
206
+ "mtime": "2026-10-05T23:18:13.857Z",
179
207
  "size": 188,
180
- "path": "../public/assets/play-DD4xQgvi.js"
208
+ "path": "../public/assets/play-yHLs4DjK.js"
181
209
  },
182
- "/assets/loop-form-DnSJNc1k.js": {
210
+ "/assets/preload-helper-BoU_7EQC.js": {
183
211
  "type": "text/javascript; charset=utf-8",
184
- "etag": "\"2a42-94+05ar0+LKjXi8noetvd0Nurn0\"",
185
- "mtime": "2026-09-18T06:00:41.320Z",
186
- "size": 10818,
187
- "path": "../public/assets/loop-form-DnSJNc1k.js"
212
+ "etag": "\"2242c-LoXQ5+qtY8ryICbzNI0+Qxj6bno\"",
213
+ "mtime": "2026-10-05T23:18:13.857Z",
214
+ "size": 140332,
215
+ "path": "../public/assets/preload-helper-BoU_7EQC.js"
188
216
  },
189
- "/assets/refresh-cw-C3xBnKfy.js": {
217
+ "/assets/refresh-cw-BzSY7M8I.js": {
190
218
  "type": "text/javascript; charset=utf-8",
191
- "etag": "\"13f-KJk+UjZqybh/n0vhbr9wwM57LJo\"",
192
- "mtime": "2026-09-18T06:00:41.321Z",
219
+ "etag": "\"13f-I3Dkiv9XX/MGlLWA828ovRIwMC4\"",
220
+ "mtime": "2026-10-05T23:18:13.857Z",
193
221
  "size": 319,
194
- "path": "../public/assets/refresh-cw-C3xBnKfy.js"
222
+ "path": "../public/assets/refresh-cw-BzSY7M8I.js"
195
223
  },
196
- "/assets/rolldown-runtime-CbXtAM7H.js": {
224
+ "/assets/rotate-ccw-DLv9EfCX.js": {
197
225
  "type": "text/javascript; charset=utf-8",
198
- "etag": "\"24d-+aXgvbJ1Wwcp2A8AXKIBByksYC8\"",
199
- "mtime": "2026-09-18T06:00:41.321Z",
200
- "size": 589,
201
- "path": "../public/assets/rolldown-runtime-CbXtAM7H.js"
226
+ "etag": "\"c6-CbcdYuVzeaBViOg4/X+VvP2nplg\"",
227
+ "mtime": "2026-10-05T23:18:13.857Z",
228
+ "size": 198,
229
+ "path": "../public/assets/rotate-ccw-DLv9EfCX.js"
202
230
  },
203
- "/assets/preload-helper-CfdAYKD7.js": {
231
+ "/assets/runners-DzX-RU3i.js": {
204
232
  "type": "text/javascript; charset=utf-8",
205
- "etag": "\"25e66-CtN8yTaaHYxIKlY6y6/HKCvmwm0\"",
206
- "mtime": "2026-09-18T06:00:41.321Z",
207
- "size": 155238,
208
- "path": "../public/assets/preload-helper-CfdAYKD7.js"
233
+ "etag": "\"1742-Q2Y5AAhvUchNByx01WIIfC/ai6E\"",
234
+ "mtime": "2026-10-05T23:18:13.857Z",
235
+ "size": 5954,
236
+ "path": "../public/assets/runners-DzX-RU3i.js"
209
237
  },
210
- "/assets/runners-D8QVl-Y6.js": {
238
+ "/assets/select-C9grIFwG.js": {
211
239
  "type": "text/javascript; charset=utf-8",
212
- "etag": "\"af4-OC+GxgY5UDW9zPbdNUX7ntntR4Q\"",
213
- "mtime": "2026-09-18T06:00:41.321Z",
214
- "size": 2804,
215
- "path": "../public/assets/runners-D8QVl-Y6.js"
240
+ "etag": "\"732e-HZp3SyT0ZmWyjI2zllLQJZILW1M\"",
241
+ "mtime": "2026-10-05T23:18:13.857Z",
242
+ "size": 29486,
243
+ "path": "../public/assets/select-C9grIFwG.js"
216
244
  },
217
- "/assets/setting-fields-bJ_gTG7Q.js": {
245
+ "/assets/setting-fields-DUc3npgh.js": {
218
246
  "type": "text/javascript; charset=utf-8",
219
- "etag": "\"749-LzR3qNTHmp9E39HhyA1rWQx3gCk\"",
220
- "mtime": "2026-09-18T06:00:41.321Z",
221
- "size": 1865,
222
- "path": "../public/assets/setting-fields-bJ_gTG7Q.js"
247
+ "etag": "\"794-brDJ2D0UcVvmb48AT1ryFnjWQBM\"",
248
+ "mtime": "2026-10-05T23:18:13.857Z",
249
+ "size": 1940,
250
+ "path": "../public/assets/setting-fields-DUc3npgh.js"
223
251
  },
224
- "/assets/switch-hRIbNGOj.js": {
252
+ "/assets/switch-DwABVI6d.js": {
225
253
  "type": "text/javascript; charset=utf-8",
226
- "etag": "\"1143-+VR0qSRiJugwgpkRWB7lzVYpJVY\"",
227
- "mtime": "2026-09-18T06:00:41.321Z",
228
- "size": 4419,
229
- "path": "../public/assets/switch-hRIbNGOj.js"
254
+ "etag": "\"116c-TJAih8C1FZSiSYW2bL1Qd2XskPs\"",
255
+ "mtime": "2026-10-05T23:18:13.857Z",
256
+ "size": 4460,
257
+ "path": "../public/assets/switch-DwABVI6d.js"
230
258
  },
231
- "/assets/task-list-BAxjcVgr.js": {
259
+ "/assets/task-list-Ddk8-qt7.js": {
232
260
  "type": "text/javascript; charset=utf-8",
233
- "etag": "\"1074-5XugvUBT/qv6nPfGfSQ9Qt/7hGw\"",
234
- "mtime": "2026-09-18T06:00:41.321Z",
235
- "size": 4212,
236
- "path": "../public/assets/task-list-BAxjcVgr.js"
261
+ "etag": "\"e0f-TnV8ubm4ypWKH47a7L7Uzd4z+rI\"",
262
+ "mtime": "2026-10-05T23:18:13.858Z",
263
+ "size": 3599,
264
+ "path": "../public/assets/task-list-Ddk8-qt7.js"
237
265
  },
238
- "/assets/styles-ClTGaXU0.css": {
239
- "type": "text/css; charset=utf-8",
240
- "etag": "\"14da9-b2Qt40ffRWPdYuZrfm/4MJhYLXE\"",
241
- "mtime": "2026-09-18T06:00:41.323Z",
242
- "size": 85417,
243
- "path": "../public/assets/styles-ClTGaXU0.css"
266
+ "/assets/textarea-Ds-gIYUQ.js": {
267
+ "type": "text/javascript; charset=utf-8",
268
+ "etag": "\"2de-OaKhfdB5YHyyaJ9a3oWLJDKmwSM\"",
269
+ "mtime": "2026-10-05T23:18:13.858Z",
270
+ "size": 734,
271
+ "path": "../public/assets/textarea-Ds-gIYUQ.js"
244
272
  },
245
- "/assets/textarea-Fyuzi6Vp.js": {
273
+ "/assets/time-goBWd-5J.js": {
246
274
  "type": "text/javascript; charset=utf-8",
247
- "etag": "\"306-vcm/L91/XPEkHVNl2yk2Lp05ZG8\"",
248
- "mtime": "2026-09-18T06:00:41.321Z",
249
- "size": 774,
250
- "path": "../public/assets/textarea-Fyuzi6Vp.js"
275
+ "etag": "\"286-A1da5ebDl49F3Ka1QvAFWPGwcKA\"",
276
+ "mtime": "2026-10-05T23:18:13.858Z",
277
+ "size": 646,
278
+ "path": "../public/assets/time-goBWd-5J.js"
251
279
  },
252
- "/assets/select-Cppu-hti.js": {
280
+ "/assets/use-live-tasks-DZNNuECy.js": {
253
281
  "type": "text/javascript; charset=utf-8",
254
- "etag": "\"1b2f4-3YBJAy4lzk0epih6EODEaDeMaE4\"",
255
- "mtime": "2026-09-18T06:00:41.321Z",
256
- "size": 111348,
257
- "path": "../public/assets/select-Cppu-hti.js"
282
+ "etag": "\"189-RbssKqfycr9gIbSnT6sJWOfC8To\"",
283
+ "mtime": "2026-10-05T23:18:13.858Z",
284
+ "size": 393,
285
+ "path": "../public/assets/use-live-tasks-DZNNuECy.js"
258
286
  },
259
- "/assets/trash-2-BXZzBsoV.js": {
287
+ "/assets/useCompositeListItem-P4Nmmn7j.js": {
260
288
  "type": "text/javascript; charset=utf-8",
261
- "etag": "\"146-hW/6t3H21wnW0twJKNkEJlNp/Gk\"",
262
- "mtime": "2026-09-18T06:00:41.321Z",
263
- "size": 326,
264
- "path": "../public/assets/trash-2-BXZzBsoV.js"
289
+ "etag": "\"3487-ZOGKzNRVZCqBpKT9Wd8cc9fzU60\"",
290
+ "mtime": "2026-10-05T23:18:13.858Z",
291
+ "size": 13447,
292
+ "path": "../public/assets/useCompositeListItem-P4Nmmn7j.js"
265
293
  },
266
- "/assets/useValueChanged-VVyq4hb9.js": {
294
+ "/assets/usePositioner-B7i9Ejzh.js": {
267
295
  "type": "text/javascript; charset=utf-8",
268
- "etag": "\"dd8-Te7VI1t9EEvBsgN9Wq88UqStSY4\"",
269
- "mtime": "2026-09-18T06:00:41.321Z",
270
- "size": 3544,
271
- "path": "../public/assets/useValueChanged-VVyq4hb9.js"
296
+ "etag": "\"117a8-qKQ2o4uz7ZYPDrbozDHhqLWpgQ0\"",
297
+ "mtime": "2026-10-05T23:18:13.858Z",
298
+ "size": 71592,
299
+ "path": "../public/assets/usePositioner-B7i9Ejzh.js"
300
+ },
301
+ "/assets/styles-B9B98zLk.css": {
302
+ "type": "text/css; charset=utf-8",
303
+ "etag": "\"15d07-jnnrpj+FbyGBNVG/zQBwWTCDa9g\"",
304
+ "mtime": "2026-10-05T23:18:13.859Z",
305
+ "size": 89351,
306
+ "path": "../public/assets/styles-B9B98zLk.css"
272
307
  }
273
308
  };
274
309
  //#endregion
package/README.md CHANGED
@@ -1,13 +1,31 @@
1
1
  # Loopable
2
2
 
3
- Loopable is the team’s always-on agent for shared-knowledge work — review, cases, monitors. A lot of work should not depend on one person. People assign work in Slack, GitHub, and on a schedule. Codex and Claude finish it on a shared computer.
3
+ Your team’s own agent. It runs on your machine, and you decide what it can do.
4
4
 
5
- It picks up a signal, does what the loop says, and writes the result back. Loops run on their own. Every run is recorded in the inbox.
5
+ A lot of team work waits on one person: a review request, a question in #oncall, a morning check. Someone has to copy it into their own Codex, and if they are busy, it stops. Hosted team agents help, but they run in a cloud sandbox that cannot reach your internal network, logs, or services.
6
6
 
7
- Connect GitHub, a Slack bot, a Feishu / Lark bot, Gmail, or WeChat. Write a loop. Leave the machine on. Pull requests get reviewed, assigned issues get a draft, a scheduled job runs at 9am. The team does not have to open Codex.
7
+ Loopable is a shared agent for small and mid-size teams.
8
+
9
+ - **Shared.** Work comes in from Slack, Lark, GitHub, or a schedule. A loop says what to do. Nobody has to be there. Every run is recorded in the inbox.
10
+ - **Yours.** Codex, Claude Code, or Cursor Agent runs on a machine the team owns. It reaches what that machine reaches, uses the MCP servers and skills you install, and keeps data in-house.
8
11
 
9
12
  The story is in [docs/narrative.md](docs/narrative.md). The words for the parts — loop, workflow, runner, and the rest — are in [docs/concepts.md](docs/concepts.md).
10
13
 
14
+ ## Loops you can run today
15
+
16
+ | Comes in from | Loop | Writes back |
17
+ | --- | --- | --- |
18
+ | Any trigger | Custom loop: pick what starts it, write your own prompt | Anywhere below, or Inbox only |
19
+ | Schedule | Do something on a schedule | Inbox, or a Slack, Lark, or GitHub thread |
20
+ | GitHub | Review pull requests | A review, as a comment |
21
+ | GitHub | Reply to issues | A comment on the issue |
22
+ | Slack bot | Do what I ask the Slack bot (@mention or DM) | A reply in the thread |
23
+ | Feishu / Lark bot | Do what I ask the Feishu / Lark bot (@mention in a group) | A reply in the thread |
24
+ | WeChat | Do what I ask the WeChat bot | A reply in the chat |
25
+ | Gmail | Custom loop: “An email arrives” | Anywhere, such as an email back to the same inbox |
26
+
27
+ A loop’s answer can go to any connector that accepts it, so a scheduled check can post to #oncall. To ask an agent something once, use **Ask an agent** in the inbox.
28
+
11
29
  ## Architecture
12
30
 
13
31
  Three processes. The agent always runs on a Runner, never on the App or Dispatcher.
@@ -16,7 +34,7 @@ Three processes. The agent always runs on a Runner, never on the App or Dispatch
16
34
  <img src="docs/architecture.svg" alt="Slack bot, GitHub, and Lark bot into Loopable. A runner pulls the job. Loopable writes back to the same three." width="920" />
17
35
  </p>
18
36
 
19
- Slack bot, GitHub, and Lark bot send work in. Loopable watches, matches a loop, and queues the job. A Runner pulls it, runs Codex or Claude, and Loopable writes the result back.
37
+ Slack bot, GitHub, and Lark bot send work in. Loopable watches, matches a loop, and queues the job. A Runner pulls it, runs Codex, Claude Code, or Cursor Agent, and Loopable writes the result back.
20
38
 
21
39
  ```text
22
40
  Loopable ──HTTP pull── Runner ── Agent CLI
@@ -35,16 +53,17 @@ App and Dispatcher share one database and stay on the same host. Only one Dispat
35
53
 
36
54
  The usual setup is one computer that stays on — a Mac in the office is enough. App, Dispatcher, and a Runner all live there. It looks like a spare machine on a desk. For a small team, that is the product.
37
55
 
38
- You need Node 22+ and an agent CLI signed in on that machine (Codex or Cursor Agent / Claude).
56
+ You need Node 22+ and an agent CLI signed in on that machine (Codex, Claude Code, or Cursor Agent).
39
57
 
40
58
  ```bash
41
59
  npm install -g loopable-cli
42
60
  loopable start # App + Dispatcher, bound on all interfaces
43
61
  ```
44
62
 
45
- On the same computer, open `http://127.0.0.1:4321`. Connect GitHub from that address. Write a loop. On Runners, copy the join command and start a runner (this machine is fine):
63
+ On the same computer, open `http://127.0.0.1:4321`. Connect GitHub from that address, signed in as the account your team will send work to (see [GitHub: a shared account](docs/connectors.md#github-a-shared-account)). Write a loop. On Runners, copy the join command and start a runner (this machine is fine):
46
64
 
47
65
  ```bash
66
+ npm install -g loopable-cli # on another machine; already done here
48
67
  loopable runner --url http://<LAN-IP>:4321 --token <from Runners>
49
68
  ```
50
69
 
@@ -71,6 +90,17 @@ pnpm db:studio
71
90
 
72
91
  `pnpm runner` is only for a second machine while `pnpm dev` is already running.
73
92
 
93
+ ### Release
94
+
95
+ CI runs typecheck, tests, and both builds on every pull request and on `main`. To publish `loopable-cli`, merge to `main`, then from a clean, pushed `main`:
96
+
97
+ ```bash
98
+ pnpm release minor --dry-run # every check, nothing changed
99
+ pnpm release minor # or patch, major, or an exact x.y.z
100
+ ```
101
+
102
+ It checks git and npm, runs typecheck, tests, and build, then bumps the version, commits, tags `vX.Y.Z`, publishes, and pushes. Runners on other machines need `npm install -g loopable-cli` too. The site deploys on its own with `pnpm site:deploy`.
103
+
74
104
  The public site is `site/` (static HTML, Vite). `pnpm site:dev` to preview. `pnpm site:build` writes `site/dist` for a Cloudflare Worker with assets only. `pnpm site:deploy` when you are ready to publish it.
75
105
 
76
106
  | Path | Contents |