@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.
- package/LICENSE +21 -0
- package/README.md +101 -0
- package/dist/adapters.d.ts +111 -0
- package/dist/adapters.d.ts.map +1 -0
- package/dist/adapters.js +27 -0
- package/dist/adapters.js.map +1 -0
- package/dist/attention/github.d.ts +57 -0
- package/dist/attention/github.d.ts.map +1 -0
- package/dist/attention/github.js +162 -0
- package/dist/attention/github.js.map +1 -0
- package/dist/authoring/attention-config.d.ts +16 -0
- package/dist/authoring/attention-config.d.ts.map +1 -0
- package/dist/authoring/attention-config.js +19 -0
- package/dist/authoring/attention-config.js.map +1 -0
- package/dist/authoring/channel-config.d.ts +16 -0
- package/dist/authoring/channel-config.d.ts.map +1 -0
- package/dist/authoring/channel-config.js +16 -0
- package/dist/authoring/channel-config.js.map +1 -0
- package/dist/authoring/define.d.ts +13 -0
- package/dist/authoring/define.d.ts.map +1 -0
- package/dist/authoring/define.js +13 -0
- package/dist/authoring/define.js.map +1 -0
- package/dist/authoring/effect-config.d.ts +16 -0
- package/dist/authoring/effect-config.d.ts.map +1 -0
- package/dist/authoring/effect-config.js +17 -0
- package/dist/authoring/effect-config.js.map +1 -0
- package/dist/authoring/harness-config.d.ts +30 -0
- package/dist/authoring/harness-config.d.ts.map +1 -0
- package/dist/authoring/harness-config.js +36 -0
- package/dist/authoring/harness-config.js.map +1 -0
- package/dist/authoring/index.d.ts +10 -0
- package/dist/authoring/index.d.ts.map +1 -0
- package/dist/authoring/index.js +9 -0
- package/dist/authoring/index.js.map +1 -0
- package/dist/authoring/schema.d.ts +9 -0
- package/dist/authoring/schema.d.ts.map +1 -0
- package/dist/authoring/schema.js +28 -0
- package/dist/authoring/schema.js.map +1 -0
- package/dist/authoring/types.d.ts +115 -0
- package/dist/authoring/types.d.ts.map +1 -0
- package/dist/authoring/types.js +2 -0
- package/dist/authoring/types.js.map +1 -0
- package/dist/authoring/watcher-config.d.ts +33 -0
- package/dist/authoring/watcher-config.d.ts.map +1 -0
- package/dist/authoring/watcher-config.js +61 -0
- package/dist/authoring/watcher-config.js.map +1 -0
- package/dist/build/discover.d.ts +34 -0
- package/dist/build/discover.d.ts.map +1 -0
- package/dist/build/discover.js +165 -0
- package/dist/build/discover.js.map +1 -0
- package/dist/build/identity.d.ts +9 -0
- package/dist/build/identity.d.ts.map +1 -0
- package/dist/build/identity.js +0 -0
- package/dist/build/identity.js.map +1 -0
- package/dist/channels/github.d.ts +14 -0
- package/dist/channels/github.d.ts.map +1 -0
- package/dist/channels/github.js +118 -0
- package/dist/channels/github.js.map +1 -0
- package/dist/channels/index.d.ts +2 -0
- package/dist/channels/index.d.ts.map +1 -0
- package/dist/channels/index.js +2 -0
- package/dist/channels/index.js.map +1 -0
- package/dist/cli-help.d.ts +23 -0
- package/dist/cli-help.d.ts.map +1 -0
- package/dist/cli-help.js +186 -0
- package/dist/cli-help.js.map +1 -0
- package/dist/cli.d.ts +37 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +385 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +71 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +426 -0
- package/dist/config.js.map +1 -0
- package/dist/core/calls.d.ts +67 -0
- package/dist/core/calls.d.ts.map +1 -0
- package/dist/core/calls.js +109 -0
- package/dist/core/calls.js.map +1 -0
- package/dist/core/identifiers.d.ts +24 -0
- package/dist/core/identifiers.d.ts.map +1 -0
- package/dist/core/identifiers.js +129 -0
- package/dist/core/identifiers.js.map +1 -0
- package/dist/core/prompt.d.ts +5 -0
- package/dist/core/prompt.d.ts.map +1 -0
- package/dist/core/prompt.js +47 -0
- package/dist/core/prompt.js.map +1 -0
- package/dist/core/reconcile.d.ts +27 -0
- package/dist/core/reconcile.d.ts.map +1 -0
- package/dist/core/reconcile.js +36 -0
- package/dist/core/reconcile.js.map +1 -0
- package/dist/core/wire.d.ts +332 -0
- package/dist/core/wire.d.ts.map +1 -0
- package/dist/core/wire.js +543 -0
- package/dist/core/wire.js.map +1 -0
- package/dist/emitters/github.d.ts +15 -0
- package/dist/emitters/github.d.ts.map +1 -0
- package/dist/emitters/github.js +43 -0
- package/dist/emitters/github.js.map +1 -0
- package/dist/emitters/index.d.ts +2 -0
- package/dist/emitters/index.d.ts.map +1 -0
- package/dist/emitters/index.js +2 -0
- package/dist/emitters/index.js.map +1 -0
- package/dist/git.d.ts +17 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +122 -0
- package/dist/git.js.map +1 -0
- package/dist/github/client.d.ts +53 -0
- package/dist/github/client.d.ts.map +1 -0
- package/dist/github/client.js +169 -0
- package/dist/github/client.js.map +1 -0
- package/dist/github/trigger.d.ts +12 -0
- package/dist/github/trigger.d.ts.map +1 -0
- package/dist/github/trigger.js +21 -0
- package/dist/github/trigger.js.map +1 -0
- package/dist/github/writes.d.ts +4 -0
- package/dist/github/writes.d.ts.map +1 -0
- package/dist/github/writes.js +21 -0
- package/dist/github/writes.js.map +1 -0
- package/dist/harnesses/base.d.ts +41 -0
- package/dist/harnesses/base.d.ts.map +1 -0
- package/dist/harnesses/base.js +182 -0
- package/dist/harnesses/base.js.map +1 -0
- package/dist/harnesses/claude-executable.d.ts +42 -0
- package/dist/harnesses/claude-executable.d.ts.map +1 -0
- package/dist/harnesses/claude-executable.js +138 -0
- package/dist/harnesses/claude-executable.js.map +1 -0
- package/dist/harnesses/claude.d.ts +35 -0
- package/dist/harnesses/claude.d.ts.map +1 -0
- package/dist/harnesses/claude.js +160 -0
- package/dist/harnesses/claude.js.map +1 -0
- package/dist/harnesses/codex.d.ts +40 -0
- package/dist/harnesses/codex.d.ts.map +1 -0
- package/dist/harnesses/codex.js +118 -0
- package/dist/harnesses/codex.js.map +1 -0
- package/dist/harnesses/index.d.ts +2 -0
- package/dist/harnesses/index.d.ts.map +1 -0
- package/dist/harnesses/index.js +2 -0
- package/dist/harnesses/index.js.map +1 -0
- package/dist/harnesses/opencode.d.ts +33 -0
- package/dist/harnesses/opencode.d.ts.map +1 -0
- package/dist/harnesses/opencode.js +203 -0
- package/dist/harnesses/opencode.js.map +1 -0
- package/dist/identifiers.d.ts +26 -0
- package/dist/identifiers.d.ts.map +1 -0
- package/dist/identifiers.js +62 -0
- package/dist/identifiers.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/log.d.ts +10 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +44 -0
- package/dist/log.js.map +1 -0
- package/dist/settings.d.ts +43 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +128 -0
- package/dist/settings.js.map +1 -0
- package/dist/temporal/activities.d.ts +57 -0
- package/dist/temporal/activities.d.ts.map +1 -0
- package/dist/temporal/activities.js +366 -0
- package/dist/temporal/activities.js.map +1 -0
- package/dist/temporal/answers.d.ts +48 -0
- package/dist/temporal/answers.d.ts.map +1 -0
- package/dist/temporal/answers.js +78 -0
- package/dist/temporal/answers.js.map +1 -0
- package/dist/temporal/client.d.ts +13 -0
- package/dist/temporal/client.d.ts.map +1 -0
- package/dist/temporal/client.js +20 -0
- package/dist/temporal/client.js.map +1 -0
- package/dist/temporal/contracts.d.ts +19 -0
- package/dist/temporal/contracts.d.ts.map +1 -0
- package/dist/temporal/contracts.js +22 -0
- package/dist/temporal/contracts.js.map +1 -0
- package/dist/temporal/drain.d.ts +19 -0
- package/dist/temporal/drain.d.ts.map +1 -0
- package/dist/temporal/drain.js +109 -0
- package/dist/temporal/drain.js.map +1 -0
- package/dist/temporal/executions.d.ts +18 -0
- package/dist/temporal/executions.d.ts.map +1 -0
- package/dist/temporal/executions.js +15 -0
- package/dist/temporal/executions.js.map +1 -0
- package/dist/temporal/handle.d.ts +39 -0
- package/dist/temporal/handle.d.ts.map +1 -0
- package/dist/temporal/handle.js +95 -0
- package/dist/temporal/handle.js.map +1 -0
- package/dist/temporal/history.d.ts +75 -0
- package/dist/temporal/history.d.ts.map +1 -0
- package/dist/temporal/history.js +310 -0
- package/dist/temporal/history.js.map +1 -0
- package/dist/temporal/observe.d.ts +85 -0
- package/dist/temporal/observe.d.ts.map +1 -0
- package/dist/temporal/observe.js +110 -0
- package/dist/temporal/observe.js.map +1 -0
- package/dist/temporal/schedules.d.ts +26 -0
- package/dist/temporal/schedules.d.ts.map +1 -0
- package/dist/temporal/schedules.js +200 -0
- package/dist/temporal/schedules.js.map +1 -0
- package/dist/temporal/status.d.ts +63 -0
- package/dist/temporal/status.d.ts.map +1 -0
- package/dist/temporal/status.js +153 -0
- package/dist/temporal/status.js.map +1 -0
- package/dist/temporal/stuck.d.ts +58 -0
- package/dist/temporal/stuck.d.ts.map +1 -0
- package/dist/temporal/stuck.js +53 -0
- package/dist/temporal/stuck.js.map +1 -0
- package/dist/temporal/supervisor.d.ts +11 -0
- package/dist/temporal/supervisor.d.ts.map +1 -0
- package/dist/temporal/supervisor.js +506 -0
- package/dist/temporal/supervisor.js.map +1 -0
- package/dist/temporal/worker.d.ts +21 -0
- package/dist/temporal/worker.d.ts.map +1 -0
- package/dist/temporal/worker.js +82 -0
- package/dist/temporal/worker.js.map +1 -0
- package/dist/temporal/workflow-bundle.js +12742 -0
- package/dist/temporal/workflows.d.ts +9 -0
- package/dist/temporal/workflows.d.ts.map +1 -0
- package/dist/temporal/workflows.js +144 -0
- package/dist/temporal/workflows.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/dist/watchers/base.d.ts +4 -0
- package/dist/watchers/base.d.ts.map +1 -0
- package/dist/watchers/base.js +7 -0
- package/dist/watchers/base.js.map +1 -0
- package/dist/watchers/github/client.d.ts +52 -0
- package/dist/watchers/github/client.d.ts.map +1 -0
- package/dist/watchers/github/client.js +165 -0
- package/dist/watchers/github/client.js.map +1 -0
- package/dist/watchers/github/index.d.ts +19 -0
- package/dist/watchers/github/index.d.ts.map +1 -0
- package/dist/watchers/github/index.js +83 -0
- package/dist/watchers/github/index.js.map +1 -0
- package/dist/watchers/index.d.ts +2 -0
- package/dist/watchers/index.d.ts.map +1 -0
- package/dist/watchers/index.js +2 -0
- package/dist/watchers/index.js.map +1 -0
- package/dist/worker-lock.d.ts +11 -0
- package/dist/worker-lock.d.ts.map +1 -0
- package/dist/worker-lock.js +53 -0
- package/dist/worker-lock.js.map +1 -0
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/emitters/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|