@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,543 @@
1
+ export function parseInstanceWorkflowInput(value) {
2
+ const record = expectRecord(value, "instance workflow input");
3
+ assertKeys(record, ["workflow", "repository", "defaultBranch", "trigger", "attention", "agentTaskQueue"], "instance workflow input");
4
+ return {
5
+ workflow: expectString(record.workflow, "workflow"),
6
+ repository: expectString(record.repository, "repository"),
7
+ defaultBranch: expectString(record.defaultBranch, "defaultBranch"),
8
+ trigger: parseTriggerCandidate(record.trigger),
9
+ ...(record.attention === undefined
10
+ ? {}
11
+ : { attention: parseAttentionConfig(record.attention) }),
12
+ agentTaskQueue: expectString(record.agentTaskQueue, "agentTaskQueue"),
13
+ };
14
+ }
15
+ export function parsePollWorkflowInput(value) {
16
+ const record = expectRecord(value, "PollWorkflow input");
17
+ assertKeys(record, [
18
+ "workflow",
19
+ "repository",
20
+ "defaultBranch",
21
+ "watcher",
22
+ "attention",
23
+ "agentTaskQueue",
24
+ "instanceIdPrefix",
25
+ ], "PollWorkflow input");
26
+ return {
27
+ workflow: expectString(record.workflow, "workflow"),
28
+ repository: expectString(record.repository, "repository"),
29
+ defaultBranch: expectString(record.defaultBranch, "defaultBranch"),
30
+ ...(record.watcher === undefined ? {} : { watcher: parseWatcherSnapshot(record.watcher) }),
31
+ ...(record.attention === undefined
32
+ ? {}
33
+ : { attention: parseAttentionConfig(record.attention) }),
34
+ agentTaskQueue: expectString(record.agentTaskQueue, "agentTaskQueue"),
35
+ instanceIdPrefix: expectString(record.instanceIdPrefix, "instanceIdPrefix"),
36
+ };
37
+ }
38
+ export function parseRunWatcherInput(value) {
39
+ const record = expectRecord(value, "run_watcher input");
40
+ assertKeys(record, ["repository", "watcher"], "run_watcher input");
41
+ return {
42
+ repository: expectString(record.repository, "repository"),
43
+ watcher: parseWatcherSnapshot(record.watcher),
44
+ };
45
+ }
46
+ export function parseRunAgentInput(value) {
47
+ const record = expectRecord(value, "run_agent input");
48
+ assertKeys(record, [
49
+ "repository",
50
+ "baseBranch",
51
+ "trigger",
52
+ "workflowRunId",
53
+ "chainId",
54
+ "targetBranch",
55
+ "handleId",
56
+ "callId",
57
+ "invocation",
58
+ "resumeSessionId",
59
+ "harness",
60
+ "options",
61
+ "timeoutSeconds",
62
+ "promptParts",
63
+ "schema",
64
+ ], "run_agent input");
65
+ const request = {
66
+ repository: expectString(record.repository, "repository"),
67
+ baseBranch: expectString(record.baseBranch, "baseBranch"),
68
+ trigger: parseTriggerCandidate(record.trigger),
69
+ workflowRunId: expectString(record.workflowRunId, "workflowRunId"),
70
+ chainId: expectString(record.chainId, "chainId"),
71
+ targetBranch: expectString(record.targetBranch, "targetBranch"),
72
+ handleId: expectString(record.handleId, "handleId"),
73
+ callId: expectString(record.callId, "callId"),
74
+ invocation: expectPositiveInteger(record.invocation, "invocation"),
75
+ harness: expectString(record.harness, "harness"),
76
+ options: expectJsonObject(record.options ?? {}, "options"),
77
+ timeoutSeconds: expectPositiveNumber(record.timeoutSeconds, "timeoutSeconds"),
78
+ promptParts: parsePromptParts(record.promptParts),
79
+ schema: expectJsonObject(record.schema, "schema"),
80
+ };
81
+ if (record.resumeSessionId !== undefined) {
82
+ request.resumeSessionId = expectString(record.resumeSessionId, "resumeSessionId");
83
+ }
84
+ return request;
85
+ }
86
+ export function parseRunEffectInput(value) {
87
+ const record = expectRecord(value, "emit_effect input");
88
+ assertKeys(record, ["repository", "effectId", "emitter", "action"], "emit_effect input");
89
+ return {
90
+ repository: expectString(record.repository, "repository"),
91
+ effectId: expectString(record.effectId, "effectId"),
92
+ emitter: expectString(record.emitter, "emitter"),
93
+ action: expectJsonObject(record.action, "action"),
94
+ };
95
+ }
96
+ export function parseEmitAttentionInput(value) {
97
+ const record = expectRecord(value, "emit_attention input");
98
+ assertKeys(record, ["repository", "trigger", "attention", "event"], "emit_attention input");
99
+ return {
100
+ repository: expectString(record.repository, "repository"),
101
+ trigger: parseTriggerCandidate(record.trigger),
102
+ attention: parseAttentionConfig(record.attention),
103
+ event: parseAttentionEvent(record.event),
104
+ };
105
+ }
106
+ export function parseAttentionEvent(value) {
107
+ const record = expectRecord(value, "attention event");
108
+ assertKeys(record, [
109
+ "kind",
110
+ "workflowId",
111
+ "runId",
112
+ "workflowName",
113
+ "triggerRef",
114
+ "reason",
115
+ "occurredAt",
116
+ "callAddress",
117
+ "cleanup",
118
+ "suggestedCommands",
119
+ ], "attention event");
120
+ const kind = record.kind;
121
+ if (kind !== "halted" &&
122
+ kind !== "awaiting_reconciliation" &&
123
+ kind !== "stuck" &&
124
+ kind !== "awaiting_answer") {
125
+ throw new Error(`invalid attention kind: ${String(kind)}`);
126
+ }
127
+ const event = {
128
+ kind,
129
+ workflowId: expectString(record.workflowId, "event.workflowId"),
130
+ workflowName: expectString(record.workflowName, "event.workflowName"),
131
+ triggerRef: expectString(record.triggerRef, "event.triggerRef"),
132
+ reason: expectString(record.reason, "event.reason"),
133
+ occurredAt: expectString(record.occurredAt, "event.occurredAt"),
134
+ suggestedCommands: expectStringArray(record.suggestedCommands, "event.suggestedCommands"),
135
+ };
136
+ if (record.runId !== undefined)
137
+ event.runId = expectString(record.runId, "event.runId");
138
+ if (record.callAddress !== undefined) {
139
+ event.callAddress = expectString(record.callAddress, "event.callAddress");
140
+ }
141
+ if (record.cleanup !== undefined)
142
+ event.cleanup = parseCleanupResult(record.cleanup);
143
+ return event;
144
+ }
145
+ export function parseAttentionEmitResult(value) {
146
+ const record = expectRecord(value, "attention emit result");
147
+ assertKeys(record, ["status"], "attention emit result");
148
+ if (record.status !== "emitted" && record.status !== "skipped") {
149
+ throw new Error(`invalid attention emit status: ${String(record.status)}`);
150
+ }
151
+ return { status: record.status };
152
+ }
153
+ export function parseObserveInstancesInput(value) {
154
+ const record = expectRecord(value, "observe_instances input");
155
+ assertKeys(record, ["repository", "workflow"], "observe_instances input");
156
+ return {
157
+ repository: expectString(record.repository, "repository"),
158
+ workflow: expectString(record.workflow, "workflow"),
159
+ };
160
+ }
161
+ export function parseObserveInstancesResult(value) {
162
+ const record = expectRecord(value, "observe_instances result");
163
+ assertKeys(record, ["stuck", "answered"], "observe_instances result");
164
+ return {
165
+ stuck: expectStringArray(record.stuck, "stuck"),
166
+ answered: expectStringArray(record.answered, "answered"),
167
+ };
168
+ }
169
+ export function parseChannelConfig(value) {
170
+ const record = expectRecord(value, "channel");
171
+ assertKeys(record, ["channel", "options"], "channel");
172
+ return {
173
+ channel: expectString(record.channel, "channel.channel"),
174
+ options: expectJsonObject(record.options, "channel.options"),
175
+ };
176
+ }
177
+ export function parseDeliverQuestionInput(value) {
178
+ const record = expectRecord(value, "deliver_question input");
179
+ assertKeys(record, ["repository", "channel", "options", "workflowId", "callId", "promptParts"], "deliver_question input");
180
+ return {
181
+ repository: expectString(record.repository, "repository"),
182
+ channel: expectString(record.channel, "channel"),
183
+ options: expectJsonObject(record.options, "options"),
184
+ workflowId: expectString(record.workflowId, "workflowId"),
185
+ callId: expectString(record.callId, "callId"),
186
+ promptParts: parsePromptParts(record.promptParts),
187
+ };
188
+ }
189
+ export function parseDeliverQuestionResult(value) {
190
+ const record = expectRecord(value, "deliver_question result");
191
+ assertKeys(record, ["correlation", "renderedQuestion"], "deliver_question result");
192
+ return {
193
+ correlation: expectJsonValue(record.correlation, "correlation"),
194
+ renderedQuestion: expectString(record.renderedQuestion, "renderedQuestion"),
195
+ };
196
+ }
197
+ export function parseChannelPollResult(value) {
198
+ const record = expectRecord(value, "channel poll result");
199
+ assertKeys(record, ["status", "answer"], "channel poll result");
200
+ if (record.status === "answered") {
201
+ return { status: "answered", answer: expectString(record.answer, "poll answer") };
202
+ }
203
+ if (record.status !== "waiting") {
204
+ throw new Error(`invalid channel poll status: ${String(record.status)}`);
205
+ }
206
+ if (record.answer !== undefined)
207
+ throw new Error("waiting poll result must not carry an answer");
208
+ return { status: "waiting" };
209
+ }
210
+ export function parseAnswerRequest(value) {
211
+ const record = expectRecord(value, "answer request");
212
+ assertKeys(record, ["callId", "answer"], "answer request");
213
+ return {
214
+ callId: expectString(record.callId, "callId"),
215
+ answer: expectString(record.answer, "answer"),
216
+ };
217
+ }
218
+ export function parseCleanupWorkspaceInput(value) {
219
+ const record = expectRecord(value, "cleanup_workspace input");
220
+ assertKeys(record, ["chainId"], "cleanup_workspace input");
221
+ return { chainId: expectString(record.chainId, "chainId") };
222
+ }
223
+ export function parseResolveRequest(value) {
224
+ const record = expectRecord(value, "resolve request");
225
+ assertKeys(record, ["callId", "action"], "resolve request");
226
+ if (record.action !== "retry" && record.action !== "halt") {
227
+ throw new Error(`invalid resolution action: ${String(record.action)}`);
228
+ }
229
+ return { callId: expectString(record.callId, "callId"), action: record.action };
230
+ }
231
+ export function parseTriggerCandidates(value) {
232
+ if (!Array.isArray(value))
233
+ throw new Error("watcher result must be an array");
234
+ return value.map(parseTriggerCandidate);
235
+ }
236
+ export function parseAgentCallResult(value) {
237
+ const record = expectRecord(value, "agent result");
238
+ assertKeys(record, ["status", "value", "reason", "sessionId", "usage"], "agent result");
239
+ const usage = record.usage === undefined ? undefined : expectJsonObject(record.usage, "agent usage");
240
+ const sessionId = record.sessionId === undefined
241
+ ? undefined
242
+ : expectString(record.sessionId, "agent result sessionId");
243
+ if (record.status === "returned") {
244
+ if (record.reason !== undefined) {
245
+ throw new Error("returned agent result must not carry a reason");
246
+ }
247
+ return {
248
+ status: "returned",
249
+ value: expectJsonValue(record.value, "agent result value"),
250
+ ...(sessionId === undefined ? {} : { sessionId }),
251
+ ...(usage === undefined ? {} : { usage }),
252
+ };
253
+ }
254
+ if (record.value !== undefined) {
255
+ throw new Error("unsuccessful agent result must not carry a value");
256
+ }
257
+ const reason = expectString(record.reason, "agent reason");
258
+ if (record.status === "indeterminate") {
259
+ if (sessionId !== undefined) {
260
+ throw new Error("indeterminate agent result must not carry a session id");
261
+ }
262
+ if (usage !== undefined) {
263
+ throw new Error("indeterminate agent result must not carry usage");
264
+ }
265
+ return { status: "indeterminate", reason };
266
+ }
267
+ if (record.status !== "failed" && record.status !== "deadline_exceeded") {
268
+ throw new Error(`invalid agent status: ${String(record.status)}`);
269
+ }
270
+ return {
271
+ status: record.status,
272
+ reason,
273
+ ...(sessionId === undefined ? {} : { sessionId }),
274
+ ...(usage === undefined ? {} : { usage }),
275
+ };
276
+ }
277
+ export function parseEffectResult(value) {
278
+ const record = expectRecord(value, "effect result");
279
+ assertKeys(record, ["status", "reason", "detail"], "effect result");
280
+ const detail = record.detail === undefined ? undefined : expectJsonObject(record.detail, "effect detail");
281
+ if (record.status === "completed") {
282
+ if (record.reason !== undefined)
283
+ throw new Error("completed effect must not carry a reason");
284
+ return detail === undefined ? { status: "completed" } : { status: "completed", detail };
285
+ }
286
+ if (record.status !== "failed") {
287
+ throw new Error(`invalid effect status: ${String(record.status)}`);
288
+ }
289
+ const reason = expectString(record.reason, "effect reason");
290
+ return detail === undefined
291
+ ? { status: record.status, reason }
292
+ : { status: record.status, reason, detail };
293
+ }
294
+ export function parseInstanceState(value) {
295
+ const record = expectRecord(value, "instance state");
296
+ assertKeys(record, ["workflow", "trigger", "domainStatus", "calls", "callsUsed", "callLimit", "terminal"], "instance state");
297
+ const domainStatus = record.domainStatus;
298
+ if (domainStatus !== "running" &&
299
+ domainStatus !== "awaiting_reconciliation" &&
300
+ domainStatus !== "awaiting_answer" &&
301
+ domainStatus !== "halted") {
302
+ throw new Error(`invalid instance domain status: ${String(domainStatus)}`);
303
+ }
304
+ const state = {
305
+ workflow: expectString(record.workflow, "workflow"),
306
+ trigger: parseTriggerCandidate(record.trigger),
307
+ domainStatus,
308
+ calls: parseCallStates(record.calls),
309
+ callsUsed: expectNonNegativeInteger(record.callsUsed, "callsUsed"),
310
+ callLimit: expectPositiveInteger(record.callLimit, "callLimit"),
311
+ };
312
+ if (record.terminal !== undefined)
313
+ state.terminal = parseTerminalHalt(record.terminal);
314
+ return state;
315
+ }
316
+ export function parseInstanceResult(value) {
317
+ const record = expectRecord(value, "instance result");
318
+ assertKeys(record, ["domainStatus", "workflow", "value", "calls", "effects", "cleanup", "reason"], "instance result");
319
+ if (record.domainStatus !== "completed" && record.domainStatus !== "halted") {
320
+ throw new Error(`invalid instance domain status: ${String(record.domainStatus)}`);
321
+ }
322
+ const data = {
323
+ workflow: expectString(record.workflow, "workflow"),
324
+ calls: parseCallStates(record.calls),
325
+ effects: parseValueMap(record.effects, parseEffectResult, "effects"),
326
+ cleanup: parseCleanupResult(record.cleanup),
327
+ };
328
+ if (record.domainStatus === "completed") {
329
+ if (record.reason !== undefined)
330
+ throw new Error("completed instance must not carry a reason");
331
+ return {
332
+ domainStatus: "completed",
333
+ value: expectJsonValue(record.value ?? null, "instance value"),
334
+ ...data,
335
+ };
336
+ }
337
+ if (record.value !== undefined)
338
+ throw new Error("halted instance must not carry a value");
339
+ return {
340
+ domainStatus: "halted",
341
+ reason: expectString(record.reason, "instance reason"),
342
+ ...data,
343
+ };
344
+ }
345
+ export function toJsonObject(value, label = "value") {
346
+ return expectJsonObject(value, label);
347
+ }
348
+ export function isJsonValue(value) {
349
+ if (value === null || typeof value === "string" || typeof value === "boolean")
350
+ return true;
351
+ if (typeof value === "number")
352
+ return Number.isFinite(value);
353
+ if (Array.isArray(value))
354
+ return value.every(isJsonValue);
355
+ if (!isRecord(value))
356
+ return false;
357
+ return Object.values(value).every(isJsonValue);
358
+ }
359
+ /** The `source:repository:kind:id` descriptor a human-facing surface renders for a trigger. */
360
+ export function triggerReference(trigger) {
361
+ return `${trigger.source}:${trigger.repository}:${trigger.kind}:${trigger.id}`;
362
+ }
363
+ function parsePromptParts(value) {
364
+ if (!Array.isArray(value) || value.length === 0) {
365
+ throw new Error("promptParts must be a non-empty array");
366
+ }
367
+ return value.map((part) => {
368
+ if (typeof part === "string")
369
+ return part;
370
+ const record = expectRecord(part, "prompt part");
371
+ assertKeys(record, ["file"], "prompt part");
372
+ return { file: expectString(record.file, "prompt part file") };
373
+ });
374
+ }
375
+ function parseCallStates(value) {
376
+ if (!Array.isArray(value))
377
+ throw new Error("calls must be an array");
378
+ return value.map(parseCallState);
379
+ }
380
+ function parseCallState(value) {
381
+ const record = expectRecord(value, "call state");
382
+ assertKeys(record, [
383
+ "kind",
384
+ "callId",
385
+ "operation",
386
+ "handleId",
387
+ "invocation",
388
+ "reason",
389
+ "sessionId",
390
+ "channel",
391
+ "correlation",
392
+ "question",
393
+ ], "call state");
394
+ const callId = expectString(record.callId, "call.callId");
395
+ const handleId = expectString(record.handleId, "call.handleId");
396
+ const operation = record.operation;
397
+ if (operation !== "agent" && operation !== "effect" && operation !== "ask") {
398
+ throw new Error(`invalid call operation: ${String(operation)}`);
399
+ }
400
+ const base = { callId, operation, handleId };
401
+ if (record.kind === "running") {
402
+ return { kind: "running", ...base, invocation: expectPositiveInteger(record.invocation, "n") };
403
+ }
404
+ if (record.kind === "awaiting_answer") {
405
+ return {
406
+ kind: "awaiting_answer",
407
+ ...base,
408
+ channel: expectString(record.channel, "call.channel"),
409
+ correlation: expectJsonValue(record.correlation, "call.correlation"),
410
+ question: expectString(record.question, "call.question"),
411
+ };
412
+ }
413
+ if (record.kind === "parked") {
414
+ return {
415
+ kind: "parked",
416
+ ...base,
417
+ invocation: expectPositiveInteger(record.invocation, "call.invocation"),
418
+ reason: expectString(record.reason, "call.reason"),
419
+ };
420
+ }
421
+ if (record.kind === "returned") {
422
+ return record.sessionId === undefined
423
+ ? { kind: "returned", ...base }
424
+ : { kind: "returned", ...base, sessionId: expectString(record.sessionId, "call.sessionId") };
425
+ }
426
+ if (record.kind !== "failed")
427
+ throw new Error(`invalid call kind: ${String(record.kind)}`);
428
+ return {
429
+ kind: "failed",
430
+ ...base,
431
+ reason: expectString(record.reason, "call.reason"),
432
+ };
433
+ }
434
+ function parseTerminalHalt(value) {
435
+ const record = expectRecord(value, "terminal halt");
436
+ assertKeys(record, ["reason"], "terminal halt");
437
+ return { reason: expectString(record.reason, "terminal.reason") };
438
+ }
439
+ function parseTriggerCandidate(value) {
440
+ const record = expectRecord(value, "trigger candidate");
441
+ assertKeys(record, ["source", "digest", "repository", "kind", "id", "baseBranch", "targetBranch", "data"], "trigger candidate");
442
+ const candidate = {
443
+ source: expectString(record.source, "trigger.source"),
444
+ digest: expectString(record.digest, "trigger.digest"),
445
+ repository: expectString(record.repository, "trigger.repository"),
446
+ kind: expectString(record.kind, "trigger.kind"),
447
+ id: expectString(record.id, "trigger.id"),
448
+ data: expectJsonObject(record.data ?? {}, "trigger.data"),
449
+ };
450
+ if (record.baseBranch !== undefined) {
451
+ candidate.baseBranch = expectString(record.baseBranch, "trigger.baseBranch");
452
+ }
453
+ if (record.targetBranch !== undefined) {
454
+ candidate.targetBranch = expectString(record.targetBranch, "trigger.targetBranch");
455
+ }
456
+ return candidate;
457
+ }
458
+ function parseWatcherSnapshot(value) {
459
+ const record = expectRecord(value, "watcher");
460
+ assertKeys(record, ["name", "options"], "watcher");
461
+ return {
462
+ name: expectString(record.name, "watcher.name"),
463
+ options: expectJsonObject(record.options ?? {}, "watcher.options"),
464
+ };
465
+ }
466
+ function parseAttentionConfig(value) {
467
+ const record = expectRecord(value, "attention");
468
+ assertKeys(record, ["emitter", "options"], "attention");
469
+ return {
470
+ emitter: expectString(record.emitter, "attention.emitter"),
471
+ options: expectJsonObject(record.options, "attention.options"),
472
+ };
473
+ }
474
+ function parseCleanupResult(value) {
475
+ const record = expectRecord(value, "cleanup result");
476
+ assertKeys(record, ["status", "removed", "reason"], "cleanup result");
477
+ if (record.status === "failed") {
478
+ return { status: "failed", reason: expectString(record.reason, "cleanup reason") };
479
+ }
480
+ if (record.status !== "completed") {
481
+ throw new Error(`invalid cleanup status: ${String(record.status)}`);
482
+ }
483
+ return { status: "completed", removed: expectStringArray(record.removed, "cleanup removed") };
484
+ }
485
+ function parseValueMap(value, parse, label) {
486
+ const record = expectRecord(value ?? {}, label);
487
+ return Object.fromEntries(Object.entries(record).map(([key, item]) => [key, parse(item)]));
488
+ }
489
+ function isRecord(value) {
490
+ return typeof value === "object" && value !== null && !Array.isArray(value);
491
+ }
492
+ function expectRecord(value, label) {
493
+ if (!isRecord(value))
494
+ throw new Error(`${label} must be an object`);
495
+ return value;
496
+ }
497
+ function expectJsonObject(value, label) {
498
+ const record = expectRecord(value, label);
499
+ if (!isJsonValue(record))
500
+ throw new Error(`${label} must contain only JSON values`);
501
+ return record;
502
+ }
503
+ function expectJsonValue(value, label) {
504
+ if (!isJsonValue(value))
505
+ throw new Error(`${label} must be a JSON value`);
506
+ return value;
507
+ }
508
+ function expectString(value, label) {
509
+ if (typeof value !== "string")
510
+ throw new Error(`${label} must be a string`);
511
+ return value;
512
+ }
513
+ function expectStringArray(value, label) {
514
+ if (!Array.isArray(value))
515
+ throw new Error(`${label} must be an array`);
516
+ return value.map((item) => expectString(item, `${label} item`));
517
+ }
518
+ function expectPositiveNumber(value, label) {
519
+ if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) {
520
+ throw new Error(`${label} must be a positive finite number`);
521
+ }
522
+ return value;
523
+ }
524
+ function expectPositiveInteger(value, label) {
525
+ const number = expectPositiveNumber(value, label);
526
+ if (!Number.isInteger(number))
527
+ throw new Error(`${label} must be an integer`);
528
+ return number;
529
+ }
530
+ function expectNonNegativeInteger(value, label) {
531
+ if (typeof value !== "number" || !Number.isInteger(value) || value < 0) {
532
+ throw new Error(`${label} must be a non-negative integer`);
533
+ }
534
+ return value;
535
+ }
536
+ function assertKeys(record, keys, label) {
537
+ const accepted = new Set(keys);
538
+ const unexpected = Object.keys(record).filter((key) => !accepted.has(key));
539
+ if (unexpected.length > 0) {
540
+ throw new Error(`${label} has unexpected fields: ${unexpected.sort().join(", ")}`);
541
+ }
542
+ }
543
+ //# sourceMappingURL=wire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.js","sourceRoot":"","sources":["../../src/core/wire.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { z } from "zod";
2
+ import type { EmitterContext, EmitterSpec } from "../adapters.js";
3
+ import type { EffectResult } from "../core/wire.js";
4
+ import { GitHubClient } from "../github/client.js";
5
+ export declare const gitHubLabelsActionSchema: z.ZodObject<{
6
+ repository: z.ZodString;
7
+ issue: z.ZodNumber;
8
+ add: z.ZodDefault<z.ZodArray<z.ZodString>>;
9
+ remove: z.ZodDefault<z.ZodArray<z.ZodString>>;
10
+ credentials: z.ZodDefault<z.ZodLiteral<"env">>;
11
+ }, z.core.$strict>;
12
+ export type GitHubEmitterClientFactory = (repository: string, credentials: "env") => GitHubClient;
13
+ export declare function emitGitHubLabels(context: EmitterContext, clientFactory?: GitHubEmitterClientFactory): Promise<EffectResult>;
14
+ export declare const gitHubLabelsEmitter: EmitterSpec;
15
+ //# sourceMappingURL=github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/emitters/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAA4B,YAAY,EAAsB,MAAM,qBAAqB,CAAC;AAGjG,eAAO,MAAM,wBAAwB;;;;;;kBAYjC,CAAC;AAEL,MAAM,MAAM,0BAA0B,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,KAAK,YAAY,CAAC;AAIlG,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,cAAc,EACvB,aAAa,GAAE,0BAAiD,GAC/D,OAAO,CAAC,YAAY,CAAC,CAcvB;AAED,eAAO,MAAM,mBAAmB,EAAE,WAKjC,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { z } from "zod";
2
+ import { authenticationDiagnostic, GitHubClient, REPOSITORY_PATTERN } from "../github/client.js";
3
+ import { classifyGitHubWriteError, sameLabels } from "../github/writes.js";
4
+ export const gitHubLabelsActionSchema = z
5
+ .object({
6
+ repository: z.string().regex(REPOSITORY_PATTERN),
7
+ issue: z.number().int().positive(),
8
+ add: z.array(z.string().min(1)).default([]),
9
+ remove: z.array(z.string().min(1)).default([]),
10
+ // The one credential source today, declared by the port rather than inherited from the process.
11
+ credentials: z.literal("env").default("env"),
12
+ })
13
+ .strict()
14
+ .refine((value) => value.add.length > 0 || value.remove.length > 0, {
15
+ message: "at least one label must be added or removed",
16
+ });
17
+ const defaultClientFactory = (repository) => GitHubClient.fromEnvironment(repository);
18
+ export async function emitGitHubLabels(context, clientFactory = defaultClientFactory) {
19
+ try {
20
+ const action = gitHubLabelsActionSchema.parse(context.action);
21
+ const client = clientFactory(action.repository, action.credentials);
22
+ const current = await client.labels(action.issue);
23
+ const desired = new Set(current);
24
+ for (const label of action.remove)
25
+ desired.delete(label);
26
+ for (const label of action.add)
27
+ desired.add(label);
28
+ const labels = [...desired].sort();
29
+ if (!sameLabels(current, labels))
30
+ await client.setLabels(action.issue, labels);
31
+ return { status: "completed", detail: { labels } };
32
+ }
33
+ catch (error) {
34
+ throw classifyGitHubWriteError(error);
35
+ }
36
+ }
37
+ export const gitHubLabelsEmitter = {
38
+ name: "github_labels",
39
+ actionSchema: gitHubLabelsActionSchema,
40
+ emit: emitGitHubLabels,
41
+ checkStartup: authenticationDiagnostic,
42
+ };
43
+ //# sourceMappingURL=github.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/emitters/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE3E,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,CAAC;IACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC;IAChD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAClC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9C,gGAAgG;IAChG,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;CAC7C,CAAC;KACD,MAAM,EAAE;KACR,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;IAClE,OAAO,EAAE,6CAA6C;CACvD,CAAC,CAAC;AAGL,MAAM,oBAAoB,GAA+B,CAAC,UAAU,EAAE,EAAE,CACtE,YAAY,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAuB,EACvB,aAAa,GAA+B,oBAAoB;IAEhE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,GAAG;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC;YAAE,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/E,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAgB;IAC9C,IAAI,EAAE,eAAe;IACrB,YAAY,EAAE,wBAAwB;IACtC,IAAI,EAAE,gBAAgB;IACtB,YAAY,EAAE,wBAAwB;CACvC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./github.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/emitters/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}