loopable-cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/.output/nitro.json +17 -0
  2. package/.output/public/apple-touch-icon.png +0 -0
  3. package/.output/public/assets/_connectorId-BWjYn5tm.js +1 -0
  4. package/.output/public/assets/_loopId-Ds4RkyEc.js +1 -0
  5. package/.output/public/assets/_taskId-BOzICXDf.js +1 -0
  6. package/.output/public/assets/alert-Bn9-Zm0l.js +1 -0
  7. package/.output/public/assets/arrow-left-BF9juV9T.js +1 -0
  8. package/.output/public/assets/arrow-right-CzqvnOY1.js +1 -0
  9. package/.output/public/assets/button-HCY6DCY-.js +1 -0
  10. package/.output/public/assets/connection-status-CYZB8kLy.js +1 -0
  11. package/.output/public/assets/connector-icon-BZ_MUJV_.js +1 -0
  12. package/.output/public/assets/connectors-BvzttfSu.js +1 -0
  13. package/.output/public/assets/connectors-DdJNwRN_.js +1 -0
  14. package/.output/public/assets/external-link-D46X-bXa.js +1 -0
  15. package/.output/public/assets/gaps-D-I6xiDc.js +1 -0
  16. package/.output/public/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
  17. package/.output/public/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
  18. package/.output/public/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
  19. package/.output/public/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
  20. package/.output/public/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
  21. package/.output/public/assets/inbox-BUUu9xxE.js +1 -0
  22. package/.output/public/assets/index-ztzex0FN.js +10 -0
  23. package/.output/public/assets/loader-CcBl2u8m.js +1 -0
  24. package/.output/public/assets/loop-form-dB3CLcZb.js +1 -0
  25. package/.output/public/assets/loops-DRunQrxL.js +1 -0
  26. package/.output/public/assets/loops-oSdqMd29.js +1 -0
  27. package/.output/public/assets/manifests-DNMqf7Vi.js +7 -0
  28. package/.output/public/assets/new-uyFxVjuB.js +1 -0
  29. package/.output/public/assets/preload-helper-ORbuV86A.js +3 -0
  30. package/.output/public/assets/runners-DSU3r5Ww.js +1 -0
  31. package/.output/public/assets/setting-fields-ixkpdBb-.js +3 -0
  32. package/.output/public/assets/styles-DZL5V1o7.css +2 -0
  33. package/.output/public/assets/switch-d5ummmHY.js +1 -0
  34. package/.output/public/assets/task-list-BpOStt9v.js +1 -0
  35. package/.output/public/assets/tasks-B8MsKgic.js +1 -0
  36. package/.output/public/assets/trash-2-D6u6NpzO.js +1 -0
  37. package/.output/public/favicon.svg +9 -0
  38. package/.output/server/_chunks/ssr-renderer.mjs +26 -0
  39. package/.output/server/_connectorId-8nb5yOzG.mjs +421 -0
  40. package/.output/server/_libs/@base-ui/react+[...].mjs +12841 -0
  41. package/.output/server/_libs/@tanstack/react-router+[...].mjs +14349 -0
  42. package/.output/server/_libs/class-variance-authority+clsx.mjs +69 -0
  43. package/.output/server/_libs/dijkstrajs.mjs +118 -0
  44. package/.output/server/_libs/drizzle-orm.mjs +4349 -0
  45. package/.output/server/_libs/h3+rou3+srvx.mjs +1361 -0
  46. package/.output/server/_libs/lucide-react.mjs +911 -0
  47. package/.output/server/_libs/next-themes.mjs +53 -0
  48. package/.output/server/_libs/pngjs.mjs +1680 -0
  49. package/.output/server/_libs/qrcode.mjs +2583 -0
  50. package/.output/server/_libs/sonner.mjs +955 -0
  51. package/.output/server/_libs/tailwind-merge.mjs +3380 -0
  52. package/.output/server/_libs/tanstack__history.mjs +341 -0
  53. package/.output/server/_libs/ufo.mjs +64 -0
  54. package/.output/server/_loopId-BsUL1SeL.mjs +272 -0
  55. package/.output/server/_runtime.mjs +35 -0
  56. package/.output/server/_ssr/access-zIl15o8y.mjs +42 -0
  57. package/.output/server/_ssr/agents-Btql102J.mjs +657 -0
  58. package/.output/server/_ssr/agents-DAOZPgO2.mjs +76 -0
  59. package/.output/server/_ssr/alert-NEiOCTOl.mjs +37 -0
  60. package/.output/server/_ssr/callback-CUINvl7M.mjs +62 -0
  61. package/.output/server/_ssr/client-CKkOfh-s.mjs +335 -0
  62. package/.output/server/_ssr/connection-status-Bi5peUAk.mjs +31 -0
  63. package/.output/server/_ssr/connections-qnw2GVlP.mjs +2542 -0
  64. package/.output/server/_ssr/connector-icon-DZXQLLFo.mjs +37 -0
  65. package/.output/server/_ssr/connectors-BHNwuIMj.mjs +106 -0
  66. package/.output/server/_ssr/connectors-C28g0i4c.mjs +83 -0
  67. package/.output/server/_ssr/createServerRpc-DPDrnFdH.mjs +12 -0
  68. package/.output/server/_ssr/empty-plugin-adapters-BJ4m9L8g.mjs +5 -0
  69. package/.output/server/_ssr/gaps-RAFSXLZf.mjs +53 -0
  70. package/.output/server/_ssr/inbox-k5zHergU.mjs +35 -0
  71. package/.output/server/_ssr/loop-form-DlObSewZ.mjs +412 -0
  72. package/.output/server/_ssr/loops-APFcP0y6.mjs +311 -0
  73. package/.output/server/_ssr/loops-xt2Bn7_q.mjs +222 -0
  74. package/.output/server/_ssr/new-DfKyd2Wa.mjs +169 -0
  75. package/.output/server/_ssr/router-3WmpE5b_.mjs +1553 -0
  76. package/.output/server/_ssr/runners-By-mwc3F.mjs +32 -0
  77. package/.output/server/_ssr/runners-DI_NxpHC.mjs +116 -0
  78. package/.output/server/_ssr/runners-DtXs4Q8a.mjs +106 -0
  79. package/.output/server/_ssr/secrets-Hqti-niS.mjs +199 -0
  80. package/.output/server/_ssr/setting-fields-8vKFj4df.mjs +92 -0
  81. package/.output/server/_ssr/ssr.mjs +6605 -0
  82. package/.output/server/_ssr/start-Bdc2GJUI.mjs +51 -0
  83. package/.output/server/_ssr/switch-ReNglgH6.mjs +18 -0
  84. package/.output/server/_ssr/task-list-CUITIqkb.mjs +186 -0
  85. package/.output/server/_ssr/tasks-SAjNovX6.mjs +110 -0
  86. package/.output/server/_ssr/tasks-vcoodp_D.mjs +533 -0
  87. package/.output/server/_tanstack-start-manifest_v-C0cP5F0M.mjs +125 -0
  88. package/.output/server/_taskId-CXS3lod0.mjs +249 -0
  89. package/.output/server/index.mjs +541 -0
  90. package/README.md +81 -0
  91. package/dist/cli.mjs +165 -0
  92. package/dist/dispatcher.mjs +9871 -0
  93. package/dist/runner.mjs +657 -0
  94. package/drizzle/0000_cold_demogoblin.sql +29 -0
  95. package/drizzle/0001_fancy_blonde_phantom.sql +13 -0
  96. package/drizzle/0002_spooky_smiling_tiger.sql +16 -0
  97. package/drizzle/0003_small_golden_guardian.sql +25 -0
  98. package/drizzle/0004_wonderful_thunderbolts.sql +39 -0
  99. package/drizzle/0005_named_workflows.sql +7 -0
  100. package/drizzle/0006_signals.sql +18 -0
  101. package/drizzle/0007_review_comments.sql +1 -0
  102. package/drizzle/0008_held_signals.sql +1 -0
  103. package/drizzle/0009_work_item_ref.sql +58 -0
  104. package/drizzle/0010_signal_payload.sql +2 -0
  105. package/drizzle/0011_rule_poll_cursor.sql +1 -0
  106. package/drizzle/0012_loops.sql +63 -0
  107. package/drizzle/0013_loop_owns_action_and_prompt.sql +154 -0
  108. package/drizzle/0014_loop_poll_every.sql +4 -0
  109. package/drizzle/0015_machines.sql +10 -0
  110. package/drizzle/0016_task_machine.sql +1 -0
  111. package/drizzle/0017_loop_machine.sql +1 -0
  112. package/drizzle/0018_runners.sql +1 -0
  113. package/drizzle/0019_task_runner.sql +1 -0
  114. package/drizzle/0020_loop_runner.sql +1 -0
  115. package/drizzle/0021_drop_runner_kind.sql +1 -0
  116. package/drizzle/0022_drop_loop_runner.sql +1 -0
  117. package/drizzle/0023_shared_host.sql +6 -0
  118. package/drizzle/meta/0000_snapshot.json +206 -0
  119. package/drizzle/meta/0001_snapshot.json +284 -0
  120. package/drizzle/meta/0002_snapshot.json +390 -0
  121. package/drizzle/meta/0003_snapshot.json +566 -0
  122. package/drizzle/meta/0004_snapshot.json +633 -0
  123. package/drizzle/meta/0005_snapshot.json +626 -0
  124. package/drizzle/meta/0006_snapshot.json +752 -0
  125. package/drizzle/meta/0007_snapshot.json +759 -0
  126. package/drizzle/meta/0008_snapshot.json +766 -0
  127. package/drizzle/meta/0009_snapshot.json +752 -0
  128. package/drizzle/meta/0010_snapshot.json +766 -0
  129. package/drizzle/meta/0011_snapshot.json +773 -0
  130. package/drizzle/meta/0012_snapshot.json +773 -0
  131. package/drizzle/meta/0013_snapshot.json +817 -0
  132. package/drizzle/meta/_journal.json +174 -0
  133. package/package.json +88 -0
@@ -0,0 +1,169 @@
1
+ import { U as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
2
+ import { f as Link, p as useNavigate } from "../_libs/@tanstack/react-router+[...].mjs";
3
+ import { a as connectorManifest, n as allWorkflows, s as connectorWorkflow } from "./connections-qnw2GVlP.mjs";
4
+ import { B as ArrowLeft, z as ArrowRight } from "../_libs/lucide-react.mjs";
5
+ import { C as Button$1, I as Badge, L as Card, R as CardContent, a as Route$9 } from "./router-3WmpE5b_.mjs";
6
+ import { t as ConnectorIcon } from "./connector-icon-DZXQLLFo.mjs";
7
+ import { t as LoopForm } from "./loop-form-DlObSewZ.mjs";
8
+ //#region node_modules/.nitro/vite/services/ssr/assets/new-DfKyd2Wa.js
9
+ var import_jsx_runtime = require_jsx_runtime();
10
+ /**
11
+ * One of a connector's workflows, as a loop nobody has saved yet.
12
+ *
13
+ * Nothing here touches the database, which is the point: choosing a workflow
14
+ * used to create the loop, so a look around the page left a live loop behind,
15
+ * enabled and with none of its questions answered. Now choosing only fills a
16
+ * form in, and the loop begins at Save.
17
+ *
18
+ * Deliberately client-safe, so the form can be filled in without a round trip
19
+ * and without anything on the server having to remember a half-made loop.
20
+ */
21
+ function draftForWorkflow(connectorId, workflowId) {
22
+ const workflow = connectorWorkflow(connectorId, workflowId);
23
+ if (!workflow) throw new Error(`Unknown workflow: ${workflowId}`);
24
+ return {
25
+ id: null,
26
+ name: workflow.name,
27
+ connectorId,
28
+ workflowId,
29
+ prompt: workflow.prompt,
30
+ guidance: null,
31
+ agentId: null,
32
+ settings: {},
33
+ actionConnectorId: workflow.actionConnectorId ?? connectorId,
34
+ actionId: workflow.actionId,
35
+ actionTarget: workflow.actionTarget ?? {},
36
+ pollEveryMs: workflow.pollEveryMs ?? null,
37
+ enabled: true
38
+ };
39
+ }
40
+ function NewLoopPage() {
41
+ const { connector, workflow } = Route$9.useSearch();
42
+ const chosen = connector && workflow && connectorWorkflow(connector, workflow) ? {
43
+ connector,
44
+ workflow
45
+ } : null;
46
+ return chosen ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ShapeLoop, {
47
+ connectorId: chosen.connector,
48
+ workflowId: chosen.workflow
49
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChooseWorkflow, {});
50
+ }
51
+ /**
52
+ * The second step, and the one that makes a loop.
53
+ *
54
+ * Nothing has been written down yet: the draft is worked out here from the
55
+ * workflow the URL names, and the loop begins when the form is saved. Picking
56
+ * a workflow used to create it, which meant a look around this page left a
57
+ * live loop behind, enabled and with none of its questions answered.
58
+ */
59
+ function ShapeLoop({ connectorId, workflowId }) {
60
+ const workflow = connectorWorkflow(connectorId, workflowId);
61
+ const connector = connectorManifest(connectorId);
62
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
63
+ className: "flex flex-col gap-6",
64
+ children: [
65
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Link, {
66
+ to: "/loops/new",
67
+ className: "flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground",
68
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ArrowLeft, { className: "size-4" }), "New loop"]
69
+ }),
70
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("header", {
71
+ className: "flex items-start gap-4",
72
+ children: [connector ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ConnectorIcon, {
73
+ icon: connector.icon,
74
+ accent: connector.accent
75
+ }) : null, /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", {
76
+ className: "text-2xl font-semibold tracking-tight",
77
+ children: workflow.name
78
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", {
79
+ className: "mt-1 text-sm text-muted-foreground",
80
+ children: ["Nothing is watched for until you add this. ", workflow.summary]
81
+ })] })]
82
+ }),
83
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LoopForm, { loop: draftForWorkflow(connectorId, workflowId) })
84
+ ]
85
+ });
86
+ }
87
+ /**
88
+ * There is no blank loop to write any more. Every loop is one of the
89
+ * workflows a connector offers, already knowing its own job, so choosing is
90
+ * the first half of making one and the settings are the second.
91
+ */
92
+ function ChooseWorkflow() {
93
+ const { loops } = Route$9.useLoaderData();
94
+ const navigate = useNavigate();
95
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
96
+ className: "flex flex-col gap-6",
97
+ children: [
98
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Link, {
99
+ to: "/loops",
100
+ className: "flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground",
101
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ArrowLeft, { className: "size-4" }), "Loops"]
102
+ }),
103
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("header", { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", {
104
+ className: "text-2xl font-semibold tracking-tight",
105
+ children: "New loop"
106
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
107
+ className: "mt-1 text-sm text-muted-foreground",
108
+ children: "Pick what you want done. You can narrow it down to certain repositories, and add anything particular to your team, on the next screen."
109
+ })] }),
110
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
111
+ className: "flex flex-col gap-3",
112
+ children: allWorkflows().map(({ connector, workflow }) => {
113
+ const existing = loops.filter((loop) => loop.workflowId === workflow.id).length;
114
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Card, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(CardContent, {
115
+ className: "flex items-start gap-4 pt-6",
116
+ children: [
117
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ConnectorIcon, {
118
+ icon: connector.icon,
119
+ accent: connector.accent
120
+ }),
121
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
122
+ className: "flex min-w-0 flex-1 flex-col gap-1",
123
+ children: [
124
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
125
+ className: "flex flex-wrap items-center gap-2",
126
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
127
+ className: "font-medium",
128
+ children: workflow.name
129
+ }), existing > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Badge, {
130
+ variant: "secondary",
131
+ children: existing === 1 ? "Already have one" : `Already have ${existing}`
132
+ }) : null]
133
+ }),
134
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
135
+ className: "text-sm text-muted-foreground",
136
+ children: workflow.summary
137
+ }),
138
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", {
139
+ className: "mt-1 flex items-start gap-1.5 text-xs text-muted-foreground",
140
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ArrowRight, { className: "mt-0.5 size-3.5 shrink-0" }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { children: [
141
+ "When ",
142
+ workflow.trigger,
143
+ ", it writes ",
144
+ workflow.writes,
145
+ "."
146
+ ] })]
147
+ })
148
+ ]
149
+ }),
150
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button$1, {
151
+ variant: "outline",
152
+ onClick: () => void navigate({
153
+ to: "/loops/new",
154
+ search: {
155
+ connector: connector.id,
156
+ workflow: workflow.id
157
+ }
158
+ }),
159
+ children: "Set up"
160
+ })
161
+ ]
162
+ }) }, workflow.id);
163
+ })
164
+ })
165
+ ]
166
+ });
167
+ }
168
+ //#endregion
169
+ export { NewLoopPage as component };