loopable-cli 0.1.0 → 0.2.1
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.
- package/.output/nitro.json +1 -1
- package/.output/public/assets/_connectorId-CkygNLny.js +1 -0
- package/.output/public/assets/_loopId-Cshlc5Ja.js +1 -0
- package/.output/public/assets/_taskId-BKDIJ_Fg.js +1 -0
- package/.output/public/assets/alert-BT2EVMJP.js +1 -0
- package/.output/public/assets/arrow-left-CWUZt6k2.js +1 -0
- package/.output/public/assets/arrow-right-dy_oOg_c.js +1 -0
- package/.output/public/assets/connection-status-DCqqmY_6.js +1 -0
- package/.output/public/assets/connector-icon-BUoK6Cru.js +1 -0
- package/.output/public/assets/connectors-CeLBtEtg.js +1 -0
- package/.output/public/assets/{external-link-D46X-bXa.js → external-link-DC11orFA.js} +1 -1
- package/.output/public/assets/gaps-BtFoD7mF.js +1 -0
- package/.output/public/assets/inbox-BYNjkNDJ.js +1 -0
- package/.output/public/assets/index-0yP3Jn_G.js +18 -0
- package/.output/public/assets/{loader-CcBl2u8m.js → loader-B4Epchm_.js} +1 -1
- package/.output/public/assets/loop-form-DnSJNc1k.js +1 -0
- package/.output/public/assets/loops-1CvbqO6m.js +1 -0
- package/.output/public/assets/new-m5NlqYQT.js +1 -0
- package/.output/public/assets/play-DD4xQgvi.js +1 -0
- package/.output/public/assets/preload-helper-CfdAYKD7.js +3 -0
- package/.output/public/assets/refresh-cw-C3xBnKfy.js +1 -0
- package/.output/public/assets/rolldown-runtime-CbXtAM7H.js +1 -0
- package/.output/public/assets/runners-D8QVl-Y6.js +1 -0
- package/.output/public/assets/select-Cppu-hti.js +1 -0
- package/.output/public/assets/setting-fields-bJ_gTG7Q.js +3 -0
- package/.output/public/assets/styles-ClTGaXU0.css +2 -0
- package/.output/public/assets/switch-hRIbNGOj.js +1 -0
- package/.output/public/assets/task-list-BAxjcVgr.js +1 -0
- package/.output/public/assets/textarea-Fyuzi6Vp.js +1 -0
- package/.output/public/assets/{trash-2-D6u6NpzO.js → trash-2-BXZzBsoV.js} +1 -1
- package/.output/public/assets/useValueChanged-VVyq4hb9.js +1 -0
- package/.output/server/{_connectorId-8nb5yOzG.mjs → _connectorId-C9yydJrC.mjs} +92 -11
- package/.output/server/_libs/@base-ui/react+[...].mjs +427 -427
- package/.output/server/{_loopId-BsUL1SeL.mjs → _loopId-B0VG-eBC.mjs} +44 -15
- package/.output/server/_ssr/{callback-CUINvl7M.mjs → access-DTttr563.mjs} +39 -5
- package/.output/server/_ssr/{agents-DAOZPgO2.mjs → agents-C7B6RJ6-.mjs} +3 -3
- package/.output/server/_ssr/{agents-Btql102J.mjs → agents-DG643yoJ.mjs} +4 -4
- package/.output/server/_ssr/{alert-NEiOCTOl.mjs → alert-DQvzE7bu.mjs} +1 -1
- package/.output/server/_ssr/{client-CKkOfh-s.mjs → client-BtVRVhQ2.mjs} +4 -2
- package/.output/server/_ssr/{connection-status-Bi5peUAk.mjs → connection-status-BZr3Y-IC.mjs} +2 -2
- package/.output/server/_ssr/{connections-qnw2GVlP.mjs → connections-Df-aDpfJ.mjs} +816 -17
- package/.output/server/_ssr/connector-icon-WvxwZ5TF.mjs +56 -0
- package/.output/server/_ssr/{connectors-BHNwuIMj.mjs → connectors-BU0IiRge.mjs} +7 -6
- package/.output/server/_ssr/{connectors-C28g0i4c.mjs → connectors-e0mf2pMs.mjs} +14 -3
- package/.output/server/_ssr/{gaps-RAFSXLZf.mjs → gaps-Cz76ZicM.mjs} +6 -6
- package/.output/server/_ssr/inbox-CAUBa1I3.mjs +114 -0
- package/.output/server/_ssr/{loop-form-DlObSewZ.mjs → loop-form-FqSaXiHl.mjs} +8 -7
- package/.output/server/_ssr/{loops-APFcP0y6.mjs → loops-D8WuK7Ke.mjs} +200 -7
- package/.output/server/_ssr/{loops-xt2Bn7_q.mjs → loops-Dqoebe8q.mjs} +8 -8
- package/.output/server/_ssr/{new-DfKyd2Wa.mjs → new-bBsVaWD6.mjs} +5 -5
- package/.output/server/_ssr/{router-3WmpE5b_.mjs → router-54IDWTVz.mjs} +68 -62
- package/.output/server/_ssr/{runners-By-mwc3F.mjs → runners-Cj6z9Mqh.mjs} +26 -3
- package/.output/server/_ssr/{runners-DtXs4Q8a.mjs → runners-D2UAdLyj.mjs} +3 -3
- package/.output/server/_ssr/{runners-DI_NxpHC.mjs → runners-DGWaVvWi.mjs} +4 -4
- package/.output/server/_ssr/{secrets-Hqti-niS.mjs → secrets-CRnpwGBh.mjs} +2 -2
- package/.output/server/_ssr/{setting-fields-8vKFj4df.mjs → setting-fields-DzBlslan.mjs} +6 -13
- package/.output/server/_ssr/ssr.mjs +45 -33
- package/.output/server/_ssr/{start-Bdc2GJUI.mjs → start-Vq3Oan3v.mjs} +3 -4
- package/.output/server/_ssr/{switch-ReNglgH6.mjs → switch-1pnd_bPJ.mjs} +2 -2
- package/.output/server/_ssr/{task-list-CUITIqkb.mjs → task-list-_qgBS9LU.mjs} +9 -8
- package/.output/server/_ssr/{tasks-vcoodp_D.mjs → tasks-BDqznm57.mjs} +98 -8
- package/.output/server/_ssr/{tasks-SAjNovX6.mjs → tasks-Qtml5TlK.mjs} +15 -6
- package/.output/server/_ssr/textarea-CHJTKtsJ.mjs +14 -0
- package/.output/server/{_tanstack-start-manifest_v-C0cP5F0M.mjs → _tanstack-start-manifest_v-CvheE7ZF.mjs} +54 -48
- package/.output/server/{_taskId-CXS3lod0.mjs → _taskId-V4QLBO2N.mjs} +17 -10
- package/.output/server/index.mjs +173 -166
- package/README.md +26 -21
- package/dist/cli.mjs +7146 -16
- package/dist/dispatcher.mjs +844 -33
- package/drizzle/0024_prompt_tasks.sql +44 -0
- package/drizzle/meta/_journal.json +7 -0
- package/package.json +21 -17
- package/.output/public/assets/_connectorId-BWjYn5tm.js +0 -1
- package/.output/public/assets/_loopId-Ds4RkyEc.js +0 -1
- package/.output/public/assets/_taskId-BOzICXDf.js +0 -1
- package/.output/public/assets/alert-Bn9-Zm0l.js +0 -1
- package/.output/public/assets/arrow-left-BF9juV9T.js +0 -1
- package/.output/public/assets/arrow-right-CzqvnOY1.js +0 -1
- package/.output/public/assets/button-HCY6DCY-.js +0 -1
- package/.output/public/assets/connection-status-CYZB8kLy.js +0 -1
- package/.output/public/assets/connector-icon-BZ_MUJV_.js +0 -1
- package/.output/public/assets/connectors-BvzttfSu.js +0 -1
- package/.output/public/assets/connectors-DdJNwRN_.js +0 -1
- package/.output/public/assets/gaps-D-I6xiDc.js +0 -1
- package/.output/public/assets/inbox-BUUu9xxE.js +0 -1
- package/.output/public/assets/index-ztzex0FN.js +0 -10
- package/.output/public/assets/loop-form-dB3CLcZb.js +0 -1
- package/.output/public/assets/loops-DRunQrxL.js +0 -1
- package/.output/public/assets/loops-oSdqMd29.js +0 -1
- package/.output/public/assets/manifests-DNMqf7Vi.js +0 -7
- package/.output/public/assets/new-uyFxVjuB.js +0 -1
- package/.output/public/assets/preload-helper-ORbuV86A.js +0 -3
- package/.output/public/assets/runners-DSU3r5Ww.js +0 -1
- package/.output/public/assets/setting-fields-ixkpdBb-.js +0 -3
- package/.output/public/assets/styles-DZL5V1o7.css +0 -2
- package/.output/public/assets/switch-d5ummmHY.js +0 -1
- package/.output/public/assets/task-list-BpOStt9v.js +0 -1
- package/.output/public/assets/tasks-B8MsKgic.js +0 -1
- package/.output/server/_ssr/access-zIl15o8y.mjs +0 -42
- package/.output/server/_ssr/connector-icon-DZXQLLFo.mjs +0 -37
- package/.output/server/_ssr/inbox-k5zHergU.mjs +0 -35
package/.output/server/index.mjs
CHANGED
|
@@ -14,254 +14,261 @@ 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-
|
|
17
|
+
"mtime": "2026-09-18T06:00:41.671Z",
|
|
18
18
|
"size": 1762,
|
|
19
19
|
"path": "../public/apple-touch-icon.png"
|
|
20
20
|
},
|
|
21
|
-
"/assets/_connectorId-BWjYn5tm.js": {
|
|
22
|
-
"type": "text/javascript; charset=utf-8",
|
|
23
|
-
"etag": "\"3032-gnIDiKhKaz4DRK5e9VkxwxYLTOk\"",
|
|
24
|
-
"mtime": "2026-09-18T00:08:25.618Z",
|
|
25
|
-
"size": 12338,
|
|
26
|
-
"path": "../public/assets/_connectorId-BWjYn5tm.js"
|
|
27
|
-
},
|
|
28
|
-
"/assets/_taskId-BOzICXDf.js": {
|
|
29
|
-
"type": "text/javascript; charset=utf-8",
|
|
30
|
-
"etag": "\"18b0-KE8FzeUmDGq60GCF3jSgeyYLM6s\"",
|
|
31
|
-
"mtime": "2026-09-18T00:08:25.618Z",
|
|
32
|
-
"size": 6320,
|
|
33
|
-
"path": "../public/assets/_taskId-BOzICXDf.js"
|
|
34
|
-
},
|
|
35
21
|
"/favicon.svg": {
|
|
36
22
|
"type": "image/svg+xml",
|
|
37
23
|
"etag": "\"1b3-uNgdb2Q4nmFEpsmW/cpMJbfKeng\"",
|
|
38
|
-
"mtime": "2026-09-
|
|
24
|
+
"mtime": "2026-09-18T06:00:41.671Z",
|
|
39
25
|
"size": 435,
|
|
40
26
|
"path": "../public/favicon.svg"
|
|
41
27
|
},
|
|
42
|
-
"/assets/
|
|
28
|
+
"/assets/_connectorId-CkygNLny.js": {
|
|
43
29
|
"type": "text/javascript; charset=utf-8",
|
|
44
|
-
"etag": "\"
|
|
45
|
-
"mtime": "2026-09-
|
|
46
|
-
"size":
|
|
47
|
-
"path": "../public/assets/
|
|
30
|
+
"etag": "\"352c-zFynWi8xF9nWUk+DQMFFE4tIwr0\"",
|
|
31
|
+
"mtime": "2026-09-18T06:00:41.319Z",
|
|
32
|
+
"size": 13612,
|
|
33
|
+
"path": "../public/assets/_connectorId-CkygNLny.js"
|
|
48
34
|
},
|
|
49
|
-
"/assets/alert-
|
|
35
|
+
"/assets/alert-BT2EVMJP.js": {
|
|
50
36
|
"type": "text/javascript; charset=utf-8",
|
|
51
|
-
"etag": "\"
|
|
52
|
-
"mtime": "2026-09-
|
|
53
|
-
"size":
|
|
54
|
-
"path": "../public/assets/alert-
|
|
37
|
+
"etag": "\"518-O5UdHKN5UMK7ObJJfTGdkF6Ce2Y\"",
|
|
38
|
+
"mtime": "2026-09-18T06:00:41.320Z",
|
|
39
|
+
"size": 1304,
|
|
40
|
+
"path": "../public/assets/alert-BT2EVMJP.js"
|
|
55
41
|
},
|
|
56
|
-
"/assets/arrow-left-
|
|
42
|
+
"/assets/arrow-left-CWUZt6k2.js": {
|
|
57
43
|
"type": "text/javascript; charset=utf-8",
|
|
58
|
-
"etag": "\"a3-
|
|
59
|
-
"mtime": "2026-09-
|
|
44
|
+
"etag": "\"a3-m5hDdztvA9zAbs7sHlKigsZ1zhI\"",
|
|
45
|
+
"mtime": "2026-09-18T06:00:41.320Z",
|
|
60
46
|
"size": 163,
|
|
61
|
-
"path": "../public/assets/arrow-left-
|
|
47
|
+
"path": "../public/assets/arrow-left-CWUZt6k2.js"
|
|
62
48
|
},
|
|
63
|
-
"/assets/
|
|
49
|
+
"/assets/_loopId-Cshlc5Ja.js": {
|
|
64
50
|
"type": "text/javascript; charset=utf-8",
|
|
65
|
-
"etag": "\"
|
|
66
|
-
"mtime": "2026-09-
|
|
67
|
-
"size":
|
|
68
|
-
"path": "../public/assets/
|
|
51
|
+
"etag": "\"4c7f-vl0h8RZxNI2m547/Ul6ryBDNvnw\"",
|
|
52
|
+
"mtime": "2026-09-18T06:00:41.319Z",
|
|
53
|
+
"size": 19583,
|
|
54
|
+
"path": "../public/assets/_loopId-Cshlc5Ja.js"
|
|
69
55
|
},
|
|
70
|
-
"/assets/
|
|
56
|
+
"/assets/_taskId-BKDIJ_Fg.js": {
|
|
71
57
|
"type": "text/javascript; charset=utf-8",
|
|
72
|
-
"etag": "\"
|
|
73
|
-
"mtime": "2026-09-
|
|
74
|
-
"size":
|
|
75
|
-
"path": "../public/assets/
|
|
58
|
+
"etag": "\"19f6-bk4pwe6A6IGpoc9WlvluE3UtWEE\"",
|
|
59
|
+
"mtime": "2026-09-18T06:00:41.319Z",
|
|
60
|
+
"size": 6646,
|
|
61
|
+
"path": "../public/assets/_taskId-BKDIJ_Fg.js"
|
|
76
62
|
},
|
|
77
|
-
"/assets/connection-status-
|
|
63
|
+
"/assets/connection-status-DCqqmY_6.js": {
|
|
78
64
|
"type": "text/javascript; charset=utf-8",
|
|
79
|
-
"etag": "\"
|
|
80
|
-
"mtime": "2026-09-
|
|
81
|
-
"size":
|
|
82
|
-
"path": "../public/assets/connection-status-
|
|
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"
|
|
83
69
|
},
|
|
84
|
-
"/assets/
|
|
70
|
+
"/assets/arrow-right-dy_oOg_c.js": {
|
|
85
71
|
"type": "text/javascript; charset=utf-8",
|
|
86
|
-
"etag": "\"
|
|
87
|
-
"mtime": "2026-09-
|
|
88
|
-
"size":
|
|
89
|
-
"path": "../public/assets/
|
|
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"
|
|
90
76
|
},
|
|
91
|
-
"/assets/
|
|
77
|
+
"/assets/connector-icon-BUoK6Cru.js": {
|
|
92
78
|
"type": "text/javascript; charset=utf-8",
|
|
93
|
-
"etag": "\"
|
|
94
|
-
"mtime": "2026-09-
|
|
95
|
-
"size":
|
|
96
|
-
"path": "../public/assets/
|
|
79
|
+
"etag": "\"266c-r9XAEg0at7HpSKzgEFAqgNewEJw\"",
|
|
80
|
+
"mtime": "2026-09-18T06:00:41.320Z",
|
|
81
|
+
"size": 9836,
|
|
82
|
+
"path": "../public/assets/connector-icon-BUoK6Cru.js"
|
|
97
83
|
},
|
|
98
|
-
"/assets/
|
|
84
|
+
"/assets/connectors-CeLBtEtg.js": {
|
|
99
85
|
"type": "text/javascript; charset=utf-8",
|
|
100
|
-
"etag": "\"
|
|
101
|
-
"mtime": "2026-09-
|
|
102
|
-
"size":
|
|
103
|
-
"path": "../public/assets/
|
|
86
|
+
"etag": "\"954-fD1AFysaAcDpkRyyJo+exIQCOtI\"",
|
|
87
|
+
"mtime": "2026-09-18T06:00:41.320Z",
|
|
88
|
+
"size": 2388,
|
|
89
|
+
"path": "../public/assets/connectors-CeLBtEtg.js"
|
|
104
90
|
},
|
|
105
|
-
"/assets/gaps-
|
|
91
|
+
"/assets/gaps-BtFoD7mF.js": {
|
|
106
92
|
"type": "text/javascript; charset=utf-8",
|
|
107
|
-
"etag": "\"
|
|
108
|
-
"mtime": "2026-09-
|
|
109
|
-
"size":
|
|
110
|
-
"path": "../public/assets/gaps-
|
|
93
|
+
"etag": "\"5ad-2XESYTVUINlJ6ulDlIg9Jz2qx40\"",
|
|
94
|
+
"mtime": "2026-09-18T06:00:41.320Z",
|
|
95
|
+
"size": 1453,
|
|
96
|
+
"path": "../public/assets/gaps-BtFoD7mF.js"
|
|
111
97
|
},
|
|
112
|
-
"/assets/
|
|
98
|
+
"/assets/external-link-DC11orFA.js": {
|
|
113
99
|
"type": "text/javascript; charset=utf-8",
|
|
114
|
-
"etag": "\"
|
|
115
|
-
"mtime": "2026-09-
|
|
116
|
-
"size":
|
|
117
|
-
"path": "../public/assets/
|
|
118
|
-
},
|
|
119
|
-
"/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2": {
|
|
120
|
-
"type": "font/woff2",
|
|
121
|
-
"etag": "\"1cfc-yYSDXNlt/tTRaj6rJo8ZMqvY7pQ\"",
|
|
122
|
-
"mtime": "2026-09-18T00:08:25.620Z",
|
|
123
|
-
"size": 7420,
|
|
124
|
-
"path": "../public/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2"
|
|
100
|
+
"etag": "\"f9-Hk5Mt6w6TLri3QHcB8yNexVi7wU\"",
|
|
101
|
+
"mtime": "2026-09-18T06:00:41.320Z",
|
|
102
|
+
"size": 249,
|
|
103
|
+
"path": "../public/assets/external-link-DC11orFA.js"
|
|
125
104
|
},
|
|
126
105
|
"/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2": {
|
|
127
106
|
"type": "font/woff2",
|
|
128
107
|
"etag": "\"3aec-5kpQSZEtAzzU5kdiuro3Zr2YR54\"",
|
|
129
|
-
"mtime": "2026-09-
|
|
108
|
+
"mtime": "2026-09-18T06:00:41.322Z",
|
|
130
109
|
"size": 15084,
|
|
131
110
|
"path": "../public/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2"
|
|
132
111
|
},
|
|
133
112
|
"/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2": {
|
|
134
113
|
"type": "font/woff2",
|
|
135
114
|
"etag": "\"4080-mZu3Z7sOWqglha+kefNbUA9Pp+Q\"",
|
|
136
|
-
"mtime": "2026-09-
|
|
115
|
+
"mtime": "2026-09-18T06:00:41.322Z",
|
|
137
116
|
"size": 16512,
|
|
138
117
|
"path": "../public/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2"
|
|
139
118
|
},
|
|
140
|
-
"/assets/
|
|
141
|
-
"type": "
|
|
142
|
-
"etag": "\"
|
|
143
|
-
"mtime": "2026-09-
|
|
144
|
-
"size":
|
|
145
|
-
"path": "../public/assets/
|
|
119
|
+
"/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2": {
|
|
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"
|
|
125
|
+
},
|
|
126
|
+
"/assets/geist-latin-wght-normal-BgDaEnEv.woff2": {
|
|
127
|
+
"type": "font/woff2",
|
|
128
|
+
"etag": "\"72d8-9J+D7/6th5UzRxIgoFX9awJv47A\"",
|
|
129
|
+
"mtime": "2026-09-18T06:00:41.322Z",
|
|
130
|
+
"size": 29400,
|
|
131
|
+
"path": "../public/assets/geist-latin-wght-normal-BgDaEnEv.woff2"
|
|
146
132
|
},
|
|
147
133
|
"/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2": {
|
|
148
134
|
"type": "font/woff2",
|
|
149
135
|
"etag": "\"1f44-6MZ7/PEEOeDVF0eHI650KpwKQV8\"",
|
|
150
|
-
"mtime": "2026-09-
|
|
136
|
+
"mtime": "2026-09-18T06:00:41.322Z",
|
|
151
137
|
"size": 8004,
|
|
152
138
|
"path": "../public/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2"
|
|
153
139
|
},
|
|
154
|
-
"/assets/
|
|
140
|
+
"/assets/inbox-BYNjkNDJ.js": {
|
|
141
|
+
"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"
|
|
146
|
+
},
|
|
147
|
+
"/assets/loader-B4Epchm_.js": {
|
|
155
148
|
"type": "text/javascript; charset=utf-8",
|
|
156
|
-
"etag": "\"199-
|
|
157
|
-
"mtime": "2026-09-
|
|
149
|
+
"etag": "\"199-3kmluGVUQQj/qxW5n5mcbXA3Z/0\"",
|
|
150
|
+
"mtime": "2026-09-18T06:00:41.320Z",
|
|
158
151
|
"size": 409,
|
|
159
|
-
"path": "../public/assets/loader-
|
|
152
|
+
"path": "../public/assets/loader-B4Epchm_.js"
|
|
160
153
|
},
|
|
161
|
-
"/assets/
|
|
162
|
-
"type": "
|
|
163
|
-
"etag": "\"
|
|
164
|
-
"mtime": "2026-09-
|
|
165
|
-
"size":
|
|
166
|
-
"path": "../public/assets/
|
|
154
|
+
"/assets/loops-1CvbqO6m.js": {
|
|
155
|
+
"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"
|
|
167
160
|
},
|
|
168
|
-
"/assets/index-
|
|
161
|
+
"/assets/index-0yP3Jn_G.js": {
|
|
169
162
|
"type": "text/javascript; charset=utf-8",
|
|
170
|
-
"etag": "\"
|
|
171
|
-
"mtime": "2026-09-
|
|
172
|
-
"size":
|
|
173
|
-
"path": "../public/assets/index-
|
|
163
|
+
"etag": "\"50659-m9Q2/jKlnvBcUKitIphuane0WM8\"",
|
|
164
|
+
"mtime": "2026-09-18T06:00:41.319Z",
|
|
165
|
+
"size": 329305,
|
|
166
|
+
"path": "../public/assets/index-0yP3Jn_G.js"
|
|
174
167
|
},
|
|
175
|
-
"/assets/
|
|
168
|
+
"/assets/new-m5NlqYQT.js": {
|
|
176
169
|
"type": "text/javascript; charset=utf-8",
|
|
177
|
-
"etag": "\"
|
|
178
|
-
"mtime": "2026-09-
|
|
179
|
-
"size":
|
|
180
|
-
"path": "../public/assets/
|
|
170
|
+
"etag": "\"ca3-6Xz/VexiTbfexiPEUQtUJV5c/pc\"",
|
|
171
|
+
"mtime": "2026-09-18T06:00:41.321Z",
|
|
172
|
+
"size": 3235,
|
|
173
|
+
"path": "../public/assets/new-m5NlqYQT.js"
|
|
181
174
|
},
|
|
182
|
-
"/assets/
|
|
175
|
+
"/assets/play-DD4xQgvi.js": {
|
|
183
176
|
"type": "text/javascript; charset=utf-8",
|
|
184
|
-
"etag": "\"
|
|
185
|
-
"mtime": "2026-09-
|
|
186
|
-
"size":
|
|
187
|
-
"path": "../public/assets/
|
|
177
|
+
"etag": "\"bc-alsbjWPSyChVi7eXGM6zPUOzF28\"",
|
|
178
|
+
"mtime": "2026-09-18T06:00:41.321Z",
|
|
179
|
+
"size": 188,
|
|
180
|
+
"path": "../public/assets/play-DD4xQgvi.js"
|
|
188
181
|
},
|
|
189
|
-
"/assets/
|
|
182
|
+
"/assets/loop-form-DnSJNc1k.js": {
|
|
190
183
|
"type": "text/javascript; charset=utf-8",
|
|
191
|
-
"etag": "\"
|
|
192
|
-
"mtime": "2026-09-
|
|
193
|
-
"size":
|
|
194
|
-
"path": "../public/assets/
|
|
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"
|
|
195
188
|
},
|
|
196
|
-
"/assets/
|
|
189
|
+
"/assets/refresh-cw-C3xBnKfy.js": {
|
|
197
190
|
"type": "text/javascript; charset=utf-8",
|
|
198
|
-
"etag": "\"
|
|
199
|
-
"mtime": "2026-09-
|
|
200
|
-
"size":
|
|
201
|
-
"path": "../public/assets/
|
|
191
|
+
"etag": "\"13f-KJk+UjZqybh/n0vhbr9wwM57LJo\"",
|
|
192
|
+
"mtime": "2026-09-18T06:00:41.321Z",
|
|
193
|
+
"size": 319,
|
|
194
|
+
"path": "../public/assets/refresh-cw-C3xBnKfy.js"
|
|
202
195
|
},
|
|
203
|
-
"/assets/
|
|
196
|
+
"/assets/rolldown-runtime-CbXtAM7H.js": {
|
|
204
197
|
"type": "text/javascript; charset=utf-8",
|
|
205
|
-
"etag": "\"
|
|
206
|
-
"mtime": "2026-09-
|
|
207
|
-
"size":
|
|
208
|
-
"path": "../public/assets/
|
|
198
|
+
"etag": "\"24d-+aXgvbJ1Wwcp2A8AXKIBByksYC8\"",
|
|
199
|
+
"mtime": "2026-09-18T06:00:41.321Z",
|
|
200
|
+
"size": 589,
|
|
201
|
+
"path": "../public/assets/rolldown-runtime-CbXtAM7H.js"
|
|
209
202
|
},
|
|
210
|
-
"/assets/
|
|
203
|
+
"/assets/preload-helper-CfdAYKD7.js": {
|
|
211
204
|
"type": "text/javascript; charset=utf-8",
|
|
212
|
-
"etag": "\"
|
|
213
|
-
"mtime": "2026-09-
|
|
214
|
-
"size":
|
|
215
|
-
"path": "../public/assets/
|
|
205
|
+
"etag": "\"25e66-CtN8yTaaHYxIKlY6y6/HKCvmwm0\"",
|
|
206
|
+
"mtime": "2026-09-18T06:00:41.321Z",
|
|
207
|
+
"size": 155238,
|
|
208
|
+
"path": "../public/assets/preload-helper-CfdAYKD7.js"
|
|
216
209
|
},
|
|
217
|
-
"/assets/
|
|
218
|
-
"type": "text/
|
|
219
|
-
"etag": "\"
|
|
220
|
-
"mtime": "2026-09-
|
|
221
|
-
"size":
|
|
222
|
-
"path": "../public/assets/
|
|
210
|
+
"/assets/runners-D8QVl-Y6.js": {
|
|
211
|
+
"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"
|
|
216
|
+
},
|
|
217
|
+
"/assets/setting-fields-bJ_gTG7Q.js": {
|
|
218
|
+
"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"
|
|
223
223
|
},
|
|
224
|
-
"/assets/
|
|
224
|
+
"/assets/switch-hRIbNGOj.js": {
|
|
225
225
|
"type": "text/javascript; charset=utf-8",
|
|
226
|
-
"etag": "\"
|
|
227
|
-
"mtime": "2026-09-
|
|
228
|
-
"size":
|
|
229
|
-
"path": "../public/assets/
|
|
226
|
+
"etag": "\"1143-+VR0qSRiJugwgpkRWB7lzVYpJVY\"",
|
|
227
|
+
"mtime": "2026-09-18T06:00:41.321Z",
|
|
228
|
+
"size": 4419,
|
|
229
|
+
"path": "../public/assets/switch-hRIbNGOj.js"
|
|
230
230
|
},
|
|
231
|
-
"/assets/
|
|
231
|
+
"/assets/task-list-BAxjcVgr.js": {
|
|
232
232
|
"type": "text/javascript; charset=utf-8",
|
|
233
|
-
"etag": "\"
|
|
234
|
-
"mtime": "2026-09-
|
|
235
|
-
"size":
|
|
236
|
-
"path": "../public/assets/
|
|
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"
|
|
237
|
+
},
|
|
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"
|
|
237
244
|
},
|
|
238
|
-
"/assets/
|
|
245
|
+
"/assets/textarea-Fyuzi6Vp.js": {
|
|
239
246
|
"type": "text/javascript; charset=utf-8",
|
|
240
|
-
"etag": "\"
|
|
241
|
-
"mtime": "2026-09-
|
|
242
|
-
"size":
|
|
243
|
-
"path": "../public/assets/
|
|
247
|
+
"etag": "\"306-vcm/L91/XPEkHVNl2yk2Lp05ZG8\"",
|
|
248
|
+
"mtime": "2026-09-18T06:00:41.321Z",
|
|
249
|
+
"size": 774,
|
|
250
|
+
"path": "../public/assets/textarea-Fyuzi6Vp.js"
|
|
244
251
|
},
|
|
245
|
-
"/assets/
|
|
252
|
+
"/assets/select-Cppu-hti.js": {
|
|
246
253
|
"type": "text/javascript; charset=utf-8",
|
|
247
|
-
"etag": "\"
|
|
248
|
-
"mtime": "2026-09-
|
|
249
|
-
"size":
|
|
250
|
-
"path": "../public/assets/
|
|
254
|
+
"etag": "\"1b2f4-3YBJAy4lzk0epih6EODEaDeMaE4\"",
|
|
255
|
+
"mtime": "2026-09-18T06:00:41.321Z",
|
|
256
|
+
"size": 111348,
|
|
257
|
+
"path": "../public/assets/select-Cppu-hti.js"
|
|
251
258
|
},
|
|
252
|
-
"/assets/trash-2-
|
|
259
|
+
"/assets/trash-2-BXZzBsoV.js": {
|
|
253
260
|
"type": "text/javascript; charset=utf-8",
|
|
254
|
-
"etag": "\"146-
|
|
255
|
-
"mtime": "2026-09-
|
|
261
|
+
"etag": "\"146-hW/6t3H21wnW0twJKNkEJlNp/Gk\"",
|
|
262
|
+
"mtime": "2026-09-18T06:00:41.321Z",
|
|
256
263
|
"size": 326,
|
|
257
|
-
"path": "../public/assets/trash-2-
|
|
264
|
+
"path": "../public/assets/trash-2-BXZzBsoV.js"
|
|
258
265
|
},
|
|
259
|
-
"/assets/
|
|
266
|
+
"/assets/useValueChanged-VVyq4hb9.js": {
|
|
260
267
|
"type": "text/javascript; charset=utf-8",
|
|
261
|
-
"etag": "\"
|
|
262
|
-
"mtime": "2026-09-
|
|
263
|
-
"size":
|
|
264
|
-
"path": "../public/assets/
|
|
268
|
+
"etag": "\"dd8-Te7VI1t9EEvBsgN9Wq88UqStSY4\"",
|
|
269
|
+
"mtime": "2026-09-18T06:00:41.321Z",
|
|
270
|
+
"size": 3544,
|
|
271
|
+
"path": "../public/assets/useValueChanged-VVyq4hb9.js"
|
|
265
272
|
}
|
|
266
273
|
};
|
|
267
274
|
//#endregion
|
package/README.md
CHANGED
|
@@ -1,59 +1,62 @@
|
|
|
1
1
|
# Loopable
|
|
2
2
|
|
|
3
|
-
Loopable
|
|
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.
|
|
4
4
|
|
|
5
|
-
|
|
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.
|
|
6
6
|
|
|
7
|
-
|
|
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.
|
|
8
|
+
|
|
9
|
+
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).
|
|
8
10
|
|
|
9
11
|
## Architecture
|
|
10
12
|
|
|
11
13
|
Three processes. The agent always runs on a Runner, never on the App or Dispatcher.
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
```
|
|
15
|
+
<p align="center">
|
|
16
|
+
<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
|
+
</p>
|
|
18
|
+
|
|
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.
|
|
19
20
|
|
|
20
21
|
```text
|
|
21
|
-
Loopable ──HTTP── Runner ── Agent CLI
|
|
22
|
+
Loopable ──HTTP pull── Runner ── Agent CLI
|
|
22
23
|
(App + Dispatcher)
|
|
23
24
|
```
|
|
24
25
|
|
|
25
26
|
| Process | Does |
|
|
26
27
|
| --- | --- |
|
|
27
28
|
| **App** | UI, HTTP API, OAuth, the interface runners pull from |
|
|
28
|
-
| **Dispatcher** | Watches for signals,
|
|
29
|
-
| **Runner** |
|
|
29
|
+
| **Dispatcher** | Watches for signals, matches loops, queues jobs, writes back |
|
|
30
|
+
| **Runner** | Pulls a job over HTTP, runs the agent CLI |
|
|
30
31
|
|
|
31
|
-
App and Dispatcher share one database and stay on the same host. Only one Dispatcher may run against that database. Runners join over HTTP
|
|
32
|
+
App and Dispatcher share one database and stay on the same host. Only one Dispatcher may run against that database. Runners join over HTTP from that host or other machines. Extra runners are in [docs/deploy.md](docs/deploy.md).
|
|
32
33
|
|
|
33
|
-
##
|
|
34
|
+
## Run it
|
|
34
35
|
|
|
35
|
-
|
|
36
|
+
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
|
+
|
|
38
|
+
You need Node 22+ and an agent CLI signed in on that machine (Codex or Cursor Agent / Claude).
|
|
36
39
|
|
|
37
40
|
```bash
|
|
38
41
|
npm install -g loopable-cli
|
|
39
|
-
loopable start # App + Dispatcher
|
|
42
|
+
loopable start # App + Dispatcher, bound on all interfaces
|
|
40
43
|
```
|
|
41
44
|
|
|
42
|
-
|
|
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):
|
|
43
46
|
|
|
44
47
|
```bash
|
|
45
|
-
loopable runner --url http
|
|
48
|
+
loopable runner --url http://<LAN-IP>:4321 --token <from Runners>
|
|
46
49
|
```
|
|
47
50
|
|
|
48
51
|
If the dispatcher is not running, the app says so. If no runner has joined, tasks wait.
|
|
49
52
|
|
|
50
|
-
Connect GitHub from `http://127.0.0.1:4321` on this machine. Extra runners on other machines are in [docs/deploy.md](docs/deploy.md).
|
|
51
|
-
|
|
52
53
|
State lives in `~/.loopable/`. Credentials stay in the OS keychain.
|
|
53
54
|
|
|
55
|
+
Another always-on runner, or opening the UI from a second computer, is in [docs/deploy.md](docs/deploy.md). A company VM is optional later, only if this box is not enough.
|
|
56
|
+
|
|
54
57
|
## Develop
|
|
55
58
|
|
|
56
|
-
This section is only for working on the code. Running Loopable as a product is the CLI above, not pnpm. Dev uses `~/.loopable-dev/` and a separate keychain namespace, so it does not touch the
|
|
59
|
+
This section is only for working on the code. Running Loopable as a product is the CLI above, not pnpm. Dev uses `~/.loopable-dev/` and a separate keychain namespace, so it does not touch the team database.
|
|
57
60
|
|
|
58
61
|
TanStack Start (React + Vite), SQLite, Tailwind. Tests are Vitest.
|
|
59
62
|
|
|
@@ -68,6 +71,8 @@ pnpm db:studio
|
|
|
68
71
|
|
|
69
72
|
`pnpm runner` is only for a second machine while `pnpm dev` is already running.
|
|
70
73
|
|
|
74
|
+
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
|
+
|
|
71
76
|
| Path | Contents |
|
|
72
77
|
| --- | --- |
|
|
73
78
|
| `src/connectors/` | One folder per connector: `manifest.ts` (browser-safe) and `runtime.ts` (server) |
|