@enrichlayer/el-linear 1.37.2 → 1.38.1

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.
@@ -59,16 +59,23 @@ export function extractCandidateIdentifiers(rows) {
59
59
  return out;
60
60
  }
61
61
  /**
62
- * Build the relation-candidate confirmation warning string, or `null` when
63
- * the result set has no identifier-bearing rows (nothing to confirm).
62
+ * Build the relation-candidate warning string, or `null` when the result set
63
+ * has no identifier-bearing rows (nothing to surface).
64
64
  *
65
65
  * Shape (single line, structured-prose so a skill can match on the prefix):
66
66
  *
67
67
  * relation_candidates: Found N candidate related issues (DEV-1, DEV-2, …).
68
- * To link them as related: reply with the IDs you want linked
69
- * (e.g. "link DEV-1 and DEV-2"). To skip linking: reply "no links".
68
+ * Link the relevant ones now — at create time with --related-to, or
69
+ * `issues relate <id> --related-to "<ids>"`. If auto-mode blocks an
70
+ * agent-inferred relate, reply with the IDs you want linked
71
+ * (e.g. "link DEV-1 and DEV-2"), or "no links" to skip.
70
72
  *
71
- * The `relation_candidates:` prefix matches the existing `results_truncated:`
73
+ * DEV-5853: the primary framing is **proactive** — this is a convenience list
74
+ * of link candidates, not a stop sign. Relate the relevant ones directly
75
+ * rather than waiting to be told; the reply flow is the *fallback* for when
76
+ * the auto-mode classifier actually blocks an agent-inferred `issues relate`
77
+ * (create-time `--related-to` typically passes, so prefer it). The
78
+ * `relation_candidates:` prefix matches the existing `results_truncated:`
72
79
  * convention in `outputWarning` callers — a stable token a skill / agent
73
80
  * harness can grep for without parsing free-form prose.
74
81
  */
@@ -82,13 +89,20 @@ export function buildRelationCandidatePrompt(rows) {
82
89
  ? `${shown.join(", ")}, … (+${overflow} more)`
83
90
  : shown.join(", ");
84
91
  // Build two concrete example IDs from the head of the list so the
85
- // "reply with the IDs you want linked" example is realistic for the
86
- // caller's actual search rather than a fixed placeholder. Single-result
92
+ // fallback "reply with the IDs you want linked" example is realistic for
93
+ // the caller's actual search rather than a fixed placeholder. Single-result
87
94
  // case still reads naturally ("link DEV-1").
88
95
  const example = shown.length >= 2 ? `link ${shown[0]} and ${shown[1]}` : `link ${shown[0]}`;
89
96
  const noun = ids.length === 1 ? "candidate related issue" : "candidate related issues";
97
+ // DEV-5853: proactive framing first (relate the relevant ones directly),
98
+ // then the reply-flow fallback for when auto-mode blocks an agent-inferred
99
+ // relate. The `relate the relevant ones` / `reply with the IDs you want
100
+ // linked` / `"no links"` / DEV-4494 tokens are all preserved so downstream
101
+ // skill/agent matchers stay stable.
90
102
  return (`relation_candidates: Found ${ids.length} ${noun} (${idList}). ` +
91
- `To link them as related: reply with the IDs you want linked ` +
92
- `(e.g. "${example}"). To skip linking: reply "no links". ` +
103
+ `Link the relevant ones now — at create time with --related-to, or ` +
104
+ `\`issues relate <id> --related-to "<ids>"\`. ` +
105
+ `If auto-mode blocks an agent-inferred relate, reply with the IDs you want linked ` +
106
+ `(e.g. "${example}"), or "no links" to skip. ` +
93
107
  `(Agent-inferred IDs are blocked by auto-mode; user-named IDs pass — DEV-4494.)`);
94
108
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enrichlayer/el-linear",
3
- "version": "1.37.2",
3
+ "version": "1.38.1",
4
4
  "description": "A pragmatic CLI for Linear.app — deterministic team/label/member resolution, structured issue validation, configurable term enforcement, and a GraphQL escape hatch.",
5
5
  "main": "dist/main.js",
6
6
  "types": "dist/main.d.ts",
@@ -68,8 +68,9 @@
68
68
  "@sentry/node": "^10.50.0"
69
69
  },
70
70
  "scripts": {
71
- "build": "tsc && chmod +x dist/main.js",
71
+ "build": "tsc -p tsconfig.build.json && chmod +x dist/main.js",
72
72
  "clean": "rm -rf dist/",
73
+ "typecheck": "tsc --noEmit",
73
74
  "lint": "biome check .",
74
75
  "lint:fix": "biome check --fix .",
75
76
  "start": "tsx src/main.ts",