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.
Files changed (63) hide show
  1. package/config/default.yaml +7 -0
  2. package/dist/cli/fork-cli.d.ts +2 -1
  3. package/dist/cli/fork-cli.js +33 -1
  4. package/dist/cli/fork-cli.js.map +1 -1
  5. package/dist/connectors/slack/connector.d.ts +44 -2
  6. package/dist/connectors/slack/connector.js +162 -9
  7. package/dist/connectors/slack/connector.js.map +1 -1
  8. package/dist/connectors/slack/mrkdwn.d.ts +11 -0
  9. package/dist/connectors/slack/mrkdwn.js +125 -8
  10. package/dist/connectors/slack/mrkdwn.js.map +1 -1
  11. package/dist/engine/llm.d.ts +12 -3
  12. package/dist/engine/llm.js +16 -3
  13. package/dist/engine/llm.js.map +1 -1
  14. package/dist/engine/router.js +47 -5
  15. package/dist/engine/router.js.map +1 -1
  16. package/dist/engine/screen/classifier.d.ts +40 -12
  17. package/dist/engine/screen/classifier.js +105 -175
  18. package/dist/engine/screen/classifier.js.map +1 -1
  19. package/dist/index.js +17 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/notify/blocks.d.ts +23 -0
  22. package/dist/notify/blocks.js +118 -0
  23. package/dist/notify/blocks.js.map +1 -0
  24. package/dist/notify/index.d.ts +2 -0
  25. package/dist/notify/index.js +1 -0
  26. package/dist/notify/index.js.map +1 -1
  27. package/dist/notify/notifier.d.ts +2 -1
  28. package/dist/notify/notifier.js +15 -2
  29. package/dist/notify/notifier.js.map +1 -1
  30. package/dist/notify/transports/github.d.ts +2 -2
  31. package/dist/notify/transports/github.js +2 -1
  32. package/dist/notify/transports/github.js.map +1 -1
  33. package/dist/notify/transports/slack.d.ts +3 -2
  34. package/dist/notify/transports/slack.js +12 -3
  35. package/dist/notify/transports/slack.js.map +1 -1
  36. package/dist/notify/types.d.ts +26 -2
  37. package/dist/workflows/loader.d.ts +9 -0
  38. package/dist/workflows/loader.js +66 -1
  39. package/dist/workflows/loader.js.map +1 -1
  40. package/dist/workflows/phase-executor.d.ts +7 -0
  41. package/dist/workflows/phase-executor.js +11 -2
  42. package/dist/workflows/phase-executor.js.map +1 -1
  43. package/dist/workflows/runner.js +17 -0
  44. package/dist/workflows/runner.js.map +1 -1
  45. package/dist/workflows/schema.d.ts +18 -0
  46. package/dist/workflows/schema.js +42 -0
  47. package/dist/workflows/schema.js.map +1 -1
  48. package/package.json +1 -1
  49. package/plugins/lastlight/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lastlight/skills/lastlight-overlay/SKILL.md +38 -2
  51. package/plugins/lastlight/skills/lastlight-overlay/references/forking.md +27 -4
  52. package/plugins/lastlight/skills/lastlight-overlay/references/overlay-layout.md +8 -0
  53. package/workflows/answer.yaml +7 -0
  54. package/workflows/build.yaml +15 -0
  55. package/workflows/demo.yaml +7 -0
  56. package/workflows/explore.yaml +8 -0
  57. package/workflows/issue-triage.yaml +6 -0
  58. package/workflows/pr-review.yaml +8 -0
  59. package/workflows/prompts/classifier.md +60 -0
  60. package/workflows/prompts/classify-adds-info.md +17 -0
  61. package/workflows/qa-test.yaml +7 -0
  62. package/workflows/security-review.yaml +8 -0
  63. 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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"}
@@ -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";
@@ -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";
@@ -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
  }
@@ -29,9 +29,10 @@ export class ProgressNotifier {
29
29
  async publish() {
30
30
  if (!this.model)
31
31
  return;
32
- const body = renderProgress(this.model);
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":"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"}
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;QAC5B,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"}
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":"AAmBA,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;QAC5B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAC7C,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC9D,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;CACF"}
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"}
@@ -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
- /** Create-or-update the single status surface with the rendered markdown. */
44
- publish(markdown: string): Promise<void>;
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;
@@ -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":"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"}
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
- await this.reporter.step(stepKey, "awaiting", message, { ...extraCtx, approvalId }, { alsoNote: true });
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;