@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.
- package/README.md +8 -4
- package/claude-skills/linear-operations/SKILL.md +45 -30
- package/dist/commands/attachments.js +60 -0
- package/dist/commands/comments.js +2 -1
- package/dist/commands/issues/description.js +2 -1
- package/dist/commands/issues.js +118 -7
- package/dist/commands/labels.js +2 -1
- package/dist/commands/projects.js +53 -1
- package/dist/config/config.d.ts +20 -0
- package/dist/config/goal-completion-validation.d.ts +92 -0
- package/dist/config/goal-completion-validation.js +158 -0
- package/dist/queries/projects-types.d.ts +10 -0
- package/dist/queries/projects.d.ts +1 -0
- package/dist/queries/projects.js +20 -0
- package/dist/types/linear.d.ts +9 -0
- package/dist/utils/file-service.d.ts +3 -1
- package/dist/utils/file-service.js +53 -7
- package/dist/utils/gate-telemetry.d.ts +20 -0
- package/dist/utils/gate-telemetry.js +26 -1
- package/dist/utils/graphql-issues-service.d.ts +2 -0
- package/dist/utils/graphql-issues-service.js +41 -0
- package/dist/utils/inline-text-input.d.ts +7 -0
- package/dist/utils/inline-text-input.js +12 -0
- package/dist/utils/relation-candidate-prompt.d.ts +12 -5
- package/dist/utils/relation-candidate-prompt.js +23 -9
- package/package.json +3 -2
|
@@ -59,16 +59,23 @@ export function extractCandidateIdentifiers(rows) {
|
|
|
59
59
|
return out;
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
|
-
* Build the relation-candidate
|
|
63
|
-
*
|
|
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
|
-
*
|
|
69
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
-
`
|
|
92
|
-
|
|
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.
|
|
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",
|