lastlight 0.14.0 → 0.16.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/config/default.yaml +7 -0
- package/dist/cli/fork-cli.d.ts +2 -1
- package/dist/cli/fork-cli.js +33 -1
- package/dist/cli/fork-cli.js.map +1 -1
- package/dist/connectors/slack/connector.d.ts +44 -2
- package/dist/connectors/slack/connector.js +162 -9
- package/dist/connectors/slack/connector.js.map +1 -1
- package/dist/connectors/slack/mrkdwn.d.ts +11 -0
- package/dist/connectors/slack/mrkdwn.js +125 -8
- package/dist/connectors/slack/mrkdwn.js.map +1 -1
- package/dist/engine/llm.d.ts +12 -3
- package/dist/engine/llm.js +16 -3
- package/dist/engine/llm.js.map +1 -1
- package/dist/engine/router.js +47 -5
- package/dist/engine/router.js.map +1 -1
- package/dist/engine/screen/classifier.d.ts +40 -12
- package/dist/engine/screen/classifier.js +105 -175
- package/dist/engine/screen/classifier.js.map +1 -1
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -1
- package/dist/notify/blocks.d.ts +23 -0
- package/dist/notify/blocks.js +118 -0
- package/dist/notify/blocks.js.map +1 -0
- package/dist/notify/index.d.ts +2 -0
- package/dist/notify/index.js +1 -0
- package/dist/notify/index.js.map +1 -1
- package/dist/notify/notifier.d.ts +2 -1
- package/dist/notify/notifier.js +15 -2
- package/dist/notify/notifier.js.map +1 -1
- package/dist/notify/transports/github.d.ts +2 -2
- package/dist/notify/transports/github.js +2 -1
- package/dist/notify/transports/github.js.map +1 -1
- package/dist/notify/transports/slack.d.ts +3 -2
- package/dist/notify/transports/slack.js +12 -3
- package/dist/notify/transports/slack.js.map +1 -1
- package/dist/notify/types.d.ts +26 -2
- package/dist/workflows/loader.d.ts +9 -0
- package/dist/workflows/loader.js +66 -1
- package/dist/workflows/loader.js.map +1 -1
- package/dist/workflows/phase-executor.d.ts +7 -0
- package/dist/workflows/phase-executor.js +11 -2
- package/dist/workflows/phase-executor.js.map +1 -1
- package/dist/workflows/runner.js +17 -0
- package/dist/workflows/runner.js.map +1 -1
- package/dist/workflows/schema.d.ts +18 -0
- package/dist/workflows/schema.js +42 -0
- package/dist/workflows/schema.js.map +1 -1
- package/package.json +1 -1
- package/plugins/lastlight/.claude-plugin/plugin.json +1 -1
- package/plugins/lastlight/skills/lastlight-overlay/SKILL.md +38 -2
- package/plugins/lastlight/skills/lastlight-overlay/references/forking.md +27 -4
- package/plugins/lastlight/skills/lastlight-overlay/references/overlay-layout.md +8 -0
- package/workflows/answer.yaml +7 -0
- package/workflows/build.yaml +15 -0
- package/workflows/demo.yaml +7 -0
- package/workflows/explore.yaml +8 -0
- package/workflows/issue-triage.yaml +6 -0
- package/workflows/pr-review.yaml +8 -0
- package/workflows/prompts/classifier.md +60 -0
- package/workflows/prompts/classify-adds-info.md +17 -0
- package/workflows/qa-test.yaml +7 -0
- package/workflows/security-review.yaml +8 -0
- package/workflows/verify.yaml +8 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { markdownToSlackMrkdwn } from "../connectors/slack/mrkdwn.js";
|
|
2
|
+
import { STATUS_EMOJI } from "./render.js";
|
|
3
|
+
/** Slack hard limits we render within. */
|
|
4
|
+
const MAX_BLOCKS = 48; // Slack caps a message at 50 blocks; keep headroom
|
|
5
|
+
const MAX_SECTION_CHARS = 2800; // Slack section text limit is 3000
|
|
6
|
+
const HEADER_MAX = 150; // Slack header plain_text limit
|
|
7
|
+
const MAX_CONTEXT_ELEMENTS = 10; // Slack context block element limit
|
|
8
|
+
const divider = { type: "divider" };
|
|
9
|
+
function headerBlock(text) {
|
|
10
|
+
const t = text.length > HEADER_MAX ? text.slice(0, HEADER_MAX - 1) + "…" : text;
|
|
11
|
+
return { type: "header", text: { type: "plain_text", text: t, emoji: true } };
|
|
12
|
+
}
|
|
13
|
+
function section(mrkdwn) {
|
|
14
|
+
return { type: "section", text: { type: "mrkdwn", text: mrkdwn } };
|
|
15
|
+
}
|
|
16
|
+
function context(elements) {
|
|
17
|
+
return {
|
|
18
|
+
type: "context",
|
|
19
|
+
elements: elements
|
|
20
|
+
.slice(0, MAX_CONTEXT_ELEMENTS)
|
|
21
|
+
.map((text) => ({ type: "mrkdwn", text })),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/** One checklist line, e.g. "✅ *Architect* — done", matching render.ts content. */
|
|
25
|
+
function stepLine(step) {
|
|
26
|
+
const emoji = STATUS_EMOJI[step.status] ?? STATUS_EMOJI.pending;
|
|
27
|
+
const detail = step.detail ? ` — ${step.detail}` : "";
|
|
28
|
+
return markdownToSlackMrkdwn(`${emoji} **${step.label}**${detail}`);
|
|
29
|
+
}
|
|
30
|
+
/** Batch checklist lines into section-sized chunks (Slack's 3000-char limit). */
|
|
31
|
+
function batchSteps(lines) {
|
|
32
|
+
const sections = [];
|
|
33
|
+
let buf = "";
|
|
34
|
+
for (const line of lines) {
|
|
35
|
+
const next = buf ? `${buf}\n${line}` : line;
|
|
36
|
+
if (next.length > MAX_SECTION_CHARS && buf) {
|
|
37
|
+
sections.push(buf);
|
|
38
|
+
buf = line;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
buf = next;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (buf)
|
|
45
|
+
sections.push(buf);
|
|
46
|
+
return sections;
|
|
47
|
+
}
|
|
48
|
+
/** Render a {@link ProgressModel} to Block Kit blocks (≤ {@link MAX_BLOCKS}). */
|
|
49
|
+
export function renderProgressBlocks(model) {
|
|
50
|
+
const blocks = [headerBlock(`🤖 ${model.title}`)];
|
|
51
|
+
if (model.subtitle?.trim()) {
|
|
52
|
+
blocks.push(section(markdownToSlackMrkdwn(`**${model.subtitle}**`)));
|
|
53
|
+
}
|
|
54
|
+
const meta = (model.meta ?? [])
|
|
55
|
+
.map((m) => m.trim())
|
|
56
|
+
.filter(Boolean)
|
|
57
|
+
.map(markdownToSlackMrkdwn);
|
|
58
|
+
if (meta.length)
|
|
59
|
+
blocks.push(context(meta));
|
|
60
|
+
if (model.steps.length)
|
|
61
|
+
blocks.push(divider);
|
|
62
|
+
// Reserve a block for the footer so it never gets crowded out of the budget.
|
|
63
|
+
const footerReserve = model.footer?.trim() ? 1 : 0;
|
|
64
|
+
const stepBudget = MAX_BLOCKS - blocks.length - footerReserve;
|
|
65
|
+
const sections = batchSteps(model.steps.map(stepLine));
|
|
66
|
+
if (sections.length <= stepBudget) {
|
|
67
|
+
for (const s of sections)
|
|
68
|
+
blocks.push(section(s));
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
// Too many step sections for the block budget — keep the first ones and
|
|
72
|
+
// fold the remainder into a single summary line so we stay under the cap.
|
|
73
|
+
const keep = Math.max(1, stepBudget - 1);
|
|
74
|
+
for (let i = 0; i < keep; i++)
|
|
75
|
+
blocks.push(section(sections[i]));
|
|
76
|
+
const foldedSteps = sections
|
|
77
|
+
.slice(keep)
|
|
78
|
+
.reduce((n, s) => n + s.split("\n").length, 0);
|
|
79
|
+
blocks.push(section(`… _and ${foldedSteps} more steps_`));
|
|
80
|
+
}
|
|
81
|
+
if (model.footer?.trim())
|
|
82
|
+
blocks.push(context([markdownToSlackMrkdwn(model.footer)]));
|
|
83
|
+
return blocks;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Render an approval prompt with interactive Approve/Reject buttons. Each
|
|
87
|
+
* button carries `workflowRunId` as its `value` so the interaction handler
|
|
88
|
+
* resolves the exact paused gate. The section text is the same rendered prompt
|
|
89
|
+
* a markdown-only surface would post (kept under Slack's section limit).
|
|
90
|
+
*/
|
|
91
|
+
export function renderApprovalBlocks(prompt, workflowRunId) {
|
|
92
|
+
const text = markdownToSlackMrkdwn(prompt);
|
|
93
|
+
const clamped = text.length > MAX_SECTION_CHARS ? text.slice(0, MAX_SECTION_CHARS - 1) + "…" : text;
|
|
94
|
+
return [
|
|
95
|
+
section(clamped),
|
|
96
|
+
{
|
|
97
|
+
type: "actions",
|
|
98
|
+
block_id: "approval_actions",
|
|
99
|
+
elements: [
|
|
100
|
+
{
|
|
101
|
+
type: "button",
|
|
102
|
+
action_id: "approval_approve",
|
|
103
|
+
style: "primary",
|
|
104
|
+
text: { type: "plain_text", text: "Approve", emoji: true },
|
|
105
|
+
value: workflowRunId,
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
type: "button",
|
|
109
|
+
action_id: "approval_reject",
|
|
110
|
+
style: "danger",
|
|
111
|
+
text: { type: "plain_text", text: "Reject", emoji: true },
|
|
112
|
+
value: workflowRunId,
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
},
|
|
116
|
+
];
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=blocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/notify/blocks.ts"],"names":[],"mappings":"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"}
|
package/dist/notify/index.d.ts
CHANGED
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
export type { StepStatus, ProgressStep, ProgressModel, ProgressReporter, NotifierTransport, NotifierState, } from "./types.js";
|
|
8
8
|
export { ProgressNotifier } from "./notifier.js";
|
|
9
9
|
export { renderProgress, STATUS_EMOJI } from "./render.js";
|
|
10
|
+
export { renderProgressBlocks, renderApprovalBlocks } from "./blocks.js";
|
|
11
|
+
export type { ApprovalNoteMeta } from "./types.js";
|
|
10
12
|
export { stepsFromPhases, setStep, upsertBefore, buildProgressModel, runDashboardUrl } from "./model.js";
|
|
11
13
|
export type { ProgressModelInput } from "./model.js";
|
|
12
14
|
export { GitHubTransport } from "./transports/github.js";
|
package/dist/notify/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { ProgressNotifier } from "./notifier.js";
|
|
2
2
|
export { renderProgress, STATUS_EMOJI } from "./render.js";
|
|
3
|
+
export { renderProgressBlocks, renderApprovalBlocks } from "./blocks.js";
|
|
3
4
|
export { stepsFromPhases, setStep, upsertBefore, buildProgressModel, runDashboardUrl } from "./model.js";
|
|
4
5
|
export { GitHubTransport } from "./transports/github.js";
|
|
5
6
|
export { SlackTransport } from "./transports/slack.js";
|
package/dist/notify/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notify/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEzG,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notify/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEzG,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { NotifierTransport, ProgressModel, ProgressReporter, ProgressStep, StepStatus } from "./types.js";
|
|
1
|
+
import type { ApprovalNoteMeta, NotifierTransport, ProgressModel, ProgressReporter, ProgressStep, StepStatus } from "./types.js";
|
|
2
2
|
export declare class ProgressNotifier implements ProgressReporter {
|
|
3
3
|
private model;
|
|
4
4
|
private readonly transports;
|
|
@@ -12,6 +12,7 @@ export declare class ProgressNotifier implements ProgressReporter {
|
|
|
12
12
|
insertStep(step: ProgressStep, beforeKey?: string): Promise<void>;
|
|
13
13
|
footer(markdown: string): Promise<void>;
|
|
14
14
|
note(markdown: string): Promise<void>;
|
|
15
|
+
noteApproval(markdown: string, meta: ApprovalNoteMeta): Promise<void>;
|
|
15
16
|
noteTerminal(markdown: string): Promise<void>;
|
|
16
17
|
private noteTo;
|
|
17
18
|
}
|
package/dist/notify/notifier.js
CHANGED
|
@@ -29,9 +29,10 @@ export class ProgressNotifier {
|
|
|
29
29
|
async publish() {
|
|
30
30
|
if (!this.model)
|
|
31
31
|
return;
|
|
32
|
-
const
|
|
32
|
+
const model = this.model;
|
|
33
|
+
const body = renderProgress(model);
|
|
33
34
|
// Best-effort per transport — one platform failing must not block the other.
|
|
34
|
-
await Promise.all(this.transports.map((t) => t.publish(body).catch((err) => {
|
|
35
|
+
await Promise.all(this.transports.map((t) => t.publish(body, model).catch((err) => {
|
|
35
36
|
const m = err instanceof Error ? err.message : String(err);
|
|
36
37
|
console.warn(`[notifier] publish failed: ${m}`);
|
|
37
38
|
})));
|
|
@@ -70,6 +71,18 @@ export class ProgressNotifier {
|
|
|
70
71
|
note(markdown) {
|
|
71
72
|
return this.noteTo(this.transports, markdown);
|
|
72
73
|
}
|
|
74
|
+
noteApproval(markdown, meta) {
|
|
75
|
+
return this.enqueue(async () => {
|
|
76
|
+
if (!markdown.trim() || this.transports.length === 0)
|
|
77
|
+
return;
|
|
78
|
+
await Promise.all(this.transports.map((t) =>
|
|
79
|
+
// Rich surfaces render interactive controls; the rest post plain text.
|
|
80
|
+
(t.noteApproval ? t.noteApproval(markdown, meta) : t.note(markdown)).catch((err) => {
|
|
81
|
+
const m = err instanceof Error ? err.message : String(err);
|
|
82
|
+
console.warn(`[notifier] noteApproval failed: ${m}`);
|
|
83
|
+
})));
|
|
84
|
+
});
|
|
85
|
+
}
|
|
73
86
|
noteTerminal(markdown) {
|
|
74
87
|
return this.noteTo(this.transports.filter((t) => t.terminalPing), markdown);
|
|
75
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifier.js","sourceRoot":"","sources":["../../src/notify/notifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"notifier.js","sourceRoot":"","sources":["../../src/notify/notifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* that deserve a real notification (approval prompts, terminal summary).
|
|
5
5
|
*/
|
|
6
6
|
import type { GitHubClient } from "../../engine/github/github.js";
|
|
7
|
-
import type { NotifierTransport } from "../types.js";
|
|
7
|
+
import type { NotifierTransport, ProgressModel } from "../types.js";
|
|
8
8
|
export interface GitHubTransportDeps {
|
|
9
9
|
github: GitHubClient;
|
|
10
10
|
owner: string;
|
|
@@ -21,6 +21,6 @@ export declare class GitHubTransport implements NotifierTransport {
|
|
|
21
21
|
readonly terminalPing = false;
|
|
22
22
|
private commentId?;
|
|
23
23
|
constructor(deps: GitHubTransportDeps);
|
|
24
|
-
publish(markdown: string): Promise<void>;
|
|
24
|
+
publish(markdown: string, _model?: ProgressModel): Promise<void>;
|
|
25
25
|
note(markdown: string): Promise<void>;
|
|
26
26
|
}
|
|
@@ -7,7 +7,8 @@ export class GitHubTransport {
|
|
|
7
7
|
this.deps = deps;
|
|
8
8
|
this.commentId = deps.commentId;
|
|
9
9
|
}
|
|
10
|
-
async publish(markdown) {
|
|
10
|
+
async publish(markdown, _model) {
|
|
11
|
+
// GitHub renders markdown natively — the structured model is Slack-only.
|
|
11
12
|
const { github, owner, repo, issueNumber } = this.deps;
|
|
12
13
|
if (this.commentId !== undefined) {
|
|
13
14
|
await github.updateComment(owner, repo, this.commentId, markdown);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/notify/transports/github.ts"],"names":[],"mappings":"AAmBA,MAAM,OAAO,eAAe;IAKG;IAJ7B,+EAA+E;IACtE,YAAY,GAAG,KAAK,CAAC;IACtB,SAAS,CAAU;IAE3B,YAA6B,IAAyB;QAAzB,SAAI,GAAJ,IAAI,CAAqB;QACpD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB;
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/notify/transports/github.ts"],"names":[],"mappings":"AAmBA,MAAM,OAAO,eAAe;IAKG;IAJ7B,+EAA+E;IACtE,YAAY,GAAG,KAAK,CAAC;IACtB,SAAS,CAAU;IAE3B,YAA6B,IAAyB;QAAzB,SAAI,GAAJ,IAAI,CAAqB;QACpD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,MAAsB;QACpD,yEAAyE;QACzE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QACvD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YACxE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAgB;QACzB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QACvD,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC;CACF"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* prompts, terminal summary) — `chat.update` itself is silent.
|
|
6
6
|
*/
|
|
7
7
|
import type { SlackConnector } from "../../connectors/slack/connector.js";
|
|
8
|
-
import type { NotifierTransport } from "../types.js";
|
|
8
|
+
import type { ApprovalNoteMeta, NotifierTransport, ProgressModel } from "../types.js";
|
|
9
9
|
export interface SlackTransportDeps {
|
|
10
10
|
slack: SlackConnector;
|
|
11
11
|
channel: string;
|
|
@@ -21,6 +21,7 @@ export declare class SlackTransport implements NotifierTransport {
|
|
|
21
21
|
readonly terminalPing = true;
|
|
22
22
|
private ts?;
|
|
23
23
|
constructor(deps: SlackTransportDeps);
|
|
24
|
-
publish(markdown: string): Promise<void>;
|
|
24
|
+
publish(markdown: string, model?: ProgressModel): Promise<void>;
|
|
25
25
|
note(markdown: string): Promise<void>;
|
|
26
|
+
noteApproval(markdown: string, meta: ApprovalNoteMeta): Promise<void>;
|
|
26
27
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { renderApprovalBlocks, renderProgressBlocks } from "../blocks.js";
|
|
1
2
|
export class SlackTransport {
|
|
2
3
|
deps;
|
|
3
4
|
/** Slack edits are silent and there's no other signal — so it wants the ping. */
|
|
@@ -7,13 +8,16 @@ export class SlackTransport {
|
|
|
7
8
|
this.deps = deps;
|
|
8
9
|
this.ts = deps.ts;
|
|
9
10
|
}
|
|
10
|
-
async publish(markdown) {
|
|
11
|
+
async publish(markdown, model) {
|
|
11
12
|
const { slack, channel, thread } = this.deps;
|
|
13
|
+
// Render Block Kit from the model when available; `markdown` stays the
|
|
14
|
+
// notification/accessibility fallback carried alongside the blocks.
|
|
15
|
+
const blocks = model ? renderProgressBlocks(model) : undefined;
|
|
12
16
|
if (this.ts !== undefined) {
|
|
13
|
-
await slack.updateMessage(channel, this.ts, markdown);
|
|
17
|
+
await slack.updateMessage(channel, this.ts, markdown, blocks);
|
|
14
18
|
}
|
|
15
19
|
else {
|
|
16
|
-
const ts = await slack.sendMessage(channel, thread, markdown);
|
|
20
|
+
const ts = await slack.sendMessage(channel, thread, markdown, blocks);
|
|
17
21
|
if (typeof ts === "string") {
|
|
18
22
|
this.ts = ts;
|
|
19
23
|
this.deps.save?.(ts);
|
|
@@ -24,5 +28,10 @@ export class SlackTransport {
|
|
|
24
28
|
const { slack, channel, thread } = this.deps;
|
|
25
29
|
await slack.sendMessage(channel, thread, markdown);
|
|
26
30
|
}
|
|
31
|
+
async noteApproval(markdown, meta) {
|
|
32
|
+
const { slack, channel, thread } = this.deps;
|
|
33
|
+
const blocks = renderApprovalBlocks(markdown, meta.workflowRunId);
|
|
34
|
+
await slack.sendMessage(channel, thread, markdown, blocks);
|
|
35
|
+
}
|
|
27
36
|
}
|
|
28
37
|
//# sourceMappingURL=slack.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../../../src/notify/transports/slack.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../../../src/notify/transports/slack.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAa1E,MAAM,OAAO,cAAc;IAKI;IAJ7B,iFAAiF;IACxE,YAAY,GAAG,IAAI,CAAC;IACrB,EAAE,CAAU;IAEpB,YAA6B,IAAwB;QAAxB,SAAI,GAAJ,IAAI,CAAoB;QACnD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,KAAqB;QACnD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAC7C,uEAAuE;QACvE,oEAAoE;QACpE,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/D,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YACtE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;gBAC3B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAgB;QACzB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAC7C,MAAM,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,IAAsB;QACzD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAC7C,MAAM,MAAM,GAAG,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAClE,MAAM,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;CACF"}
|
package/dist/notify/types.d.ts
CHANGED
|
@@ -22,6 +22,12 @@ export interface ProgressStep {
|
|
|
22
22
|
/** Optional one-line context shown after the label (e.g. a link or status). */
|
|
23
23
|
detail?: string;
|
|
24
24
|
}
|
|
25
|
+
/** Metadata carried alongside an interactive approval prompt. */
|
|
26
|
+
export interface ApprovalNoteMeta {
|
|
27
|
+
/** The paused workflow run id — a Slack Approve/Reject button carries it as
|
|
28
|
+
* its action value so the click resolves the right gate. */
|
|
29
|
+
workflowRunId: string;
|
|
30
|
+
}
|
|
25
31
|
/** The full content model rendered into the single status surface. */
|
|
26
32
|
export interface ProgressModel {
|
|
27
33
|
/** Heading line, e.g. "build for #18". */
|
|
@@ -40,13 +46,26 @@ export interface ProgressModel {
|
|
|
40
46
|
* (a GitHub comment id or a Slack message ts) internally.
|
|
41
47
|
*/
|
|
42
48
|
export interface NotifierTransport {
|
|
43
|
-
/**
|
|
44
|
-
|
|
49
|
+
/**
|
|
50
|
+
* Create-or-update the single status surface with the rendered markdown.
|
|
51
|
+
* The `model` is the same content source the markdown was rendered from —
|
|
52
|
+
* a transport that can render richer UI (Slack Block Kit) uses it directly
|
|
53
|
+
* while keeping `markdown` as the notification/accessibility fallback.
|
|
54
|
+
* Transports that only speak markdown (GitHub) ignore it.
|
|
55
|
+
*/
|
|
56
|
+
publish(markdown: string, model?: ProgressModel): Promise<void>;
|
|
45
57
|
/**
|
|
46
58
|
* Post a *new, separate* message (not an edit). Used for approval prompts —
|
|
47
59
|
* moments worth an actual notification, since an in-place edit is silent.
|
|
48
60
|
*/
|
|
49
61
|
note(markdown: string): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Post a standalone *approval prompt*. Rich surfaces (Slack) render
|
|
64
|
+
* interactive Approve/Reject controls from `meta`; markdown-only surfaces
|
|
65
|
+
* (GitHub) omit this and the notifier falls back to `note(markdown)`.
|
|
66
|
+
* Optional so a plain transport needs only `note`.
|
|
67
|
+
*/
|
|
68
|
+
noteApproval?(markdown: string, meta: ApprovalNoteMeta): Promise<void>;
|
|
50
69
|
/**
|
|
51
70
|
* Whether this surface wants a separate *completion* ping at the end of a
|
|
52
71
|
* run. Slack sets this (its in-place edits are silent and it has no other
|
|
@@ -73,6 +92,11 @@ export interface ProgressReporter {
|
|
|
73
92
|
insertStep(step: ProgressStep, beforeKey?: string): Promise<void>;
|
|
74
93
|
/** Post a standalone message to every surface (e.g. an approval prompt). */
|
|
75
94
|
note(markdown: string): Promise<void>;
|
|
95
|
+
/**
|
|
96
|
+
* Post an interactive approval prompt to every surface. Rich surfaces render
|
|
97
|
+
* Approve/Reject controls (Slack Block Kit); others fall back to plain text.
|
|
98
|
+
*/
|
|
99
|
+
noteApproval(markdown: string, meta: ApprovalNoteMeta): Promise<void>;
|
|
76
100
|
/**
|
|
77
101
|
* Set (or clear) the trailing footer of the single status surface and
|
|
78
102
|
* re-publish in place. Used to fold a workflow's final synthesized result
|
|
@@ -14,9 +14,18 @@ export declare function configureWorkflowAssets(config?: WorkflowAssetConfig): v
|
|
|
14
14
|
/** Legacy wrapper used by older tests to point directly at a workflow directory. */
|
|
15
15
|
export declare function setWorkflowDir(dir: string): void;
|
|
16
16
|
export declare function clearWorkflowCache(): void;
|
|
17
|
+
/** Monotonic counter bumped on every asset-layer reconfigure / cache clear. */
|
|
18
|
+
export declare function getAssetVersion(): number;
|
|
17
19
|
export declare function getWorkflow(name: string): AgentWorkflowDefinition;
|
|
18
20
|
export declare function getCronWorkflows(): CronWorkflowDefinition[];
|
|
19
21
|
export declare function listAgentWorkflows(): AgentWorkflowDefinition[];
|
|
22
|
+
/**
|
|
23
|
+
* The enabled workflow that claims a given classifier intent via its
|
|
24
|
+
* `classification.intent`, if any. Backs the router's data-driven fallback: an
|
|
25
|
+
* intent the router's bespoke switch doesn't handle routes to its owning
|
|
26
|
+
* workflow. Returns undefined for control intents and unclaimed tokens.
|
|
27
|
+
*/
|
|
28
|
+
export declare function getWorkflowByIntent(intent: string): AgentWorkflowDefinition | undefined;
|
|
20
29
|
export declare function getWorkflowOrigin(name: string): WorkflowOrigin | undefined;
|
|
21
30
|
export declare function getCronWorkflowOrigin(name: string): WorkflowOrigin | undefined;
|
|
22
31
|
export declare function loadWorkflowYamlRaw(name: string): string;
|
package/dist/workflows/loader.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { readFileSync, existsSync, readdirSync, statSync } from "fs";
|
|
2
2
|
import { join, resolve, basename } from "path";
|
|
3
3
|
import { parse as parseYaml } from "yaml";
|
|
4
|
-
import { AgentWorkflowSchema, CronWorkflowSchema, phaseSkillNames, } from "./schema.js";
|
|
4
|
+
import { AgentWorkflowSchema, CronWorkflowSchema, phaseSkillNames, intentToken, RESERVED_CONTROL_INTENTS, } from "./schema.js";
|
|
5
5
|
const DEFAULT_ROOT = resolve(".");
|
|
6
6
|
let layers = [makeLayer("built-in", DEFAULT_ROOT)];
|
|
7
7
|
let disabled = emptyDisabled();
|
|
@@ -10,6 +10,13 @@ const cronCache = new Map();
|
|
|
10
10
|
const agentOrigins = new Map();
|
|
11
11
|
const cronOrigins = new Map();
|
|
12
12
|
let cachePopulated = false;
|
|
13
|
+
/**
|
|
14
|
+
* Bumped every time the asset layers change (reconfigure / cache clear). Lets
|
|
15
|
+
* downstream consumers that derive state from the workflow set — notably the
|
|
16
|
+
* classifier's composed prompt + intent vocabulary — cheaply detect staleness
|
|
17
|
+
* without a cross-layer import or a callback registry. Read via `getAssetVersion()`.
|
|
18
|
+
*/
|
|
19
|
+
let assetVersion = 0;
|
|
13
20
|
function emptyDisabled() {
|
|
14
21
|
return { workflows: [], crons: [], prompts: [], skills: [], agentContext: [] };
|
|
15
22
|
}
|
|
@@ -72,6 +79,11 @@ export function clearWorkflowCache() {
|
|
|
72
79
|
agentOrigins.clear();
|
|
73
80
|
cronOrigins.clear();
|
|
74
81
|
cachePopulated = false;
|
|
82
|
+
assetVersion++;
|
|
83
|
+
}
|
|
84
|
+
/** Monotonic counter bumped on every asset-layer reconfigure / cache clear. */
|
|
85
|
+
export function getAssetVersion() {
|
|
86
|
+
return assetVersion;
|
|
75
87
|
}
|
|
76
88
|
function loadYamlFile(filePath) {
|
|
77
89
|
if (!existsSync(filePath))
|
|
@@ -155,6 +167,20 @@ export function listAgentWorkflows() {
|
|
|
155
167
|
populateCache();
|
|
156
168
|
return Array.from(agentCache.values());
|
|
157
169
|
}
|
|
170
|
+
/**
|
|
171
|
+
* The enabled workflow that claims a given classifier intent via its
|
|
172
|
+
* `classification.intent`, if any. Backs the router's data-driven fallback: an
|
|
173
|
+
* intent the router's bespoke switch doesn't handle routes to its owning
|
|
174
|
+
* workflow. Returns undefined for control intents and unclaimed tokens.
|
|
175
|
+
*/
|
|
176
|
+
export function getWorkflowByIntent(intent) {
|
|
177
|
+
populateCache();
|
|
178
|
+
for (const def of agentCache.values()) {
|
|
179
|
+
if (def.classification?.intent === intent)
|
|
180
|
+
return def;
|
|
181
|
+
}
|
|
182
|
+
return undefined;
|
|
183
|
+
}
|
|
158
184
|
export function getWorkflowOrigin(name) {
|
|
159
185
|
populateCache();
|
|
160
186
|
return agentOrigins.get(name);
|
|
@@ -321,6 +347,45 @@ export function validateAssets(routes) {
|
|
|
321
347
|
throw new Error(`Cron "${cronName}" targets missing or disabled workflow: ${def.workflow}`);
|
|
322
348
|
}
|
|
323
349
|
}
|
|
350
|
+
// Classifier `classification` blocks: each declared intent must be unique
|
|
351
|
+
// across workflows (two owners would make routing/parsing ambiguous), must
|
|
352
|
+
// not shadow a reserved control intent (approve/reject/status/reset/chat —
|
|
353
|
+
// the harness owns those), and its derived prompt token must be collision-free
|
|
354
|
+
// (e.g. `qa-test` and `qa_test` both → QATEST). A base classifier template
|
|
355
|
+
// must also exist to compose into. This runs at boot so a bad overlay fails
|
|
356
|
+
// fast instead of on the first classified event.
|
|
357
|
+
const controlIntents = new Set(RESERVED_CONTROL_INTENTS);
|
|
358
|
+
const intentOwner = new Map();
|
|
359
|
+
const tokenOwner = new Map();
|
|
360
|
+
let anyClassification = false;
|
|
361
|
+
for (const [wfName, def] of agentCache) {
|
|
362
|
+
const c = def.classification;
|
|
363
|
+
if (!c)
|
|
364
|
+
continue;
|
|
365
|
+
anyClassification = true;
|
|
366
|
+
if (controlIntents.has(c.intent)) {
|
|
367
|
+
throw new Error(`Workflow "${wfName}" classification.intent "${c.intent}" is a reserved control intent (${[...controlIntents].join(", ")})`);
|
|
368
|
+
}
|
|
369
|
+
const prevIntent = intentOwner.get(c.intent);
|
|
370
|
+
if (prevIntent) {
|
|
371
|
+
throw new Error(`Workflows "${prevIntent}" and "${wfName}" both claim classifier intent "${c.intent}" — an intent must have exactly one owning workflow`);
|
|
372
|
+
}
|
|
373
|
+
intentOwner.set(c.intent, wfName);
|
|
374
|
+
const token = intentToken(c.intent);
|
|
375
|
+
const prevToken = tokenOwner.get(token);
|
|
376
|
+
if (prevToken) {
|
|
377
|
+
throw new Error(`Workflows "${prevToken}" and "${wfName}" derive the same classifier token "${token}" from different intents — rename one classification.intent`);
|
|
378
|
+
}
|
|
379
|
+
tokenOwner.set(token, wfName);
|
|
380
|
+
}
|
|
381
|
+
if (anyClassification) {
|
|
382
|
+
try {
|
|
383
|
+
resolvePromptPath("prompts/classifier.md");
|
|
384
|
+
}
|
|
385
|
+
catch (err) {
|
|
386
|
+
throw new Error(`Classifier base template prompts/classifier.md: ${err.message}`);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
324
389
|
// Every enabled workflow's phase asset references (prompt templates and
|
|
325
390
|
// skills) must resolve now — so a missing/disabled overlay asset fails at
|
|
326
391
|
// startup instead of on the first event. Skip templated refs (containing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/workflows/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,GAGhB,MAAM,aAAa,CAAC;AAuBrB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAClC,IAAI,MAAM,GAAiB,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;AACjE,IAAI,QAAQ,GAAmB,aAAa,EAAE,CAAC;AAE/C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAmC,CAAC;AAC9D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkC,CAAC;AAC5D,MAAM,YAAY,GAAG,IAAI,GAAG,EAA0B,CAAC;AACvD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA0B,CAAC;AACtD,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B,SAAS,aAAa;IACpB,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;AACjF,CAAC;AAED,SAAS,aAAa,CAAC,KAA+B;IACpD,OAAO;QACL,SAAS,EAAE,KAAK,EAAE,SAAS,IAAI,EAAE;QACjC,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE;QACzB,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,EAAE;QAC7B,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,EAAE;QAC3B,YAAY,EAAE,KAAK,EAAE,YAAY,IAAI,EAAE;KACxC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAwB,EAAE,iBAAyB;IACpE,MAAM,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC7C,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,YAAY;QACZ,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC/B,eAAe,EAAE,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS;QACpG,gBAAgB,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,uBAAuB,CAAC,SAA8B,EAAE;IACtE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,YAAY,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;IAClD,IAAI,MAAM,CAAC,WAAW;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5E,MAAM,GAAG,IAAI,CAAC;IACd,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1C,kBAAkB,EAAE,CAAC;AACvB,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,GAAG,CAAC;YACR,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;YAClB,YAAY;YACZ,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC;YAC5B,eAAe,EAAE,OAAO,CAAC,gBAAgB,CAAC;YAC1C,gBAAgB,EAAE,OAAO,CAAC,eAAe,CAAC;SAC3C,CAAC,CAAC;IACH,QAAQ,GAAG,aAAa,EAAE,CAAC;IAC3B,kBAAkB,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,UAAU,CAAC,KAAK,EAAE,CAAC;IACnB,SAAS,CAAC,KAAK,EAAE,CAAC;IAClB,YAAY,CAAC,KAAK,EAAE,CAAC;IACrB,WAAW,CAAC,KAAK,EAAE,CAAC;IACpB,cAAc,GAAG,KAAK,CAAC;AACzB,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB;IACpC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC;IACnF,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,KAAK,GAAG,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,OAAO,WAAW,CAAC,GAAG,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACxD,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,cAAc;QAAE,OAAO;IAC3B,cAAc,GAAG,IAAI,CAAC;IAEtB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QACvC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAChD,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,IAAI,GAAI,GAA+B,EAAE,IAAI,CAAC;YAEpD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;gBACpG,CAAC;gBACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3C,MAAM,IAAI,KAAK,CAAC,iCAAiC,MAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC;gBAC/F,CAAC;gBACD,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACrG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC7C,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC/F,CAAC;gBACD,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvC,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC;gBAC1F,CAAC;gBACD,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACnD,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC9C,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACtE,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,aAAa,EAAE,CAAC;IAChB,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,GAAG,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/G,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,aAAa,EAAE,CAAC;IAChB,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,aAAa,EAAE,CAAC;IAChB,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,aAAa,EAAE,CAAC;IAChB,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,aAAa,EAAE,CAAC;IAChB,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,aAAa,EAAE,CAAC;IAChB,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,GAAG,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,IAAI,EAAE,CAAC,CAAC;IAClF,OAAO,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,YAAoB;IACrD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACjD,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,kBAAkB,CAAC,YAAoB,EAAE,IAAY;IAC5D,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,gBAAgB,CAAC,CAAC;IACzF,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,qBAAqB,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,QAAgB,EAAE,IAAY;IAC9C,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,YAAoB;IACpD,kBAAkB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC3C,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QACjG,MAAM,IAAI,KAAK,CAAC,gCAAgC,YAAY,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,YAAY,EAAE,CAAC,CAAC;QACxH,IAAI,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;IAC5C,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;IACnF,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;IAClF,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;QACnF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,EAAE,CAAC,CAAC;YAC9F,IAAI,UAAU,CAAC,QAAQ,CAAC;gBAAE,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,WAAW,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAwB;IACxD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;YACnF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;gBACxC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,EAAE,CAAC,CAAC;gBAC/F,IAAI,UAAU,CAAC,SAAS,CAAC;oBAAE,OAAO,GAAG,CAAC;YACxC,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,WAAW,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC;YAAE,SAAS;QACnD,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5F,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzH,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;SAC/B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SACrF,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;SACtD,IAAI,CAAC,aAAa,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,sBAAsB,GAAwC;IAClE,0BAA0B,EAAE,IAAI,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC1D,oBAAoB,EAAE,IAAI,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC;IACtD,sBAAsB,EAAE,IAAI,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;IAClD,eAAe,EAAE,IAAI,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC/C,cAAc,EAAE,IAAI,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC9C,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;IACtC,cAAc,EAAE,IAAI,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;IAC1C,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC/C,YAAY,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/B,qBAAqB,EAAE,IAAI,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;CAClD,CAAC;AAEF,SAAS,oBAAoB,CAAC,MAAoB;IAChD,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAuD,EAAE,CAAC;QAC7G,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACzD,MAAM,QAAQ,GAAG,GAAG,OAAO,IAAI,SAAS,EAAE,CAAC;YAC3C,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,KAAK,MAAM,EAAE,CAAC,CAAC;YACrH,IAAI,sBAAsB,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;gBAAE,SAAS;YAC5D,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,SAAS;YACrC,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,SAAS,QAAQ,+BAA+B,MAAM,EAAE,CAAC,CAAC;YAC5E,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,SAAS,QAAQ,kDAAkD,MAAM,EAAE,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAoB;IACjD,aAAa,EAAE,CAAC;IAChB,KAAK,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE,OAAO,CAAU,EAAE,CAAC;QACpD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,WAAW,IAAI,EAAE,CAAC,CAAC;QAC5G,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,0EAA0E;IAC1E,KAAK,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,SAAS,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,SAAS,QAAQ,2CAA2C,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,0EAA0E;IAC1E,yEAAyE;IACzE,oDAAoD;IACpD,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,UAAU,EAAE,CAAC;QACvC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG;gBACjB,KAAK,CAAC,MAAM;gBACZ,KAAK,CAAC,IAAI,EAAE,kBAAkB,CAAC,UAAU;gBACzC,KAAK,CAAC,IAAI,EAAE,kBAAkB,CAAC,gBAAgB;aAChD,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACzF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACH,iBAAiB,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;gBAAC,OAAO,GAAY,EAAE,CAAC;oBACtB,MAAM,IAAI,KAAK,CAAC,aAAa,MAAM,YAAY,KAAK,CAAC,IAAI,aAAa,GAAG,MAAO,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC3G,CAAC;YACH,CAAC;YACD,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3E,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtB,IAAI,CAAC;oBACH,iBAAiB,CAAC,UAAU,CAAC,CAAC;gBAChC,CAAC;gBAAC,OAAO,GAAY,EAAE,CAAC;oBACtB,MAAM,IAAI,KAAK,CAAC,aAAa,MAAM,YAAY,KAAK,CAAC,IAAI,aAAc,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClG,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/workflows/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,6 +52,13 @@ export interface PhaseReporter {
|
|
|
52
52
|
step(key: string, status: StepStatus, template?: string, extraCtx?: Partial<TemplateContext>, opts?: ReportStepOpts): Promise<void>;
|
|
53
53
|
/** Render a YAML message template and post it as a standalone note. */
|
|
54
54
|
message(template: string | undefined, extraCtx?: Partial<TemplateContext>): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Render a YAML message template and post it as an *interactive approval
|
|
57
|
+
* prompt* (Approve/Reject buttons on rich surfaces, plain text elsewhere).
|
|
58
|
+
*/
|
|
59
|
+
approvalNote(template: string | undefined, extraCtx: Partial<TemplateContext>, meta: {
|
|
60
|
+
workflowRunId: string;
|
|
61
|
+
}): Promise<void>;
|
|
55
62
|
/** Post a pre-rendered standalone message. */
|
|
56
63
|
postNote(text: string): Promise<void>;
|
|
57
64
|
/** Persist a phase-history entry on the workflow run. */
|
|
@@ -788,8 +788,17 @@ export class PhaseExecutor {
|
|
|
788
788
|
summary: `Waiting for ${kind === "reply" ? "reply" : "approval"}: ${gate} (${approvalId})`,
|
|
789
789
|
}, scratchPatch);
|
|
790
790
|
// Expose `approvalId` to the gate message template so it can deep-link to
|
|
791
|
-
// the focused approval view via `{{approvalUrl}}`.
|
|
792
|
-
|
|
791
|
+
// the focused approval view via `{{approvalUrl}}`. Transition the checklist
|
|
792
|
+
// step to "awaiting" (with a collapsed detail), then post the full prompt
|
|
793
|
+
// as a standalone note: approve gates get interactive Approve/Reject buttons
|
|
794
|
+
// (Slack) via `approvalNote`; reply gates stay a plain message.
|
|
795
|
+
await this.reporter.step(stepKey, "awaiting", message, { ...extraCtx, approvalId });
|
|
796
|
+
if (kind === "approve") {
|
|
797
|
+
await this.reporter.approvalNote(message, { ...extraCtx, approvalId }, { workflowRunId: workflowId });
|
|
798
|
+
}
|
|
799
|
+
else {
|
|
800
|
+
await this.reporter.message(message, { ...extraCtx, approvalId });
|
|
801
|
+
}
|
|
793
802
|
}
|
|
794
803
|
async runReviewerLoop(phase, outputs) {
|
|
795
804
|
const loop = phase.loop;
|