@aicalas/loopy 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 (244) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +101 -0
  3. package/dist/adapters.d.ts +111 -0
  4. package/dist/adapters.d.ts.map +1 -0
  5. package/dist/adapters.js +27 -0
  6. package/dist/adapters.js.map +1 -0
  7. package/dist/attention/github.d.ts +57 -0
  8. package/dist/attention/github.d.ts.map +1 -0
  9. package/dist/attention/github.js +162 -0
  10. package/dist/attention/github.js.map +1 -0
  11. package/dist/authoring/attention-config.d.ts +16 -0
  12. package/dist/authoring/attention-config.d.ts.map +1 -0
  13. package/dist/authoring/attention-config.js +19 -0
  14. package/dist/authoring/attention-config.js.map +1 -0
  15. package/dist/authoring/channel-config.d.ts +16 -0
  16. package/dist/authoring/channel-config.d.ts.map +1 -0
  17. package/dist/authoring/channel-config.js +16 -0
  18. package/dist/authoring/channel-config.js.map +1 -0
  19. package/dist/authoring/define.d.ts +13 -0
  20. package/dist/authoring/define.d.ts.map +1 -0
  21. package/dist/authoring/define.js +13 -0
  22. package/dist/authoring/define.js.map +1 -0
  23. package/dist/authoring/effect-config.d.ts +16 -0
  24. package/dist/authoring/effect-config.d.ts.map +1 -0
  25. package/dist/authoring/effect-config.js +17 -0
  26. package/dist/authoring/effect-config.js.map +1 -0
  27. package/dist/authoring/harness-config.d.ts +30 -0
  28. package/dist/authoring/harness-config.d.ts.map +1 -0
  29. package/dist/authoring/harness-config.js +36 -0
  30. package/dist/authoring/harness-config.js.map +1 -0
  31. package/dist/authoring/index.d.ts +10 -0
  32. package/dist/authoring/index.d.ts.map +1 -0
  33. package/dist/authoring/index.js +9 -0
  34. package/dist/authoring/index.js.map +1 -0
  35. package/dist/authoring/schema.d.ts +9 -0
  36. package/dist/authoring/schema.d.ts.map +1 -0
  37. package/dist/authoring/schema.js +28 -0
  38. package/dist/authoring/schema.js.map +1 -0
  39. package/dist/authoring/types.d.ts +115 -0
  40. package/dist/authoring/types.d.ts.map +1 -0
  41. package/dist/authoring/types.js +2 -0
  42. package/dist/authoring/types.js.map +1 -0
  43. package/dist/authoring/watcher-config.d.ts +33 -0
  44. package/dist/authoring/watcher-config.d.ts.map +1 -0
  45. package/dist/authoring/watcher-config.js +61 -0
  46. package/dist/authoring/watcher-config.js.map +1 -0
  47. package/dist/build/discover.d.ts +34 -0
  48. package/dist/build/discover.d.ts.map +1 -0
  49. package/dist/build/discover.js +165 -0
  50. package/dist/build/discover.js.map +1 -0
  51. package/dist/build/identity.d.ts +9 -0
  52. package/dist/build/identity.d.ts.map +1 -0
  53. package/dist/build/identity.js +0 -0
  54. package/dist/build/identity.js.map +1 -0
  55. package/dist/channels/github.d.ts +14 -0
  56. package/dist/channels/github.d.ts.map +1 -0
  57. package/dist/channels/github.js +118 -0
  58. package/dist/channels/github.js.map +1 -0
  59. package/dist/channels/index.d.ts +2 -0
  60. package/dist/channels/index.d.ts.map +1 -0
  61. package/dist/channels/index.js +2 -0
  62. package/dist/channels/index.js.map +1 -0
  63. package/dist/cli-help.d.ts +23 -0
  64. package/dist/cli-help.d.ts.map +1 -0
  65. package/dist/cli-help.js +186 -0
  66. package/dist/cli-help.js.map +1 -0
  67. package/dist/cli.d.ts +37 -0
  68. package/dist/cli.d.ts.map +1 -0
  69. package/dist/cli.js +385 -0
  70. package/dist/cli.js.map +1 -0
  71. package/dist/config.d.ts +71 -0
  72. package/dist/config.d.ts.map +1 -0
  73. package/dist/config.js +426 -0
  74. package/dist/config.js.map +1 -0
  75. package/dist/core/calls.d.ts +67 -0
  76. package/dist/core/calls.d.ts.map +1 -0
  77. package/dist/core/calls.js +109 -0
  78. package/dist/core/calls.js.map +1 -0
  79. package/dist/core/identifiers.d.ts +24 -0
  80. package/dist/core/identifiers.d.ts.map +1 -0
  81. package/dist/core/identifiers.js +129 -0
  82. package/dist/core/identifiers.js.map +1 -0
  83. package/dist/core/prompt.d.ts +5 -0
  84. package/dist/core/prompt.d.ts.map +1 -0
  85. package/dist/core/prompt.js +47 -0
  86. package/dist/core/prompt.js.map +1 -0
  87. package/dist/core/reconcile.d.ts +27 -0
  88. package/dist/core/reconcile.d.ts.map +1 -0
  89. package/dist/core/reconcile.js +36 -0
  90. package/dist/core/reconcile.js.map +1 -0
  91. package/dist/core/wire.d.ts +332 -0
  92. package/dist/core/wire.d.ts.map +1 -0
  93. package/dist/core/wire.js +543 -0
  94. package/dist/core/wire.js.map +1 -0
  95. package/dist/emitters/github.d.ts +15 -0
  96. package/dist/emitters/github.d.ts.map +1 -0
  97. package/dist/emitters/github.js +43 -0
  98. package/dist/emitters/github.js.map +1 -0
  99. package/dist/emitters/index.d.ts +2 -0
  100. package/dist/emitters/index.d.ts.map +1 -0
  101. package/dist/emitters/index.js +2 -0
  102. package/dist/emitters/index.js.map +1 -0
  103. package/dist/git.d.ts +17 -0
  104. package/dist/git.d.ts.map +1 -0
  105. package/dist/git.js +122 -0
  106. package/dist/git.js.map +1 -0
  107. package/dist/github/client.d.ts +53 -0
  108. package/dist/github/client.d.ts.map +1 -0
  109. package/dist/github/client.js +169 -0
  110. package/dist/github/client.js.map +1 -0
  111. package/dist/github/trigger.d.ts +12 -0
  112. package/dist/github/trigger.d.ts.map +1 -0
  113. package/dist/github/trigger.js +21 -0
  114. package/dist/github/trigger.js.map +1 -0
  115. package/dist/github/writes.d.ts +4 -0
  116. package/dist/github/writes.d.ts.map +1 -0
  117. package/dist/github/writes.js +21 -0
  118. package/dist/github/writes.js.map +1 -0
  119. package/dist/harnesses/base.d.ts +41 -0
  120. package/dist/harnesses/base.d.ts.map +1 -0
  121. package/dist/harnesses/base.js +182 -0
  122. package/dist/harnesses/base.js.map +1 -0
  123. package/dist/harnesses/claude-executable.d.ts +42 -0
  124. package/dist/harnesses/claude-executable.d.ts.map +1 -0
  125. package/dist/harnesses/claude-executable.js +138 -0
  126. package/dist/harnesses/claude-executable.js.map +1 -0
  127. package/dist/harnesses/claude.d.ts +35 -0
  128. package/dist/harnesses/claude.d.ts.map +1 -0
  129. package/dist/harnesses/claude.js +160 -0
  130. package/dist/harnesses/claude.js.map +1 -0
  131. package/dist/harnesses/codex.d.ts +40 -0
  132. package/dist/harnesses/codex.d.ts.map +1 -0
  133. package/dist/harnesses/codex.js +118 -0
  134. package/dist/harnesses/codex.js.map +1 -0
  135. package/dist/harnesses/index.d.ts +2 -0
  136. package/dist/harnesses/index.d.ts.map +1 -0
  137. package/dist/harnesses/index.js +2 -0
  138. package/dist/harnesses/index.js.map +1 -0
  139. package/dist/harnesses/opencode.d.ts +33 -0
  140. package/dist/harnesses/opencode.d.ts.map +1 -0
  141. package/dist/harnesses/opencode.js +203 -0
  142. package/dist/harnesses/opencode.js.map +1 -0
  143. package/dist/identifiers.d.ts +26 -0
  144. package/dist/identifiers.d.ts.map +1 -0
  145. package/dist/identifiers.js +62 -0
  146. package/dist/identifiers.js.map +1 -0
  147. package/dist/index.d.ts +10 -0
  148. package/dist/index.d.ts.map +1 -0
  149. package/dist/index.js +10 -0
  150. package/dist/index.js.map +1 -0
  151. package/dist/log.d.ts +10 -0
  152. package/dist/log.d.ts.map +1 -0
  153. package/dist/log.js +44 -0
  154. package/dist/log.js.map +1 -0
  155. package/dist/settings.d.ts +43 -0
  156. package/dist/settings.d.ts.map +1 -0
  157. package/dist/settings.js +128 -0
  158. package/dist/settings.js.map +1 -0
  159. package/dist/temporal/activities.d.ts +57 -0
  160. package/dist/temporal/activities.d.ts.map +1 -0
  161. package/dist/temporal/activities.js +366 -0
  162. package/dist/temporal/activities.js.map +1 -0
  163. package/dist/temporal/answers.d.ts +48 -0
  164. package/dist/temporal/answers.d.ts.map +1 -0
  165. package/dist/temporal/answers.js +78 -0
  166. package/dist/temporal/answers.js.map +1 -0
  167. package/dist/temporal/client.d.ts +13 -0
  168. package/dist/temporal/client.d.ts.map +1 -0
  169. package/dist/temporal/client.js +20 -0
  170. package/dist/temporal/client.js.map +1 -0
  171. package/dist/temporal/contracts.d.ts +19 -0
  172. package/dist/temporal/contracts.d.ts.map +1 -0
  173. package/dist/temporal/contracts.js +22 -0
  174. package/dist/temporal/contracts.js.map +1 -0
  175. package/dist/temporal/drain.d.ts +19 -0
  176. package/dist/temporal/drain.d.ts.map +1 -0
  177. package/dist/temporal/drain.js +109 -0
  178. package/dist/temporal/drain.js.map +1 -0
  179. package/dist/temporal/executions.d.ts +18 -0
  180. package/dist/temporal/executions.d.ts.map +1 -0
  181. package/dist/temporal/executions.js +15 -0
  182. package/dist/temporal/executions.js.map +1 -0
  183. package/dist/temporal/handle.d.ts +39 -0
  184. package/dist/temporal/handle.d.ts.map +1 -0
  185. package/dist/temporal/handle.js +95 -0
  186. package/dist/temporal/handle.js.map +1 -0
  187. package/dist/temporal/history.d.ts +75 -0
  188. package/dist/temporal/history.d.ts.map +1 -0
  189. package/dist/temporal/history.js +310 -0
  190. package/dist/temporal/history.js.map +1 -0
  191. package/dist/temporal/observe.d.ts +85 -0
  192. package/dist/temporal/observe.d.ts.map +1 -0
  193. package/dist/temporal/observe.js +110 -0
  194. package/dist/temporal/observe.js.map +1 -0
  195. package/dist/temporal/schedules.d.ts +26 -0
  196. package/dist/temporal/schedules.d.ts.map +1 -0
  197. package/dist/temporal/schedules.js +200 -0
  198. package/dist/temporal/schedules.js.map +1 -0
  199. package/dist/temporal/status.d.ts +63 -0
  200. package/dist/temporal/status.d.ts.map +1 -0
  201. package/dist/temporal/status.js +153 -0
  202. package/dist/temporal/status.js.map +1 -0
  203. package/dist/temporal/stuck.d.ts +58 -0
  204. package/dist/temporal/stuck.d.ts.map +1 -0
  205. package/dist/temporal/stuck.js +53 -0
  206. package/dist/temporal/stuck.js.map +1 -0
  207. package/dist/temporal/supervisor.d.ts +11 -0
  208. package/dist/temporal/supervisor.d.ts.map +1 -0
  209. package/dist/temporal/supervisor.js +506 -0
  210. package/dist/temporal/supervisor.js.map +1 -0
  211. package/dist/temporal/worker.d.ts +21 -0
  212. package/dist/temporal/worker.d.ts.map +1 -0
  213. package/dist/temporal/worker.js +82 -0
  214. package/dist/temporal/worker.js.map +1 -0
  215. package/dist/temporal/workflow-bundle.js +12742 -0
  216. package/dist/temporal/workflows.d.ts +9 -0
  217. package/dist/temporal/workflows.d.ts.map +1 -0
  218. package/dist/temporal/workflows.js +144 -0
  219. package/dist/temporal/workflows.js.map +1 -0
  220. package/dist/version.d.ts +2 -0
  221. package/dist/version.d.ts.map +1 -0
  222. package/dist/version.js +2 -0
  223. package/dist/version.js.map +1 -0
  224. package/dist/watchers/base.d.ts +4 -0
  225. package/dist/watchers/base.d.ts.map +1 -0
  226. package/dist/watchers/base.js +7 -0
  227. package/dist/watchers/base.js.map +1 -0
  228. package/dist/watchers/github/client.d.ts +52 -0
  229. package/dist/watchers/github/client.d.ts.map +1 -0
  230. package/dist/watchers/github/client.js +165 -0
  231. package/dist/watchers/github/client.js.map +1 -0
  232. package/dist/watchers/github/index.d.ts +19 -0
  233. package/dist/watchers/github/index.d.ts.map +1 -0
  234. package/dist/watchers/github/index.js +83 -0
  235. package/dist/watchers/github/index.js.map +1 -0
  236. package/dist/watchers/index.d.ts +2 -0
  237. package/dist/watchers/index.d.ts.map +1 -0
  238. package/dist/watchers/index.js +2 -0
  239. package/dist/watchers/index.js.map +1 -0
  240. package/dist/worker-lock.d.ts +11 -0
  241. package/dist/worker-lock.d.ts.map +1 -0
  242. package/dist/worker-lock.js +53 -0
  243. package/dist/worker-lock.js.map +1 -0
  244. package/package.json +92 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/build/discover.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Hash normalized inputs — workflow sources plus the loopy runtime version — rather than bundle
3
+ * bytes, so moving the checkout or upgrading a transitive dependency does not strand in-flight
4
+ * instances, and reverting a workflow edit reproduces the original control Task Queue.
5
+ */
6
+ export declare function buildIdentity(directory: string, runtimeVersion: string): string;
7
+ /** Every file under the workflows directory, sorted, so the digest is path-order independent. */
8
+ export declare function sourceFiles(directory: string): string[];
9
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/build/identity.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAO/E;AAED,iGAAiG;AACjG,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAQvD"}
Binary file
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/build/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB,EAAE,cAAsB;IACrE,MAAM,KAAK,GAAG,CAAC,SAAS,cAAc,EAAE,CAAC,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;AAC5D,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,KAAK,CAAC,WAAW,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;aACrD,IAAI,KAAK,CAAC,MAAM,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { z } from "zod";
2
+ import type { ChannelAdapterSpec, ChannelDeliverContext, ChannelPollContext } from "../adapters.js";
3
+ import type { ChannelPollResult, DeliverQuestionResult } from "../core/wire.js";
4
+ import { GitHubClient } from "../github/client.js";
5
+ export declare const gitHubCommentsOptionsSchema: z.ZodObject<{
6
+ repository: z.ZodString;
7
+ issue: z.ZodNumber;
8
+ credentials: z.ZodDefault<z.ZodLiteral<"env">>;
9
+ }, z.core.$strict>;
10
+ export type GitHubCommentsClientFactory = (repository: string, credentials: "env") => GitHubClient;
11
+ export declare function deliverGitHubComment(context: ChannelDeliverContext, clientFactory?: GitHubCommentsClientFactory): Promise<DeliverQuestionResult>;
12
+ export declare function pollGitHubComment(context: ChannelPollContext, clientFactory?: GitHubCommentsClientFactory): Promise<ChannelPollResult>;
13
+ export declare const gitHubCommentsChannel: ChannelAdapterSpec;
14
+ //# sourceMappingURL=github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/channels/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAa,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAA4B,YAAY,EAAsB,MAAM,qBAAqB,CAAC;AAYjG,eAAO,MAAM,2BAA2B;;;;kBAQ7B,CAAC;AAUZ,MAAM,MAAM,2BAA2B,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,KAAK,YAAY,CAAC;AAInG,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,qBAAqB,EAC9B,aAAa,GAAE,2BAAkD,GAChE,OAAO,CAAC,qBAAqB,CAAC,CAwBhC;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,kBAAkB,EAC3B,aAAa,GAAE,2BAAkD,GAChE,OAAO,CAAC,iBAAiB,CAAC,CAmB5B;AAgDD,eAAO,MAAM,qBAAqB,EAAE,kBAMnC,CAAC"}
@@ -0,0 +1,118 @@
1
+ import { z } from "zod";
2
+ import { authenticationDiagnostic, GitHubClient, REPOSITORY_PATTERN } from "../github/client.js";
3
+ import { classifyGitHubWriteError } from "../github/writes.js";
4
+ import { askMarker, askToken } from "../identifiers.js";
5
+ /**
6
+ * The invisible marker family every comment loopy writes carries. `poll` treats a comment that
7
+ * carries no such marker as a human reply, so loopy's own question - and any attention comment - is
8
+ * excluded. GitHub's Quote reply strips HTML comments but keeps the visible token, so a quoted reply
9
+ * carries the token and drops the marker, and correlates as a human answer.
10
+ */
11
+ const LOOPY_MARKER_PREFIX = "<!-- loopy:";
12
+ export const gitHubCommentsOptionsSchema = z
13
+ .object({
14
+ repository: z.string().regex(REPOSITORY_PATTERN),
15
+ /** GitHub uses the Issues API for both issues and pull requests. */
16
+ issue: z.number().int().positive(),
17
+ // The one credential source today, declared by the port rather than inherited from the process.
18
+ credentials: z.literal("env").default("env"),
19
+ })
20
+ .strict();
21
+ const defaultClientFactory = (repository) => GitHubClient.fromEnvironment(repository);
22
+ export async function deliverGitHubComment(context, clientFactory = defaultClientFactory) {
23
+ const options = gitHubCommentsOptionsSchema.parse(context.options);
24
+ const token = askToken(context.workflowId, context.callId);
25
+ const marker = askMarker(context.workflowId, context.callId);
26
+ const body = renderQuestion(marker, token, context.question);
27
+ try {
28
+ const client = clientFactory(options.repository, options.credentials);
29
+ // Timestamp-free marker: a retry recomputes the same marker, so read-before-write skips a
30
+ // re-post. GitHub createComment has no idempotency key, so a timed-out attempt and its retry can
31
+ // still both post - a documented residual window, not one claimed away.
32
+ const comments = await client.commentBodies(options.issue);
33
+ if (!comments.some((existing) => existing.includes(marker))) {
34
+ await client.createComment(options.issue, body);
35
+ }
36
+ const correlation = {
37
+ repository: options.repository,
38
+ issue: options.issue,
39
+ token,
40
+ credentials: options.credentials,
41
+ };
42
+ return { correlation: correlation, renderedQuestion: body };
43
+ }
44
+ catch (error) {
45
+ throw classifyGitHubWriteError(error);
46
+ }
47
+ }
48
+ export async function pollGitHubComment(context, clientFactory = defaultClientFactory) {
49
+ const correlation = parseCorrelation(context.correlation);
50
+ try {
51
+ const client = clientFactory(correlation.repository, correlation.credentials);
52
+ // `listComments` returns comments oldest-first (the API default), so the earliest match wins: the
53
+ // first comment that carries the token and no loopy marker is the human's reply. Once the call
54
+ // settles it leaves `awaiting_answer` and a later reply is never read - the first answer is final.
55
+ const comments = await client.commentBodies(correlation.issue);
56
+ const match = comments.find((body) => body.includes(correlation.token) && !body.includes(LOOPY_MARKER_PREFIX));
57
+ if (match === undefined)
58
+ return { status: "waiting" };
59
+ const answer = stripCorrelationFooter(match, correlation.token);
60
+ // A comment that is only the quoted footer, with no reply text of the human's own, is not yet an
61
+ // answer; keep waiting so the empty-answer rejection never fires against a token-only comment.
62
+ return answer.length === 0 ? { status: "waiting" } : { status: "answered", answer };
63
+ }
64
+ catch (error) {
65
+ throw classifyGitHubWriteError(error);
66
+ }
67
+ }
68
+ /**
69
+ * Drop loopy's correlation token from a reply before it reaches the agent, keeping the human's own
70
+ * markdown for the agent to interpret on resume. Only the `loopy: <token>` phrase (and any bare
71
+ * token) is removed, never the whole line - a human who keeps the token inline with their prose, as
72
+ * the footer instructs, would otherwise lose their answer. A reply that is nothing but the token
73
+ * strips to empty, which the caller treats as still-waiting rather than an answer.
74
+ */
75
+ function stripCorrelationFooter(body, token) {
76
+ const phrase = new RegExp("`?\\s*loopy:\\s*" + token + "\\s*`?", "gi");
77
+ return body
78
+ .replace(phrase, "")
79
+ .replaceAll(token, "")
80
+ .split("\n")
81
+ .map((line) => line.replace(/[ \t]+$/, ""))
82
+ .join("\n")
83
+ .replace(/\n{3,}/g, "\n\n")
84
+ .trim();
85
+ }
86
+ function renderQuestion(marker, token, question) {
87
+ return [
88
+ marker,
89
+ question,
90
+ "",
91
+ "---",
92
+ `<sub>loopy is waiting for an answer. Reply on this thread, or quote-reply, keeping \`loopy: ${token}\` in your comment so loopy can match it.</sub>`,
93
+ ].join("\n");
94
+ }
95
+ function parseCorrelation(value) {
96
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
97
+ throw new Error("github comments correlation must be an object");
98
+ }
99
+ const { repository, issue, token, credentials } = value;
100
+ if (typeof repository !== "string" || typeof token !== "string") {
101
+ throw new Error("github comments correlation is missing repository or token");
102
+ }
103
+ if (typeof issue !== "number" || !Number.isInteger(issue)) {
104
+ throw new Error("github comments correlation is missing a numeric issue");
105
+ }
106
+ if (credentials !== "env") {
107
+ throw new Error("github comments correlation names an unsupported credential source");
108
+ }
109
+ return { repository, issue, token, credentials };
110
+ }
111
+ export const gitHubCommentsChannel = {
112
+ name: "github_comments",
113
+ optionsSchema: gitHubCommentsOptionsSchema,
114
+ deliver: (context) => deliverGitHubComment(context),
115
+ poll: (context) => pollGitHubComment(context),
116
+ checkStartup: authenticationDiagnostic,
117
+ };
118
+ //# sourceMappingURL=github.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/channels/github.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { gitHubCommentsChannel } from "./github.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { gitHubCommentsChannel } from "./github.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Operator-facing guidance printed by the CLI. It must stand alone: loopy runs on a machine whose
3
+ * agent operator is not expected to open repo docs or reach the network, so everything an operator
4
+ * needs is emitted here. Two standing rules shape the copy - loopy never explains how Temporal
5
+ * itself works (it names the temporal-developer skill and stops), and it never teaches authoring a
6
+ * new adapter (there is no plugin API yet; the built-ins are configured, not defined).
7
+ */
8
+ /** Named so an operator can find generic Temporal help; loopy-specific guidance never depends on it. */
9
+ export declare const TEMPORAL_SKILL_POINTER: string;
10
+ export interface GuideTopic {
11
+ readonly name: string;
12
+ readonly summary: string;
13
+ readonly body: string;
14
+ }
15
+ /** Ordered so `loopy guide` (no topic) lists them in the sequence an operator meets them. */
16
+ export declare const GUIDE_TOPICS: readonly GuideTopic[];
17
+ export declare function guideTopicNames(): string[];
18
+ export declare function findGuideTopic(name: string): GuideTopic | undefined;
19
+ /** `loopy guide` with no topic: the topic list plus the one external pointer loopy makes. */
20
+ export declare function renderGuideIndex(): string;
21
+ /** Appended after `loopy --help`: the playbook that points at the guide topics. */
22
+ export declare function helpPlaybook(): string;
23
+ //# sourceMappingURL=cli-help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-help.d.ts","sourceRoot":"","sources":["../src/cli-help.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,wGAAwG;AACxG,eAAO,MAAM,sBAAsB,QAEmE,CAAC;AAEvG,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAgJD,6FAA6F;AAC7F,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAAgC,CAAC;AAE/E,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEnE;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,IAAI,MAAM,CAazC;AAED,mFAAmF;AACnF,wBAAgB,YAAY,IAAI,MAAM,CAarC"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * Operator-facing guidance printed by the CLI. It must stand alone: loopy runs on a machine whose
3
+ * agent operator is not expected to open repo docs or reach the network, so everything an operator
4
+ * needs is emitted here. Two standing rules shape the copy - loopy never explains how Temporal
5
+ * itself works (it names the temporal-developer skill and stops), and it never teaches authoring a
6
+ * new adapter (there is no plugin API yet; the built-ins are configured, not defined).
7
+ */
8
+ /** Named so an operator can find generic Temporal help; loopy-specific guidance never depends on it. */
9
+ export const TEMPORAL_SKILL_POINTER = "Temporal itself (server, CLI, non-determinism, Event History) is out of loopy's scope.\n" +
10
+ "For that, use the temporal-developer skill: https://github.com/temporalio/skill-temporal-developer";
11
+ const SETUP = {
12
+ name: "setup",
13
+ summary: "config.toml and pointing loopy at a Temporal Service (local, self-hosted, or Cloud)",
14
+ body: [
15
+ "loopy guide setup",
16
+ "",
17
+ "Configure loopy with a TOML file, then point it at a Temporal Service.",
18
+ "",
19
+ "Config file",
20
+ " Default path: ~/.config/loopy/config.toml ($XDG_CONFIG_HOME/loopy/config.toml).",
21
+ " Override with -c/--config <path>.",
22
+ "",
23
+ " Minimal example:",
24
+ "",
25
+ ' repository = "owner/name" # required; the workspace repo agents clone',
26
+ ' default_branch = "main"',
27
+ " poll_interval_seconds = 300",
28
+ ' workflows = "workflows" # directory of workflow modules',
29
+ "",
30
+ " [temporal]",
31
+ ' address = "localhost:7233"',
32
+ ' namespace = "default"',
33
+ ' control_task_queue = "loopy-control" # required',
34
+ ' agent_task_queue = "loopy-agent" # required',
35
+ " tls = false",
36
+ "",
37
+ " Other keys: project_directory, working_directory, drain_timeout_seconds,",
38
+ " shutdown_grace_seconds, agent_worker.max_concurrent_activities, log_level.",
39
+ "",
40
+ "Temporal connection - three setups, differing only in [temporal]:",
41
+ " Local dev address=localhost:7233, tls=false. Start one with your Temporal",
42
+ " dev server (temporal server start-dev).",
43
+ " Self-hosted point address/namespace at it; set tls as deployed.",
44
+ " Cloud address=<ns>.<acct>.tmprl.cloud:7233, tls=true, and an API key via",
45
+ " api_key or the TEMPORAL_API_KEY environment variable (env wins and is",
46
+ " reported at startup). loopy selects a Namespace but never creates one.",
47
+ "",
48
+ "First run",
49
+ " loopy loop starts the Worker Process. A worker.lock in the working directory",
50
+ " prevents a second process for the same directory.",
51
+ ].join("\n"),
52
+ };
53
+ const WORKFLOWS = {
54
+ name: "workflows",
55
+ summary: "create, register, and change workflows",
56
+ body: [
57
+ "loopy guide workflows",
58
+ "",
59
+ "A workflow is a TypeScript module; there is no separate spec language and no register",
60
+ "command. Registration is discovery: loopy loop finds the modules and schedules them.",
61
+ "",
62
+ "Create",
63
+ " One file under the workflows/ directory defines one workflow:",
64
+ "",
65
+ " import { claude, defineWorkflow, githubAttention, githubPullRequests }",
66
+ ' from "@aicalas/loopy/workflow";',
67
+ "",
68
+ " export default defineWorkflow({",
69
+ ' name: "review",',
70
+ ' watcher: githubPullRequests({ repository: "owner/repo", label: "agent:review" }),',
71
+ ' attention: githubAttention({ target: "trigger" }),',
72
+ " async run(ctx) {",
73
+ ' const agent = ctx.agent("reviewer", claude({ model: "claude-opus-4-8" }));',
74
+ ' return await agent.run({ prompt: ["Review this PR."] });',
75
+ " },",
76
+ " });",
77
+ "",
78
+ " The module must have no top-level side effects: it is imported both under Node (for",
79
+ " metadata) and inside the Temporal isolate bundle, and a side effect breaks one or both.",
80
+ " A workflow configures the built-in adapters (watcher, attention, and any effects/asks);",
81
+ " it cannot define new ones.",
82
+ "",
83
+ "Schedule instead of watching",
84
+ " A workflow declares exactly one intake: watcher or schedule. A schedule starts the user",
85
+ " workflow directly; it needs no watcher and attention is optional:",
86
+ "",
87
+ " export default defineWorkflow({",
88
+ ' name: "nightly-maintenance",',
89
+ ' schedule: { cron: "0 2 * * *", timezone: "UTC" },',
90
+ " async run(ctx) {",
91
+ " return { source: ctx.trigger.source }; // schedule",
92
+ " },",
93
+ " });",
94
+ "",
95
+ " Use intervalSeconds instead of cron for a fixed cadence. overlap defaults to SKIP;",
96
+ " BUFFER_ONE, BUFFER_ALL, CANCEL_OTHER, TERMINATE_OTHER, and ALLOW_ALL are available.",
97
+ " A scheduled workflow with GitHub attention must target a fixed issue, not target: trigger.",
98
+ "",
99
+ "Register",
100
+ " Drop the module in the workflows directory and run loopy loop. On startup loopy",
101
+ " discovers every module, bundles them, and reconciles their Temporal Schedules.",
102
+ " Watchers poll for labelled issues or PRs; declared schedules start their workflows on time.",
103
+ "",
104
+ "Add or change",
105
+ " Edits reach a running Worker only on restart. The safe loop:",
106
+ " 1. Edit, add, or delete workflow files.",
107
+ " 2. Drain: send SIGINT/SIGTERM to loopy loop. It pauses this repo's Schedules and",
108
+ " keeps serving open instances until drain_timeout_seconds; a second signal skips",
109
+ " the wait. loopy has no workflow versioning, so draining is how you deploy an",
110
+ " edit without an in-flight instance resuming under changed code.",
111
+ " 3. Restart loopy loop. Schedules reconcile: new file adds a Schedule, a deleted",
112
+ " file removes one, an existing one is updated in place (an operator pause is kept).",
113
+ ].join("\n"),
114
+ };
115
+ const MONITOR = {
116
+ name: "monitor",
117
+ summary: "inspect instances with loopy status and act on the ones needing a human",
118
+ body: [
119
+ "loopy guide monitor",
120
+ "",
121
+ "loopy status [workflow-id]",
122
+ " Prints one NDJSON row per instance (per Workflow ID), or one row for a single",
123
+ " instance. Each row carries a domainStatus - loopy's own view, separate from",
124
+ " Temporal's status.",
125
+ "",
126
+ "Domain statuses",
127
+ " running Executing or waiting on an agent. Nothing to do.",
128
+ " awaiting_reconciliation An agent call ended ambiguously and the instance parked.",
129
+ " Resolve: loopy resolve <id> --retry (once the prior call can",
130
+ " no longer mutate external state) or --halt to close it.",
131
+ " awaiting_answer Parked on ctx.ask for a human answer. Reply on the channel,",
132
+ ' or: loopy answer <id> "<text>". Unanswered, it halts in 2 days.',
133
+ " completed Closed with a result. Re-label the trigger to run again.",
134
+ " halted An expected failure closed it; cleanup ran. Read the reason,",
135
+ " fix the cause, re-label to run again.",
136
+ " stuck Open but its own code fails every attempt. Fix the workflow",
137
+ " and restart loopy loop; it resumes automatically.",
138
+ " unavailable The row could not be read (usually transient). Retry status.",
139
+ "",
140
+ "Push, not just polling",
141
+ " Every state that needs a human also reaches the workflow's declared attention route",
142
+ " (by default, a label and comment on the trigger issue/PR), so you are notified there",
143
+ " without polling loopy status.",
144
+ "",
145
+ "When --call is required",
146
+ " If more than one call is parked or awaiting an answer, pass --call <handle>/call/<n>;",
147
+ " the error from resolve/answer lists the available call addresses.",
148
+ ].join("\n"),
149
+ };
150
+ /** Ordered so `loopy guide` (no topic) lists them in the sequence an operator meets them. */
151
+ export const GUIDE_TOPICS = [SETUP, WORKFLOWS, MONITOR];
152
+ export function guideTopicNames() {
153
+ return GUIDE_TOPICS.map((topic) => topic.name);
154
+ }
155
+ export function findGuideTopic(name) {
156
+ return GUIDE_TOPICS.find((topic) => topic.name === name);
157
+ }
158
+ /** `loopy guide` with no topic: the topic list plus the one external pointer loopy makes. */
159
+ export function renderGuideIndex() {
160
+ const width = Math.max(...GUIDE_TOPICS.map((topic) => topic.name.length));
161
+ const rows = GUIDE_TOPICS.map((topic) => ` ${topic.name.padEnd(width)} ${topic.summary}`).join("\n");
162
+ return [
163
+ "loopy guide <topic> - operator guidance, printed offline with no config needed.",
164
+ "",
165
+ "Topics:",
166
+ rows,
167
+ "",
168
+ TEMPORAL_SKILL_POINTER,
169
+ ].join("\n");
170
+ }
171
+ /** Appended after `loopy --help`: the playbook that points at the guide topics. */
172
+ export function helpPlaybook() {
173
+ return [
174
+ "Playbook:",
175
+ " loopy loop Run the Worker Process (poll, run, drain on signal).",
176
+ " loopy status [id] List instances, or describe one.",
177
+ " loopy resolve <id> --retry Reconcile a call that ended ambiguously (or --halt).",
178
+ ' loopy answer <id> "<text>" Answer an instance parked on ctx.ask.',
179
+ "",
180
+ " To deploy a workflow change: edit files, then restart loopy loop.",
181
+ "",
182
+ "Guidance (offline, no config): loopy guide <" + guideTopicNames().join("|") + ">",
183
+ " or run loopy guide for the topic list.",
184
+ ].join("\n");
185
+ }
186
+ //# sourceMappingURL=cli-help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-help.js","sourceRoot":"","sources":["../src/cli-help.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,wGAAwG;AACxG,MAAM,CAAC,MAAM,sBAAsB,GACjC,0FAA0F;IAC1F,oGAAoG,CAAC;AAQvG,MAAM,KAAK,GAAe;IACxB,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,qFAAqF;IAC9F,IAAI,EAAE;QACJ,mBAAmB;QACnB,EAAE;QACF,wEAAwE;QACxE,EAAE;QACF,aAAa;QACb,mFAAmF;QACnF,qCAAqC;QACrC,EAAE;QACF,oBAAoB;QACpB,EAAE;QACF,oFAAoF;QACpF,6BAA6B;QAC7B,iCAAiC;QACjC,wEAAwE;QACxE,EAAE;QACF,gBAAgB;QAChB,gCAAgC;QAChC,2BAA2B;QAC3B,uDAAuD;QACvD,uDAAuD;QACvD,iBAAiB;QACjB,EAAE;QACF,4EAA4E;QAC5E,8EAA8E;QAC9E,EAAE;QACF,mEAAmE;QACnE,gFAAgF;QAChF,wDAAwD;QACxD,oEAAoE;QACpE,mFAAmF;QACnF,sFAAsF;QACtF,uFAAuF;QACvF,EAAE;QACF,WAAW;QACX,iFAAiF;QACjF,qDAAqD;KACtD,CAAC,IAAI,CAAC,IAAI,CAAC;CACb,CAAC;AAEF,MAAM,SAAS,GAAe;IAC5B,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,wCAAwC;IACjD,IAAI,EAAE;QACJ,uBAAuB;QACvB,EAAE;QACF,uFAAuF;QACvF,sFAAsF;QACtF,EAAE;QACF,QAAQ;QACR,iEAAiE;QACjE,EAAE;QACF,4EAA4E;QAC5E,uCAAuC;QACvC,EAAE;QACF,qCAAqC;QACrC,uBAAuB;QACvB,yFAAyF;QACzF,0DAA0D;QAC1D,wBAAwB;QACxB,oFAAoF;QACpF,kEAAkE;QAClE,UAAU;QACV,SAAS;QACT,EAAE;QACF,uFAAuF;QACvF,2FAA2F;QAC3F,2FAA2F;QAC3F,8BAA8B;QAC9B,EAAE;QACF,8BAA8B;QAC9B,2FAA2F;QAC3F,qEAAqE;QACrE,EAAE;QACF,qCAAqC;QACrC,oCAAoC;QACpC,yDAAyD;QACzD,wBAAwB;QACxB,4DAA4D;QAC5D,UAAU;QACV,SAAS;QACT,EAAE;QACF,sFAAsF;QACtF,uFAAuF;QACvF,8FAA8F;QAC9F,EAAE;QACF,UAAU;QACV,mFAAmF;QACnF,kFAAkF;QAClF,+FAA+F;QAC/F,EAAE;QACF,eAAe;QACf,gEAAgE;QAChE,6CAA6C;QAC7C,sFAAsF;QACtF,wFAAwF;QACxF,qFAAqF;QACrF,wEAAwE;QACxE,qFAAqF;QACrF,2FAA2F;KAC5F,CAAC,IAAI,CAAC,IAAI,CAAC;CACb,CAAC;AAEF,MAAM,OAAO,GAAe;IAC1B,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,yEAAyE;IAClF,IAAI,EAAE;QACJ,qBAAqB;QACrB,EAAE;QACF,4BAA4B;QAC5B,iFAAiF;QACjF,+EAA+E;QAC/E,sBAAsB;QACtB,EAAE;QACF,iBAAiB;QACjB,6EAA6E;QAC7E,qFAAqF;QACrF,yFAAyF;QACzF,oFAAoF;QACpF,wFAAwF;QACxF,4FAA4F;QAC5F,qFAAqF;QACrF,yFAAyF;QACzF,kEAAkE;QAClE,wFAAwF;QACxF,8EAA8E;QAC9E,yFAAyF;QACzF,EAAE;QACF,wBAAwB;QACxB,uFAAuF;QACvF,wFAAwF;QACxF,iCAAiC;QACjC,EAAE;QACF,yBAAyB;QACzB,yFAAyF;QACzF,qEAAqE;KACtE,CAAC,IAAI,CAAC,IAAI,CAAC;CACb,CAAC;AAEF,6FAA6F;AAC7F,MAAM,CAAC,MAAM,YAAY,GAA0B,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAE/E,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,gBAAgB;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAC9F,IAAI,CACL,CAAC;IACF,OAAO;QACL,iFAAiF;QACjF,EAAE;QACF,SAAS;QACT,IAAI;QACJ,EAAE;QACF,sBAAsB;KACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,YAAY;IAC1B,OAAO;QACL,WAAW;QACX,uFAAuF;QACvF,mEAAmE;QACnE,uFAAuF;QACvF,yEAAyE;QACzE,EAAE;QACF,qEAAqE;QACrE,EAAE;QACF,8CAA8C,GAAG,eAAe,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;QAClF,4CAA4C;KAC7C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env node
2
+ import type { AdapterRegistries } from "./adapters.js";
3
+ import { buildWorkflowBundle, discoverWorkflows } from "./build/discover.js";
4
+ import { type InstanceState, type ResolveRequest } from "./core/wire.js";
5
+ import { ensureRepo } from "./git.js";
6
+ import { type Settings } from "./settings.js";
7
+ import { connectClient } from "./temporal/client.js";
8
+ import { type InstanceView } from "./temporal/status.js";
9
+ import { createWorkerRuntime } from "./temporal/worker.js";
10
+ export interface CliServices {
11
+ serve(settings: Settings, registries: AdapterRegistries): Promise<void>;
12
+ resolve(workflowId: string, request: ResolveOptions, settings: Settings): Promise<InstanceState>;
13
+ answer(workflowId: string, request: AnswerOptions, settings: Settings): Promise<InstanceState>;
14
+ status(settings: Settings, workflowId: string | undefined): Promise<InstanceView[]>;
15
+ }
16
+ export interface ServeServices {
17
+ ensureRepo: typeof ensureRepo;
18
+ connectClient: typeof connectClient;
19
+ createWorkerRuntime: typeof createWorkerRuntime;
20
+ discoverWorkflows: typeof discoverWorkflows;
21
+ buildWorkflowBundle: typeof buildWorkflowBundle;
22
+ }
23
+ export interface ResolveOptions {
24
+ action: ResolveRequest["action"];
25
+ callId?: string;
26
+ }
27
+ export interface AnswerOptions {
28
+ answer: string;
29
+ callId?: string;
30
+ }
31
+ export declare function main(argv: readonly string[], services: CliServices): Promise<void>;
32
+ export declare function serve(settings: Settings, registries: AdapterRegistries, services: ServeServices): Promise<void>;
33
+ export declare function resolveInstance(workflowId: string, request: ResolveOptions, settings: Settings, connect?: typeof connectClient): Promise<InstanceState>;
34
+ export declare function answerInstance(workflowId: string, request: AnswerOptions, settings: Settings, connect?: typeof connectClient): Promise<InstanceState>;
35
+ export declare function statusInstances(settings: Settings, workflowId: string | undefined, connect?: typeof connectClient): Promise<InstanceView[]>;
36
+ export declare function runExecutable(argv: readonly string[], services: CliServices): Promise<void>;
37
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EACL,mBAAmB,EAEnB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAEL,KAAK,aAAa,EAElB,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAY,UAAU,EAAE,MAAM,UAAU,CAAC;AAEhD,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AASrD,OAAO,EAEL,KAAK,YAAY,EAGlB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAM3D,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACjG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC/F,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CACrF;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,mBAAmB,EAAE,OAAO,mBAAmB,CAAC;IAChD,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,mBAAmB,EAAE,OAAO,mBAAmB,CAAC;CACjD;AAqBD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoGxF;AAED,wBAAsB,KAAK,CACzB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,iBAAiB,EAC7B,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,IAAI,CAAC,CAkEf;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,OAAO,aAA6B,GAC5C,OAAO,CAAC,aAAa,CAAC,CAcxB;AAED,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,OAAO,aAA6B,GAC5C,OAAO,CAAC,aAAa,CAAC,CAcxB;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,GAAE,OAAO,aAA6B,GAC5C,OAAO,CAAC,YAAY,EAAE,CAAC,CAqBzB;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAWjG"}