@urateam/core 0.1.42 → 0.1.43

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 (100) hide show
  1. package/dist/__tests__/bitbucket-webhook.test.d.ts +13 -0
  2. package/dist/__tests__/bitbucket-webhook.test.d.ts.map +1 -0
  3. package/dist/__tests__/bitbucket-webhook.test.js +379 -0
  4. package/dist/__tests__/bitbucket-webhook.test.js.map +1 -0
  5. package/dist/__tests__/bitbucket.test.d.ts +15 -0
  6. package/dist/__tests__/bitbucket.test.d.ts.map +1 -0
  7. package/dist/__tests__/bitbucket.test.js +237 -0
  8. package/dist/__tests__/bitbucket.test.js.map +1 -0
  9. package/dist/__tests__/gitlab-webhook.test.d.ts +13 -0
  10. package/dist/__tests__/gitlab-webhook.test.d.ts.map +1 -0
  11. package/dist/__tests__/gitlab-webhook.test.js +388 -0
  12. package/dist/__tests__/gitlab-webhook.test.js.map +1 -0
  13. package/dist/__tests__/runner-multi-vcs.test.d.ts +19 -0
  14. package/dist/__tests__/runner-multi-vcs.test.d.ts.map +1 -0
  15. package/dist/__tests__/runner-multi-vcs.test.js +346 -0
  16. package/dist/__tests__/runner-multi-vcs.test.js.map +1 -0
  17. package/dist/__tests__/triage-v2-prediction.test.d.ts +2 -0
  18. package/dist/__tests__/triage-v2-prediction.test.d.ts.map +1 -0
  19. package/dist/__tests__/triage-v2-prediction.test.js +70 -0
  20. package/dist/__tests__/triage-v2-prediction.test.js.map +1 -0
  21. package/dist/__tests__/triage-v2-prompt.test.d.ts +2 -0
  22. package/dist/__tests__/triage-v2-prompt.test.d.ts.map +1 -0
  23. package/dist/__tests__/triage-v2-prompt.test.js +127 -0
  24. package/dist/__tests__/triage-v2-prompt.test.js.map +1 -0
  25. package/dist/__tests__/triage-v2-render.test.d.ts +2 -0
  26. package/dist/__tests__/triage-v2-render.test.d.ts.map +1 -0
  27. package/dist/__tests__/triage-v2-render.test.js +200 -0
  28. package/dist/__tests__/triage-v2-render.test.js.map +1 -0
  29. package/dist/__tests__/triage-v2-schema.test.d.ts +2 -0
  30. package/dist/__tests__/triage-v2-schema.test.d.ts.map +1 -0
  31. package/dist/__tests__/triage-v2-schema.test.js +115 -0
  32. package/dist/__tests__/triage-v2-schema.test.js.map +1 -0
  33. package/dist/index.d.ts +1 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/pipeline/feedback-pipeline.d.ts +2 -0
  37. package/dist/pipeline/feedback-pipeline.d.ts.map +1 -1
  38. package/dist/pipeline/feedback-pipeline.js +4 -1
  39. package/dist/pipeline/feedback-pipeline.js.map +1 -1
  40. package/dist/pipeline/runner.d.ts +11 -0
  41. package/dist/pipeline/runner.d.ts.map +1 -1
  42. package/dist/pipeline/runner.js +314 -114
  43. package/dist/pipeline/runner.js.map +1 -1
  44. package/dist/pm/actions/triage-prompt.d.ts +42 -0
  45. package/dist/pm/actions/triage-prompt.d.ts.map +1 -0
  46. package/dist/pm/actions/triage-prompt.js +192 -0
  47. package/dist/pm/actions/triage-prompt.js.map +1 -0
  48. package/dist/pm/actions/triage-render.d.ts +39 -0
  49. package/dist/pm/actions/triage-render.d.ts.map +1 -0
  50. package/dist/pm/actions/triage-render.js +158 -0
  51. package/dist/pm/actions/triage-render.js.map +1 -0
  52. package/dist/pm/actions/triage.d.ts +2 -1
  53. package/dist/pm/actions/triage.d.ts.map +1 -1
  54. package/dist/pm/actions/triage.js +44 -58
  55. package/dist/pm/actions/triage.js.map +1 -1
  56. package/dist/pm/triage-prediction-quality.d.ts +26 -0
  57. package/dist/pm/triage-prediction-quality.d.ts.map +1 -0
  58. package/dist/pm/triage-prediction-quality.js +41 -0
  59. package/dist/pm/triage-prediction-quality.js.map +1 -0
  60. package/dist/pm/types.d.ts +60 -0
  61. package/dist/pm/types.d.ts.map +1 -1
  62. package/dist/pm/types.js +119 -0
  63. package/dist/pm/types.js.map +1 -1
  64. package/dist/repo/bitbucket.d.ts +136 -0
  65. package/dist/repo/bitbucket.d.ts.map +1 -0
  66. package/dist/repo/bitbucket.js +237 -0
  67. package/dist/repo/bitbucket.js.map +1 -0
  68. package/dist/repo/gitlab.d.ts +11 -0
  69. package/dist/repo/gitlab.d.ts.map +1 -1
  70. package/dist/repo/gitlab.js +37 -0
  71. package/dist/repo/gitlab.js.map +1 -1
  72. package/dist/repo/index.d.ts +3 -1
  73. package/dist/repo/index.d.ts.map +1 -1
  74. package/dist/repo/index.js +2 -1
  75. package/dist/repo/index.js.map +1 -1
  76. package/dist/server.d.ts +14 -0
  77. package/dist/server.d.ts.map +1 -1
  78. package/dist/server.js +32 -0
  79. package/dist/server.js.map +1 -1
  80. package/dist/types.d.ts +1 -0
  81. package/dist/types.d.ts.map +1 -1
  82. package/dist/types.js +2 -2
  83. package/dist/types.js.map +1 -1
  84. package/dist/webhook/bitbucket-handler.d.ts +65 -0
  85. package/dist/webhook/bitbucket-handler.d.ts.map +1 -0
  86. package/dist/webhook/bitbucket-handler.js +153 -0
  87. package/dist/webhook/bitbucket-handler.js.map +1 -0
  88. package/dist/webhook/gitlab-handler.d.ts +66 -0
  89. package/dist/webhook/gitlab-handler.d.ts.map +1 -0
  90. package/dist/webhook/gitlab-handler.js +159 -0
  91. package/dist/webhook/gitlab-handler.js.map +1 -0
  92. package/dist/webhook/index.d.ts +3 -0
  93. package/dist/webhook/index.d.ts.map +1 -1
  94. package/dist/webhook/index.js +3 -0
  95. package/dist/webhook/index.js.map +1 -1
  96. package/dist/webhook/shared-handlers.d.ts +110 -0
  97. package/dist/webhook/shared-handlers.d.ts.map +1 -0
  98. package/dist/webhook/shared-handlers.js +251 -0
  99. package/dist/webhook/shared-handlers.js.map +1 -0
  100. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triage-prompt.js","sourceRoot":"","sources":["../../../src/pm/actions/triage-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAQH;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC/D,OAAO,GAAG,CAAC,yBAAyB,KAAK,MAAM,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAwB,EACxB,QAAkC;IAElC,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IACxD,OAAO,CACL,2IAA2I;QAC3I,UAAU,KAAK,CAAC,UAAU,IAAI;QAC9B,UAAU,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;QACnC,gBAAgB,aAAa,MAAM;QACnC,uDAAuD;QACvD,8RAA8R;QAC9R,kOAAkO;QAClO,oHAAoH;QACpH,8IAA8I;QAC9I,+BAA+B;QAC/B,kOAAkO;QAClO,yTAAyT;QACzT,6OAA6O;QAC7O,uSAAuS;QACvS,udAAud,CACxd,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwD1B,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAwB,EACxB,QAAkC;IAElC,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAE7C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CP,kBAAkB,CAAC,IAAI,EAAE;;;;MAIrB,KAAK,CAAC,UAAU;SACb,cAAc;eACR,aAAa;;;;;;;;;;EAU1B,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,kEAAkE;AAClE,mBAAmB"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Triage v2 rendering — Linear comment + issue description appender.
3
+ *
4
+ * Pure functions. No I/O. Two exports:
5
+ * - `renderTriageComment(result, opts)` → markdown body for
6
+ * `linearClient.createComment`. Renders v1 sections always; v2 sections
7
+ * only when at least one v2 field is present on `result`.
8
+ * - `appendTriageSectionsToDescription(existingDesc, result)` → mutated
9
+ * description with new sections appended. Idempotent (skips sections
10
+ * whose `**Label:**` marker already appears).
11
+ *
12
+ * Contract reference: specs/001-triage-v2/contracts/triage-result.schema.md
13
+ */
14
+ import type { TriageResult } from "../types.js";
15
+ interface RenderOpts {
16
+ forceNeedsDesign: boolean;
17
+ pipelineLabel: string;
18
+ }
19
+ /**
20
+ * Render the markdown body posted to the Linear issue by triage.
21
+ *
22
+ * Order of sections:
23
+ * 1. Header with priority / complexity / labels / pipeline / rationale
24
+ * 2. v1: Acceptance Criteria, Approach (Tier 4), Open Questions, Anti-AC
25
+ * 3. v2 (only if any v2 field present): Assumptions, Examples,
26
+ * Affected Files, Test Strategy, Risk Assessment
27
+ */
28
+ export declare function renderTriageComment(result: TriageResult, opts: RenderOpts): string;
29
+ /**
30
+ * Append triage sections to the issue description. Idempotent — skips any
31
+ * section whose `**Label:**` marker already appears in `existingDesc`.
32
+ *
33
+ * Section order (matches the comment): Acceptance Criteria, Examples,
34
+ * Affected Files, Test Strategy, Risk Assessment. The order is important
35
+ * for the future schema-mapper extension that will parse these out.
36
+ */
37
+ export declare function appendTriageSectionsToDescription(existingDesc: string, result: TriageResult): string;
38
+ export {};
39
+ //# sourceMappingURL=triage-render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triage-render.d.ts","sourceRoot":"","sources":["../../../src/pm/actions/triage-render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,UAAU,UAAU;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AA6GD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,UAAU,GACf,MAAM,CAUR;AAMD;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAC/C,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,YAAY,GACnB,MAAM,CA6DR"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * True iff `result` carries at least one non-empty Tier-6b field.
3
+ *
4
+ * Uses `?.length` rather than `?? `null-coalescing because an empty array
5
+ * is truthy in a boolean context — `[] ?? next` short-circuits to `[]` and
6
+ * `Boolean([]) === true`. We treat empty arrays as "no v2 content" so a
7
+ * caller who constructs `{assumptions: []}` doesn't get a Tier-6b block of
8
+ * five `(none)` placeholders.
9
+ */
10
+ function hasV2Fields(result) {
11
+ return Boolean(result.assumptions?.length ||
12
+ result.examples?.length ||
13
+ result.affectedFiles?.length ||
14
+ result.testStrategy ||
15
+ result.riskAssessment);
16
+ }
17
+ /** Render `(none)` placeholder for an absent v2 field; render the formatter otherwise. */
18
+ function renderOr(value, formatter) {
19
+ return value ? formatter() : "(none)";
20
+ }
21
+ function renderAssumptions(result) {
22
+ return renderOr(result.assumptions?.length ? result.assumptions : undefined, () => result.assumptions.map((a) => `- ${a}`).join("\n"));
23
+ }
24
+ function renderExamples(result) {
25
+ return renderOr(result.examples?.length ? result.examples : undefined, () => result.examples
26
+ .map((e, i) => `${i + 1}. **Scenario:** ${e.scenario}\n **Expected:** ${e.expected}`)
27
+ .join("\n"));
28
+ }
29
+ function renderAffectedFiles(result) {
30
+ return renderOr(result.affectedFiles?.length ? result.affectedFiles : undefined, () => result.affectedFiles.map((f) => `- ${f}`).join("\n"));
31
+ }
32
+ function renderTestStrategy(result) {
33
+ return renderOr(result.testStrategy, () => {
34
+ const lines = [];
35
+ if (result.testStrategy.unit) {
36
+ lines.push(`- **Unit:** ${result.testStrategy.unit}`);
37
+ }
38
+ if (result.testStrategy.integration) {
39
+ lines.push(`- **Integration:** ${result.testStrategy.integration}`);
40
+ }
41
+ return lines.length > 0 ? lines.join("\n") : "(none)";
42
+ });
43
+ }
44
+ function renderRiskAssessment(result) {
45
+ return renderOr(result.riskAssessment, () => `**Severity:** ${result.riskAssessment.severity} | **Areas:** ${result.riskAssessment.areas.join(", ") || "(none)"}`);
46
+ }
47
+ /** Render the v1 (Tier-4-aware) portion of the comment. */
48
+ function renderV1Sections(result) {
49
+ const parts = [];
50
+ if (result.acceptanceCriteria.length > 0) {
51
+ parts.push(`\n\n**Generated Acceptance Criteria:**\n${result.acceptanceCriteria.map((c) => `- ${c}`).join("\n")}`);
52
+ }
53
+ if (result.approachSummary) {
54
+ parts.push(`\n\n**Approach (Tier 4):**\n${result.approachSummary}`);
55
+ }
56
+ if (result.openQuestions?.length) {
57
+ parts.push(`\n\n**Open questions (must be answered before implement):**\n${result.openQuestions.map((q) => `- ${q}`).join("\n")}`);
58
+ }
59
+ if (result.antiAcceptanceCriteria?.length) {
60
+ parts.push(`\n\n**Anti-acceptance criteria (this should NOT do):**\n${result.antiAcceptanceCriteria.map((q) => `- ${q}`).join("\n")}`);
61
+ }
62
+ return parts.join("");
63
+ }
64
+ /** Render the v2 Tier-6b block. Only called when at least one v2 field is set. */
65
+ function renderV2Block(result) {
66
+ return (`\n\n### Assumptions\n${renderAssumptions(result)}` +
67
+ `\n\n### Examples\n${renderExamples(result)}` +
68
+ `\n\n### Affected Files\n${renderAffectedFiles(result)}` +
69
+ `\n\n### Test Strategy\n${renderTestStrategy(result)}` +
70
+ `\n\n### Risk Assessment\n${renderRiskAssessment(result)}`);
71
+ }
72
+ /**
73
+ * Render the markdown body posted to the Linear issue by triage.
74
+ *
75
+ * Order of sections:
76
+ * 1. Header with priority / complexity / labels / pipeline / rationale
77
+ * 2. v1: Acceptance Criteria, Approach (Tier 4), Open Questions, Anti-AC
78
+ * 3. v2 (only if any v2 field present): Assumptions, Examples,
79
+ * Affected Files, Test Strategy, Risk Assessment
80
+ */
81
+ export function renderTriageComment(result, opts) {
82
+ const labelsDedup = Array.from(new Set(result.labels));
83
+ const header = `🤖 **PM Agent — Triaged**${opts.forceNeedsDesign ? " (routed to needs-design)" : ""}\n\n` +
84
+ `**Priority:** ${result.priority} | **Complexity:** ${result.complexity}\n` +
85
+ `**Labels:** ${labelsDedup.join(", ")}\n` +
86
+ `**Pipeline:** ${opts.pipelineLabel}\n` +
87
+ `**Rationale:** ${result.rationale}`;
88
+ return header + renderV1Sections(result) + (hasV2Fields(result) ? renderV2Block(result) : "");
89
+ }
90
+ // ---------------------------------------------------------------------------
91
+ // Issue-description appender.
92
+ // ---------------------------------------------------------------------------
93
+ /**
94
+ * Append triage sections to the issue description. Idempotent — skips any
95
+ * section whose `**Label:**` marker already appears in `existingDesc`.
96
+ *
97
+ * Section order (matches the comment): Acceptance Criteria, Examples,
98
+ * Affected Files, Test Strategy, Risk Assessment. The order is important
99
+ * for the future schema-mapper extension that will parse these out.
100
+ */
101
+ export function appendTriageSectionsToDescription(existingDesc, result) {
102
+ const sections = [
103
+ {
104
+ marker: "**Acceptance Criteria:**",
105
+ render: () => result.acceptanceCriteria.length > 0
106
+ ? `**Acceptance Criteria:**\n${result.acceptanceCriteria.map((c) => `- [ ] ${c}`).join("\n")}`
107
+ : null,
108
+ },
109
+ {
110
+ marker: "**Examples:**",
111
+ render: () => result.examples?.length
112
+ ? `**Examples:**\n${result.examples
113
+ .map((e, i) => `${i + 1}. **Scenario:** ${e.scenario}\n **Expected:** ${e.expected}`)
114
+ .join("\n")}`
115
+ : null,
116
+ },
117
+ {
118
+ marker: "**Affected Files:**",
119
+ render: () => result.affectedFiles?.length
120
+ ? `**Affected Files:**\n${result.affectedFiles.map((f) => `- ${f}`).join("\n")}`
121
+ : null,
122
+ },
123
+ {
124
+ marker: "**Test Strategy:**",
125
+ render: () => {
126
+ if (!result.testStrategy)
127
+ return null;
128
+ const lines = [];
129
+ if (result.testStrategy.unit) {
130
+ lines.push(`- **Unit:** ${result.testStrategy.unit}`);
131
+ }
132
+ if (result.testStrategy.integration) {
133
+ lines.push(`- **Integration:** ${result.testStrategy.integration}`);
134
+ }
135
+ return lines.length > 0
136
+ ? `**Test Strategy:**\n${lines.join("\n")}`
137
+ : null;
138
+ },
139
+ },
140
+ {
141
+ marker: "**Risk Assessment:**",
142
+ render: () => result.riskAssessment
143
+ ? `**Risk Assessment:**\n- **Severity:** ${result.riskAssessment.severity}\n- **Areas:** ${result.riskAssessment.areas.join(", ") || "(none)"}`
144
+ : null,
145
+ },
146
+ ];
147
+ let out = existingDesc;
148
+ for (const section of sections) {
149
+ if (out.includes(section.marker))
150
+ continue;
151
+ const rendered = section.render();
152
+ if (rendered === null)
153
+ continue;
154
+ out = `${out}\n\n${rendered}`;
155
+ }
156
+ return out;
157
+ }
158
+ //# sourceMappingURL=triage-render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triage-render.js","sourceRoot":"","sources":["../../../src/pm/actions/triage-render.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
+ import type { LinearClient } from "@linear/sdk";
1
2
  import type { TriageResult } from "../types.js";
2
3
  import type { AnyDb } from "../../db/client.js";
3
4
  export interface TriageInput {
4
- linearClient: any;
5
+ linearClient: LinearClient;
5
6
  teamIds: string[];
6
7
  callClaude: (prompt: string) => Promise<string>;
7
8
  sanitize: (text: string) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"triage.d.ts","sourceRoot":"","sources":["../../../src/pm/actions/triage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AA+BhD,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,GAAG,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oGAAoG;IACpG,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,uFAAuF;IACvF,EAAE,CAAC,EAAE,KAAK,CAAC;CACZ;AAoBD,wBAAsB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA2PjF"}
1
+ {"version":3,"file":"triage.d.ts","sourceRoot":"","sources":["../../../src/pm/actions/triage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAwChD,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oGAAoG;IACpG,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,uFAAuF;IACvF,EAAE,CAAC,EAAE,KAAK,CAAC;CACZ;AAoBD,wBAAsB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAwOjF"}
@@ -1,8 +1,11 @@
1
+ import { parseTriageV2Extensions } from "../types.js";
1
2
  import { parseJsonObject } from "../../executor/agent-stream.js";
2
3
  import { resolveWorkflowStates } from "../linear-helpers.js";
3
4
  import { resolveIssueRelations } from "../../util/linear.js";
4
5
  import { createLogger } from "../../logger.js";
5
6
  import { logAuditEventUnchecked, pmTriageClassifiedEvent } from "../../audit/index.js";
7
+ import { buildTriageV1Prompt, buildTriageV2Prompt, isV2Disabled, } from "./triage-prompt.js";
8
+ import { renderTriageComment, appendTriageSectionsToDescription, } from "./triage-render.js";
6
9
  const log = createLogger({ component: "PmAgent:triage" });
7
10
  const MAX_ISSUES_PER_TICK = 10;
8
11
  const DEFAULT_BATCH_SIZE = 3;
@@ -102,22 +105,19 @@ export async function triageNewIssues(input) {
102
105
  log.info({ issueId: issue.identifier, pipelineLabel: OBSERVER_PIPELINE_LABEL }, "triaged observer-origin issue (skipped Claude classification)");
103
106
  return result;
104
107
  }
105
- const sanitizedDesc = sanitize(issue.description ?? "");
106
- const prompt = `Classify this software issue, generate acceptance criteria, and produce a design doc. Respond with ONLY a JSON object, no other text.\n\n` +
107
- `Issue: ${issue.identifier}\n` +
108
- `Title: ${sanitize(issue.title)}\n` +
109
- `Description: ${sanitizedDesc}\n\n` +
110
- `IMPORTANT rules for generating acceptance criteria:\n` +
111
- `1. INTEGRATION: Every new function, module, or utility MUST have a criterion that specifies where it is called from in existing code (e.g. "runner.ts calls checkFoo() after the test stage completes"). Code that is exported but never imported outside its own test file is incomplete.\n` +
112
- `2. DOCUMENTATION: If the change adds new configuration, public API, CLI flags, or changes behavior, include a criterion requiring updates to relevant documentation (CLAUDE.md, README.md, deploy/README.md, or inline JSDoc).\n` +
113
- `3. TESTING: Include a criterion for tests that exercise the integration path, not just the utility in isolation.\n` +
114
- `4. Each criterion must be concrete and verifiable by reading the code — avoid vague criteria like "works correctly" or "is implemented".\n\n` +
115
- `Tier 4 DESIGN DOC fields:\n` +
116
- `- approachSummary: 3-5 lines describing what the implementation will do at a level the operator can sanity-check before spending implement-stage tokens. Concrete enough that someone reading it could predict the diff shape.\n` +
117
- `- openQuestions: list of unknowns that the operator must answer before implement is safe — ambiguous requirements, missing API contracts, undecided trade-offs. EMPTY when the issue is clearly specified. NON-EMPTY forces routing to "needs-design" so a human answers before any implement-stage tokens are spent.\n` +
118
- `- antiAcceptanceCriteria: list of "things this should NOT do" — explicit out-of-scope items so the agent doesn't drift (e.g. "must NOT change other pipelines' configs", "must NOT add new dependencies"). Helps the agent stay narrow.\n\n` +
119
- `Respond with exactly this JSON format (no markdown, no explanation, just the JSON). The canonical form for openQuestions is the EMPTY array \`[]\` — only populate it when the issue is genuinely ambiguous and you cannot proceed without operator input. Do not invent questions for clear specs.\n` +
120
- `{"priority": <1-4 where 1=urgent>, "labels": [<"bug"|"feature"|"backend"|"frontend"|"infra"|"docs">], "complexity": <"trivial"|"small"|"medium"|"large">, "rationale": "<one sentence>", "approachSummary": "<3-5 lines>", "openQuestions": [], "antiAcceptanceCriteria": ["<not-this>", ...], "acceptanceCriteria": ["<integration criterion — specifies call site in existing code>", "<behavior criterion — testable outcome>", "<documentation criterion — if applicable>", ...]}`;
108
+ // Tier 6a pick v2 prompt by default; fall back to v1 when the
109
+ // operator has set URATEAM_DISABLE_TRIAGE_V2=true. Reads env at
110
+ // call time so flipping the var takes effect on the next PM tick
111
+ // without a daemon restart.
112
+ const useV2 = !isV2Disabled();
113
+ const promptInput = {
114
+ identifier: issue.identifier,
115
+ title: issue.title,
116
+ description: issue.description ?? "",
117
+ };
118
+ const prompt = useV2
119
+ ? buildTriageV2Prompt(promptInput, sanitize)
120
+ : buildTriageV1Prompt(promptInput, sanitize);
121
121
  const response = await callClaude(prompt);
122
122
  const parsed = parseJsonObject(response);
123
123
  if (!parsed) {
@@ -181,48 +181,12 @@ export async function triageNewIssues(input) {
181
181
  const acceptanceCriteria = Array.isArray(parsed.acceptanceCriteria)
182
182
  ? parsed.acceptanceCriteria.filter((c) => typeof c === "string" && c.length > 0)
183
183
  : [];
184
- // Append acceptance criteria to issue description if not already present
185
- const updatePayload = { priority };
186
- if (labelIds.length > 0)
187
- updatePayload.labelIds = labelIds;
188
- if (backlogStateId)
189
- updatePayload.stateId = backlogStateId;
190
- const existingDesc = issue.description ?? "";
191
- if (acceptanceCriteria.length > 0 && !existingDesc.includes("**Acceptance Criteria:**")) {
192
- const criteriaSection = `\n\n**Acceptance Criteria:**\n${acceptanceCriteria.map((c) => `- [ ] ${c}`).join("\n")}`;
193
- updatePayload.description = existingDesc + criteriaSection;
194
- }
195
- await linearClient.updateIssue(issue.id, updatePayload);
196
- // Tier 4 — comment includes the new design-doc fields so operators
197
- // see the approach, open questions, and anti-scope before
198
- // approving / unblocking a needs-design ticket.
199
- const designDocBlock = [
200
- approachSummary
201
- ? `\n\n**Approach (Tier 4):**\n${approachSummary}`
202
- : "",
203
- openQuestions.length > 0
204
- ? `\n\n**Open questions (must be answered before implement):**\n${openQuestions
205
- .map((q) => `- ${q}`)
206
- .join("\n")}`
207
- : "",
208
- antiAcceptanceCriteria.length > 0
209
- ? `\n\n**Anti-acceptance criteria (this should NOT do):**\n${antiAcceptanceCriteria
210
- .map((q) => `- ${q}`)
211
- .join("\n")}`
212
- : "",
213
- ].join("");
214
- await linearClient.createComment({
215
- issueId: issue.id,
216
- body: `🤖 **PM Agent — Triaged**${forceNeedsDesign ? " (routed to needs-design)" : ""}\n\n` +
217
- `**Priority:** ${priority} | **Complexity:** ${complexity}\n` +
218
- `**Labels:** ${issueLabels.join(", ")}\n` +
219
- `**Pipeline:** ${pipelineLabel}\n` +
220
- `**Rationale:** ${rationale}` +
221
- (acceptanceCriteria.length > 0
222
- ? `\n\n**Generated Acceptance Criteria:**\n${acceptanceCriteria.map((c) => `- ${c}`).join("\n")}`
223
- : "") +
224
- designDocBlock,
225
- });
184
+ // Tier 6b extract optional v2 fields when v2 is active. When v1
185
+ // is forced (env var), skip the extraction so the result shape
186
+ // stays bit-compatible with v1.
187
+ const v2Fields = useV2 ? parseTriageV2Extensions(parsed) : {};
188
+ // Build the TriageResult once so both the description appender
189
+ // and the comment renderer consume the same source of truth.
226
190
  const result = {
227
191
  issueId: issue.identifier,
228
192
  priority,
@@ -233,7 +197,29 @@ export async function triageNewIssues(input) {
233
197
  ...(approachSummary && { approachSummary }),
234
198
  ...(openQuestions.length > 0 && { openQuestions }),
235
199
  ...(antiAcceptanceCriteria.length > 0 && { antiAcceptanceCriteria }),
200
+ ...v2Fields,
236
201
  };
202
+ const updatePayload = { priority };
203
+ if (labelIds.length > 0)
204
+ updatePayload.labelIds = labelIds;
205
+ if (backlogStateId)
206
+ updatePayload.stateId = backlogStateId;
207
+ // Tier 6b — append all triage sections (AC + v2 fields) via the
208
+ // idempotent renderer. The function preserves existing sections
209
+ // already in the description (re-triage doesn't duplicate).
210
+ const existingDesc = issue.description ?? "";
211
+ const updatedDesc = appendTriageSectionsToDescription(existingDesc, result);
212
+ if (updatedDesc !== existingDesc) {
213
+ updatePayload.description = updatedDesc;
214
+ }
215
+ await linearClient.updateIssue(issue.id, updatePayload);
216
+ await linearClient.createComment({
217
+ issueId: issue.id,
218
+ body: renderTriageComment(result, {
219
+ forceNeedsDesign,
220
+ pipelineLabel,
221
+ }),
222
+ });
237
223
  if (input.db) {
238
224
  void logAuditEventUnchecked(input.db, pmTriageClassifiedEvent({
239
225
  issueId: issue.identifier,
@@ -1 +1 @@
1
- {"version":3,"file":"triage.js","sourceRoot":"","sources":["../../../src/pm/actions/triage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"triage.js","sourceRoot":"","sources":["../../../src/pm/actions/triage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Triage prediction quality (Tier 6b foundation for Tier 6e).
3
+ *
4
+ * Pure function. No I/O, no DB writes. Compares triage's `affectedFiles`
5
+ * prediction against the actual diff at run-completion time.
6
+ *
7
+ * Caller is responsible for providing consistent path shapes — this
8
+ * function does string equality only. The output shape is the contract
9
+ * Tier 6e will consume to write `pm.triage_quality_score` audit events.
10
+ */
11
+ export interface PredictionQualityResult {
12
+ /** True iff `predicted` was supplied (i.e., triage v2 ran). */
13
+ hasV2Prediction: boolean;
14
+ /** Number of unique predicted paths. */
15
+ predicted: number;
16
+ /** Number of unique actual paths. */
17
+ actual: number;
18
+ /** Number of paths in both sets. */
19
+ intersection: number;
20
+ /** Predicted but not actually touched — sorted alphabetically. */
21
+ missed: string[];
22
+ /** Touched but not predicted — sorted alphabetically. */
23
+ unexpected: string[];
24
+ }
25
+ export declare function computeAffectedFilesPredictionQuality(predicted: string[] | undefined, actualDiff: string[]): PredictionQualityResult;
26
+ //# sourceMappingURL=triage-prediction-quality.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triage-prediction-quality.d.ts","sourceRoot":"","sources":["../../src/pm/triage-prediction-quality.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,uBAAuB;IACtC,+DAA+D;IAC/D,eAAe,EAAE,OAAO,CAAC;IACzB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,yDAAyD;IACzD,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,wBAAgB,qCAAqC,CACnD,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,EAC/B,UAAU,EAAE,MAAM,EAAE,GACnB,uBAAuB,CA+BzB"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Triage prediction quality (Tier 6b foundation for Tier 6e).
3
+ *
4
+ * Pure function. No I/O, no DB writes. Compares triage's `affectedFiles`
5
+ * prediction against the actual diff at run-completion time.
6
+ *
7
+ * Caller is responsible for providing consistent path shapes — this
8
+ * function does string equality only. The output shape is the contract
9
+ * Tier 6e will consume to write `pm.triage_quality_score` audit events.
10
+ */
11
+ export function computeAffectedFilesPredictionQuality(predicted, actualDiff) {
12
+ const hasV2Prediction = Array.isArray(predicted);
13
+ const predictedSet = new Set(predicted ?? []);
14
+ const actualSet = new Set(actualDiff);
15
+ const intersection = new Set();
16
+ for (const p of predictedSet) {
17
+ if (actualSet.has(p))
18
+ intersection.add(p);
19
+ }
20
+ const missed = [];
21
+ for (const p of predictedSet) {
22
+ if (!actualSet.has(p))
23
+ missed.push(p);
24
+ }
25
+ missed.sort();
26
+ const unexpected = [];
27
+ for (const a of actualSet) {
28
+ if (!predictedSet.has(a))
29
+ unexpected.push(a);
30
+ }
31
+ unexpected.sort();
32
+ return {
33
+ hasV2Prediction,
34
+ predicted: predictedSet.size,
35
+ actual: actualSet.size,
36
+ intersection: intersection.size,
37
+ missed,
38
+ unexpected,
39
+ };
40
+ }
41
+ //# sourceMappingURL=triage-prediction-quality.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triage-prediction-quality.js","sourceRoot":"","sources":["../../src/pm/triage-prediction-quality.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAiBH,MAAM,UAAU,qCAAqC,CACnD,SAA+B,EAC/B,UAAoB;IAEpB,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEjD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAEtC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,CAAC,IAAI,EAAE,CAAC;IAEd,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,UAAU,CAAC,IAAI,EAAE,CAAC;IAElB,OAAO;QACL,eAAe;QACf,SAAS,EAAE,YAAY,CAAC,IAAI;QAC5B,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,YAAY,EAAE,YAAY,CAAC,IAAI;QAC/B,MAAM;QACN,UAAU;KACX,CAAC;AACJ,CAAC"}
@@ -75,7 +75,67 @@ export interface TriageResult {
75
75
  /** Tier 4 — "things this should NOT do" — anti-acceptance criteria the
76
76
  * agent must respect to stay in scope. */
77
77
  antiAcceptanceCriteria?: string[];
78
+ /** Tier 6b — assumptions the agent will take for granted. Operator-
79
+ * correctable via the Linear comment before implement burns tokens.
80
+ * Max 10. */
81
+ assumptions?: string[];
82
+ /** Tier 6b — concrete input/output pairs that ground the implement
83
+ * agent's generation. Max 3. */
84
+ examples?: Array<{
85
+ scenario: string;
86
+ expected: string;
87
+ }>;
88
+ /** Tier 6b — best-guess paths the implementation will touch. Compared
89
+ * against the actual diff at review time as a quality signal (Tier 6e
90
+ * consumer). Max 20. */
91
+ affectedFiles?: string[];
92
+ /** Tier 6b — which test file(s) the implement agent should start from
93
+ * and what shape of assertions to write. */
94
+ testStrategy?: {
95
+ unit?: string;
96
+ integration?: string;
97
+ };
98
+ /** Tier 6b — severity classification + the subsystems triage thinks
99
+ * the change touches. Feeds the cost gate and the auto-deep-review
100
+ * default. `areas` max 5. */
101
+ riskAssessment?: {
102
+ severity: "low" | "medium" | "high";
103
+ areas: string[];
104
+ };
78
105
  }
106
+ export declare const TriageV2ExtensionsSchema: z.ZodObject<{
107
+ assumptions: z.ZodOptional<z.ZodArray<z.ZodString>>;
108
+ examples: z.ZodOptional<z.ZodArray<z.ZodObject<{
109
+ scenario: z.ZodString;
110
+ expected: z.ZodString;
111
+ }, z.core.$strip>>>;
112
+ affectedFiles: z.ZodOptional<z.ZodArray<z.ZodString>>;
113
+ testStrategy: z.ZodOptional<z.ZodObject<{
114
+ unit: z.ZodOptional<z.ZodString>;
115
+ integration: z.ZodOptional<z.ZodString>;
116
+ }, z.core.$strip>>;
117
+ riskAssessment: z.ZodOptional<z.ZodObject<{
118
+ severity: z.ZodEnum<{
119
+ medium: "medium";
120
+ low: "low";
121
+ high: "high";
122
+ }>;
123
+ areas: z.ZodArray<z.ZodString>;
124
+ }, z.core.$strip>>;
125
+ }, z.core.$strict>;
126
+ export type TriageV2Extensions = z.infer<typeof TriageV2ExtensionsSchema>;
127
+ /**
128
+ * Tolerant pre-zod normaliser. Filters non-string elements from string
129
+ * arrays, drops examples missing `scenario` or `expected`, truncates list
130
+ * fields to their caps, and trims whitespace. Returns only the v2 fields
131
+ * present in `raw`; absent fields are absent from the result (not set to
132
+ * empty arrays).
133
+ *
134
+ * Drops the entire `riskAssessment` block when the severity enum fails so
135
+ * the caller falls back to the v1 shape rather than partially-populated
136
+ * v2.
137
+ */
138
+ export declare function parseTriageV2Extensions(raw: unknown): TriageV2Extensions;
79
139
  export interface ConflictCheckResult {
80
140
  overlapRisk: "none" | "low" | "high";
81
141
  likelyFiles: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pm/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pm/types.ts"],"names":[],"mappings":"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"}