@cat-factory/integrations 0.24.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/index.d.ts +10 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +11 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/modules/documents/ConfluenceProvider.d.ts +1 -1
  6. package/dist/modules/documents/GitHubDocsProvider.d.ts +1 -1
  7. package/dist/modules/documents/LinearDocumentProvider.d.ts +24 -0
  8. package/dist/modules/documents/LinearDocumentProvider.d.ts.map +1 -0
  9. package/dist/modules/documents/LinearDocumentProvider.js +38 -0
  10. package/dist/modules/documents/LinearDocumentProvider.js.map +1 -0
  11. package/dist/modules/documents/NotionProvider.d.ts +1 -1
  12. package/dist/modules/documents/linear-docs.logic.d.ts +35 -0
  13. package/dist/modules/documents/linear-docs.logic.d.ts.map +1 -0
  14. package/dist/modules/documents/linear-docs.logic.js +110 -0
  15. package/dist/modules/documents/linear-docs.logic.js.map +1 -0
  16. package/dist/modules/shared/linear.client.d.ts +75 -0
  17. package/dist/modules/shared/linear.client.d.ts.map +1 -0
  18. package/dist/modules/shared/linear.client.js +192 -0
  19. package/dist/modules/shared/linear.client.js.map +1 -0
  20. package/dist/modules/tasks/GitHubIssuesProvider.d.ts +1 -1
  21. package/dist/modules/tasks/JiraProvider.d.ts +1 -1
  22. package/dist/modules/tasks/LinearTaskProvider.d.ts +33 -0
  23. package/dist/modules/tasks/LinearTaskProvider.d.ts.map +1 -0
  24. package/dist/modules/tasks/LinearTaskProvider.js +99 -0
  25. package/dist/modules/tasks/LinearTaskProvider.js.map +1 -0
  26. package/dist/modules/tasks/linear.logic.d.ts +105 -0
  27. package/dist/modules/tasks/linear.logic.d.ts.map +1 -0
  28. package/dist/modules/tasks/linear.logic.js +176 -0
  29. package/dist/modules/tasks/linear.logic.js.map +1 -0
  30. package/dist/modules/tracker/TicketTrackerService.d.ts +13 -2
  31. package/dist/modules/tracker/TicketTrackerService.d.ts.map +1 -1
  32. package/dist/modules/tracker/TicketTrackerService.js +18 -0
  33. package/dist/modules/tracker/TicketTrackerService.js.map +1 -1
  34. package/dist/modules/tracker/linear.create.logic.d.ts +16 -0
  35. package/dist/modules/tracker/linear.create.logic.d.ts.map +1 -0
  36. package/dist/modules/tracker/linear.create.logic.js +34 -0
  37. package/dist/modules/tracker/linear.create.logic.js.map +1 -0
  38. package/dist/modules/tracker/linear.writeback.logic.d.ts +29 -0
  39. package/dist/modules/tracker/linear.writeback.logic.d.ts.map +1 -0
  40. package/dist/modules/tracker/linear.writeback.logic.js +47 -0
  41. package/dist/modules/tracker/linear.writeback.logic.js.map +1 -0
  42. package/dist/modules/writeback/IssueWritebackService.d.ts +24 -2
  43. package/dist/modules/writeback/IssueWritebackService.d.ts.map +1 -1
  44. package/dist/modules/writeback/IssueWritebackService.js +52 -0
  45. package/dist/modules/writeback/IssueWritebackService.js.map +1 -1
  46. package/package.json +3 -3
package/dist/index.d.ts CHANGED
@@ -21,6 +21,10 @@ export { GITHUB_DOCS_DESCRIPTOR } from './modules/documents/github-docs.logic.js
21
21
  export { ConfluenceProvider, ConfluenceApiError } from './modules/documents/ConfluenceProvider.js';
22
22
  export { NotionProvider, NotionApiError } from './modules/documents/NotionProvider.js';
23
23
  export { GitHubDocsProvider } from './modules/documents/GitHubDocsProvider.js';
24
+ export { LinearDocumentProvider } from './modules/documents/LinearDocumentProvider.js';
25
+ export * as linearDocsLogic from './modules/documents/linear-docs.logic.js';
26
+ export { LINEAR_DOCS_DESCRIPTOR } from './modules/documents/linear-docs.logic.js';
27
+ export { LinearGraphqlClient, LinearApiError, LINEAR_GRAPHQL_URL, linearAuthHeader, unwrapLinearData, type LinearAuth, type LinearFetchLike, } from './modules/shared/linear.client.js';
24
28
  export { TaskConnectionService, type TaskConnectionServiceDependencies, } from './modules/tasks/TaskConnectionService.js';
25
29
  export { TaskImportService, type TaskImportServiceDependencies, toSourceTask, } from './modules/tasks/TaskImportService.js';
26
30
  export { TaskLinkService, type TaskLinkServiceDependencies, } from './modules/tasks/TaskLinkService.js';
@@ -28,9 +32,14 @@ export { MapTaskSourceRegistry, type TaskContextView, renderTaskContext, buildTa
28
32
  export * as tasksLogic from './modules/tasks/tasks.logic.js';
29
33
  export * as jiraLogic from './modules/tasks/jira.logic.js';
30
34
  export { JIRA_DESCRIPTOR } from './modules/tasks/jira.logic.js';
31
- export { TicketTrackerService, type TicketTrackerServiceDependencies, type JiraConnection, type FetchLike, } from './modules/tracker/TicketTrackerService.js';
35
+ export * as linearTasksLogic from './modules/tasks/linear.logic.js';
36
+ export { LINEAR_TASK_DESCRIPTOR } from './modules/tasks/linear.logic.js';
37
+ export { LinearTaskProvider } from './modules/tasks/LinearTaskProvider.js';
38
+ export { TicketTrackerService, type TicketTrackerServiceDependencies, type JiraConnection, type LinearConnection, type FetchLike, } from './modules/tracker/TicketTrackerService.js';
32
39
  export * as jiraCreateLogic from './modules/tracker/jira.create.logic.js';
33
40
  export * as jiraWritebackLogic from './modules/tracker/jira.writeback.logic.js';
41
+ export * as linearCreateLogic from './modules/tracker/linear.create.logic.js';
42
+ export * as linearWritebackLogic from './modules/tracker/linear.writeback.logic.js';
34
43
  export { extractReferences, type ExtractedReferences } from './modules/corpus/references.logic.js';
35
44
  export { IssueWritebackService, type IssueWritebackServiceDependencies, } from './modules/writeback/IssueWritebackService.js';
36
45
  export { createGitHubIssueViaToken, type GitHubIssueTokenRequest, } from './modules/tracker/github.create.logic.js';
@@ -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
@@ -24,6 +24,12 @@ export { GITHUB_DOCS_DESCRIPTOR } from './modules/documents/github-docs.logic.js
24
24
  export { ConfluenceProvider, ConfluenceApiError } from './modules/documents/ConfluenceProvider.js';
25
25
  export { NotionProvider, NotionApiError } from './modules/documents/NotionProvider.js';
26
26
  export { GitHubDocsProvider } from './modules/documents/GitHubDocsProvider.js';
27
+ export { LinearDocumentProvider } from './modules/documents/LinearDocumentProvider.js';
28
+ export * as linearDocsLogic from './modules/documents/linear-docs.logic.js';
29
+ export { LINEAR_DOCS_DESCRIPTOR } from './modules/documents/linear-docs.logic.js';
30
+ // The shared Linear GraphQL transport (host-pinned, OAuth-ready) every Linear
31
+ // consumer — the document + task sources, ticket filing and PR writeback — uses.
32
+ export { LinearGraphqlClient, LinearApiError, LINEAR_GRAPHQL_URL, linearAuthHeader, unwrapLinearData, } from './modules/shared/linear.client.js';
27
33
  export { TaskConnectionService, } from './modules/tasks/TaskConnectionService.js';
28
34
  export { TaskImportService, toSourceTask, } from './modules/tasks/TaskImportService.js';
29
35
  export { TaskLinkService, } from './modules/tasks/TaskLinkService.js';
@@ -31,9 +37,14 @@ export { MapTaskSourceRegistry, renderTaskContext, buildTaskExcerpt, } from './m
31
37
  export * as tasksLogic from './modules/tasks/tasks.logic.js';
32
38
  export * as jiraLogic from './modules/tasks/jira.logic.js';
33
39
  export { JIRA_DESCRIPTOR } from './modules/tasks/jira.logic.js';
40
+ export * as linearTasksLogic from './modules/tasks/linear.logic.js';
41
+ export { LINEAR_TASK_DESCRIPTOR } from './modules/tasks/linear.logic.js';
42
+ export { LinearTaskProvider } from './modules/tasks/LinearTaskProvider.js';
34
43
  export { TicketTrackerService, } from './modules/tracker/TicketTrackerService.js';
35
44
  export * as jiraCreateLogic from './modules/tracker/jira.create.logic.js';
36
45
  export * as jiraWritebackLogic from './modules/tracker/jira.writeback.logic.js';
46
+ export * as linearCreateLogic from './modules/tracker/linear.create.logic.js';
47
+ export * as linearWritebackLogic from './modules/tracker/linear.writeback.logic.js';
37
48
  export { extractReferences } from './modules/corpus/references.logic.js';
38
49
  export { IssueWritebackService, } from './modules/writeback/IssueWritebackService.js';
39
50
  export { createGitHubIssueViaToken, } from './modules/tracker/github.create.logic.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ export declare class ConfluenceApiError extends Error {
7
7
  export declare class ConfluenceProvider implements DocumentSourceProvider {
8
8
  readonly kind: 'confluence';
9
9
  readonly descriptor: {
10
- source: "confluence" | "github" | "notion";
10
+ source: "confluence" | "github" | "linear" | "notion";
11
11
  label: string;
12
12
  icon: string;
13
13
  credentialFields: {
@@ -8,7 +8,7 @@ export declare class GitHubDocsProvider implements DocumentSourceProvider {
8
8
  private readonly deps;
9
9
  readonly kind: 'github';
10
10
  readonly descriptor: {
11
- source: "confluence" | "github" | "notion";
11
+ source: "confluence" | "github" | "linear" | "notion";
12
12
  label: string;
13
13
  icon: string;
14
14
  credentialFields: {
@@ -0,0 +1,24 @@
1
+ import { type DocumentContent, type DocumentCredentials, type DocumentSearchResult, type DocumentSourceProvider, type NormalizedConnection } from '@cat-factory/kernel';
2
+ export declare class LinearDocumentProvider implements DocumentSourceProvider {
3
+ readonly kind: 'linear';
4
+ readonly descriptor: {
5
+ source: "confluence" | "github" | "linear" | "notion";
6
+ label: string;
7
+ icon: string;
8
+ credentialFields: {
9
+ key: string;
10
+ label: string;
11
+ help?: string | undefined;
12
+ placeholder?: string | undefined;
13
+ secret?: boolean | undefined;
14
+ }[];
15
+ refLabel: string;
16
+ refPlaceholder: string;
17
+ searchable?: boolean | undefined;
18
+ };
19
+ normalizeConnection(input: DocumentCredentials): NormalizedConnection;
20
+ parseRef(input: string): string | null;
21
+ fetchDocument(credentials: DocumentCredentials, externalId: string): Promise<DocumentContent>;
22
+ search(credentials: DocumentCredentials, query: string): Promise<DocumentSearchResult[]>;
23
+ }
24
+ //# sourceMappingURL=LinearDocumentProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinearDocumentProvider.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/LinearDocumentProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAA;AAsB5B,qBAAa,sBAAuB,YAAW,sBAAsB;IACnE,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAS;IACjC,QAAQ,CAAC,UAAU;;;;;;;;;;;;;;MAAyB;IAE5C,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CAMpE;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAErC;IAEK,aAAa,CACjB,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CAM1B;IAEK,MAAM,CAAC,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAO7F;CACF"}
@@ -0,0 +1,38 @@
1
+ import { ValidationError, } from '@cat-factory/kernel';
2
+ import { LinearGraphqlClient } from '../shared/linear.client.js';
3
+ import { LINEAR_DOCS_DESCRIPTOR, LINEAR_DOCUMENT_QUERY, LINEAR_DOCUMENTS_SEARCH_QUERY, mapLinearDocument, mapLinearDocumentSearch, parseLinearDocRef, } from './linear-docs.logic.js';
4
+ // LinearDocumentProvider: the document-source provider for Linear **Docs**. It
5
+ // authenticates with a personal API key against Linear's single GraphQL endpoint
6
+ // (via the shared host-pinned, redirect-safe client) and maps a document onto the
7
+ // generic Markdown {@link DocumentContent} the planner consumes. All Linear-specific
8
+ // pure logic (ref parsing, response mapping, the GraphQL documents) lives in
9
+ // `linear-docs.logic` so it is unit-testable; this class is the thin transport.
10
+ //
11
+ // Runtime-neutral: it depends only on the kernel ports + the shared client (global
12
+ // `fetch`, present on both runtimes), so the Cloudflare and Node facades compose
13
+ // the SAME class (see CLAUDE.md "Keep the runtimes symmetric").
14
+ export class LinearDocumentProvider {
15
+ kind = 'linear';
16
+ descriptor = LINEAR_DOCS_DESCRIPTOR;
17
+ normalizeConnection(input) {
18
+ const apiKey = input.apiKey?.trim();
19
+ if (!apiKey) {
20
+ throw new ValidationError('Linear requires a personal API key');
21
+ }
22
+ return { credentials: { apiKey }, label: 'Linear workspace' };
23
+ }
24
+ parseRef(input) {
25
+ return parseLinearDocRef(input);
26
+ }
27
+ async fetchDocument(credentials, externalId) {
28
+ const client = new LinearGraphqlClient({ apiKey: credentials.apiKey });
29
+ const data = await client.query(LINEAR_DOCUMENT_QUERY, { id: externalId });
30
+ return mapLinearDocument(data);
31
+ }
32
+ async search(credentials, query) {
33
+ const client = new LinearGraphqlClient({ apiKey: credentials.apiKey });
34
+ const data = await client.query(LINEAR_DOCUMENTS_SEARCH_QUERY, { term: query });
35
+ return mapLinearDocumentSearch(data);
36
+ }
37
+ }
38
+ //# sourceMappingURL=LinearDocumentProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinearDocumentProvider.js","sourceRoot":"","sources":["../../../src/modules/documents/LinearDocumentProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,GAMhB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,6BAA6B,EAC7B,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,wBAAwB,CAAA;AAE/B,+EAA+E;AAC/E,iFAAiF;AACjF,kFAAkF;AAClF,qFAAqF;AACrF,6EAA6E;AAC7E,gFAAgF;AAChF,EAAE;AACF,mFAAmF;AACnF,iFAAiF;AACjF,gEAAgE;AAEhE,MAAM,OAAO,sBAAsB;IACxB,IAAI,GAAG,QAAiB,CAAA;IACxB,UAAU,GAAG,sBAAsB,CAAA;IAE5C,mBAAmB,CAAC,KAA0B;QAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAA;QACnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,eAAe,CAAC,oCAAoC,CAAC,CAAA;QACjE,CAAC;QACD,OAAO,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAA;IAC/D,CAAC;IAED,QAAQ,CAAC,KAAa;QACpB,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,WAAgC,EAChC,UAAkB;QAElB,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAO,EAAE,CAAC,CAAA;QACvE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAE5B,qBAAqB,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;QAC7C,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,WAAgC,EAAE,KAAa;QAC1D,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAO,EAAE,CAAC,CAAA;QACvE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAC7B,6BAA6B,EAC7B,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAA;QACD,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;CACF"}
@@ -7,7 +7,7 @@ export declare class NotionApiError extends Error {
7
7
  export declare class NotionProvider implements DocumentSourceProvider {
8
8
  readonly kind: 'notion';
9
9
  readonly descriptor: {
10
- source: "confluence" | "github" | "notion";
10
+ source: "confluence" | "github" | "linear" | "notion";
11
11
  label: string;
12
12
  icon: string;
13
13
  credentialFields: {
@@ -0,0 +1,35 @@
1
+ import type { DocumentContent, DocumentSearchResult, DocumentSourceDescriptor } from '@cat-factory/kernel';
2
+ /** What the connect UI renders, and which credentials the provider needs. */
3
+ export declare const LINEAR_DOCS_DESCRIPTOR: DocumentSourceDescriptor;
4
+ /** Fetch a single document's title, URL and Markdown content. */
5
+ export declare const LINEAR_DOCUMENT_QUERY = "query Document($id: String!) {\n document(id: $id) { id title url content }\n}";
6
+ /** Search documents by title (used to populate the import picker). */
7
+ export declare const LINEAR_DOCUMENTS_SEARCH_QUERY = "query Documents($term: String!) {\n documents(first: 20, filter: { title: { containsIgnoreCase: $term } }) {\n nodes { id title url }\n }\n}";
8
+ interface LinearDocumentNode {
9
+ id?: string;
10
+ title?: string;
11
+ url?: string;
12
+ content?: string | null;
13
+ }
14
+ /**
15
+ * Resolve a Linear document id from raw user input: a bare id, or a
16
+ * `…/document/<slugId>` URL whose final path segment is the document's slug id
17
+ * (Linear embeds the document's slugId as the trailing segment — the value its
18
+ * `document(id:)` query accepts alongside the raw UUID). Returns the id, or null
19
+ * when nothing parses. Kept lenient (like Notion's ref parsing) — the
20
+ * `document(id:)` query is the final arbiter of whether the id resolves, so a
21
+ * bare UUID and a copied document URL both work.
22
+ */
23
+ export declare function parseLinearDocRef(input: string): string | null;
24
+ /** Map a `document` GraphQL payload onto the generic {@link DocumentContent}. */
25
+ export declare function mapLinearDocument(data: {
26
+ document?: LinearDocumentNode | null;
27
+ }): DocumentContent;
28
+ /** Map a `documents` search payload onto lean {@link DocumentSearchResult} hits. */
29
+ export declare function mapLinearDocumentSearch(data: {
30
+ documents?: {
31
+ nodes?: LinearDocumentNode[];
32
+ };
33
+ }): DocumentSearchResult[];
34
+ export {};
35
+ //# sourceMappingURL=linear-docs.logic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear-docs.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/documents/linear-docs.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,qBAAqB,CAAA;AAY5B,6EAA6E;AAC7E,eAAO,MAAM,sBAAsB,EAAE,wBAkBpC,CAAA;AAID,iEAAiE;AACjE,eAAO,MAAM,qBAAqB,oFAEhC,CAAA;AAEF,sEAAsE;AACtE,eAAO,MAAM,6BAA6B,sJAIxC,CAAA;AAEF,UAAU,kBAAkB;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmB9D;AAUD,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAA;CAAE,GAAG,eAAe,CASjG;AAED,oFAAoF;AACpF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,SAAS,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAA;KAAE,CAAA;CAC7C,GAAG,oBAAoB,EAAE,CAczB"}
@@ -0,0 +1,110 @@
1
+ // Linear-document pure logic, kept out of the provider so it is unit-testable
2
+ // without a live API: the connect-form descriptor, parsing a document id out of
3
+ // user input, and mapping the GraphQL responses onto the generic shapes. Linear
4
+ // document `content` is already Markdown, so the only normalization is collapsing
5
+ // runaway blank lines — no block→Markdown conversion (unlike Notion/Confluence).
6
+ //
7
+ // Scope: the document source covers Linear **Docs** only (project + standalone
8
+ // documents). Issue descriptions are surfaced through the Linear **task** source
9
+ // instead, so the same content is never double-imported.
10
+ /** What the connect UI renders, and which credentials the provider needs. */
11
+ export const LINEAR_DOCS_DESCRIPTOR = {
12
+ source: 'linear',
13
+ label: 'Linear',
14
+ // Same Linear glyph the task source + tracker UI use, so the brand is consistent
15
+ // wherever Linear surfaces (the document picker, the task picker, the tracker).
16
+ icon: 'i-lucide-square-kanban',
17
+ credentialFields: [
18
+ {
19
+ key: 'apiKey',
20
+ label: 'Personal API key',
21
+ secret: true,
22
+ placeholder: 'lin_api_…',
23
+ help: 'Create one at linear.app → Settings → Security & access → Personal API keys',
24
+ },
25
+ ],
26
+ refLabel: 'Document URL or ID',
27
+ refPlaceholder: 'https://linear.app/acme/document/… or a document id',
28
+ searchable: true,
29
+ };
30
+ // ---- GraphQL operations (the provider is a thin transport around these) -----
31
+ /** Fetch a single document's title, URL and Markdown content. */
32
+ export const LINEAR_DOCUMENT_QUERY = `query Document($id: String!) {
33
+ document(id: $id) { id title url content }
34
+ }`;
35
+ /** Search documents by title (used to populate the import picker). */
36
+ export const LINEAR_DOCUMENTS_SEARCH_QUERY = `query Documents($term: String!) {
37
+ documents(first: 20, filter: { title: { containsIgnoreCase: $term } }) {
38
+ nodes { id title url }
39
+ }
40
+ }`;
41
+ /**
42
+ * Resolve a Linear document id from raw user input: a bare id, or a
43
+ * `…/document/<slugId>` URL whose final path segment is the document's slug id
44
+ * (Linear embeds the document's slugId as the trailing segment — the value its
45
+ * `document(id:)` query accepts alongside the raw UUID). Returns the id, or null
46
+ * when nothing parses. Kept lenient (like Notion's ref parsing) — the
47
+ * `document(id:)` query is the final arbiter of whether the id resolves, so a
48
+ * bare UUID and a copied document URL both work.
49
+ */
50
+ export function parseLinearDocRef(input) {
51
+ const trimmed = input.trim();
52
+ if (!trimmed)
53
+ return null;
54
+ const url = (() => {
55
+ try {
56
+ return new URL(trimmed);
57
+ }
58
+ catch {
59
+ return null;
60
+ }
61
+ })();
62
+ if (!url) {
63
+ // A bare id: anything without whitespace or a path separator.
64
+ return /^[^\s/]+$/.test(trimmed) ? trimmed : null;
65
+ }
66
+ if (url.hostname.toLowerCase() !== 'linear.app')
67
+ return null;
68
+ const segments = url.pathname.split('/').filter(Boolean);
69
+ const docIdx = segments.indexOf('document');
70
+ if (docIdx === -1 || docIdx + 1 >= segments.length)
71
+ return null;
72
+ return segments[docIdx + 1] || null;
73
+ }
74
+ /** Collapse runaway blank lines in already-Markdown content. */
75
+ function normalizeMarkdown(content) {
76
+ return content
77
+ .replace(/\r\n/g, '\n')
78
+ .replace(/\n{3,}/g, '\n\n')
79
+ .trim();
80
+ }
81
+ /** Map a `document` GraphQL payload onto the generic {@link DocumentContent}. */
82
+ export function mapLinearDocument(data) {
83
+ const doc = data.document;
84
+ if (!doc?.id)
85
+ throw new Error('Linear returned no document for the requested id');
86
+ return {
87
+ externalId: doc.id,
88
+ title: doc.title?.trim() || '(untitled)',
89
+ url: doc.url ?? `https://linear.app/document/${doc.id}`,
90
+ body: normalizeMarkdown(doc.content ?? ''),
91
+ };
92
+ }
93
+ /** Map a `documents` search payload onto lean {@link DocumentSearchResult} hits. */
94
+ export function mapLinearDocumentSearch(data) {
95
+ const nodes = data.documents?.nodes ?? [];
96
+ const out = [];
97
+ for (const node of nodes) {
98
+ if (!node.id)
99
+ continue;
100
+ out.push({
101
+ source: 'linear',
102
+ externalId: node.id,
103
+ title: node.title?.trim() || '(untitled)',
104
+ url: node.url ?? `https://linear.app/document/${node.id}`,
105
+ excerpt: '',
106
+ });
107
+ }
108
+ return out;
109
+ }
110
+ //# sourceMappingURL=linear-docs.logic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear-docs.logic.js","sourceRoot":"","sources":["../../../src/modules/documents/linear-docs.logic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ export declare const LINEAR_GRAPHQL_URL = "https://api.linear.app/graphql";
2
+ /**
3
+ * How a Linear request authenticates. A personal API key is sent as the raw
4
+ * `authorization` header value (Linear's documented scheme for personal keys); a
5
+ * future OAuth access token is sent as a `Bearer` token. Modelled as a union so
6
+ * adding OAuth is a new variant, not a caller change.
7
+ */
8
+ export type LinearAuth = {
9
+ apiKey: string;
10
+ } | {
11
+ token: string;
12
+ };
13
+ /** Build the `authorization` header for a Linear request (API key raw, OAuth `Bearer`). */
14
+ export declare function linearAuthHeader(auth: LinearAuth): string;
15
+ /** Carries the HTTP status so callers can surface a meaningful error. */
16
+ export declare class LinearApiError extends Error {
17
+ readonly status: number;
18
+ constructor(status: number, message: string);
19
+ }
20
+ /**
21
+ * The minimal slice of the Fetch API the GraphQL POST needs (no DOM lib). Matches
22
+ * the `FetchLike` the tracker/writeback services inject, so a fake `fetch` drives
23
+ * both. `body` is always set (GraphQL is POST-only), so it is required here.
24
+ */
25
+ export type LinearFetchLike = (url: string, init: {
26
+ method: string;
27
+ headers: Record<string, string>;
28
+ body: string;
29
+ }) => Promise<{
30
+ ok: boolean;
31
+ status: number;
32
+ text(): Promise<string>;
33
+ json(): Promise<unknown>;
34
+ }>;
35
+ /**
36
+ * Validate a parsed GraphQL envelope and return its `data`. Pure (no I/O) so both
37
+ * the safe global-fetch client below and the FetchLike-driven tracker/writeback
38
+ * services share one error policy. Throws {@link LinearApiError} on a non-OK
39
+ * status, a top-level `errors[]`, or a missing `data`.
40
+ */
41
+ export declare function unwrapLinearData<T>(status: number, ok: boolean, parsed: unknown): T;
42
+ /** The header set every Linear GraphQL POST sends (API key raw, OAuth `Bearer`). */
43
+ export declare function linearRequestHeaders(auth: LinearAuth): Record<string, string>;
44
+ /**
45
+ * Run a Linear GraphQL operation through a caller-injected `fetch` (the write path:
46
+ * ticket filing + PR writeback), returning the validated `data`. This is the single
47
+ * place those services build the request + apply the {@link unwrapLinearData} error
48
+ * policy, so the header set and error handling can't drift between call sites. The
49
+ * read/import path uses {@link LinearGraphqlClient} instead (it additionally pins
50
+ * the host + caps the body on the real `fetch`). `fetchImpl` is injected so the
51
+ * services stay unit-testable with a fake transport (mirrors the Jira pattern).
52
+ */
53
+ export declare function postLinearGraphql<T>(fetchImpl: (url: string, init: {
54
+ method: string;
55
+ headers: Record<string, string>;
56
+ body?: string;
57
+ }) => Promise<{
58
+ ok: boolean;
59
+ status: number;
60
+ json(): Promise<unknown>;
61
+ }>, auth: LinearAuth, document: string, variables: Record<string, unknown>): Promise<T>;
62
+ /**
63
+ * A thin, safe Linear GraphQL client used by the document + task providers (the
64
+ * read/import path). It runs the host-pinned redirect guard + capped read on the
65
+ * real `fetch`. The ticket-filing / writeback services do NOT use this class: they
66
+ * post through their own injected `FetchLike` (for testability, matching the Jira
67
+ * pattern) and share only the pure `unwrapLinearData` / `linearAuthHeader` helpers.
68
+ */
69
+ export declare class LinearGraphqlClient {
70
+ private readonly auth;
71
+ constructor(auth: LinearAuth);
72
+ /** Run a GraphQL document and return its validated `data`. */
73
+ query<T>(document: string, variables?: Record<string, unknown>): Promise<T>;
74
+ }
75
+ //# sourceMappingURL=linear.client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear.client.d.ts","sourceRoot":"","sources":["../../../src/modules/shared/linear.client.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,kBAAkB,mCAAmC,CAAA;AAQlE;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE/D,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAEzD;AAED,yEAAyE;AACzE,qBAAa,cAAe,SAAQ,KAAK;IAErC,QAAQ,CAAC,MAAM,EAAE,MAAM;IADzB,YACW,MAAM,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EAIhB;CACF;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,KACpE,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAAC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,CAAC,CAAA;AAQhG;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,CAAC,CAcnF;AAED,oFAAoF;AACpF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAO7E;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,SAAS,EAAE,CACT,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,KACrE,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,CAAC,EACvE,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,CAAC,CAAC,CAOZ;AA0ED;;;;;;GAMG;AACH,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,UAAU,EAAI;IAEjD,8DAA8D;IACxD,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAoBpF;CACF"}