@dahrk/linear 0.3.0 → 0.5.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/dist/documents.d.ts +14 -0
- package/dist/documents.d.ts.map +1 -1
- package/dist/documents.js +19 -0
- package/dist/documents.js.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/issue-search.d.ts +38 -0
- package/dist/issue-search.d.ts.map +1 -0
- package/dist/issue-search.js +64 -0
- package/dist/issue-search.js.map +1 -0
- package/dist/issue-write.d.ts +41 -0
- package/dist/issue-write.d.ts.map +1 -0
- package/dist/issue-write.js +74 -0
- package/dist/issue-write.js.map +1 -0
- package/dist/labels.d.ts +12 -0
- package/dist/labels.d.ts.map +1 -1
- package/dist/labels.js +12 -0
- package/dist/labels.js.map +1 -1
- package/dist/projects.d.ts +29 -0
- package/dist/projects.d.ts.map +1 -0
- package/dist/projects.js +51 -0
- package/dist/projects.js.map +1 -0
- package/package.json +2 -2
- package/src/documents.ts +27 -0
- package/src/index.ts +15 -1
- package/src/issue-search.ts +96 -0
- package/src/issue-write.ts +106 -0
- package/src/labels.ts +19 -0
- package/src/projects.ts +67 -0
package/dist/documents.d.ts
CHANGED
|
@@ -30,6 +30,13 @@ export declare function documentSlug(doc: RawDocument): string;
|
|
|
30
30
|
* attachment whose document does not resolve is skipped, never fatal.
|
|
31
31
|
*/
|
|
32
32
|
export declare function collectAttachedDocuments(source: DocumentSource, issueId: string): Promise<AttachedDocument[]>;
|
|
33
|
+
/**
|
|
34
|
+
* Collect ONE document by its id or slug from a source, normalised to the contract shape. Returns null
|
|
35
|
+
* when the document does not resolve or carries no usable body - reusing the same `toAttached`
|
|
36
|
+
* normalisation the multi-document path uses, so a single read and a bulk read agree on shape. Pure of
|
|
37
|
+
* any network: the source does the I/O. The workspace-MCP `get_document` tool's assembly.
|
|
38
|
+
*/
|
|
39
|
+
export declare function collectDocument(source: DocumentSource, idOrSlug: string): Promise<AttachedDocument | null>;
|
|
33
40
|
/** The live `DocumentSource`, backed by a Linear bearer token. Uses the typed SDK. */
|
|
34
41
|
export declare function linearDocumentSource(token: string): DocumentSource;
|
|
35
42
|
/**
|
|
@@ -39,4 +46,11 @@ export declare function linearDocumentSource(token: string): DocumentSource;
|
|
|
39
46
|
* network) propagates so the caller can log and proceed with none.
|
|
40
47
|
*/
|
|
41
48
|
export declare function fetchAttachedDocuments(token: string, issueId: string): Promise<AttachedDocument[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Fetch ONE Linear document by its id or slug as a contract `AttachedDocument`, ready for the
|
|
51
|
+
* workspace-MCP `get_document` tool. `client.document(idOrSlug)` accepts either. Returns null when the
|
|
52
|
+
* document does not resolve or has no body. A hard failure (auth, network) propagates so the caller can
|
|
53
|
+
* surface it as a tool error.
|
|
54
|
+
*/
|
|
55
|
+
export declare function fetchDocument(token: string, idOrSlug: string): Promise<AttachedDocument | null>;
|
|
42
56
|
//# sourceMappingURL=documents.d.ts.map
|
package/dist/documents.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,qGAAqG;AACrG,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,+FAA+F;AAC/F,MAAM,WAAW,cAAc;IAC7B,oDAAoD;IACpD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACxD,4FAA4F;IAC5F,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACxD,+FAA+F;IAC/F,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAC3D;AAED;;;+FAG+F;AAC/F,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAc9D;AAED;0FAC0F;AAC1F,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAQrD;AAeD;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAuB7B;AAED,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAiClE;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAE7B"}
|
|
1
|
+
{"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,qGAAqG;AACrG,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,+FAA+F;AAC/F,MAAM,WAAW,cAAc;IAC7B,oDAAoD;IACpD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACxD,4FAA4F;IAC5F,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACxD,+FAA+F;IAC/F,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAC3D;AAED;;;+FAG+F;AAC/F,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAc9D;AAED;0FAC0F;AAC1F,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAQrD;AAeD;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAuB7B;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAGlC;AAED,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAiClE;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAE7B;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAElC"}
|
package/dist/documents.js
CHANGED
|
@@ -90,6 +90,16 @@ export async function collectAttachedDocuments(source, issueId) {
|
|
|
90
90
|
}
|
|
91
91
|
return out;
|
|
92
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Collect ONE document by its id or slug from a source, normalised to the contract shape. Returns null
|
|
95
|
+
* when the document does not resolve or carries no usable body - reusing the same `toAttached`
|
|
96
|
+
* normalisation the multi-document path uses, so a single read and a bulk read agree on shape. Pure of
|
|
97
|
+
* any network: the source does the I/O. The workspace-MCP `get_document` tool's assembly.
|
|
98
|
+
*/
|
|
99
|
+
export async function collectDocument(source, idOrSlug) {
|
|
100
|
+
const doc = await source.documentBySlug(idOrSlug);
|
|
101
|
+
return doc ? toAttached(doc) : null;
|
|
102
|
+
}
|
|
93
103
|
/** The live `DocumentSource`, backed by a Linear bearer token. Uses the typed SDK. */
|
|
94
104
|
export function linearDocumentSource(token) {
|
|
95
105
|
const client = new LinearClient({ accessToken: token });
|
|
@@ -134,4 +144,13 @@ export function linearDocumentSource(token) {
|
|
|
134
144
|
export async function fetchAttachedDocuments(token, issueId) {
|
|
135
145
|
return collectAttachedDocuments(linearDocumentSource(token), issueId);
|
|
136
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* Fetch ONE Linear document by its id or slug as a contract `AttachedDocument`, ready for the
|
|
149
|
+
* workspace-MCP `get_document` tool. `client.document(idOrSlug)` accepts either. Returns null when the
|
|
150
|
+
* document does not resolve or has no body. A hard failure (auth, network) propagates so the caller can
|
|
151
|
+
* surface it as a tool error.
|
|
152
|
+
*/
|
|
153
|
+
export async function fetchDocument(token, idOrSlug) {
|
|
154
|
+
return collectDocument(linearDocumentSource(token), idOrSlug);
|
|
155
|
+
}
|
|
137
156
|
//# sourceMappingURL=documents.js.map
|
package/dist/documents.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -227,13 +227,19 @@ export { createLinearClient } from "./linear-client.js";
|
|
|
227
227
|
export { formatToolAction, formatToolResult, type ToolAction } from "./format-action.js";
|
|
228
228
|
export { authorizeUrl, exchangeCode, refreshTokens, revokeToken, mintAppToken, fetchOrganizationId, probeToken, DEFAULT_AGENT_SCOPES } from "./oauth.js";
|
|
229
229
|
export type { LinearTokens, LinearProbe } from "./oauth.js";
|
|
230
|
-
export { provisionLabels, provisionWorkflowLabels, provisionRepoLabels, linearLabelApi, projectLabelApi, fetchIssueProjectRepoLabels, fetchIssueChildCount, fetchOpenBlockers, isBlockerSettled, REPO_LABEL_GROUP, } from "./labels.js";
|
|
231
|
-
export type { LabelApi, ProvisionOptions, OpenBlocker } from "./labels.js";
|
|
230
|
+
export { provisionLabels, provisionWorkflowLabels, provisionRepoLabels, listWorkspaceLabels, linearLabelApi, projectLabelApi, fetchIssueProjectRepoLabels, fetchIssueChildCount, fetchOpenBlockers, isBlockerSettled, REPO_LABEL_GROUP, } from "./labels.js";
|
|
231
|
+
export type { LabelApi, ProvisionOptions, OpenBlocker, WorkspaceLabel } from "./labels.js";
|
|
232
232
|
export { linearTeamsApi, listWorkspaceTeams } from "./teams.js";
|
|
233
233
|
export type { Team, TeamsApi } from "./teams.js";
|
|
234
|
+
export { linearProjectsApi, listWorkspaceProjects, fetchWorkspaceProjects } from "./projects.js";
|
|
235
|
+
export type { Project, ProjectsApi } from "./projects.js";
|
|
236
|
+
export { fetchSearchIssues, collectSearchResults, linearIssueSearchSource, MAX_SEARCH_RESULTS, } from "./issue-search.js";
|
|
237
|
+
export type { IssueSearchSource, RawSearchHit, IssueSearchProjection } from "./issue-search.js";
|
|
234
238
|
export { linearTriageApi, linearClientAuth, linearCaptureApi } from "./issues.js";
|
|
235
239
|
export type { TriageApi, CaptureLinearApi, CaptureIssueResult } from "./issues.js";
|
|
236
|
-
export {
|
|
240
|
+
export { linearWorkspaceWriteApi } from "./issue-write.js";
|
|
241
|
+
export type { WorkspaceWriteApi, WorkspaceCreateIssueResult } from "./issue-write.js";
|
|
242
|
+
export { fetchAttachedDocuments, fetchDocument, collectAttachedDocuments, collectDocument, linearDocumentSource, documentSlugFromUrl, documentSlug, } from "./documents.js";
|
|
237
243
|
export type { DocumentSource, RawDocument } from "./documents.js";
|
|
238
244
|
export { fetchIssueComments, collectIssueComments, linearCommentSource } from "./comments.js";
|
|
239
245
|
export type { CommentSource, RawComment } from "./comments.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -293,10 +293,13 @@ export { createRespondingLinearClient } from "./responding-client.js";
|
|
|
293
293
|
export { createLinearClient } from "./linear-client.js";
|
|
294
294
|
export { formatToolAction, formatToolResult } from "./format-action.js";
|
|
295
295
|
export { authorizeUrl, exchangeCode, refreshTokens, revokeToken, mintAppToken, fetchOrganizationId, probeToken, DEFAULT_AGENT_SCOPES } from "./oauth.js";
|
|
296
|
-
export { provisionLabels, provisionWorkflowLabels, provisionRepoLabels, linearLabelApi, projectLabelApi, fetchIssueProjectRepoLabels, fetchIssueChildCount, fetchOpenBlockers, isBlockerSettled, REPO_LABEL_GROUP, } from "./labels.js";
|
|
296
|
+
export { provisionLabels, provisionWorkflowLabels, provisionRepoLabels, listWorkspaceLabels, linearLabelApi, projectLabelApi, fetchIssueProjectRepoLabels, fetchIssueChildCount, fetchOpenBlockers, isBlockerSettled, REPO_LABEL_GROUP, } from "./labels.js";
|
|
297
297
|
export { linearTeamsApi, listWorkspaceTeams } from "./teams.js";
|
|
298
|
+
export { linearProjectsApi, listWorkspaceProjects, fetchWorkspaceProjects } from "./projects.js";
|
|
299
|
+
export { fetchSearchIssues, collectSearchResults, linearIssueSearchSource, MAX_SEARCH_RESULTS, } from "./issue-search.js";
|
|
298
300
|
export { linearTriageApi, linearClientAuth, linearCaptureApi } from "./issues.js";
|
|
299
|
-
export {
|
|
301
|
+
export { linearWorkspaceWriteApi } from "./issue-write.js";
|
|
302
|
+
export { fetchAttachedDocuments, fetchDocument, collectAttachedDocuments, collectDocument, linearDocumentSource, documentSlugFromUrl, documentSlug, } from "./documents.js";
|
|
300
303
|
export { fetchIssueComments, collectIssueComments, linearCommentSource } from "./comments.js";
|
|
301
304
|
export { fetchRelatedIssues, collectRelatedIssues, linearIssueGraphSource, MAX_RELATED_ISSUES, } from "./issue-graph.js";
|
|
302
305
|
export { fetchIssueProjection } from "./issue-read.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAQ3D;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,SAAiB,EAAE,MAAc;IAC9E,6EAA6E;IAC7E,iFAAiF;IACjF,uFAAuF;IACvF,IAAI,EAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAoC,CAAC,gBAAgB,CAAC;QACtG,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,EAAE,GAAG,GAAG,CAAC;aACjC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;IAC9D,CAAC;IACD,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,IAAY;IACvC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,IAAI,SAAS;QAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;QACjD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,SAAS,0BAA0B,CAAC,aAAqB;IACvD,MAAM,KAAK,GAAG,2EAA2E,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9G,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,SAAS,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC7E,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,wCAAwC,CAAC,CAAC,CAAC;IAC1F,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,OAAO;QACL,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe,CACtB,IAAyC,EACzC,WAAuD;IAEvD,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC;IACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC,CAAC,sCAAsC;IAC7E,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QACvC,CAAC,CAAE,IAAI,CAAC,MAAoB,CAAC,MAAM,CAC/B,CAAC,CAAC,EAAuC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CACzE;QACH,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QACzC,CAAC,CAAE,IAAI,CAAC,QAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;QAChF,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;QACxB,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,SAAS,CAAC,sCAAsC;QACpE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,IAAI,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;+FAC+F;AAC/F,SAAS,iBAAiB,CAAC,KAAyB;IAClD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IAChF,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,YAAY;QAAE,OAAO,UAAU,CAAC;IAClF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,OAA6B,EAAE,YAAoB,EAAE,QAAgB;IAC7F,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5D,MAAM,IAAI,GAAG;QACX,QAAQ;QACR,YAAY;QACZ,WAAW,EAAE,OAAO,CAAC,cAAc;QACnC,aAAa,EAAE,OAAO;QACtB,EAAE;KACM,CAAC;IAEX,IAAI,OAAO,CAAC,IAAI,KAAK,mBAAmB,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAC5E,8FAA8F;QAC9F,MAAM,CAAC,GAAG,OAA0C,CAAC;QACrD,8FAA8F;QAC9F,2FAA2F;QAC3F,MAAM,YAAY,GAAG,CAAC,CAAC,YAMtB,CAAC;QACF,MAAM,cAAc,GAAG,YAAY,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,IAAI,SAAS,CAAC;QAC5E,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC3B,+FAA+F;YAC/F,kGAAkG;YAClG,gGAAgG;YAChG,kGAAkG;YAClG,qDAAqD;YACrD,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,EAAE,EAAE,IAAI,SAAS,CAAC;YACxD,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,EAAE,UAAU,IAAI,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,SAAS,CAAC;YACxG,MAAM,OAAO,GACX,SAAS,KAAK,SAAS,IAAI,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;YACpF,8FAA8F;YAC9F,2FAA2F;YAC3F,oDAAoD;YACpD,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC;YACxC,MAAM,aAAa,GAAI,OAAuC,CAAC,aAAa,CAAC;YAC7E,MAAM,SAAS,GAAG,OAAO,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrG,MAAM,qBAAqB,GACzB,UAAU,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACpF,MAAM,WAAW,GACf,CAAC,qBAAqB,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC/F,SAAS,CAAC,WAAW,CAAC;YACxB,MAAM,SAAS,GAAG,UAAU,EAAE,EAAE,IAAI,SAAS,CAAC,SAAS,CAAC;YACxD,6FAA6F;YAC7F,OAAO;gBACL,GAAG,IAAI;gBACP,IAAI,EAAE,uBAAuB;gBAC7B,OAAO;gBACP,OAAO,EAAE,EAAE,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;gBACjG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC5B,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,EAAE,CAAC;QAClF,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAClD,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,EAAE,CAAC;QACvE,CAAC;QACD,gGAAgG;QAChG,iGAAiG;QACjG,mGAAmG;QACnG,qCAAqC;QACrC,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACtD,OAAO;gBACL,GAAG,IAAI;gBACP,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,EAAE,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;aAC7D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,OAA4D,CAAC;QACvE,+FAA+F;QAC/F,gGAAgG;QAChG,iGAAiG;QACjG,0BAA0B;QAC1B,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,CAAC,YAQX,CAAC;QACF,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC;QAE/C,0FAA0F;QAC1F,IAAI,MAAM,KAAK,wBAAwB,EAAE,CAAC;YACxC,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;QACrE,CAAC;QACD,uGAAuG;QACvG,mGAAmG;QACnG,qGAAqG;QACrG,IAAI,MAAM,KAAK,oBAAoB,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,eAAe,CAAC;YAC5D,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;gBAC7B,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;YACnE,CAAC;YACD,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;gBAC9B,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;YACpE,CAAC;QACH,CAAC;QACD,mGAAmG;QACnG,mDAAmD;QACnD,IAAI,MAAM,KAAK,oBAAoB,IAAI,MAAM,KAAK,sBAAsB,EAAE,CAAC;YACzE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;YACpF,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC;YAC7E,CAAC;QACH,CAAC;IACH,CAAC;IAED,+FAA+F;IAC/F,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChE,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzD,CAAC;IAED,qGAAqG;IACrG,oGAAoG;IACpG,gGAAgG;IAChG,4FAA4F;IAC5F,oGAAoG;IACpG,IAAI,OAAO,CAAC,IAAI,KAAK,kBAAkB,IAAI,OAAO,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;QAClF,MAAM,CAAC,GAAG,OAIT,CAAC;QACF,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,EAAE;YACX,UAAU,EAAE;gBACV,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,EAAE;gBAClC,cAAc,EAAE,CAAC,CAAC,cAAc,IAAI,EAAE;gBACtC,uBAAuB,EAAE,CAAC,CAAC,uBAAuB,IAAI,KAAK;aAC5D;SACF,CAAC;IACJ,CAAC;IAED,8FAA8F;IAC9F,mGAAmG;IACnG,qGAAqG;IACrG,mGAAmG;IACnG,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAChE,MAAM,CAAC,GAAG,OAMT,CAAC;QACF,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;YAChF,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,OAIT,CAAC;QACF,+FAA+F;QAC/F,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC;QAChD,mGAAmG;QACnG,6FAA6F;QAC7F,4DAA4D;QAC5D,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;YAC3E,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;QACnE,CAAC;QACD,kGAAkG;QAClG,iGAAiG;QACjG,mGAAmG;QACnG,sFAAsF;QACtF,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,IAAI,SAAS,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YACpF,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;QACjE,CAAC;QACD,kGAAkG;QAClG,oGAAoG;QACpG,oGAAoG;QACpG,MAAM,WAAW,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;QACxE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC;QAC7E,CAAC;QACD,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;IAClE,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,oCAAoC,OAAO,CAAC,IAAI,WAAW,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/F,CAAC;AAiJD;;oFAEoF;AACpF,MAAM,UAAU,kBAAkB,CAAC,IAAmB;IACpD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,IAAI,GAAkB,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QACjE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAkED,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAOtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAmB,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEzJ,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,2BAA2B,EAC3B,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAE9F,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/** A search hit as returned by Linear before normalisation, with its state already resolved. */
|
|
2
|
+
export interface RawSearchHit {
|
|
3
|
+
identifier?: string;
|
|
4
|
+
title?: string;
|
|
5
|
+
url?: string;
|
|
6
|
+
stateName?: string;
|
|
7
|
+
}
|
|
8
|
+
/** A bounded projection of one issue-search hit. */
|
|
9
|
+
export interface IssueSearchProjection {
|
|
10
|
+
identifier: string;
|
|
11
|
+
title: string;
|
|
12
|
+
url: string;
|
|
13
|
+
/** The workflow state's display name, when resolved. */
|
|
14
|
+
state?: string;
|
|
15
|
+
}
|
|
16
|
+
/** The read seam the assembly depends on; the live impl wraps GraphQL, tests inject a fake. */
|
|
17
|
+
export interface IssueSearchSource {
|
|
18
|
+
/** The issues matching `term`, in whatever order Linear returns them. */
|
|
19
|
+
searchIssues(term: string): Promise<RawSearchHit[]>;
|
|
20
|
+
}
|
|
21
|
+
/** How many hits ride back. Beyond this the result stops being a summary; matches the eager caps. */
|
|
22
|
+
export declare const MAX_SEARCH_RESULTS = 50;
|
|
23
|
+
/**
|
|
24
|
+
* Collect the workspace's issues matching a term from a source: drop hits with no identifier, de-dupe
|
|
25
|
+
* by identifier (keep the first, which is Linear's own relevance order), normalise, and cap. Pure of
|
|
26
|
+
* any network - the source does the I/O.
|
|
27
|
+
*/
|
|
28
|
+
export declare function collectSearchResults(source: IssueSearchSource, term: string): Promise<IssueSearchProjection[]>;
|
|
29
|
+
/** The live `IssueSearchSource`, backed by a Linear bearer token. Uses the typed SDK's
|
|
30
|
+
* `searchIssues(term, {first})`; the per-hit `state` is a lazy reference resolved for its name. */
|
|
31
|
+
export declare function linearIssueSearchSource(token: string): IssueSearchSource;
|
|
32
|
+
/**
|
|
33
|
+
* Search the workspace's issues as bounded projections, ready for the workspace-MCP `search_issues`
|
|
34
|
+
* tool. The single entry point the hub wires. A hard failure (auth, network) propagates so the caller
|
|
35
|
+
* can surface it as a tool error.
|
|
36
|
+
*/
|
|
37
|
+
export declare function fetchSearchIssues(token: string, term: string): Promise<IssueSearchProjection[]>;
|
|
38
|
+
//# sourceMappingURL=issue-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-search.d.ts","sourceRoot":"","sources":["../src/issue-search.ts"],"names":[],"mappings":"AAaA,gGAAgG;AAChG,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,oDAAoD;AACpD,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,+FAA+F;AAC/F,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CACrD;AAED,qGAAqG;AACrG,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAclC;AAED;oGACoG;AACpG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAkBxE;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAElC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search a workspace's issues (DHK-1179), so the workspace-MCP `search_issues` tool can answer "is this
|
|
3
|
+
* already filed?" against the whole backlog rather than just the run's issue graph. This is the read
|
|
4
|
+
* that makes duplicate detection and backlog search work.
|
|
5
|
+
*
|
|
6
|
+
* Deliberately a bounded projection, NOT the raw SDK object: identifier, title, url and the state name,
|
|
7
|
+
* so nothing unexpected rides back to the agent. The `IssueSearchSource` seam keeps the assembly pure
|
|
8
|
+
* and unit-testable: the live source (`linearIssueSearchSource`) speaks GraphQL over
|
|
9
|
+
* `client.searchIssues` (the non-deprecated endpoint; `issueSearch` is deprecated), while tests inject
|
|
10
|
+
* a fake.
|
|
11
|
+
*/
|
|
12
|
+
import { LinearClient } from "@linear/sdk";
|
|
13
|
+
/** How many hits ride back. Beyond this the result stops being a summary; matches the eager caps. */
|
|
14
|
+
export const MAX_SEARCH_RESULTS = 50;
|
|
15
|
+
/**
|
|
16
|
+
* Collect the workspace's issues matching a term from a source: drop hits with no identifier, de-dupe
|
|
17
|
+
* by identifier (keep the first, which is Linear's own relevance order), normalise, and cap. Pure of
|
|
18
|
+
* any network - the source does the I/O.
|
|
19
|
+
*/
|
|
20
|
+
export async function collectSearchResults(source, term) {
|
|
21
|
+
const byKey = new Map();
|
|
22
|
+
for (const hit of await source.searchIssues(term)) {
|
|
23
|
+
const identifier = hit.identifier?.trim();
|
|
24
|
+
if (!identifier || byKey.has(identifier))
|
|
25
|
+
continue;
|
|
26
|
+
byKey.set(identifier, {
|
|
27
|
+
identifier,
|
|
28
|
+
title: (hit.title ?? "").trim() || "Untitled issue",
|
|
29
|
+
url: hit.url ?? "",
|
|
30
|
+
...(hit.stateName?.trim() ? { state: hit.stateName.trim() } : {}),
|
|
31
|
+
});
|
|
32
|
+
if (byKey.size >= MAX_SEARCH_RESULTS)
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
return [...byKey.values()];
|
|
36
|
+
}
|
|
37
|
+
/** The live `IssueSearchSource`, backed by a Linear bearer token. Uses the typed SDK's
|
|
38
|
+
* `searchIssues(term, {first})`; the per-hit `state` is a lazy reference resolved for its name. */
|
|
39
|
+
export function linearIssueSearchSource(token) {
|
|
40
|
+
const client = new LinearClient({ accessToken: token });
|
|
41
|
+
return {
|
|
42
|
+
async searchIssues(term) {
|
|
43
|
+
const payload = await client.searchIssues(term, { first: MAX_SEARCH_RESULTS });
|
|
44
|
+
return Promise.all(payload.nodes.map(async (node) => {
|
|
45
|
+
const state = await node.state;
|
|
46
|
+
return {
|
|
47
|
+
...(node.identifier ? { identifier: node.identifier } : {}),
|
|
48
|
+
...(node.title ? { title: node.title } : {}),
|
|
49
|
+
...(node.url ? { url: node.url } : {}),
|
|
50
|
+
...(state?.name ? { stateName: state.name } : {}),
|
|
51
|
+
};
|
|
52
|
+
}));
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Search the workspace's issues as bounded projections, ready for the workspace-MCP `search_issues`
|
|
58
|
+
* tool. The single entry point the hub wires. A hard failure (auth, network) propagates so the caller
|
|
59
|
+
* can surface it as a tool error.
|
|
60
|
+
*/
|
|
61
|
+
export async function fetchSearchIssues(token, term) {
|
|
62
|
+
return collectSearchResults(linearIssueSearchSource(token), term);
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=issue-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-search.js","sourceRoot":"","sources":["../src/issue-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAyB3C,qGAAqG;AACrG,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAyB,EACzB,IAAY;IAEZ,MAAM,KAAK,GAAG,IAAI,GAAG,EAAiC,CAAC;IACvD,KAAK,MAAM,GAAG,IAAI,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,SAAS;QACnD,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE;YACpB,UAAU;YACV,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,gBAAgB;YACnD,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE;YAClB,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,IAAI,IAAI,kBAAkB;YAAE,MAAM;IAC9C,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED;oGACoG;AACpG,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,OAAO;QACL,KAAK,CAAC,YAAY,CAAC,IAAI;YACrB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC/E,OAAO,OAAO,CAAC,GAAG,CAChB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC/B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC;gBAC/B,OAAO;oBACL,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3D,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5C,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC3B,CAAC;YAC3B,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAa,EACb,IAAY;IAEZ,OAAO,oBAAoB,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/** The result of a workspace `createIssue`: the issue's internal id plus its human identifier and url. */
|
|
2
|
+
export interface WorkspaceCreateIssueResult {
|
|
3
|
+
issueId: string;
|
|
4
|
+
identifier: string;
|
|
5
|
+
url: string;
|
|
6
|
+
}
|
|
7
|
+
/** The narrow Linear write surface (DHK-1181). Ids (`issue`/`relatedIssue`) accept a human identifier
|
|
8
|
+
* (e.g. `DHK-1181`) or a uuid: Linear's mutations resolve both. */
|
|
9
|
+
export interface WorkspaceWriteApi {
|
|
10
|
+
/** Create an issue in `teamKey` (optionally under `projectName`, optionally carrying `labels` by name,
|
|
11
|
+
* get-or-created), returning its internal id, human identifier and url. */
|
|
12
|
+
createIssue(input: {
|
|
13
|
+
teamKey: string;
|
|
14
|
+
projectName?: string;
|
|
15
|
+
title: string;
|
|
16
|
+
description: string;
|
|
17
|
+
labels?: string[];
|
|
18
|
+
}): Promise<WorkspaceCreateIssueResult>;
|
|
19
|
+
/** Set a blocking relation between two issues. `blocks` records `issue` blocks `relatedIssue`;
|
|
20
|
+
* `blocked_by` records `issue` is blocked by `relatedIssue` (the same edge, direction swapped). */
|
|
21
|
+
relateIssues(input: {
|
|
22
|
+
issue: string;
|
|
23
|
+
relatedIssue: string;
|
|
24
|
+
relation: "blocks" | "blocked_by";
|
|
25
|
+
}): Promise<void>;
|
|
26
|
+
/** Add a label by NAME to an issue (get-or-create the label, then attach it). Idempotent. */
|
|
27
|
+
addLabel(input: {
|
|
28
|
+
issue: string;
|
|
29
|
+
name: string;
|
|
30
|
+
}): Promise<void>;
|
|
31
|
+
/** Comment on an issue, returning the created comment's id. */
|
|
32
|
+
commentOnIssue(input: {
|
|
33
|
+
issue: string;
|
|
34
|
+
body: string;
|
|
35
|
+
}): Promise<{
|
|
36
|
+
commentId: string;
|
|
37
|
+
}>;
|
|
38
|
+
}
|
|
39
|
+
/** The live {@link WorkspaceWriteApi} backed by a tenant connection token (API key or OAuth token). */
|
|
40
|
+
export declare function linearWorkspaceWriteApi(token: string): WorkspaceWriteApi;
|
|
41
|
+
//# sourceMappingURL=issue-write.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-write.d.ts","sourceRoot":"","sources":["../src/issue-write.ts"],"names":[],"mappings":"AAWA,0GAA0G;AAC1G,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;oEACoE;AACpE,MAAM,WAAW,iBAAiB;IAChC;gFAC4E;IAC5E,WAAW,CAAC,KAAK,EAAE;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACxC;wGACoG;IACpG,YAAY,CAAC,KAAK,EAAE;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAAC;KACnC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB,6FAA6F;IAC7F,QAAQ,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,+DAA+D;IAC/D,cAAc,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxF;AAcD,uGAAuG;AACvG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAiDxE"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The workspace MCP's narrow Linear WRITE surface (DHK-1181): create an issue, relate two issues, add a
|
|
3
|
+
* label, comment on an issue. Deliberately small - no delete, no state transition, no assignment - and
|
|
4
|
+
* backed by a CUSTOMER connection token, resolved hub-side, never a node's. A live `@linear/sdk` adapter
|
|
5
|
+
* in the shape of {@link linearCaptureApi}/{@link linearTriageApi}: the hub injects it as the workspace
|
|
6
|
+
* MCP's write closures, and the server tests exercise its shape through injected fakes, so it carries no
|
|
7
|
+
* unit tests of its own.
|
|
8
|
+
*/
|
|
9
|
+
import { IssueRelationType, LinearClient } from "@linear/sdk";
|
|
10
|
+
import { linearClientAuth } from "./issues.js";
|
|
11
|
+
/** Get-or-create a label id by name (the same idempotent logic the session client's `addIssueLabel`
|
|
12
|
+
* uses): page the workspace labels, match by name, else create one. Returns undefined only when the
|
|
13
|
+
* create returned no label (a Linear anomaly), in which case the caller skips the attach. */
|
|
14
|
+
async function resolveLabelId(client, name) {
|
|
15
|
+
const labels = await client.issueLabels();
|
|
16
|
+
while (labels.pageInfo.hasNextPage)
|
|
17
|
+
await labels.fetchNext();
|
|
18
|
+
const existing = labels.nodes.find((l) => l.name === name)?.id;
|
|
19
|
+
if (existing)
|
|
20
|
+
return existing;
|
|
21
|
+
const created = await client.createIssueLabel({ name });
|
|
22
|
+
return (await created.issueLabel)?.id;
|
|
23
|
+
}
|
|
24
|
+
/** The live {@link WorkspaceWriteApi} backed by a tenant connection token (API key or OAuth token). */
|
|
25
|
+
export function linearWorkspaceWriteApi(token) {
|
|
26
|
+
const client = new LinearClient(linearClientAuth(token));
|
|
27
|
+
return {
|
|
28
|
+
async createIssue(input) {
|
|
29
|
+
const team = (await client.teams({ filter: { key: { eq: input.teamKey } } })).nodes[0];
|
|
30
|
+
if (!team)
|
|
31
|
+
throw new Error(`workspace write: team not found: ${input.teamKey}`);
|
|
32
|
+
let projectId;
|
|
33
|
+
if (input.projectName) {
|
|
34
|
+
projectId = (await client.projects({ filter: { name: { eq: input.projectName } } })).nodes[0]?.id;
|
|
35
|
+
}
|
|
36
|
+
// Resolve label names to ids (get-or-create) so the issue is created already carrying them, rather
|
|
37
|
+
// than a create-then-attach round-trip per label.
|
|
38
|
+
const labelIds = [];
|
|
39
|
+
for (const name of input.labels ?? []) {
|
|
40
|
+
const id = await resolveLabelId(client, name);
|
|
41
|
+
if (id)
|
|
42
|
+
labelIds.push(id);
|
|
43
|
+
}
|
|
44
|
+
const payload = await client.createIssue({
|
|
45
|
+
teamId: team.id,
|
|
46
|
+
title: input.title,
|
|
47
|
+
description: input.description,
|
|
48
|
+
...(projectId ? { projectId } : {}),
|
|
49
|
+
...(labelIds.length > 0 ? { labelIds } : {}),
|
|
50
|
+
});
|
|
51
|
+
const issue = await payload.issue;
|
|
52
|
+
return { issueId: issue?.id ?? "", identifier: issue?.identifier ?? "", url: issue?.url ?? "" };
|
|
53
|
+
},
|
|
54
|
+
async relateIssues(input) {
|
|
55
|
+
// `blocks` sets issue -> relatedIssue; `blocked_by` is the same Blocks edge with the endpoints
|
|
56
|
+
// swapped, so `issue` ends up blocked by `relatedIssue`.
|
|
57
|
+
const [issueId, relatedIssueId] = input.relation === "blocked_by"
|
|
58
|
+
? [input.relatedIssue, input.issue]
|
|
59
|
+
: [input.issue, input.relatedIssue];
|
|
60
|
+
await client.createIssueRelation({ issueId, relatedIssueId, type: IssueRelationType.Blocks });
|
|
61
|
+
},
|
|
62
|
+
async addLabel(input) {
|
|
63
|
+
const labelId = await resolveLabelId(client, input.name);
|
|
64
|
+
if (labelId)
|
|
65
|
+
await client.issueAddLabel(input.issue, labelId);
|
|
66
|
+
},
|
|
67
|
+
async commentOnIssue(input) {
|
|
68
|
+
const payload = await client.createComment({ issueId: input.issue, body: input.body });
|
|
69
|
+
const comment = await payload.comment;
|
|
70
|
+
return { commentId: comment?.id ?? "" };
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=issue-write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-write.js","sourceRoot":"","sources":["../src/issue-write.ts"],"names":[],"mappings":"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"}
|
package/dist/labels.d.ts
CHANGED
|
@@ -20,6 +20,18 @@ export interface ProvisionOptions {
|
|
|
20
20
|
/** Build the description for each created child label. */
|
|
21
21
|
describe?: (name: string) => string;
|
|
22
22
|
}
|
|
23
|
+
/** One workspace issue label, reduced to `{name,id}` for the workspace-MCP `list_labels` read. */
|
|
24
|
+
export interface WorkspaceLabel {
|
|
25
|
+
name: string;
|
|
26
|
+
id: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* List the workspace's issue labels via the `LabelApi` seam, normalised to `{name,id}` and sorted by
|
|
30
|
+
* name so a stage sees a stable, deterministic order. A thin deterministic transform over the existing
|
|
31
|
+
* name -> id map `listLabels` already returns - no control flow, no network - so it feeds the
|
|
32
|
+
* workspace-MCP `list_labels` tool directly.
|
|
33
|
+
*/
|
|
34
|
+
export declare function listWorkspaceLabels(api: LabelApi): Promise<WorkspaceLabel[]>;
|
|
23
35
|
/**
|
|
24
36
|
* Idempotently create any missing labels via the `LabelApi` seam. Pre-existing labels (by name) are
|
|
25
37
|
* left untouched; the group, if named, is created once and reused. Returns the names actually created,
|
package/dist/labels.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../src/labels.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,QAAQ;IACvB,qDAAqD;IACrD,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,yDAAyD;IACzD,WAAW,CAAC,KAAK,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iGAAiG;IACjG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACrC;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC,CA0BnB;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB;AAED;;mGAEmG;AACnG,eAAO,MAAM,gBAAgB,SAAS,CAAC;AAEvC;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC3B,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,CAOnB;AAED;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAOnG;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK1F;AAED;;8EAE8E;AAC9E,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEvE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAc9F;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAsBtD;AAED;;mDAEmD;AACnD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAsBvD"}
|
|
1
|
+
{"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../src/labels.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,QAAQ;IACvB,qDAAqD;IACrD,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,yDAAyD;IACzD,WAAW,CAAC,KAAK,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iGAAiG;IACjG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACrC;AAED,kGAAkG;AAClG,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAKlF;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC,CA0BnB;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB;AAED;;mGAEmG;AACnG,eAAO,MAAM,gBAAgB,SAAS,CAAC;AAEvC;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC3B,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,CAOnB;AAED;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAOnG;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK1F;AAED;;8EAE8E;AAC9E,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEvE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAc9F;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAsBtD;AAED;;mDAEmD;AACnD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAsBvD"}
|
package/dist/labels.js
CHANGED
|
@@ -10,6 +10,18 @@
|
|
|
10
10
|
* the hub's own credential, not a node's.
|
|
11
11
|
*/
|
|
12
12
|
import { LinearClient } from "@linear/sdk";
|
|
13
|
+
/**
|
|
14
|
+
* List the workspace's issue labels via the `LabelApi` seam, normalised to `{name,id}` and sorted by
|
|
15
|
+
* name so a stage sees a stable, deterministic order. A thin deterministic transform over the existing
|
|
16
|
+
* name -> id map `listLabels` already returns - no control flow, no network - so it feeds the
|
|
17
|
+
* workspace-MCP `list_labels` tool directly.
|
|
18
|
+
*/
|
|
19
|
+
export async function listWorkspaceLabels(api) {
|
|
20
|
+
const map = await api.listLabels();
|
|
21
|
+
return [...map.entries()]
|
|
22
|
+
.map(([name, id]) => ({ name, id }))
|
|
23
|
+
.sort((a, b) => a.name.localeCompare(b.name));
|
|
24
|
+
}
|
|
13
25
|
/**
|
|
14
26
|
* Idempotently create any missing labels via the `LabelApi` seam. Pre-existing labels (by name) are
|
|
15
27
|
* left untouched; the group, if named, is created once and reused. Returns the names actually created,
|
package/dist/labels.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labels.js","sourceRoot":"","sources":["../src/labels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"labels.js","sourceRoot":"","sources":["../src/labels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** A workspace project, reduced to what a picker or duplicate check needs. */
|
|
2
|
+
export interface Project {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
/** The project's status name (e.g. "In Progress"), when set. */
|
|
6
|
+
state?: string;
|
|
7
|
+
/** The project's Linear URL, when set. */
|
|
8
|
+
url?: string;
|
|
9
|
+
}
|
|
10
|
+
/** The injectable seam: list the workspace's projects. */
|
|
11
|
+
export interface ProjectsApi {
|
|
12
|
+
listProjects(): Promise<Project[]>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* List the workspace's projects via the `ProjectsApi` seam, normalised to `{id,name,state?,url?}` and
|
|
16
|
+
* sorted by name so a stage sees a stable, deterministic order. Absent optional fields are omitted
|
|
17
|
+
* rather than emitted as `undefined`. A thin deterministic transform - no control flow, no network.
|
|
18
|
+
*/
|
|
19
|
+
export declare function listWorkspaceProjects(api: ProjectsApi): Promise<Project[]>;
|
|
20
|
+
/** The live `ProjectsApi` backed by a Linear bearer token (workspace-scoped projects). Paginates
|
|
21
|
+
* `client.projects()` exactly as `linearTeamsApi` paginates `teams()`. */
|
|
22
|
+
export declare function linearProjectsApi(token: string): ProjectsApi;
|
|
23
|
+
/**
|
|
24
|
+
* Fetch the workspace's projects as `Project`s, ready for the workspace-MCP `list_projects` tool. The
|
|
25
|
+
* single entry point the hub wires. A hard failure (auth, network) propagates so the caller can surface
|
|
26
|
+
* it as a tool error.
|
|
27
|
+
*/
|
|
28
|
+
export declare function fetchWorkspaceProjects(token: string): Promise<Project[]>;
|
|
29
|
+
//# sourceMappingURL=projects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../src/projects.ts"],"names":[],"mappings":"AASA,8EAA8E;AAC9E,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,0DAA0D;AAC1D,MAAM,WAAW,WAAW;IAC1B,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAUhF;AAED;2EAC2E;AAC3E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAc5D;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAE9E"}
|
package/dist/projects.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace-project listing (DHK-1179). The workspace-MCP `list_projects` read lets a stage match a
|
|
3
|
+
* captured idea to a live project, which is the step that decides whether an idea becomes new tickets
|
|
4
|
+
* or points at existing work. The `ProjectsApi` seam keeps this pure and unit-testable: the live
|
|
5
|
+
* adapter (`linearProjectsApi`) wraps `@linear/sdk` and paginates `client.projects()`, while tests
|
|
6
|
+
* inject a fake - mirroring `TeamsApi`.
|
|
7
|
+
*/
|
|
8
|
+
import { LinearClient } from "@linear/sdk";
|
|
9
|
+
/**
|
|
10
|
+
* List the workspace's projects via the `ProjectsApi` seam, normalised to `{id,name,state?,url?}` and
|
|
11
|
+
* sorted by name so a stage sees a stable, deterministic order. Absent optional fields are omitted
|
|
12
|
+
* rather than emitted as `undefined`. A thin deterministic transform - no control flow, no network.
|
|
13
|
+
*/
|
|
14
|
+
export async function listWorkspaceProjects(api) {
|
|
15
|
+
const projects = await api.listProjects();
|
|
16
|
+
return projects
|
|
17
|
+
.map((p) => ({
|
|
18
|
+
id: p.id,
|
|
19
|
+
name: p.name,
|
|
20
|
+
...(p.state ? { state: p.state } : {}),
|
|
21
|
+
...(p.url ? { url: p.url } : {}),
|
|
22
|
+
}))
|
|
23
|
+
.sort((a, b) => a.name.localeCompare(b.name));
|
|
24
|
+
}
|
|
25
|
+
/** The live `ProjectsApi` backed by a Linear bearer token (workspace-scoped projects). Paginates
|
|
26
|
+
* `client.projects()` exactly as `linearTeamsApi` paginates `teams()`. */
|
|
27
|
+
export function linearProjectsApi(token) {
|
|
28
|
+
const client = new LinearClient({ accessToken: token });
|
|
29
|
+
return {
|
|
30
|
+
async listProjects() {
|
|
31
|
+
const conn = await client.projects();
|
|
32
|
+
while (conn.pageInfo.hasNextPage)
|
|
33
|
+
await conn.fetchNext();
|
|
34
|
+
return conn.nodes.map((p) => ({
|
|
35
|
+
id: p.id,
|
|
36
|
+
name: p.name,
|
|
37
|
+
...(p.state ? { state: p.state } : {}),
|
|
38
|
+
...(p.url ? { url: p.url } : {}),
|
|
39
|
+
}));
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Fetch the workspace's projects as `Project`s, ready for the workspace-MCP `list_projects` tool. The
|
|
45
|
+
* single entry point the hub wires. A hard failure (auth, network) propagates so the caller can surface
|
|
46
|
+
* it as a tool error.
|
|
47
|
+
*/
|
|
48
|
+
export async function fetchWorkspaceProjects(token) {
|
|
49
|
+
return listWorkspaceProjects(linearProjectsApi(token));
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../src/projects.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiB3C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAgB;IAC1D,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC;IAC1C,OAAO,QAAQ;SACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjC,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;2EAC2E;AAC3E,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,OAAO;QACL,KAAK,CAAC,YAAY;YAChB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW;gBAAE,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACzD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC5B,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjC,CAAC,CAAC,CAAC;QACN,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAAa;IACxD,OAAO,qBAAqB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dahrk/linear",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "The Linear Agent Session API client and webhook verification. The native control surface: activities, agent-plan checklist, elicitation gates, prompted-drive, stop signal, externalUrls.",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@linear/sdk": "^86.0.0",
|
|
26
|
-
"@dahrk/contracts": "0.
|
|
26
|
+
"@dahrk/contracts": "0.35.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"tsx": "^4.19.0"
|
package/src/documents.ts
CHANGED
|
@@ -112,6 +112,20 @@ export async function collectAttachedDocuments(
|
|
|
112
112
|
return out;
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
+
/**
|
|
116
|
+
* Collect ONE document by its id or slug from a source, normalised to the contract shape. Returns null
|
|
117
|
+
* when the document does not resolve or carries no usable body - reusing the same `toAttached`
|
|
118
|
+
* normalisation the multi-document path uses, so a single read and a bulk read agree on shape. Pure of
|
|
119
|
+
* any network: the source does the I/O. The workspace-MCP `get_document` tool's assembly.
|
|
120
|
+
*/
|
|
121
|
+
export async function collectDocument(
|
|
122
|
+
source: DocumentSource,
|
|
123
|
+
idOrSlug: string,
|
|
124
|
+
): Promise<AttachedDocument | null> {
|
|
125
|
+
const doc = await source.documentBySlug(idOrSlug);
|
|
126
|
+
return doc ? toAttached(doc) : null;
|
|
127
|
+
}
|
|
128
|
+
|
|
115
129
|
/** The live `DocumentSource`, backed by a Linear bearer token. Uses the typed SDK. */
|
|
116
130
|
export function linearDocumentSource(token: string): DocumentSource {
|
|
117
131
|
const client = new LinearClient({ accessToken: token });
|
|
@@ -160,3 +174,16 @@ export async function fetchAttachedDocuments(
|
|
|
160
174
|
): Promise<AttachedDocument[]> {
|
|
161
175
|
return collectAttachedDocuments(linearDocumentSource(token), issueId);
|
|
162
176
|
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Fetch ONE Linear document by its id or slug as a contract `AttachedDocument`, ready for the
|
|
180
|
+
* workspace-MCP `get_document` tool. `client.document(idOrSlug)` accepts either. Returns null when the
|
|
181
|
+
* document does not resolve or has no body. A hard failure (auth, network) propagates so the caller can
|
|
182
|
+
* surface it as a tool error.
|
|
183
|
+
*/
|
|
184
|
+
export async function fetchDocument(
|
|
185
|
+
token: string,
|
|
186
|
+
idOrSlug: string,
|
|
187
|
+
): Promise<AttachedDocument | null> {
|
|
188
|
+
return collectDocument(linearDocumentSource(token), idOrSlug);
|
|
189
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -572,6 +572,7 @@ export {
|
|
|
572
572
|
provisionLabels,
|
|
573
573
|
provisionWorkflowLabels,
|
|
574
574
|
provisionRepoLabels,
|
|
575
|
+
listWorkspaceLabels,
|
|
575
576
|
linearLabelApi,
|
|
576
577
|
projectLabelApi,
|
|
577
578
|
fetchIssueProjectRepoLabels,
|
|
@@ -580,14 +581,27 @@ export {
|
|
|
580
581
|
isBlockerSettled,
|
|
581
582
|
REPO_LABEL_GROUP,
|
|
582
583
|
} from "./labels.js";
|
|
583
|
-
export type { LabelApi, ProvisionOptions, OpenBlocker } from "./labels.js";
|
|
584
|
+
export type { LabelApi, ProvisionOptions, OpenBlocker, WorkspaceLabel } from "./labels.js";
|
|
584
585
|
export { linearTeamsApi, listWorkspaceTeams } from "./teams.js";
|
|
585
586
|
export type { Team, TeamsApi } from "./teams.js";
|
|
587
|
+
export { linearProjectsApi, listWorkspaceProjects, fetchWorkspaceProjects } from "./projects.js";
|
|
588
|
+
export type { Project, ProjectsApi } from "./projects.js";
|
|
589
|
+
export {
|
|
590
|
+
fetchSearchIssues,
|
|
591
|
+
collectSearchResults,
|
|
592
|
+
linearIssueSearchSource,
|
|
593
|
+
MAX_SEARCH_RESULTS,
|
|
594
|
+
} from "./issue-search.js";
|
|
595
|
+
export type { IssueSearchSource, RawSearchHit, IssueSearchProjection } from "./issue-search.js";
|
|
586
596
|
export { linearTriageApi, linearClientAuth, linearCaptureApi } from "./issues.js";
|
|
587
597
|
export type { TriageApi, CaptureLinearApi, CaptureIssueResult } from "./issues.js";
|
|
598
|
+
export { linearWorkspaceWriteApi } from "./issue-write.js";
|
|
599
|
+
export type { WorkspaceWriteApi, WorkspaceCreateIssueResult } from "./issue-write.js";
|
|
588
600
|
export {
|
|
589
601
|
fetchAttachedDocuments,
|
|
602
|
+
fetchDocument,
|
|
590
603
|
collectAttachedDocuments,
|
|
604
|
+
collectDocument,
|
|
591
605
|
linearDocumentSource,
|
|
592
606
|
documentSlugFromUrl,
|
|
593
607
|
documentSlug,
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search a workspace's issues (DHK-1179), so the workspace-MCP `search_issues` tool can answer "is this
|
|
3
|
+
* already filed?" against the whole backlog rather than just the run's issue graph. This is the read
|
|
4
|
+
* that makes duplicate detection and backlog search work.
|
|
5
|
+
*
|
|
6
|
+
* Deliberately a bounded projection, NOT the raw SDK object: identifier, title, url and the state name,
|
|
7
|
+
* so nothing unexpected rides back to the agent. The `IssueSearchSource` seam keeps the assembly pure
|
|
8
|
+
* and unit-testable: the live source (`linearIssueSearchSource`) speaks GraphQL over
|
|
9
|
+
* `client.searchIssues` (the non-deprecated endpoint; `issueSearch` is deprecated), while tests inject
|
|
10
|
+
* a fake.
|
|
11
|
+
*/
|
|
12
|
+
import { LinearClient } from "@linear/sdk";
|
|
13
|
+
|
|
14
|
+
/** A search hit as returned by Linear before normalisation, with its state already resolved. */
|
|
15
|
+
export interface RawSearchHit {
|
|
16
|
+
identifier?: string;
|
|
17
|
+
title?: string;
|
|
18
|
+
url?: string;
|
|
19
|
+
stateName?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** A bounded projection of one issue-search hit. */
|
|
23
|
+
export interface IssueSearchProjection {
|
|
24
|
+
identifier: string;
|
|
25
|
+
title: string;
|
|
26
|
+
url: string;
|
|
27
|
+
/** The workflow state's display name, when resolved. */
|
|
28
|
+
state?: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** The read seam the assembly depends on; the live impl wraps GraphQL, tests inject a fake. */
|
|
32
|
+
export interface IssueSearchSource {
|
|
33
|
+
/** The issues matching `term`, in whatever order Linear returns them. */
|
|
34
|
+
searchIssues(term: string): Promise<RawSearchHit[]>;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** How many hits ride back. Beyond this the result stops being a summary; matches the eager caps. */
|
|
38
|
+
export const MAX_SEARCH_RESULTS = 50;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Collect the workspace's issues matching a term from a source: drop hits with no identifier, de-dupe
|
|
42
|
+
* by identifier (keep the first, which is Linear's own relevance order), normalise, and cap. Pure of
|
|
43
|
+
* any network - the source does the I/O.
|
|
44
|
+
*/
|
|
45
|
+
export async function collectSearchResults(
|
|
46
|
+
source: IssueSearchSource,
|
|
47
|
+
term: string,
|
|
48
|
+
): Promise<IssueSearchProjection[]> {
|
|
49
|
+
const byKey = new Map<string, IssueSearchProjection>();
|
|
50
|
+
for (const hit of await source.searchIssues(term)) {
|
|
51
|
+
const identifier = hit.identifier?.trim();
|
|
52
|
+
if (!identifier || byKey.has(identifier)) continue;
|
|
53
|
+
byKey.set(identifier, {
|
|
54
|
+
identifier,
|
|
55
|
+
title: (hit.title ?? "").trim() || "Untitled issue",
|
|
56
|
+
url: hit.url ?? "",
|
|
57
|
+
...(hit.stateName?.trim() ? { state: hit.stateName.trim() } : {}),
|
|
58
|
+
});
|
|
59
|
+
if (byKey.size >= MAX_SEARCH_RESULTS) break;
|
|
60
|
+
}
|
|
61
|
+
return [...byKey.values()];
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** The live `IssueSearchSource`, backed by a Linear bearer token. Uses the typed SDK's
|
|
65
|
+
* `searchIssues(term, {first})`; the per-hit `state` is a lazy reference resolved for its name. */
|
|
66
|
+
export function linearIssueSearchSource(token: string): IssueSearchSource {
|
|
67
|
+
const client = new LinearClient({ accessToken: token });
|
|
68
|
+
return {
|
|
69
|
+
async searchIssues(term) {
|
|
70
|
+
const payload = await client.searchIssues(term, { first: MAX_SEARCH_RESULTS });
|
|
71
|
+
return Promise.all(
|
|
72
|
+
payload.nodes.map(async (node) => {
|
|
73
|
+
const state = await node.state;
|
|
74
|
+
return {
|
|
75
|
+
...(node.identifier ? { identifier: node.identifier } : {}),
|
|
76
|
+
...(node.title ? { title: node.title } : {}),
|
|
77
|
+
...(node.url ? { url: node.url } : {}),
|
|
78
|
+
...(state?.name ? { stateName: state.name } : {}),
|
|
79
|
+
} satisfies RawSearchHit;
|
|
80
|
+
}),
|
|
81
|
+
);
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Search the workspace's issues as bounded projections, ready for the workspace-MCP `search_issues`
|
|
88
|
+
* tool. The single entry point the hub wires. A hard failure (auth, network) propagates so the caller
|
|
89
|
+
* can surface it as a tool error.
|
|
90
|
+
*/
|
|
91
|
+
export async function fetchSearchIssues(
|
|
92
|
+
token: string,
|
|
93
|
+
term: string,
|
|
94
|
+
): Promise<IssueSearchProjection[]> {
|
|
95
|
+
return collectSearchResults(linearIssueSearchSource(token), term);
|
|
96
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The workspace MCP's narrow Linear WRITE surface (DHK-1181): create an issue, relate two issues, add a
|
|
3
|
+
* label, comment on an issue. Deliberately small - no delete, no state transition, no assignment - and
|
|
4
|
+
* backed by a CUSTOMER connection token, resolved hub-side, never a node's. A live `@linear/sdk` adapter
|
|
5
|
+
* in the shape of {@link linearCaptureApi}/{@link linearTriageApi}: the hub injects it as the workspace
|
|
6
|
+
* MCP's write closures, and the server tests exercise its shape through injected fakes, so it carries no
|
|
7
|
+
* unit tests of its own.
|
|
8
|
+
*/
|
|
9
|
+
import { IssueRelationType, LinearClient } from "@linear/sdk";
|
|
10
|
+
import { linearClientAuth } from "./issues.js";
|
|
11
|
+
|
|
12
|
+
/** The result of a workspace `createIssue`: the issue's internal id plus its human identifier and url. */
|
|
13
|
+
export interface WorkspaceCreateIssueResult {
|
|
14
|
+
issueId: string;
|
|
15
|
+
identifier: string;
|
|
16
|
+
url: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** The narrow Linear write surface (DHK-1181). Ids (`issue`/`relatedIssue`) accept a human identifier
|
|
20
|
+
* (e.g. `DHK-1181`) or a uuid: Linear's mutations resolve both. */
|
|
21
|
+
export interface WorkspaceWriteApi {
|
|
22
|
+
/** Create an issue in `teamKey` (optionally under `projectName`, optionally carrying `labels` by name,
|
|
23
|
+
* get-or-created), returning its internal id, human identifier and url. */
|
|
24
|
+
createIssue(input: {
|
|
25
|
+
teamKey: string;
|
|
26
|
+
projectName?: string;
|
|
27
|
+
title: string;
|
|
28
|
+
description: string;
|
|
29
|
+
labels?: string[];
|
|
30
|
+
}): Promise<WorkspaceCreateIssueResult>;
|
|
31
|
+
/** Set a blocking relation between two issues. `blocks` records `issue` blocks `relatedIssue`;
|
|
32
|
+
* `blocked_by` records `issue` is blocked by `relatedIssue` (the same edge, direction swapped). */
|
|
33
|
+
relateIssues(input: {
|
|
34
|
+
issue: string;
|
|
35
|
+
relatedIssue: string;
|
|
36
|
+
relation: "blocks" | "blocked_by";
|
|
37
|
+
}): Promise<void>;
|
|
38
|
+
/** Add a label by NAME to an issue (get-or-create the label, then attach it). Idempotent. */
|
|
39
|
+
addLabel(input: { issue: string; name: string }): Promise<void>;
|
|
40
|
+
/** Comment on an issue, returning the created comment's id. */
|
|
41
|
+
commentOnIssue(input: { issue: string; body: string }): Promise<{ commentId: string }>;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** Get-or-create a label id by name (the same idempotent logic the session client's `addIssueLabel`
|
|
45
|
+
* uses): page the workspace labels, match by name, else create one. Returns undefined only when the
|
|
46
|
+
* create returned no label (a Linear anomaly), in which case the caller skips the attach. */
|
|
47
|
+
async function resolveLabelId(client: LinearClient, name: string): Promise<string | undefined> {
|
|
48
|
+
const labels = await client.issueLabels();
|
|
49
|
+
while (labels.pageInfo.hasNextPage) await labels.fetchNext();
|
|
50
|
+
const existing = labels.nodes.find((l) => l.name === name)?.id;
|
|
51
|
+
if (existing) return existing;
|
|
52
|
+
const created = await client.createIssueLabel({ name });
|
|
53
|
+
return (await created.issueLabel)?.id;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** The live {@link WorkspaceWriteApi} backed by a tenant connection token (API key or OAuth token). */
|
|
57
|
+
export function linearWorkspaceWriteApi(token: string): WorkspaceWriteApi {
|
|
58
|
+
const client = new LinearClient(linearClientAuth(token));
|
|
59
|
+
return {
|
|
60
|
+
async createIssue(input) {
|
|
61
|
+
const team = (await client.teams({ filter: { key: { eq: input.teamKey } } })).nodes[0];
|
|
62
|
+
if (!team) throw new Error(`workspace write: team not found: ${input.teamKey}`);
|
|
63
|
+
let projectId: string | undefined;
|
|
64
|
+
if (input.projectName) {
|
|
65
|
+
projectId = (await client.projects({ filter: { name: { eq: input.projectName } } })).nodes[0]?.id;
|
|
66
|
+
}
|
|
67
|
+
// Resolve label names to ids (get-or-create) so the issue is created already carrying them, rather
|
|
68
|
+
// than a create-then-attach round-trip per label.
|
|
69
|
+
const labelIds: string[] = [];
|
|
70
|
+
for (const name of input.labels ?? []) {
|
|
71
|
+
const id = await resolveLabelId(client, name);
|
|
72
|
+
if (id) labelIds.push(id);
|
|
73
|
+
}
|
|
74
|
+
const payload = await client.createIssue({
|
|
75
|
+
teamId: team.id,
|
|
76
|
+
title: input.title,
|
|
77
|
+
description: input.description,
|
|
78
|
+
...(projectId ? { projectId } : {}),
|
|
79
|
+
...(labelIds.length > 0 ? { labelIds } : {}),
|
|
80
|
+
});
|
|
81
|
+
const issue = await payload.issue;
|
|
82
|
+
return { issueId: issue?.id ?? "", identifier: issue?.identifier ?? "", url: issue?.url ?? "" };
|
|
83
|
+
},
|
|
84
|
+
|
|
85
|
+
async relateIssues(input) {
|
|
86
|
+
// `blocks` sets issue -> relatedIssue; `blocked_by` is the same Blocks edge with the endpoints
|
|
87
|
+
// swapped, so `issue` ends up blocked by `relatedIssue`.
|
|
88
|
+
const [issueId, relatedIssueId] =
|
|
89
|
+
input.relation === "blocked_by"
|
|
90
|
+
? [input.relatedIssue, input.issue]
|
|
91
|
+
: [input.issue, input.relatedIssue];
|
|
92
|
+
await client.createIssueRelation({ issueId, relatedIssueId, type: IssueRelationType.Blocks });
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
async addLabel(input) {
|
|
96
|
+
const labelId = await resolveLabelId(client, input.name);
|
|
97
|
+
if (labelId) await client.issueAddLabel(input.issue, labelId);
|
|
98
|
+
},
|
|
99
|
+
|
|
100
|
+
async commentOnIssue(input) {
|
|
101
|
+
const payload = await client.createComment({ issueId: input.issue, body: input.body });
|
|
102
|
+
const comment = await payload.comment;
|
|
103
|
+
return { commentId: comment?.id ?? "" };
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
package/src/labels.ts
CHANGED
|
@@ -35,6 +35,25 @@ export interface ProvisionOptions {
|
|
|
35
35
|
describe?: (name: string) => string;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
/** One workspace issue label, reduced to `{name,id}` for the workspace-MCP `list_labels` read. */
|
|
39
|
+
export interface WorkspaceLabel {
|
|
40
|
+
name: string;
|
|
41
|
+
id: string;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* List the workspace's issue labels via the `LabelApi` seam, normalised to `{name,id}` and sorted by
|
|
46
|
+
* name so a stage sees a stable, deterministic order. A thin deterministic transform over the existing
|
|
47
|
+
* name -> id map `listLabels` already returns - no control flow, no network - so it feeds the
|
|
48
|
+
* workspace-MCP `list_labels` tool directly.
|
|
49
|
+
*/
|
|
50
|
+
export async function listWorkspaceLabels(api: LabelApi): Promise<WorkspaceLabel[]> {
|
|
51
|
+
const map = await api.listLabels();
|
|
52
|
+
return [...map.entries()]
|
|
53
|
+
.map(([name, id]) => ({ name, id }))
|
|
54
|
+
.sort((a, b) => a.name.localeCompare(b.name));
|
|
55
|
+
}
|
|
56
|
+
|
|
38
57
|
/**
|
|
39
58
|
* Idempotently create any missing labels via the `LabelApi` seam. Pre-existing labels (by name) are
|
|
40
59
|
* left untouched; the group, if named, is created once and reused. Returns the names actually created,
|
package/src/projects.ts
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace-project listing (DHK-1179). The workspace-MCP `list_projects` read lets a stage match a
|
|
3
|
+
* captured idea to a live project, which is the step that decides whether an idea becomes new tickets
|
|
4
|
+
* or points at existing work. The `ProjectsApi` seam keeps this pure and unit-testable: the live
|
|
5
|
+
* adapter (`linearProjectsApi`) wraps `@linear/sdk` and paginates `client.projects()`, while tests
|
|
6
|
+
* inject a fake - mirroring `TeamsApi`.
|
|
7
|
+
*/
|
|
8
|
+
import { LinearClient } from "@linear/sdk";
|
|
9
|
+
|
|
10
|
+
/** A workspace project, reduced to what a picker or duplicate check needs. */
|
|
11
|
+
export interface Project {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
/** The project's status name (e.g. "In Progress"), when set. */
|
|
15
|
+
state?: string;
|
|
16
|
+
/** The project's Linear URL, when set. */
|
|
17
|
+
url?: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** The injectable seam: list the workspace's projects. */
|
|
21
|
+
export interface ProjectsApi {
|
|
22
|
+
listProjects(): Promise<Project[]>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* List the workspace's projects via the `ProjectsApi` seam, normalised to `{id,name,state?,url?}` and
|
|
27
|
+
* sorted by name so a stage sees a stable, deterministic order. Absent optional fields are omitted
|
|
28
|
+
* rather than emitted as `undefined`. A thin deterministic transform - no control flow, no network.
|
|
29
|
+
*/
|
|
30
|
+
export async function listWorkspaceProjects(api: ProjectsApi): Promise<Project[]> {
|
|
31
|
+
const projects = await api.listProjects();
|
|
32
|
+
return projects
|
|
33
|
+
.map((p) => ({
|
|
34
|
+
id: p.id,
|
|
35
|
+
name: p.name,
|
|
36
|
+
...(p.state ? { state: p.state } : {}),
|
|
37
|
+
...(p.url ? { url: p.url } : {}),
|
|
38
|
+
}))
|
|
39
|
+
.sort((a, b) => a.name.localeCompare(b.name));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** The live `ProjectsApi` backed by a Linear bearer token (workspace-scoped projects). Paginates
|
|
43
|
+
* `client.projects()` exactly as `linearTeamsApi` paginates `teams()`. */
|
|
44
|
+
export function linearProjectsApi(token: string): ProjectsApi {
|
|
45
|
+
const client = new LinearClient({ accessToken: token });
|
|
46
|
+
return {
|
|
47
|
+
async listProjects() {
|
|
48
|
+
const conn = await client.projects();
|
|
49
|
+
while (conn.pageInfo.hasNextPage) await conn.fetchNext();
|
|
50
|
+
return conn.nodes.map((p) => ({
|
|
51
|
+
id: p.id,
|
|
52
|
+
name: p.name,
|
|
53
|
+
...(p.state ? { state: p.state } : {}),
|
|
54
|
+
...(p.url ? { url: p.url } : {}),
|
|
55
|
+
}));
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Fetch the workspace's projects as `Project`s, ready for the workspace-MCP `list_projects` tool. The
|
|
62
|
+
* single entry point the hub wires. A hard failure (auth, network) propagates so the caller can surface
|
|
63
|
+
* it as a tool error.
|
|
64
|
+
*/
|
|
65
|
+
export async function fetchWorkspaceProjects(token: string): Promise<Project[]> {
|
|
66
|
+
return listWorkspaceProjects(linearProjectsApi(token));
|
|
67
|
+
}
|