@rudderhq/server 0.2.0-canary.5 → 0.2.0-canary.7
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/bundled-plugins/plugin-linear/dist/ui/index.js +1 -1
- package/dist/bundled-plugins/plugin-linear/dist/ui/index.js.map +2 -2
- package/dist/langfuse-transcript.d.ts.map +1 -1
- package/dist/langfuse-transcript.js +22 -0
- package/dist/langfuse-transcript.js.map +1 -1
- package/dist/routes/agents.d.ts.map +1 -1
- package/dist/routes/agents.js +3 -4
- package/dist/routes/agents.js.map +1 -1
- package/dist/routes/issues.d.ts.map +1 -1
- package/dist/routes/issues.js +5 -1
- package/dist/routes/issues.js.map +1 -1
- package/dist/services/activity-log.d.ts.map +1 -1
- package/dist/services/activity-log.js +45 -16
- package/dist/services/activity-log.js.map +1 -1
- package/dist/services/agent-instructions.d.ts.map +1 -1
- package/dist/services/agent-instructions.js +9 -0
- package/dist/services/agent-instructions.js.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.d.ts.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.js +17 -0
- package/dist/services/runtime-kernel/heartbeat.js.map +1 -1
- package/package.json +13 -13
- package/ui-dist/assets/{_basePickBy-BnDVB7bz.js → _basePickBy-DTFnknq8.js} +1 -1
- package/ui-dist/assets/{_baseUniq-DAsHkqpc.js → _baseUniq-C3n93bLD.js} +1 -1
- package/ui-dist/assets/{arc-CxT9TYrr.js → arc-ClwqSVCH.js} +1 -1
- package/ui-dist/assets/{architectureDiagram-2XIMDMQ5-CyifwoMi.js → architectureDiagram-2XIMDMQ5-ePYRbwor.js} +1 -1
- package/ui-dist/assets/{blockDiagram-WCTKOSBZ-DnQayPe3.js → blockDiagram-WCTKOSBZ-DYNpx8OY.js} +1 -1
- package/ui-dist/assets/{c4Diagram-IC4MRINW-BbBMNLXn.js → c4Diagram-IC4MRINW-Nk7YrUyH.js} +1 -1
- package/ui-dist/assets/channel-CvxD26Vy.js +1 -0
- package/ui-dist/assets/{chunk-4BX2VUAB-BG6UkcLx.js → chunk-4BX2VUAB-DJ_x-glh.js} +1 -1
- package/ui-dist/assets/{chunk-55IACEB6-BPwAg5gS.js → chunk-55IACEB6-BPpV4DLG.js} +1 -1
- package/ui-dist/assets/{chunk-FMBD7UC4-ViIWY3zz.js → chunk-FMBD7UC4-CZlTJBKw.js} +1 -1
- package/ui-dist/assets/{chunk-JSJVCQXG-H_Hm7imz.js → chunk-JSJVCQXG-DzhmvDMM.js} +1 -1
- package/ui-dist/assets/{chunk-KX2RTZJC-JqcDI5zG.js → chunk-KX2RTZJC-B2dz9_Y2.js} +1 -1
- package/ui-dist/assets/{chunk-NQ4KR5QH-BZjBI0Z0.js → chunk-NQ4KR5QH-lSQAx1xx.js} +1 -1
- package/ui-dist/assets/{chunk-QZHKN3VN-BYrMnnt7.js → chunk-QZHKN3VN-Cufc_N0b.js} +1 -1
- package/ui-dist/assets/{chunk-WL4C6EOR-CFkbd88A.js → chunk-WL4C6EOR-xIym_4TW.js} +1 -1
- package/ui-dist/assets/classDiagram-VBA2DB6C-D-ko3k0f.js +1 -0
- package/ui-dist/assets/classDiagram-v2-RAHNMMFH-D-ko3k0f.js +1 -0
- package/ui-dist/assets/clone-CmAZS55H.js +1 -0
- package/ui-dist/assets/{cose-bilkent-S5V4N54A-ByA2Mk4R.js → cose-bilkent-S5V4N54A-y_G-YHIZ.js} +1 -1
- package/ui-dist/assets/{dagre-KLK3FWXG-D2vYSq_z.js → dagre-KLK3FWXG-BZ7BbcWI.js} +1 -1
- package/ui-dist/assets/{diagram-E7M64L7V-C6vwiR15.js → diagram-E7M64L7V-XY66MWO2.js} +1 -1
- package/ui-dist/assets/{diagram-IFDJBPK2-BLbYosgu.js → diagram-IFDJBPK2-B_VXhYAu.js} +1 -1
- package/ui-dist/assets/{diagram-P4PSJMXO-CM3E8t5Y.js → diagram-P4PSJMXO-RAMtiTaN.js} +1 -1
- package/ui-dist/assets/{erDiagram-INFDFZHY-DX7_ZjK7.js → erDiagram-INFDFZHY-Bo95037e.js} +1 -1
- package/ui-dist/assets/{flowDiagram-PKNHOUZH-zU4hmuji.js → flowDiagram-PKNHOUZH-BX60nVJY.js} +1 -1
- package/ui-dist/assets/{ganttDiagram-A5KZAMGK-DcOVyRRZ.js → ganttDiagram-A5KZAMGK-g8jPhG7G.js} +1 -1
- package/ui-dist/assets/{gitGraphDiagram-K3NZZRJ6-DrgXSS2x.js → gitGraphDiagram-K3NZZRJ6-D2njctpf.js} +1 -1
- package/ui-dist/assets/{graph-DqY2Eh1i.js → graph-c1mfJXIq.js} +1 -1
- package/ui-dist/assets/{index-By8U7lsi.js → index-1tJIR7Tz.js} +1 -1
- package/ui-dist/assets/{index-BxeDpndn.js → index-2cXQ7jjd.js} +1 -1
- package/ui-dist/assets/{index-6_5nmdfK.js → index-7wCKDg79.js} +1 -1
- package/ui-dist/assets/{index-YAETZZ8R.js → index-89HJDrZP.js} +1 -1
- package/ui-dist/assets/{index-DLhn_iBm.js → index-B9bp4Jdy.js} +1 -1
- package/ui-dist/assets/{index-DPzLPlmE.js → index-BGbGDlMd.js} +1 -1
- package/ui-dist/assets/{index-2MVrYFNs.js → index-BIBtT9bH.js} +1 -1
- package/ui-dist/assets/{index-C34r-3nn.js → index-BJhFtLG5.js} +1 -1
- package/ui-dist/assets/{index-hJMACv0J.js → index-BVomFac9.js} +1 -1
- package/ui-dist/assets/{index-CQVSKii6.js → index-COWeZ0Od.js} +1 -1
- package/ui-dist/assets/{index-DhZUsypV.js → index-CQuAAXCb.js} +1 -1
- package/ui-dist/assets/{index-CXFD1ZNa.js → index-CbKBiTjL.js} +1 -1
- package/ui-dist/assets/{index-DSc6L40d.js → index-DRlyCG1b.js} +1 -1
- package/ui-dist/assets/index-DWiS55sF.css +1 -0
- package/ui-dist/assets/{index-By8WN1E9.js → index-DYS5dq5h.js} +1 -1
- package/ui-dist/assets/{index-CvFS1Nau.js → index-DYppYJXH.js} +1 -1
- package/ui-dist/assets/{index-S-zREZiD.js → index-Dm4dO0dY.js} +1 -1
- package/ui-dist/assets/{index-CmhHK1md.js → index-DyxsOBKT.js} +1 -1
- package/ui-dist/assets/{index-idT37hxM.js → index-VvvXZ8uy.js} +1 -1
- package/ui-dist/assets/{index-BpcDxVJB.js → index-XJVx8gzw.js} +1 -1
- package/ui-dist/assets/{index-DQuj-xlb.js → index-gaPaOAsh.js} +1 -1
- package/ui-dist/assets/{index-vRY7J_pN.js → index-ra4zknAN.js} +1 -1
- package/ui-dist/assets/index-wl34cCsY.js +1434 -0
- package/ui-dist/assets/{index-B-FwFkIH.js → index-zrQcMKYV.js} +1 -1
- package/ui-dist/assets/{infoDiagram-LFFYTUFH-BcI7TNXT.js → infoDiagram-LFFYTUFH-CmySRMH1.js} +1 -1
- package/ui-dist/assets/{ishikawaDiagram-PHBUUO56-DZLdQaWR.js → ishikawaDiagram-PHBUUO56-vOCbyJvW.js} +1 -1
- package/ui-dist/assets/{journeyDiagram-4ABVD52K-DZhvO743.js → journeyDiagram-4ABVD52K-B-REpMMn.js} +1 -1
- package/ui-dist/assets/{kanban-definition-K7BYSVSG-BUrVvpwU.js → kanban-definition-K7BYSVSG-Csd4J5fv.js} +1 -1
- package/ui-dist/assets/{layout-Cq6RuG65.js → layout-yriT0Kep.js} +1 -1
- package/ui-dist/assets/{linear-BjyNl1a2.js → linear-b1635Zm2.js} +1 -1
- package/ui-dist/assets/{mermaid.core-BAcpa-t2.js → mermaid.core-DGd8sfjt.js} +4 -4
- package/ui-dist/assets/{mindmap-definition-YRQLILUH-Ba542l4c.js → mindmap-definition-YRQLILUH-DcSlBiMu.js} +1 -1
- package/ui-dist/assets/{pieDiagram-SKSYHLDU-BNn90EnQ.js → pieDiagram-SKSYHLDU-DnXPJeCH.js} +1 -1
- package/ui-dist/assets/{quadrantDiagram-337W2JSQ-ByrKZLVq.js → quadrantDiagram-337W2JSQ-CgsEfRA-.js} +1 -1
- package/ui-dist/assets/{requirementDiagram-Z7DCOOCP-DGkecMhb.js → requirementDiagram-Z7DCOOCP-DK7lfNf0.js} +1 -1
- package/ui-dist/assets/{sankeyDiagram-WA2Y5GQK-7xVb_gtw.js → sankeyDiagram-WA2Y5GQK-bci2_bmi.js} +1 -1
- package/ui-dist/assets/{sequenceDiagram-2WXFIKYE-BSTRT7ai.js → sequenceDiagram-2WXFIKYE-C0eNAdnA.js} +1 -1
- package/ui-dist/assets/{stateDiagram-RAJIS63D-CwYDpg7Y.js → stateDiagram-RAJIS63D-Df4vgqTI.js} +1 -1
- package/ui-dist/assets/stateDiagram-v2-FVOUBMTO-MCBXfMWW.js +1 -0
- package/ui-dist/assets/{timeline-definition-YZTLITO2-DkUEPi-r.js → timeline-definition-YZTLITO2-DGFNRFYc.js} +1 -1
- package/ui-dist/assets/{treemap-KZPCXAKY-TPs-vjPM.js → treemap-KZPCXAKY-Cqr5WrCj.js} +1 -1
- package/ui-dist/assets/{vennDiagram-LZ73GAT5-DSkP8wn4.js → vennDiagram-LZ73GAT5-LyF9sEjZ.js} +1 -1
- package/ui-dist/assets/{xychartDiagram-JWTSCODW-5a6PJ97x.js → xychartDiagram-JWTSCODW-fsa-vozx.js} +1 -1
- package/ui-dist/index.html +2 -2
- package/ui-dist/assets/channel-BVi-Nte3.js +0 -1
- package/ui-dist/assets/classDiagram-VBA2DB6C-Bo6zNc66.js +0 -1
- package/ui-dist/assets/classDiagram-v2-RAHNMMFH-Bo6zNc66.js +0 -1
- package/ui-dist/assets/clone-wTFhh_sW.js +0 -1
- package/ui-dist/assets/index-B53tSxBm.css +0 -1
- package/ui-dist/assets/index-BXaJ26GY.js +0 -1428
- package/ui-dist/assets/stateDiagram-v2-FVOUBMTO-D3nOCFRj.js +0 -1
|
@@ -333,7 +333,7 @@ function prepareConfigForSubmit(config) {
|
|
|
333
333
|
// Keep a legacy-compatible shape for already-installed manifests that still
|
|
334
334
|
// require organizationMappings during config validation. New runtime code
|
|
335
335
|
// reads the top-level teamMappings field.
|
|
336
|
-
organizationMappings: [{ orgId: "__global__", teamMappings }]
|
|
336
|
+
organizationMappings: teamMappings.length > 0 ? [{ orgId: "__global__", teamMappings }] : []
|
|
337
337
|
};
|
|
338
338
|
}
|
|
339
339
|
function summarizeImportResult(result) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/ui/index.tsx", "../../src/constants.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n useEffect,\n useMemo,\n useState,\n type Dispatch,\n type SetStateAction,\n type CSSProperties,\n} from \"react\";\nimport {\n usePluginAction,\n usePluginData,\n usePluginToast,\n type PluginDetailTabProps,\n type PluginPageProps,\n type PluginSettingsPageProps,\n} from \"@rudderhq/plugin-sdk/ui\";\nimport {\n ACTION_KEYS,\n DATA_KEYS,\n LINEAR_IMPORT_ALL_LIMIT,\n LINEAR_PAGE_SIZE,\n LINEAR_TOKEN_SETTINGS_URL,\n RUDDER_STATUS_OPTIONS,\n} from \"../constants.js\";\nimport type {\n ImportLinearIssuesActionResult,\n IssueLinkData,\n LinearIssueRow,\n LinearCatalogData,\n LinearOrganizationMapping,\n LinearPluginConfig,\n LinearStateSummary,\n LinearStateMapping,\n LinearTeamMapping,\n LinearIssuesData,\n PageBootstrapData,\n SettingsCatalogData,\n SettingsBootstrapData,\n} from \"../types.js\";\n\nconst layoutStyles: Record<string, CSSProperties> = {\n shell: {\n display: \"grid\",\n gap: 16,\n color: \"var(--foreground, #111827)\",\n fontFamily: \"ui-sans-serif, system-ui, sans-serif\",\n },\n card: {\n border: \"1px solid var(--border, rgba(15, 23, 42, 0.14))\",\n borderRadius: 8,\n padding: 16,\n background: \"var(--card, var(--background, #fff))\",\n },\n title: {\n fontSize: 22,\n fontWeight: 700,\n margin: 0,\n },\n subtitle: {\n margin: \"6px 0 0\",\n color: \"var(--muted-foreground, rgba(15, 23, 42, 0.68))\",\n fontSize: 14,\n lineHeight: 1.5,\n },\n row: {\n display: \"flex\",\n gap: 12,\n flexWrap: \"wrap\",\n alignItems: \"center\",\n },\n connectionGrid: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(220px, 1fr))\",\n gap: 12,\n alignItems: \"end\",\n },\n field: {\n display: \"grid\",\n gap: 6,\n minWidth: 180,\n flex: \"1 1 180px\",\n },\n label: {\n fontSize: 12,\n fontWeight: 700,\n color: \"var(--muted-foreground, rgba(15, 23, 42, 0.66))\",\n letterSpacing: 0,\n },\n input: {\n width: \"100%\",\n border: \"1px solid var(--border, rgba(15, 23, 42, 0.18))\",\n borderRadius: 6,\n padding: \"10px 12px\",\n fontSize: 14,\n background: \"var(--background, #fff)\",\n color: \"var(--foreground, #111827)\",\n boxSizing: \"border-box\",\n },\n select: {\n width: \"100%\",\n border: \"1px solid var(--border, rgba(15, 23, 42, 0.18))\",\n borderRadius: 6,\n padding: \"10px 12px\",\n fontSize: 14,\n background: \"var(--background, #fff)\",\n color: \"var(--foreground, #111827)\",\n boxSizing: \"border-box\",\n },\n button: {\n border: \"1px solid var(--border, rgba(15, 23, 42, 0.18))\",\n borderRadius: 6,\n padding: \"10px 14px\",\n fontSize: 14,\n fontWeight: 600,\n background: \"var(--background, #fff)\",\n color: \"var(--foreground, #111827)\",\n cursor: \"pointer\",\n },\n primaryButton: {\n border: \"1px solid var(--primary, #0f172a)\",\n borderRadius: 6,\n padding: \"10px 14px\",\n fontSize: 14,\n fontWeight: 700,\n background: \"var(--primary, #0f172a)\",\n color: \"var(--primary-foreground, #fff)\",\n cursor: \"pointer\",\n },\n subtleButton: {\n border: \"1px solid var(--border, rgba(15, 23, 42, 0.12))\",\n borderRadius: 6,\n padding: \"8px 12px\",\n fontSize: 13,\n fontWeight: 600,\n background: \"var(--secondary, rgba(15, 23, 42, 0.04))\",\n color: \"var(--secondary-foreground, var(--foreground, #111827))\",\n cursor: \"pointer\",\n },\n warning: {\n border: \"1px solid rgba(217, 119, 6, 0.24)\",\n background: \"rgba(251, 191, 36, 0.12)\",\n borderRadius: 8,\n padding: 14,\n fontSize: 14,\n lineHeight: 1.5,\n },\n table: {\n width: \"100%\",\n borderCollapse: \"collapse\",\n fontSize: 14,\n },\n th: {\n textAlign: \"left\",\n fontSize: 12,\n letterSpacing: 0,\n color: \"var(--muted-foreground, rgba(15, 23, 42, 0.62))\",\n padding: \"10px 12px\",\n borderBottom: \"1px solid var(--border, rgba(15, 23, 42, 0.1))\",\n },\n td: {\n padding: \"12px\",\n borderBottom: \"1px solid var(--border, rgba(15, 23, 42, 0.08))\",\n verticalAlign: \"top\",\n },\n pill: {\n display: \"inline-flex\",\n alignItems: \"center\",\n borderRadius: 999,\n padding: \"4px 10px\",\n background: \"var(--secondary, rgba(15, 23, 42, 0.06))\",\n color: \"var(--secondary-foreground, var(--foreground, #111827))\",\n fontSize: 12,\n fontWeight: 600,\n },\n monoLink: {\n fontFamily: \"ui-monospace, SFMono-Regular, Menlo, monospace\",\n fontSize: 12,\n },\n helpText: {\n fontSize: 13,\n lineHeight: 1.5,\n color: \"var(--muted-foreground, rgba(15, 23, 42, 0.68))\",\n },\n statusLine: {\n marginTop: 14,\n paddingTop: 14,\n borderTop: \"1px solid var(--border, rgba(15, 23, 42, 0.1))\",\n fontSize: 13,\n lineHeight: 1.5,\n color: \"var(--muted-foreground, rgba(15, 23, 42, 0.68))\",\n },\n sectionHeader: {\n display: \"flex\",\n justifyContent: \"space-between\",\n gap: 12,\n alignItems: \"flex-start\",\n flexWrap: \"wrap\",\n },\n teamGrid: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(220px, 1fr))\",\n gap: 10,\n marginTop: 14,\n },\n teamChoice: {\n display: \"flex\",\n gap: 10,\n alignItems: \"flex-start\",\n border: \"1px solid var(--border, rgba(15, 23, 42, 0.14))\",\n borderRadius: 8,\n padding: 12,\n cursor: \"pointer\",\n background: \"var(--background, transparent)\",\n },\n checkbox: {\n marginTop: 3,\n },\n statusRuleGrid: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(180px, 1fr))\",\n gap: 10,\n alignItems: \"center\",\n },\n};\n\nconst LINEAR_TOKEN_SECRET_NAME = \"Linear token\";\n\ntype SecretSummary = {\n id: string;\n name: string;\n};\n\nfunction normalizeConfig(config: LinearPluginConfig | null | undefined): LinearPluginConfig {\n const legacyOrganizationMappings = Array.isArray(config?.organizationMappings) ? config.organizationMappings : [];\n const explicitTeamMappings = Array.isArray(config?.teamMappings) ? config.teamMappings : [];\n return {\n apiTokenSecretRef: config?.apiTokenSecretRef ?? \"\",\n teamMappings: explicitTeamMappings.length > 0\n ? explicitTeamMappings\n : mergeLegacyTeamMappings(legacyOrganizationMappings),\n organizationMappings: legacyOrganizationMappings,\n ...(config?.fixtureMode === true ? { fixtureMode: true } : {}),\n };\n}\n\nfunction mergeLegacyTeamMappings(mappings: LinearOrganizationMapping[]): LinearTeamMapping[] {\n const byTeamId = new Map<string, LinearTeamMapping>();\n for (const mapping of mappings) {\n for (const team of mapping.teamMappings ?? []) {\n if (!team.teamId || byTeamId.has(team.teamId)) continue;\n byTeamId.set(team.teamId, team);\n }\n }\n return [...byTeamId.values()];\n}\n\nfunction getOrgPrefix(context: Record<string, unknown>): string | null {\n const orgPrefix = typeof context[\"orgPrefix\"] === \"string\" ? context[\"orgPrefix\"] : null;\n const companyPrefix = typeof context[\"companyPrefix\"] === \"string\" ? context[\"companyPrefix\"] : null;\n return orgPrefix ?? companyPrefix;\n}\n\nfunction getPluginIdFromLocation(): string | null {\n if (typeof window === \"undefined\") return null;\n const match = window.location.pathname.match(/\\/instance\\/settings\\/plugins\\/([^/?#]+)/);\n return match?.[1] ?? null;\n}\n\nasync function apiFetch<T>(path: string, init?: RequestInit): Promise<T> {\n const response = await fetch(path, {\n credentials: \"same-origin\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...(init?.headers ?? {}),\n },\n ...init,\n });\n if (!response.ok) {\n const payload = await response.json().catch(async () => ({ error: await response.text() }));\n const message = typeof payload?.error === \"string\"\n ? payload.error\n : typeof payload?.message === \"string\"\n ? payload.message\n : `Request failed (${response.status})`;\n throw new Error(message);\n }\n return await response.json() as T;\n}\n\nfunction formatRudderStatus(status: LinearStateMapping[\"rudderStatus\"]): string {\n return status.replaceAll(\"_\", \" \");\n}\n\nfunction inferRudderStatus(state: LinearStateSummary): LinearStateMapping[\"rudderStatus\"] {\n const type = (state.type ?? \"\").toLowerCase();\n const name = state.name.toLowerCase();\n if (type.includes(\"completed\") || name.includes(\"done\") || name.includes(\"complete\")) return \"done\";\n if (type.includes(\"cancel\") || name.includes(\"cancel\")) return \"cancelled\";\n if (name.includes(\"review\")) return \"in_review\";\n if (type.includes(\"backlog\") || type.includes(\"triage\") || name.includes(\"backlog\") || name.includes(\"triage\")) return \"backlog\";\n if (type.includes(\"started\") || type.includes(\"unstarted\") || name.includes(\"progress\") || name.includes(\"todo\")) return \"todo\";\n return \"backlog\";\n}\n\nfunction buildTeamMappingsFromCatalog(catalog: SettingsCatalogData): LinearTeamMapping[] {\n return catalog.teams.map((team) => buildTeamMappingFromCatalog(team));\n}\n\nfunction buildTeamMappingFromCatalog(\n team: SettingsCatalogData[\"teams\"][number],\n existing?: LinearTeamMapping | null,\n): LinearTeamMapping {\n const existingStatusByStateId = new Map(\n (existing?.stateMappings ?? []).map((state) => [state.linearStateId, state.rudderStatus]),\n );\n return {\n teamId: team.id,\n teamName: team.name,\n stateMappings: team.states.map((state) => ({\n linearStateId: state.id,\n linearStateName: state.name,\n rudderStatus: existingStatusByStateId.get(state.id) ?? inferRudderStatus(state),\n })),\n };\n}\n\nfunction buildTeamMappingsForSelectedTeams(\n catalog: SettingsCatalogData,\n selectedTeamIds: string[],\n existingTeamMappings: LinearTeamMapping[],\n): LinearTeamMapping[] {\n const selected = new Set(selectedTeamIds);\n const existingByTeamId = new Map(existingTeamMappings.map((team) => [team.teamId, team]));\n return catalog.teams\n .filter((team) => selected.has(team.id))\n .map((team) => buildTeamMappingFromCatalog(team, existingByTeamId.get(team.id)));\n}\n\nfunction countMappedStates(teamMappings: LinearTeamMapping[] | null | undefined): number {\n return teamMappings?.reduce((sum, team) => sum + team.stateMappings.length, 0) ?? 0;\n}\n\nfunction summarizeMapping(teamMappings: LinearTeamMapping[] | null | undefined): string {\n if (!teamMappings) return \"No Linear workspace loaded yet.\";\n const teamCount = teamMappings.length;\n const stateCount = countMappedStates(teamMappings);\n return `${teamCount} team${teamCount === 1 ? \"\" : \"s\"} and ${stateCount} workflow state${stateCount === 1 ? \"\" : \"s\"} ready.`;\n}\n\nfunction isMissingSettingsCatalogHandler(error: unknown): boolean {\n const message = error instanceof Error ? error.message : String(error);\n return /No data handler registered/i.test(message) && /settings-catalog/i.test(message);\n}\n\nfunction prepareConfigForSubmit(config: LinearPluginConfig): LinearPluginConfig {\n const teamMappings = config.teamMappings\n .map((team) => ({\n teamId: team.teamId.trim(),\n teamName: team.teamName?.trim() || undefined,\n stateMappings: team.stateMappings\n .map((state) => ({\n linearStateId: state.linearStateId.trim(),\n linearStateName: state.linearStateName?.trim() || undefined,\n rudderStatus: state.rudderStatus,\n }))\n .filter((state) => state.linearStateId),\n }))\n .filter((team) => team.teamId);\n\n return {\n apiTokenSecretRef: config.apiTokenSecretRef?.trim() ?? \"\",\n ...(config.fixtureMode === true ? { fixtureMode: true } : {}),\n teamMappings,\n // Keep a legacy-compatible shape for already-installed manifests that still\n // require organizationMappings during config validation. New runtime code\n // reads the top-level teamMappings field.\n organizationMappings: [{ orgId: \"__global__\", teamMappings }],\n };\n}\n\nfunction summarizeImportResult(result: ImportLinearIssuesActionResult): string {\n const parts = [`Imported ${result.importedCount}`];\n if (result.duplicateCount > 0) parts.push(`${result.duplicateCount} duplicate`);\n if (result.fallbackCount > 0) parts.push(`${result.fallbackCount} fallback`);\n if (result.adjustedCount > 0) parts.push(`${result.adjustedCount} adjusted`);\n return parts.join(\" / \");\n}\n\nfunction formatRelativeTime(timestamp: string | null | undefined): string {\n if (!timestamp) return \"Unknown\";\n const date = new Date(timestamp);\n if (Number.isNaN(date.getTime())) return timestamp;\n return date.toLocaleString();\n}\n\nfunction issueHref(orgPrefix: string | null, issueId: string): string {\n return orgPrefix ? `/${orgPrefix}/issues/${issueId}` : `/issues/${issueId}`;\n}\n\nfunction pageHref(orgPrefix: string | null, query?: string): string {\n if (!orgPrefix) return \"/linear\";\n const url = new URL(`/${orgPrefix}/linear`, \"https://local.invalid\");\n if (query) url.searchParams.set(\"q\", query);\n return `${url.pathname}${url.search}`;\n}\n\nfunction linearIssueBoardHref(orgPrefix: string | null | undefined, teamId?: string | null): string {\n const basePath = orgPrefix ? `/${encodeURIComponent(orgPrefix)}/issues` : \"/issues\";\n const url = new URL(basePath, \"https://local.invalid\");\n url.searchParams.set(\"source\", \"linear\");\n if (teamId) url.searchParams.set(\"linearTeamId\", teamId);\n return `${url.pathname}${url.search}`;\n}\n\nfunction readLinearPageUrlFilters() {\n if (typeof window === \"undefined\") {\n return { query: \"\", projectId: \"\", teamId: \"\" };\n }\n const params = new URLSearchParams(window.location.search);\n return {\n query: params.get(\"q\") ?? \"\",\n projectId: params.get(\"linearProjectId\") ?? \"\",\n teamId: params.get(\"linearTeamId\") ?? \"\",\n };\n}\n\ntype FilterState = {\n teamId: string;\n stateId: string;\n projectId: string;\n assigneeId: string;\n query: string;\n};\n\nfunction useLinearFilters(\n initialQuery: string,\n initialProjectId = \"\",\n initialTeamId = \"\",\n): [FilterState, Dispatch<SetStateAction<FilterState>>] {\n const [filters, setFilters] = useState<FilterState>({\n teamId: initialTeamId,\n stateId: \"\",\n projectId: initialProjectId,\n assigneeId: \"\",\n query: initialQuery,\n });\n return [filters, setFilters];\n}\n\nexport function LinearPluginPage({ context }: PluginPageProps) {\n const toast = usePluginToast();\n const importIssues = usePluginAction(ACTION_KEYS.importIssues) as (\n params?: Record<string, unknown>,\n ) => Promise<ImportLinearIssuesActionResult>;\n const orgId = context.orgId ?? \"__missing__\";\n const orgPrefix = getOrgPrefix(context as unknown as Record<string, unknown>);\n const urlFilters = readLinearPageUrlFilters();\n\n const bootstrap = usePluginData<PageBootstrapData>(DATA_KEYS.pageBootstrap, { orgId });\n const catalog = usePluginData<LinearCatalogData>(DATA_KEYS.catalog, { orgId });\n const [filters, setFilters] = useLinearFilters(urlFilters.query, urlFilters.projectId, urlFilters.teamId);\n const [targetProjectId, setTargetProjectId] = useState(\"\");\n const [afterCursor, setAfterCursor] = useState<string | null>(null);\n const [cursorHistory, setCursorHistory] = useState<string[]>([]);\n const [selectedIssueIds, setSelectedIssueIds] = useState<string[]>([]);\n const [importing, setImporting] = useState(false);\n\n const issues = usePluginData<LinearIssuesData>(DATA_KEYS.issues, {\n orgId,\n limit: LINEAR_PAGE_SIZE,\n after: afterCursor ?? undefined,\n teamId: filters.teamId || undefined,\n stateId: filters.stateId || undefined,\n projectId: filters.projectId || undefined,\n assigneeId: filters.assigneeId || undefined,\n query: filters.query || undefined,\n });\n\n useEffect(() => {\n setFilters((current) => {\n if (\n current.query === urlFilters.query &&\n current.projectId === urlFilters.projectId &&\n current.teamId === urlFilters.teamId\n ) {\n return current;\n }\n return {\n ...current,\n query: urlFilters.query,\n projectId: urlFilters.projectId,\n teamId: urlFilters.teamId,\n };\n });\n }, [setFilters, urlFilters.projectId, urlFilters.query, urlFilters.teamId]);\n\n const stateOptions = useMemo(() => {\n if (!catalog.data?.teams?.length) return [];\n const sourceTeams = filters.teamId\n ? catalog.data.teams.filter((team: LinearCatalogData[\"teams\"][number]) => team.id === filters.teamId)\n : catalog.data.teams;\n const deduped = new Map<string, { id: string; name: string }>();\n for (const team of sourceTeams) {\n for (const state of team.states) {\n deduped.set(state.id, { id: state.id, name: state.name });\n }\n }\n return [...deduped.values()];\n }, [catalog.data?.teams, filters.teamId]);\n\n useEffect(() => {\n setAfterCursor(null);\n setCursorHistory([]);\n setSelectedIssueIds([]);\n }, [filters.teamId, filters.stateId, filters.projectId, filters.assigneeId, filters.query]);\n\n useEffect(() => {\n const visibleIds = new Set(issues.data?.rows.map((row: LinearIssueRow) => row.id) ?? []);\n setSelectedIssueIds((current) => {\n const next = current.filter((id) => visibleIds.has(id));\n if (next.length === current.length && next.every((id, index) => id === current[index])) {\n return current;\n }\n return next;\n });\n }, [issues.data?.rows]);\n\n async function handleImport(mode: \"single\" | \"selected\" | \"allMatching\", issueIds?: string[]) {\n if (!targetProjectId) {\n toast({\n title: \"Choose a target project\",\n body: \"Imports are disabled until a Rudder project is selected.\",\n tone: \"warn\",\n });\n return;\n }\n setImporting(true);\n try {\n const result = await importIssues({\n orgId,\n targetProjectId,\n mode,\n issueIds,\n filters: {\n teamId: filters.teamId || undefined,\n stateId: filters.stateId || undefined,\n projectId: filters.projectId || undefined,\n assigneeId: filters.assigneeId || undefined,\n query: filters.query || undefined,\n },\n });\n toast({\n title: \"Linear import complete\",\n body: summarizeImportResult(result),\n tone: \"success\",\n });\n issues.refresh();\n setSelectedIssueIds([]);\n } catch (error) {\n toast({\n title: \"Linear import failed\",\n body: error instanceof Error ? error.message : String(error),\n tone: \"error\",\n });\n } finally {\n setImporting(false);\n }\n }\n\n return (\n <div style={layoutStyles.shell}>\n <section style={layoutStyles.card}>\n <h1 style={layoutStyles.title}>Linear intake</h1>\n <p style={layoutStyles.subtitle}>\n Import Linear issues into a chosen Rudder project. This page is the bulk workspace; the issue tab is the linked detail view.\n </p>\n </section>\n\n {bootstrap.loading ? (\n <section style={layoutStyles.card}>Loading Linear import context\u2026</section>\n ) : !bootstrap.data?.configured ? (\n <section style={{ ...layoutStyles.card, ...layoutStyles.warning }}>\n <strong>Linear is not configured yet.</strong>\n <div style={{ marginTop: 8 }}>{bootstrap.data?.message ?? \"Connect Linear and choose teams in plugin settings.\"}</div>\n <div style={{ marginTop: 12 }}>\n <a href=\"/instance/settings/plugins\" style={layoutStyles.monoLink}>Open plugin settings</a>\n </div>\n </section>\n ) : (\n <>\n <section style={layoutStyles.card}>\n <div style={layoutStyles.row}>\n <div style={layoutStyles.field}>\n <label style={layoutStyles.label} htmlFor=\"target-project\">Target Rudder project</label>\n <select\n id=\"target-project\"\n data-testid=\"linear-target-project\"\n style={layoutStyles.select}\n value={targetProjectId}\n onChange={(event) => setTargetProjectId(event.target.value)}\n >\n <option value=\"\">Choose a project</option>\n {(bootstrap.data?.projects ?? []).map((project: PageBootstrapData[\"projects\"][number]) => (\n <option key={project.id} value={project.id}>{project.name}</option>\n ))}\n </select>\n </div>\n <div style={layoutStyles.field}>\n <label style={layoutStyles.label} htmlFor=\"linear-team-filter\">Linear team</label>\n <select\n id=\"linear-team-filter\"\n style={layoutStyles.select}\n value={filters.teamId}\n onChange={(event) => setFilters((current) => ({ ...current, teamId: event.target.value, stateId: \"\" }))}\n >\n <option value=\"\">All allowed teams</option>\n {(catalog.data?.teams ?? []).map((team: LinearCatalogData[\"teams\"][number]) => (\n <option key={team.id} value={team.id}>{team.name}</option>\n ))}\n </select>\n </div>\n <div style={layoutStyles.field}>\n <label style={layoutStyles.label} htmlFor=\"linear-state-filter\">Workflow state</label>\n <select\n id=\"linear-state-filter\"\n style={layoutStyles.select}\n value={filters.stateId}\n onChange={(event) => setFilters((current) => ({ ...current, stateId: event.target.value }))}\n >\n <option value=\"\">All states</option>\n {stateOptions.map((state) => (\n <option key={state.id} value={state.id}>{state.name}</option>\n ))}\n </select>\n </div>\n <div style={layoutStyles.field}>\n <label style={layoutStyles.label} htmlFor=\"linear-project-filter\">Linear project</label>\n <select\n id=\"linear-project-filter\"\n style={layoutStyles.select}\n value={filters.projectId}\n onChange={(event) => setFilters((current) => ({ ...current, projectId: event.target.value }))}\n >\n <option value=\"\">All projects</option>\n {(catalog.data?.projects ?? []).map((project: LinearCatalogData[\"projects\"][number]) => (\n <option key={project.id} value={project.id}>{project.name}</option>\n ))}\n </select>\n </div>\n <div style={layoutStyles.field}>\n <label style={layoutStyles.label} htmlFor=\"linear-assignee-filter\">Assignee</label>\n <select\n id=\"linear-assignee-filter\"\n style={layoutStyles.select}\n value={filters.assigneeId}\n onChange={(event) => setFilters((current) => ({ ...current, assigneeId: event.target.value }))}\n >\n <option value=\"\">Anyone</option>\n {(catalog.data?.users ?? []).map((user: LinearCatalogData[\"users\"][number]) => (\n <option key={user.id} value={user.id}>{user.name}</option>\n ))}\n </select>\n </div>\n <div style={layoutStyles.field}>\n <label style={layoutStyles.label} htmlFor=\"linear-query-filter\">Search</label>\n <input\n id=\"linear-query-filter\"\n style={layoutStyles.input}\n value={filters.query}\n onChange={(event) => setFilters((current) => ({ ...current, query: event.target.value }))}\n placeholder=\"Identifier, title, or description\"\n />\n </div>\n </div>\n </section>\n\n <section style={layoutStyles.card}>\n <div style={{ ...layoutStyles.row, justifyContent: \"space-between\" }}>\n <div style={layoutStyles.row}>\n <button\n type=\"button\"\n style={layoutStyles.button}\n onClick={() => {\n const rows = issues.data?.rows ?? [];\n const selectableIds = rows\n .filter((row: LinearIssueRow) => !row.imported)\n .map((row: LinearIssueRow) => row.id);\n setSelectedIssueIds(selectableIds);\n }}\n disabled={issues.loading}\n >\n Select current page\n </button>\n <button\n type=\"button\"\n style={layoutStyles.button}\n onClick={() => setSelectedIssueIds([])}\n disabled={selectedIssueIds.length === 0}\n >\n Clear selection\n </button>\n </div>\n <div style={layoutStyles.row}>\n <button\n type=\"button\"\n style={layoutStyles.button}\n disabled={!targetProjectId || selectedIssueIds.length === 0 || importing}\n onClick={() => void handleImport(\"selected\", selectedIssueIds)}\n >\n Import selected\n </button>\n <button\n type=\"button\"\n style={layoutStyles.primaryButton}\n data-testid=\"linear-import-all\"\n disabled={!targetProjectId || importing}\n onClick={() => void handleImport(\"allMatching\")}\n title={`Imports up to ${LINEAR_IMPORT_ALL_LIMIT} matching issues.`}\n >\n Import all matching\n </button>\n </div>\n </div>\n {!targetProjectId && (\n <div style={{ marginTop: 12, ...layoutStyles.warning }}>\n Choose a target Rudder project to enable per-row, selected, or all-matching import actions.\n </div>\n )}\n </section>\n\n <section style={layoutStyles.card}>\n {issues.loading ? (\n <div>Loading Linear issues\u2026</div>\n ) : issues.error ? (\n <div style={layoutStyles.warning}>{issues.error.message}</div>\n ) : (\n <>\n <table style={layoutStyles.table}>\n <thead>\n <tr>\n <th style={layoutStyles.th}></th>\n <th style={layoutStyles.th}>Issue</th>\n <th style={layoutStyles.th}>State</th>\n <th style={layoutStyles.th}>Project</th>\n <th style={layoutStyles.th}>Assignee</th>\n <th style={layoutStyles.th}>Status</th>\n <th style={layoutStyles.th}>Action</th>\n </tr>\n </thead>\n <tbody>\n {(issues.data?.rows ?? []).map((row: LinearIssueRow) => {\n const checked = selectedIssueIds.includes(row.id);\n const sameOrgLink = row.imported && (!row.importedOrgId || row.importedOrgId === context.orgId);\n return (\n <tr key={row.id}>\n <td style={layoutStyles.td}>\n <input\n type=\"checkbox\"\n checked={checked}\n disabled={row.imported}\n onChange={(event) => {\n setSelectedIssueIds((current) => {\n if (event.target.checked) return [...current, row.id];\n return current.filter((id) => id !== row.id);\n });\n }}\n />\n </td>\n <td style={layoutStyles.td}>\n <div style={{ display: \"grid\", gap: 6 }}>\n <a href={row.url} target=\"_blank\" rel=\"noreferrer\">\n <strong>{row.identifier}</strong> {row.title}\n </a>\n <span style={layoutStyles.pill}>{row.team.name}</span>\n </div>\n </td>\n <td style={layoutStyles.td}>{row.state.name}</td>\n <td style={layoutStyles.td}>{row.project?.name ?? \"None\"}</td>\n <td style={layoutStyles.td}>{row.assignee?.name ?? \"Unassigned\"}</td>\n <td style={layoutStyles.td}>\n {row.imported ? (\n <span data-testid={`linear-imported-${row.id}`} style={layoutStyles.pill}>\n Imported\n </span>\n ) : (\n <span style={layoutStyles.pill}>Ready</span>\n )}\n </td>\n <td style={layoutStyles.td}>\n {row.imported ? (\n sameOrgLink && row.importedRudderIssueId ? (\n <a href={issueHref(orgPrefix, row.importedRudderIssueId)}>Open Rudder issue</a>\n ) : (\n <span>Imported elsewhere</span>\n )\n ) : (\n <button\n type=\"button\"\n style={layoutStyles.subtleButton}\n disabled={!targetProjectId || importing}\n onClick={() => void handleImport(\"single\", [row.id])}\n >\n Import\n </button>\n )}\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n\n {(issues.data?.rows.length ?? 0) === 0 && (\n <div style={{ marginTop: 16, color: \"rgba(15, 23, 42, 0.68)\" }}>\n No Linear issues matched the current filters.\n </div>\n )}\n\n <div style={{ ...layoutStyles.row, justifyContent: \"space-between\", marginTop: 16 }}>\n <span style={{ fontSize: 13, color: \"rgba(15, 23, 42, 0.68)\" }}>\n Showing {issues.data?.totalShown ?? 0} issue(s).\n </span>\n <div style={layoutStyles.row}>\n <button\n type=\"button\"\n style={layoutStyles.button}\n disabled={cursorHistory.length === 0 || importing}\n onClick={() => {\n setCursorHistory((current) => {\n const nextHistory = [...current];\n const previousCursor = nextHistory.pop() ?? null;\n setAfterCursor(previousCursor);\n return nextHistory;\n });\n }}\n >\n Previous\n </button>\n <button\n type=\"button\"\n style={layoutStyles.button}\n disabled={!issues.data?.hasNextPage || importing}\n onClick={() => {\n if (!issues.data?.endCursor) return;\n setCursorHistory((current) => [...current, afterCursor ?? \"\"]);\n setAfterCursor(issues.data.endCursor);\n }}\n >\n Next\n </button>\n </div>\n </div>\n </>\n )}\n </section>\n </>\n )}\n </div>\n );\n}\n\nexport function LinearIssueTab({ context }: PluginDetailTabProps) {\n const orgId = context.orgId ?? \"__missing__\";\n const orgPrefix = getOrgPrefix(context as unknown as Record<string, unknown>);\n const data = usePluginData<IssueLinkData>(DATA_KEYS.issueLink, {\n orgId,\n issueId: context.entityId,\n });\n\n if (data.loading) {\n return <div style={layoutStyles.card}>Loading Linear issue details\u2026</div>;\n }\n\n if (data.error) {\n return <div style={{ ...layoutStyles.card, ...layoutStyles.warning }}>{data.error.message}</div>;\n }\n\n if (!data.data || !data.data.linked) {\n return (\n <div style={layoutStyles.card}>\n <h2 style={{ marginTop: 0 }}>No linked Linear issue</h2>\n <p style={layoutStyles.subtitle}>\n This Rudder issue has not been imported from Linear yet.\n </p>\n <a href={pageHref(orgPrefix, data.data?.searchQuery ?? \"\")}>Open Linear intake with this issue title as the search query</a>\n </div>\n );\n }\n\n const latest = data.data.latestIssue;\n const link = data.data.link;\n\n return (\n <div style={layoutStyles.shell}>\n <section style={layoutStyles.card}>\n <h2 style={{ marginTop: 0 }}>Linked Linear issue</h2>\n <p style={layoutStyles.subtitle}>\n {link.linearIdentifier} maps to this Rudder issue.\n </p>\n <div style={{ ...layoutStyles.row, marginTop: 12 }}>\n <a href={link.linearUrl} target=\"_blank\" rel=\"noreferrer\">Open in Linear</a>\n <span style={layoutStyles.pill}>{latest?.team.name ?? link.teamName}</span>\n <span style={layoutStyles.pill}>{latest?.state.name ?? link.stateName}</span>\n {latest?.project?.name ? <span style={layoutStyles.pill}>{latest.project.name}</span> : null}\n </div>\n </section>\n\n {data.data.staleReason ? (\n <section style={{ ...layoutStyles.card, ...layoutStyles.warning }}>\n {data.data.staleReason}\n </section>\n ) : null}\n\n <section style={layoutStyles.card}>\n <h3 style={{ marginTop: 0 }}>\n {(latest?.identifier ?? link.linearIdentifier)} {latest?.title ?? link.linearTitle}\n </h3>\n <div style={{ ...layoutStyles.row, marginBottom: 12 }}>\n <span style={layoutStyles.pill}>Updated {formatRelativeTime(latest?.updatedAt ?? link.updatedAt)}</span>\n <span style={layoutStyles.pill}>Imported {formatRelativeTime(link.importedAt)}</span>\n <span style={layoutStyles.pill}>{latest?.assignee?.name ?? \"Unassigned\"}</span>\n </div>\n <div style={{ whiteSpace: \"pre-wrap\", lineHeight: 1.6 }}>\n {latest?.description?.trim() || \"This Linear issue has no description.\"}\n </div>\n </section>\n </div>\n );\n}\n\nexport function LinearPluginSettingsPage(_props: PluginSettingsPageProps) {\n const toast = usePluginToast();\n const bootstrap = usePluginData<SettingsBootstrapData>(DATA_KEYS.settingsBootstrap);\n const [draft, setDraft] = useState<LinearPluginConfig>(normalizeConfig(null));\n const [tokenInput, setTokenInput] = useState(\"\");\n const [settingsCatalog, setSettingsCatalog] = useState<SettingsCatalogData | null>(null);\n const [catalogLoading, setCatalogLoading] = useState(false);\n const [catalogError, setCatalogError] = useState<string | null>(null);\n const [connecting, setConnecting] = useState(false);\n const [saving, setSaving] = useState(false);\n const pluginId = getPluginIdFromLocation();\n\n useEffect(() => {\n if (!bootstrap.data) return;\n const nextDraft = normalizeConfig(bootstrap.data.config);\n setDraft(nextDraft);\n }, [bootstrap.data]);\n\n useEffect(() => {\n if (!pluginId || !draft.apiTokenSecretRef) {\n setSettingsCatalog(null);\n setCatalogError(null);\n setCatalogLoading(false);\n return;\n }\n\n let cancelled = false;\n setCatalogLoading(true);\n setCatalogError(null);\n\n void fetchSettingsCatalog()\n .then((catalog) => {\n if (cancelled) return;\n setSettingsCatalog(catalog);\n setDraft((current) => {\n const normalized = normalizeConfig(current);\n const selectedTeamIds = normalized.teamMappings\n .map((team) => team.teamId)\n .filter(Boolean);\n const nextTeamMappings = selectedTeamIds.length > 0\n ? buildTeamMappingsForSelectedTeams(catalog, selectedTeamIds, normalized.teamMappings)\n : buildTeamMappingsFromCatalog(catalog);\n return {\n ...normalized,\n teamMappings: nextTeamMappings,\n };\n });\n })\n .catch((error) => {\n if (cancelled) return;\n setSettingsCatalog(null);\n setCatalogError(error instanceof Error ? error.message : String(error));\n })\n .finally(() => {\n if (!cancelled) setCatalogLoading(false);\n });\n\n return () => {\n cancelled = true;\n };\n }, [draft.apiTokenSecretRef, pluginId]);\n\n const selectedTeamIds = draft.teamMappings\n .map((team) => team.teamId)\n .filter(Boolean);\n const selectedTeamIdSet = new Set(selectedTeamIds);\n const selectedTeamCount = selectedTeamIds.length;\n const catalogTeamCount = settingsCatalog?.teams.length ?? 0;\n const issueBoardHref = linearIssueBoardHref(\n bootstrap.data?.organizations[0]?.issuePrefix ?? null,\n selectedTeamIds[0] ?? null,\n );\n\n async function savePluginConfig(config: LinearPluginConfig) {\n if (!pluginId) throw new Error(\"Unable to resolve plugin id\");\n return await apiFetch(`/api/plugins/${encodeURIComponent(pluginId)}/config`, {\n method: \"POST\",\n body: JSON.stringify({ configJson: prepareConfigForSubmit(config) }),\n });\n }\n\n async function listOrgSecrets(orgId: string): Promise<SecretSummary[]> {\n return await apiFetch<SecretSummary[]>(`/api/orgs/${encodeURIComponent(orgId)}/secrets`);\n }\n\n async function rotateSecret(secretId: string, value: string): Promise<SecretSummary> {\n return await apiFetch<SecretSummary>(`/api/secrets/${encodeURIComponent(secretId)}/rotate`, {\n method: \"POST\",\n body: JSON.stringify({ value }),\n });\n }\n\n async function createLinearTokenSecret(orgId: string, value: string): Promise<SecretSummary> {\n return await apiFetch<SecretSummary>(`/api/orgs/${encodeURIComponent(orgId)}/secrets`, {\n method: \"POST\",\n body: JSON.stringify({\n name: LINEAR_TOKEN_SECRET_NAME,\n value,\n description: \"Used by the Linear plugin to read issues across Rudder organizations.\",\n }),\n });\n }\n\n async function saveLinearTokenSecret(orgId: string, value: string, currentSecretRef: string): Promise<string> {\n if (currentSecretRef) {\n const rotated = await rotateSecret(currentSecretRef, value);\n return rotated.id;\n }\n\n try {\n const created = await createLinearTokenSecret(orgId, value);\n return created.id;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n if (!/Secret already exists/i.test(message)) throw error;\n\n const existing = (await listOrgSecrets(orgId)).find((secret) => secret.name === LINEAR_TOKEN_SECRET_NAME);\n if (!existing) throw error;\n const rotated = await rotateSecret(existing.id, value);\n return rotated.id;\n }\n }\n\n async function fetchPluginData<T>(key: string, params: Record<string, unknown> = {}, orgId?: string): Promise<T> {\n if (!pluginId) throw new Error(\"Unable to resolve plugin id\");\n const payload = await apiFetch<{ data: T }>(`/api/plugins/${encodeURIComponent(pluginId)}/data/${key}`, {\n method: \"POST\",\n body: JSON.stringify({\n ...(orgId ? { orgId } : {}),\n params: {\n ...params,\n ...(orgId ? { orgId } : {}),\n },\n }),\n });\n return payload.data;\n }\n\n async function fetchSettingsCatalogWithRetry(): Promise<SettingsCatalogData> {\n let lastError: unknown = null;\n for (let attempt = 0; attempt < 5; attempt += 1) {\n try {\n return await fetchPluginData<SettingsCatalogData>(DATA_KEYS.settingsCatalog);\n } catch (error) {\n if (isMissingSettingsCatalogHandler(error)) throw error;\n lastError = error;\n await new Promise((resolve) => window.setTimeout(resolve, 350 + attempt * 250));\n }\n }\n throw lastError instanceof Error ? lastError : new Error(String(lastError));\n }\n\n async function refreshPluginRuntime() {\n if (!pluginId) throw new Error(\"Unable to resolve plugin id\");\n await apiFetch(`/api/plugins/${encodeURIComponent(pluginId)}/disable`, {\n method: \"POST\",\n body: JSON.stringify({ reason: \"Refresh Linear plugin after settings update\" }),\n });\n await apiFetch(`/api/plugins/${encodeURIComponent(pluginId)}/enable`, {\n method: \"POST\",\n body: JSON.stringify({}),\n });\n }\n\n async function fetchSettingsCatalog(): Promise<SettingsCatalogData> {\n try {\n return await fetchSettingsCatalogWithRetry();\n } catch (error) {\n if (!isMissingSettingsCatalogHandler(error)) throw error;\n await refreshPluginRuntime();\n return await fetchSettingsCatalogWithRetry();\n }\n }\n\n function toggleTeam(teamId: string) {\n if (!settingsCatalog) return;\n setDraft((current) => {\n const normalized = normalizeConfig(current);\n const nextTeamIds = new Set(normalized.teamMappings.map((team) => team.teamId).filter(Boolean));\n if (nextTeamIds.has(teamId)) {\n nextTeamIds.delete(teamId);\n } else {\n nextTeamIds.add(teamId);\n }\n return {\n ...normalized,\n teamMappings: buildTeamMappingsForSelectedTeams(settingsCatalog, [...nextTeamIds], normalized.teamMappings),\n };\n });\n }\n\n function selectAllTeams() {\n if (!settingsCatalog) return;\n setDraft((current) => {\n const normalized = normalizeConfig(current);\n return {\n ...normalized,\n teamMappings: buildTeamMappingsForSelectedTeams(\n settingsCatalog,\n settingsCatalog.teams.map((team) => team.id),\n normalized.teamMappings,\n ),\n };\n });\n }\n\n function setStatusRule(teamId: string, stateId: string, rudderStatus: LinearStateMapping[\"rudderStatus\"]) {\n setDraft((current) => ({\n ...current,\n teamMappings: current.teamMappings.map((team) => {\n if (team.teamId !== teamId) return team;\n return {\n ...team,\n stateMappings: team.stateMappings.map((state) =>\n state.linearStateId === stateId ? { ...state, rudderStatus } : state,\n ),\n };\n }),\n }));\n }\n\n async function connectLinear() {\n if (!pluginId) {\n toast({ title: \"Unable to resolve plugin id\", tone: \"error\" });\n return;\n }\n\n setConnecting(true);\n try {\n let apiTokenSecretRef = draft.apiTokenSecretRef?.trim() ?? \"\";\n const trimmedToken = tokenInput.trim();\n if (trimmedToken) {\n const secretOrgId = bootstrap.data?.organizations[0]?.id ?? \"\";\n if (!secretOrgId) {\n toast({\n title: \"Create a Rudder organization first\",\n body: \"Rudder needs one organization to store the Linear token reference.\",\n tone: \"warn\",\n });\n return;\n }\n apiTokenSecretRef = await saveLinearTokenSecret(secretOrgId, trimmedToken, apiTokenSecretRef);\n }\n if (!apiTokenSecretRef) {\n toast({\n title: \"Paste a Linear token\",\n body: \"Create one in Linear, paste it here, then connect.\",\n tone: \"warn\",\n });\n return;\n }\n\n const seedConfig = {\n ...draft,\n apiTokenSecretRef,\n };\n await savePluginConfig(seedConfig);\n\n const catalog = await fetchSettingsCatalog();\n if (catalog.teams.length === 0) {\n throw new Error(\"Linear returned no teams for this token.\");\n }\n const generatedTeamMappings = buildTeamMappingsFromCatalog(catalog);\n const nextConfig = prepareConfigForSubmit({\n ...seedConfig,\n teamMappings: generatedTeamMappings,\n });\n await savePluginConfig(nextConfig);\n setSettingsCatalog(catalog);\n setCatalogError(null);\n setDraft(nextConfig);\n setTokenInput(\"\");\n bootstrap.refresh();\n const firstTeamId = generatedTeamMappings[0]?.teamId ?? null;\n const firstOrgPrefix = bootstrap.data?.organizations[0]?.issuePrefix ?? null;\n toast({\n title: \"Linear is ready\",\n body: summarizeMapping(generatedTeamMappings),\n tone: \"success\",\n action: {\n label: \"Open Linear issues\",\n href: linearIssueBoardHref(firstOrgPrefix, firstTeamId),\n },\n });\n } catch (error) {\n toast({\n title: \"Linear connection failed\",\n body: error instanceof Error ? error.message : String(error),\n tone: \"error\",\n });\n } finally {\n setConnecting(false);\n }\n }\n\n async function saveConfig() {\n if (!pluginId) {\n toast({ title: \"Unable to resolve plugin id\", tone: \"error\" });\n return;\n }\n if (draft.apiTokenSecretRef && settingsCatalog && selectedTeamCount === 0) {\n toast({\n title: \"Choose at least one Linear team\",\n body: \"The import page needs one or more teams to show Linear issues.\",\n tone: \"warn\",\n });\n return;\n }\n setSaving(true);\n try {\n await savePluginConfig(draft);\n bootstrap.refresh();\n toast({\n title: \"Linear settings saved\",\n tone: \"success\",\n });\n } catch (error) {\n toast({\n title: \"Failed to save Linear settings\",\n body: error instanceof Error ? error.message : String(error),\n tone: \"error\",\n });\n } finally {\n setSaving(false);\n }\n }\n\n function connectionStatusText(): string {\n if (bootstrap.loading) return \"Loading plugin settings\u2026\";\n if (catalogLoading) return \"Reading teams and workflow states from Linear\u2026\";\n if (catalogError) return `Linear could not be loaded: ${catalogError}`;\n if (settingsCatalog) {\n return `Connected. ${catalogTeamCount} Linear team${catalogTeamCount === 1 ? \"\" : \"s\"} found; ${selectedTeamCount} selected for import.`;\n }\n if (draft.apiTokenSecretRef) return \"Token saved. Refresh from Linear to load teams.\";\n return \"Paste a Linear token to connect this instance.\";\n }\n\n return (\n <div style={layoutStyles.shell}>\n <section key=\"linear-settings-intro\" style={layoutStyles.card}>\n <h2 style={{ marginTop: 0 }}>Linear</h2>\n <p style={layoutStyles.subtitle}>\n Paste a Linear token once. Rudder will read your teams and workflow states, then prepare the import settings automatically.\n </p>\n {bootstrap.data?.fixtureMode ? (\n <div style={{ marginTop: 12, ...layoutStyles.warning }}>\n Fixture mode is enabled in this environment. Linear reads use deterministic test data.\n </div>\n ) : null}\n </section>\n\n <section key=\"linear-settings-connect\" style={layoutStyles.card}>\n <div style={layoutStyles.sectionHeader}>\n <div>\n <h3 style={{ margin: 0 }}>Connect Linear</h3>\n <p style={layoutStyles.subtitle}>\n Paste a token and Rudder will prepare the import setup from Linear.{\" \"}\n <a href={LINEAR_TOKEN_SETTINGS_URL} target=\"_blank\" rel=\"noreferrer\" style={layoutStyles.monoLink}>\n Create a Linear token\n </a>\n .\n </p>\n </div>\n </div>\n <div style={{ ...layoutStyles.connectionGrid, marginTop: 14 }}>\n <div style={layoutStyles.field}>\n <label style={layoutStyles.label} htmlFor=\"linear-token\">Linear token</label>\n <input\n id=\"linear-token\"\n data-testid=\"linear-token-input\"\n style={layoutStyles.input}\n type=\"password\"\n autoComplete=\"off\"\n value={tokenInput}\n onChange={(event) => setTokenInput(event.target.value)}\n placeholder={draft.apiTokenSecretRef ? \"Token saved. Paste a new token to replace it.\" : \"Paste a Linear token\"}\n />\n </div>\n <div style={{ display: \"grid\", gap: 6, justifySelf: \"start\" }}>\n <span aria-hidden=\"true\" style={{ ...layoutStyles.label, visibility: \"hidden\" }}>Action</span>\n <button\n type=\"button\"\n style={layoutStyles.primaryButton}\n data-testid=\"linear-connect\"\n onClick={() => void connectLinear()}\n disabled={connecting}\n >\n {connecting ? \"Connecting\u2026\" : draft.apiTokenSecretRef ? \"Refresh from Linear\" : \"Connect Linear\"}\n </button>\n </div>\n </div>\n <div style={{ ...layoutStyles.statusLine, display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 12, flexWrap: \"wrap\" }}>\n <span>{connectionStatusText()}</span>\n {settingsCatalog && selectedTeamCount > 0 ? (\n <a href={issueBoardHref} style={layoutStyles.monoLink}>Open Linear issues</a>\n ) : null}\n </div>\n </section>\n\n {draft.apiTokenSecretRef ? (\n <section key=\"linear-settings-teams\" style={layoutStyles.card}>\n <div style={layoutStyles.sectionHeader}>\n <div>\n <h3 style={{ margin: 0 }}>Teams to import</h3>\n <p style={layoutStyles.subtitle}>\n Choose the Linear teams that should appear on the import page. Rudder stores the technical details for you.\n </p>\n </div>\n <button\n type=\"button\"\n style={layoutStyles.subtleButton}\n onClick={selectAllTeams}\n disabled={!settingsCatalog || catalogLoading || catalogTeamCount === selectedTeamCount}\n >\n Select all teams\n </button>\n </div>\n\n {catalogLoading ? (\n <p style={layoutStyles.helpText}>Loading teams from Linear\u2026</p>\n ) : catalogError ? (\n <div style={{ marginTop: 14, ...layoutStyles.warning }}>\n <strong>Linear could not be loaded.</strong>\n <div style={{ marginTop: 6 }}>{catalogError}</div>\n </div>\n ) : settingsCatalog ? (\n <>\n <div style={layoutStyles.teamGrid}>\n {settingsCatalog.teams.map((team, index) => {\n const checked = selectedTeamIdSet.has(team.id);\n return (\n <label\n key={`${team.id}-${index}`}\n style={{\n ...layoutStyles.teamChoice,\n borderColor: checked ? \"var(--primary, #2563eb)\" : \"var(--border, rgba(15, 23, 42, 0.14))\",\n background: checked ? \"rgba(37, 99, 235, 0.08)\" : \"var(--background, transparent)\",\n }}\n >\n <input\n data-testid={`linear-team-choice-${team.id}`}\n style={layoutStyles.checkbox}\n type=\"checkbox\"\n checked={checked}\n onChange={() => toggleTeam(team.id)}\n />\n <span>\n <strong>{team.name}</strong>\n <span style={{ display: \"block\", marginTop: 3, ...layoutStyles.helpText }}>\n {team.key} \u00B7 {team.states.length} workflow state{team.states.length === 1 ? \"\" : \"s\"}\n </span>\n </span>\n </label>\n );\n })}\n </div>\n <div style={{ ...layoutStyles.row, justifyContent: \"space-between\", marginTop: 14 }}>\n <span style={layoutStyles.helpText}>\n {selectedTeamCount === 0\n ? \"Choose at least one team before saving.\"\n : `${selectedTeamCount} team${selectedTeamCount === 1 ? \"\" : \"s\"} selected for import.`}\n </span>\n <button\n type=\"button\"\n style={layoutStyles.primaryButton}\n data-testid=\"linear-save-team-choices\"\n onClick={() => void saveConfig()}\n disabled={saving || selectedTeamCount === 0}\n >\n {saving ? \"Saving\u2026\" : \"Save choices\"}\n </button>\n </div>\n </>\n ) : (\n <p style={layoutStyles.helpText}>Refresh from Linear to load teams for this token.</p>\n )}\n </section>\n ) : null}\n\n {settingsCatalog && draft.teamMappings.length > 0 ? (\n <section key=\"linear-settings-status-rules\" style={layoutStyles.card}>\n <details>\n <summary style={{ cursor: \"pointer\", fontWeight: 700 }}>Status rules (optional)</summary>\n <p style={layoutStyles.subtitle}>\n Rudder applies smart defaults from Linear. Change these only if imported issues land in the wrong Rudder status.\n </p>\n <div style={{ display: \"grid\", gap: 18, marginTop: 14 }}>\n {draft.teamMappings.map((teamMapping, teamIndex) => {\n const catalogTeam = settingsCatalog.teams.find((team) => team.id === teamMapping.teamId);\n const states = catalogTeam?.states ?? teamMapping.stateMappings.map((state) => ({\n id: state.linearStateId,\n name: state.linearStateName ?? \"Linear status\",\n type: null,\n }));\n const statusByStateId = new Map(teamMapping.stateMappings.map((state) => [state.linearStateId, state.rudderStatus]));\n return (\n <div key={`${teamMapping.teamId}-${teamIndex}`} style={{ borderTop: \"1px solid var(--border, rgba(15, 23, 42, 0.1))\", paddingTop: 14 }}>\n <h4 style={{ margin: \"0 0 10px\" }}>{teamMapping.teamName ?? catalogTeam?.name ?? \"Linear team\"}</h4>\n <div style={{ display: \"grid\", gap: 8 }}>\n {states.map((state, stateIndex) => (\n <div key={`${teamMapping.teamId}-${state.id}-${stateIndex}`} style={layoutStyles.statusRuleGrid}>\n <div>\n <strong>{state.name}</strong>\n <div style={layoutStyles.helpText}>{state.type ? `${state.type} in Linear` : \"Linear workflow state\"}</div>\n </div>\n <select\n style={layoutStyles.select}\n value={statusByStateId.get(state.id) ?? inferRudderStatus(state)}\n onChange={(event) =>\n setStatusRule(teamMapping.teamId, state.id, event.target.value as LinearStateMapping[\"rudderStatus\"])}\n >\n {RUDDER_STATUS_OPTIONS.map((status) => (\n <option key={`${teamMapping.teamId}-${state.id}-${status}`} value={status}>{formatRudderStatus(status)}</option>\n ))}\n </select>\n </div>\n ))}\n </div>\n </div>\n );\n })}\n </div>\n <div style={{ marginTop: 14 }}>\n <button type=\"button\" style={layoutStyles.primaryButton} onClick={() => void saveConfig()} disabled={saving}>\n {saving ? \"Saving\u2026\" : \"Save status rules\"}\n </button>\n </div>\n </details>\n </section>\n ) : null}\n </div>\n );\n}\n", "import type { Issue } from \"@rudderhq/shared\";\n\nexport const PLUGIN_ID = \"rudder.linear\";\nexport const PLUGIN_VERSION = \"0.1.0\";\nexport const PAGE_ROUTE = \"linear\";\nexport const ENTITY_TYPE_LINEAR_ISSUE_LINK = \"linear_issue_link\";\nexport const ISSUE_LINK_STATE_KEY = \"linear-link\";\nexport const DEFAULT_LINEAR_API_URL = \"https://api.linear.app/graphql\";\nexport const LINEAR_TOKEN_SETTINGS_URL = \"https://linear.app/settings/account/security\";\nexport const LINEAR_PAGE_SIZE = 25;\nexport const LINEAR_IMPORT_ALL_LIMIT = 100;\n\nexport const SLOT_IDS = {\n page: \"linear-page\",\n settingsPage: \"linear-settings-page\",\n issueTab: \"linear-issue-tab\",\n} as const;\n\nexport const EXPORT_NAMES = {\n page: \"LinearPluginPage\",\n settingsPage: \"LinearPluginSettingsPage\",\n issueTab: \"LinearIssueTab\",\n} as const;\n\nexport const DATA_KEYS = {\n settingsBootstrap: \"settings-bootstrap\",\n pageBootstrap: \"page-bootstrap\",\n settingsCatalog: \"settings-catalog\",\n catalog: \"linear-catalog\",\n issues: \"linear-issues\",\n issueLink: \"issue-link\",\n} as const;\n\nexport const ACTION_KEYS = {\n importIssues: \"import-linear-issues\",\n} as const;\n\nexport const RUDDER_STATUS_OPTIONS: Issue[\"status\"][] = [\n \"backlog\",\n \"todo\",\n \"in_progress\",\n \"in_review\",\n \"done\",\n \"blocked\",\n \"cancelled\",\n];\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import {\n useEffect,\n useMemo,\n useState,\n type Dispatch,\n type SetStateAction,\n type CSSProperties,\n} from \"react\";\nimport {\n usePluginAction,\n usePluginData,\n usePluginToast,\n type PluginDetailTabProps,\n type PluginPageProps,\n type PluginSettingsPageProps,\n} from \"@rudderhq/plugin-sdk/ui\";\nimport {\n ACTION_KEYS,\n DATA_KEYS,\n LINEAR_IMPORT_ALL_LIMIT,\n LINEAR_PAGE_SIZE,\n LINEAR_TOKEN_SETTINGS_URL,\n RUDDER_STATUS_OPTIONS,\n} from \"../constants.js\";\nimport type {\n ImportLinearIssuesActionResult,\n IssueLinkData,\n LinearIssueRow,\n LinearCatalogData,\n LinearOrganizationMapping,\n LinearPluginConfig,\n LinearStateSummary,\n LinearStateMapping,\n LinearTeamMapping,\n LinearIssuesData,\n PageBootstrapData,\n SettingsCatalogData,\n SettingsBootstrapData,\n} from \"../types.js\";\n\nconst layoutStyles: Record<string, CSSProperties> = {\n shell: {\n display: \"grid\",\n gap: 16,\n color: \"var(--foreground, #111827)\",\n fontFamily: \"ui-sans-serif, system-ui, sans-serif\",\n },\n card: {\n border: \"1px solid var(--border, rgba(15, 23, 42, 0.14))\",\n borderRadius: 8,\n padding: 16,\n background: \"var(--card, var(--background, #fff))\",\n },\n title: {\n fontSize: 22,\n fontWeight: 700,\n margin: 0,\n },\n subtitle: {\n margin: \"6px 0 0\",\n color: \"var(--muted-foreground, rgba(15, 23, 42, 0.68))\",\n fontSize: 14,\n lineHeight: 1.5,\n },\n row: {\n display: \"flex\",\n gap: 12,\n flexWrap: \"wrap\",\n alignItems: \"center\",\n },\n connectionGrid: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(220px, 1fr))\",\n gap: 12,\n alignItems: \"end\",\n },\n field: {\n display: \"grid\",\n gap: 6,\n minWidth: 180,\n flex: \"1 1 180px\",\n },\n label: {\n fontSize: 12,\n fontWeight: 700,\n color: \"var(--muted-foreground, rgba(15, 23, 42, 0.66))\",\n letterSpacing: 0,\n },\n input: {\n width: \"100%\",\n border: \"1px solid var(--border, rgba(15, 23, 42, 0.18))\",\n borderRadius: 6,\n padding: \"10px 12px\",\n fontSize: 14,\n background: \"var(--background, #fff)\",\n color: \"var(--foreground, #111827)\",\n boxSizing: \"border-box\",\n },\n select: {\n width: \"100%\",\n border: \"1px solid var(--border, rgba(15, 23, 42, 0.18))\",\n borderRadius: 6,\n padding: \"10px 12px\",\n fontSize: 14,\n background: \"var(--background, #fff)\",\n color: \"var(--foreground, #111827)\",\n boxSizing: \"border-box\",\n },\n button: {\n border: \"1px solid var(--border, rgba(15, 23, 42, 0.18))\",\n borderRadius: 6,\n padding: \"10px 14px\",\n fontSize: 14,\n fontWeight: 600,\n background: \"var(--background, #fff)\",\n color: \"var(--foreground, #111827)\",\n cursor: \"pointer\",\n },\n primaryButton: {\n border: \"1px solid var(--primary, #0f172a)\",\n borderRadius: 6,\n padding: \"10px 14px\",\n fontSize: 14,\n fontWeight: 700,\n background: \"var(--primary, #0f172a)\",\n color: \"var(--primary-foreground, #fff)\",\n cursor: \"pointer\",\n },\n subtleButton: {\n border: \"1px solid var(--border, rgba(15, 23, 42, 0.12))\",\n borderRadius: 6,\n padding: \"8px 12px\",\n fontSize: 13,\n fontWeight: 600,\n background: \"var(--secondary, rgba(15, 23, 42, 0.04))\",\n color: \"var(--secondary-foreground, var(--foreground, #111827))\",\n cursor: \"pointer\",\n },\n warning: {\n border: \"1px solid rgba(217, 119, 6, 0.24)\",\n background: \"rgba(251, 191, 36, 0.12)\",\n borderRadius: 8,\n padding: 14,\n fontSize: 14,\n lineHeight: 1.5,\n },\n table: {\n width: \"100%\",\n borderCollapse: \"collapse\",\n fontSize: 14,\n },\n th: {\n textAlign: \"left\",\n fontSize: 12,\n letterSpacing: 0,\n color: \"var(--muted-foreground, rgba(15, 23, 42, 0.62))\",\n padding: \"10px 12px\",\n borderBottom: \"1px solid var(--border, rgba(15, 23, 42, 0.1))\",\n },\n td: {\n padding: \"12px\",\n borderBottom: \"1px solid var(--border, rgba(15, 23, 42, 0.08))\",\n verticalAlign: \"top\",\n },\n pill: {\n display: \"inline-flex\",\n alignItems: \"center\",\n borderRadius: 999,\n padding: \"4px 10px\",\n background: \"var(--secondary, rgba(15, 23, 42, 0.06))\",\n color: \"var(--secondary-foreground, var(--foreground, #111827))\",\n fontSize: 12,\n fontWeight: 600,\n },\n monoLink: {\n fontFamily: \"ui-monospace, SFMono-Regular, Menlo, monospace\",\n fontSize: 12,\n },\n helpText: {\n fontSize: 13,\n lineHeight: 1.5,\n color: \"var(--muted-foreground, rgba(15, 23, 42, 0.68))\",\n },\n statusLine: {\n marginTop: 14,\n paddingTop: 14,\n borderTop: \"1px solid var(--border, rgba(15, 23, 42, 0.1))\",\n fontSize: 13,\n lineHeight: 1.5,\n color: \"var(--muted-foreground, rgba(15, 23, 42, 0.68))\",\n },\n sectionHeader: {\n display: \"flex\",\n justifyContent: \"space-between\",\n gap: 12,\n alignItems: \"flex-start\",\n flexWrap: \"wrap\",\n },\n teamGrid: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(220px, 1fr))\",\n gap: 10,\n marginTop: 14,\n },\n teamChoice: {\n display: \"flex\",\n gap: 10,\n alignItems: \"flex-start\",\n border: \"1px solid var(--border, rgba(15, 23, 42, 0.14))\",\n borderRadius: 8,\n padding: 12,\n cursor: \"pointer\",\n background: \"var(--background, transparent)\",\n },\n checkbox: {\n marginTop: 3,\n },\n statusRuleGrid: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(180px, 1fr))\",\n gap: 10,\n alignItems: \"center\",\n },\n};\n\nconst LINEAR_TOKEN_SECRET_NAME = \"Linear token\";\n\ntype SecretSummary = {\n id: string;\n name: string;\n};\n\nfunction normalizeConfig(config: LinearPluginConfig | null | undefined): LinearPluginConfig {\n const legacyOrganizationMappings = Array.isArray(config?.organizationMappings) ? config.organizationMappings : [];\n const explicitTeamMappings = Array.isArray(config?.teamMappings) ? config.teamMappings : [];\n return {\n apiTokenSecretRef: config?.apiTokenSecretRef ?? \"\",\n teamMappings: explicitTeamMappings.length > 0\n ? explicitTeamMappings\n : mergeLegacyTeamMappings(legacyOrganizationMappings),\n organizationMappings: legacyOrganizationMappings,\n ...(config?.fixtureMode === true ? { fixtureMode: true } : {}),\n };\n}\n\nfunction mergeLegacyTeamMappings(mappings: LinearOrganizationMapping[]): LinearTeamMapping[] {\n const byTeamId = new Map<string, LinearTeamMapping>();\n for (const mapping of mappings) {\n for (const team of mapping.teamMappings ?? []) {\n if (!team.teamId || byTeamId.has(team.teamId)) continue;\n byTeamId.set(team.teamId, team);\n }\n }\n return [...byTeamId.values()];\n}\n\nfunction getOrgPrefix(context: Record<string, unknown>): string | null {\n const orgPrefix = typeof context[\"orgPrefix\"] === \"string\" ? context[\"orgPrefix\"] : null;\n const companyPrefix = typeof context[\"companyPrefix\"] === \"string\" ? context[\"companyPrefix\"] : null;\n return orgPrefix ?? companyPrefix;\n}\n\nfunction getPluginIdFromLocation(): string | null {\n if (typeof window === \"undefined\") return null;\n const match = window.location.pathname.match(/\\/instance\\/settings\\/plugins\\/([^/?#]+)/);\n return match?.[1] ?? null;\n}\n\nasync function apiFetch<T>(path: string, init?: RequestInit): Promise<T> {\n const response = await fetch(path, {\n credentials: \"same-origin\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...(init?.headers ?? {}),\n },\n ...init,\n });\n if (!response.ok) {\n const payload = await response.json().catch(async () => ({ error: await response.text() }));\n const message = typeof payload?.error === \"string\"\n ? payload.error\n : typeof payload?.message === \"string\"\n ? payload.message\n : `Request failed (${response.status})`;\n throw new Error(message);\n }\n return await response.json() as T;\n}\n\nfunction formatRudderStatus(status: LinearStateMapping[\"rudderStatus\"]): string {\n return status.replaceAll(\"_\", \" \");\n}\n\nfunction inferRudderStatus(state: LinearStateSummary): LinearStateMapping[\"rudderStatus\"] {\n const type = (state.type ?? \"\").toLowerCase();\n const name = state.name.toLowerCase();\n if (type.includes(\"completed\") || name.includes(\"done\") || name.includes(\"complete\")) return \"done\";\n if (type.includes(\"cancel\") || name.includes(\"cancel\")) return \"cancelled\";\n if (name.includes(\"review\")) return \"in_review\";\n if (type.includes(\"backlog\") || type.includes(\"triage\") || name.includes(\"backlog\") || name.includes(\"triage\")) return \"backlog\";\n if (type.includes(\"started\") || type.includes(\"unstarted\") || name.includes(\"progress\") || name.includes(\"todo\")) return \"todo\";\n return \"backlog\";\n}\n\nfunction buildTeamMappingsFromCatalog(catalog: SettingsCatalogData): LinearTeamMapping[] {\n return catalog.teams.map((team) => buildTeamMappingFromCatalog(team));\n}\n\nfunction buildTeamMappingFromCatalog(\n team: SettingsCatalogData[\"teams\"][number],\n existing?: LinearTeamMapping | null,\n): LinearTeamMapping {\n const existingStatusByStateId = new Map(\n (existing?.stateMappings ?? []).map((state) => [state.linearStateId, state.rudderStatus]),\n );\n return {\n teamId: team.id,\n teamName: team.name,\n stateMappings: team.states.map((state) => ({\n linearStateId: state.id,\n linearStateName: state.name,\n rudderStatus: existingStatusByStateId.get(state.id) ?? inferRudderStatus(state),\n })),\n };\n}\n\nfunction buildTeamMappingsForSelectedTeams(\n catalog: SettingsCatalogData,\n selectedTeamIds: string[],\n existingTeamMappings: LinearTeamMapping[],\n): LinearTeamMapping[] {\n const selected = new Set(selectedTeamIds);\n const existingByTeamId = new Map(existingTeamMappings.map((team) => [team.teamId, team]));\n return catalog.teams\n .filter((team) => selected.has(team.id))\n .map((team) => buildTeamMappingFromCatalog(team, existingByTeamId.get(team.id)));\n}\n\nfunction countMappedStates(teamMappings: LinearTeamMapping[] | null | undefined): number {\n return teamMappings?.reduce((sum, team) => sum + team.stateMappings.length, 0) ?? 0;\n}\n\nfunction summarizeMapping(teamMappings: LinearTeamMapping[] | null | undefined): string {\n if (!teamMappings) return \"No Linear workspace loaded yet.\";\n const teamCount = teamMappings.length;\n const stateCount = countMappedStates(teamMappings);\n return `${teamCount} team${teamCount === 1 ? \"\" : \"s\"} and ${stateCount} workflow state${stateCount === 1 ? \"\" : \"s\"} ready.`;\n}\n\nfunction isMissingSettingsCatalogHandler(error: unknown): boolean {\n const message = error instanceof Error ? error.message : String(error);\n return /No data handler registered/i.test(message) && /settings-catalog/i.test(message);\n}\n\nfunction prepareConfigForSubmit(config: LinearPluginConfig): LinearPluginConfig {\n const teamMappings = config.teamMappings\n .map((team) => ({\n teamId: team.teamId.trim(),\n teamName: team.teamName?.trim() || undefined,\n stateMappings: team.stateMappings\n .map((state) => ({\n linearStateId: state.linearStateId.trim(),\n linearStateName: state.linearStateName?.trim() || undefined,\n rudderStatus: state.rudderStatus,\n }))\n .filter((state) => state.linearStateId),\n }))\n .filter((team) => team.teamId);\n\n return {\n apiTokenSecretRef: config.apiTokenSecretRef?.trim() ?? \"\",\n ...(config.fixtureMode === true ? { fixtureMode: true } : {}),\n teamMappings,\n // Keep a legacy-compatible shape for already-installed manifests that still\n // require organizationMappings during config validation. New runtime code\n // reads the top-level teamMappings field.\n organizationMappings: teamMappings.length > 0 ? [{ orgId: \"__global__\", teamMappings }] : [],\n };\n}\n\nfunction summarizeImportResult(result: ImportLinearIssuesActionResult): string {\n const parts = [`Imported ${result.importedCount}`];\n if (result.duplicateCount > 0) parts.push(`${result.duplicateCount} duplicate`);\n if (result.fallbackCount > 0) parts.push(`${result.fallbackCount} fallback`);\n if (result.adjustedCount > 0) parts.push(`${result.adjustedCount} adjusted`);\n return parts.join(\" / \");\n}\n\nfunction formatRelativeTime(timestamp: string | null | undefined): string {\n if (!timestamp) return \"Unknown\";\n const date = new Date(timestamp);\n if (Number.isNaN(date.getTime())) return timestamp;\n return date.toLocaleString();\n}\n\nfunction issueHref(orgPrefix: string | null, issueId: string): string {\n return orgPrefix ? `/${orgPrefix}/issues/${issueId}` : `/issues/${issueId}`;\n}\n\nfunction pageHref(orgPrefix: string | null, query?: string): string {\n if (!orgPrefix) return \"/linear\";\n const url = new URL(`/${orgPrefix}/linear`, \"https://local.invalid\");\n if (query) url.searchParams.set(\"q\", query);\n return `${url.pathname}${url.search}`;\n}\n\nfunction linearIssueBoardHref(orgPrefix: string | null | undefined, teamId?: string | null): string {\n const basePath = orgPrefix ? `/${encodeURIComponent(orgPrefix)}/issues` : \"/issues\";\n const url = new URL(basePath, \"https://local.invalid\");\n url.searchParams.set(\"source\", \"linear\");\n if (teamId) url.searchParams.set(\"linearTeamId\", teamId);\n return `${url.pathname}${url.search}`;\n}\n\nfunction readLinearPageUrlFilters() {\n if (typeof window === \"undefined\") {\n return { query: \"\", projectId: \"\", teamId: \"\" };\n }\n const params = new URLSearchParams(window.location.search);\n return {\n query: params.get(\"q\") ?? \"\",\n projectId: params.get(\"linearProjectId\") ?? \"\",\n teamId: params.get(\"linearTeamId\") ?? \"\",\n };\n}\n\ntype FilterState = {\n teamId: string;\n stateId: string;\n projectId: string;\n assigneeId: string;\n query: string;\n};\n\nfunction useLinearFilters(\n initialQuery: string,\n initialProjectId = \"\",\n initialTeamId = \"\",\n): [FilterState, Dispatch<SetStateAction<FilterState>>] {\n const [filters, setFilters] = useState<FilterState>({\n teamId: initialTeamId,\n stateId: \"\",\n projectId: initialProjectId,\n assigneeId: \"\",\n query: initialQuery,\n });\n return [filters, setFilters];\n}\n\nexport function LinearPluginPage({ context }: PluginPageProps) {\n const toast = usePluginToast();\n const importIssues = usePluginAction(ACTION_KEYS.importIssues) as (\n params?: Record<string, unknown>,\n ) => Promise<ImportLinearIssuesActionResult>;\n const orgId = context.orgId ?? \"__missing__\";\n const orgPrefix = getOrgPrefix(context as unknown as Record<string, unknown>);\n const urlFilters = readLinearPageUrlFilters();\n\n const bootstrap = usePluginData<PageBootstrapData>(DATA_KEYS.pageBootstrap, { orgId });\n const catalog = usePluginData<LinearCatalogData>(DATA_KEYS.catalog, { orgId });\n const [filters, setFilters] = useLinearFilters(urlFilters.query, urlFilters.projectId, urlFilters.teamId);\n const [targetProjectId, setTargetProjectId] = useState(\"\");\n const [afterCursor, setAfterCursor] = useState<string | null>(null);\n const [cursorHistory, setCursorHistory] = useState<string[]>([]);\n const [selectedIssueIds, setSelectedIssueIds] = useState<string[]>([]);\n const [importing, setImporting] = useState(false);\n\n const issues = usePluginData<LinearIssuesData>(DATA_KEYS.issues, {\n orgId,\n limit: LINEAR_PAGE_SIZE,\n after: afterCursor ?? undefined,\n teamId: filters.teamId || undefined,\n stateId: filters.stateId || undefined,\n projectId: filters.projectId || undefined,\n assigneeId: filters.assigneeId || undefined,\n query: filters.query || undefined,\n });\n\n useEffect(() => {\n setFilters((current) => {\n if (\n current.query === urlFilters.query &&\n current.projectId === urlFilters.projectId &&\n current.teamId === urlFilters.teamId\n ) {\n return current;\n }\n return {\n ...current,\n query: urlFilters.query,\n projectId: urlFilters.projectId,\n teamId: urlFilters.teamId,\n };\n });\n }, [setFilters, urlFilters.projectId, urlFilters.query, urlFilters.teamId]);\n\n const stateOptions = useMemo(() => {\n if (!catalog.data?.teams?.length) return [];\n const sourceTeams = filters.teamId\n ? catalog.data.teams.filter((team: LinearCatalogData[\"teams\"][number]) => team.id === filters.teamId)\n : catalog.data.teams;\n const deduped = new Map<string, { id: string; name: string }>();\n for (const team of sourceTeams) {\n for (const state of team.states) {\n deduped.set(state.id, { id: state.id, name: state.name });\n }\n }\n return [...deduped.values()];\n }, [catalog.data?.teams, filters.teamId]);\n\n useEffect(() => {\n setAfterCursor(null);\n setCursorHistory([]);\n setSelectedIssueIds([]);\n }, [filters.teamId, filters.stateId, filters.projectId, filters.assigneeId, filters.query]);\n\n useEffect(() => {\n const visibleIds = new Set(issues.data?.rows.map((row: LinearIssueRow) => row.id) ?? []);\n setSelectedIssueIds((current) => {\n const next = current.filter((id) => visibleIds.has(id));\n if (next.length === current.length && next.every((id, index) => id === current[index])) {\n return current;\n }\n return next;\n });\n }, [issues.data?.rows]);\n\n async function handleImport(mode: \"single\" | \"selected\" | \"allMatching\", issueIds?: string[]) {\n if (!targetProjectId) {\n toast({\n title: \"Choose a target project\",\n body: \"Imports are disabled until a Rudder project is selected.\",\n tone: \"warn\",\n });\n return;\n }\n setImporting(true);\n try {\n const result = await importIssues({\n orgId,\n targetProjectId,\n mode,\n issueIds,\n filters: {\n teamId: filters.teamId || undefined,\n stateId: filters.stateId || undefined,\n projectId: filters.projectId || undefined,\n assigneeId: filters.assigneeId || undefined,\n query: filters.query || undefined,\n },\n });\n toast({\n title: \"Linear import complete\",\n body: summarizeImportResult(result),\n tone: \"success\",\n });\n issues.refresh();\n setSelectedIssueIds([]);\n } catch (error) {\n toast({\n title: \"Linear import failed\",\n body: error instanceof Error ? error.message : String(error),\n tone: \"error\",\n });\n } finally {\n setImporting(false);\n }\n }\n\n return (\n <div style={layoutStyles.shell}>\n <section style={layoutStyles.card}>\n <h1 style={layoutStyles.title}>Linear intake</h1>\n <p style={layoutStyles.subtitle}>\n Import Linear issues into a chosen Rudder project. This page is the bulk workspace; the issue tab is the linked detail view.\n </p>\n </section>\n\n {bootstrap.loading ? (\n <section style={layoutStyles.card}>Loading Linear import context\u2026</section>\n ) : !bootstrap.data?.configured ? (\n <section style={{ ...layoutStyles.card, ...layoutStyles.warning }}>\n <strong>Linear is not configured yet.</strong>\n <div style={{ marginTop: 8 }}>{bootstrap.data?.message ?? \"Connect Linear and choose teams in plugin settings.\"}</div>\n <div style={{ marginTop: 12 }}>\n <a href=\"/instance/settings/plugins\" style={layoutStyles.monoLink}>Open plugin settings</a>\n </div>\n </section>\n ) : (\n <>\n <section style={layoutStyles.card}>\n <div style={layoutStyles.row}>\n <div style={layoutStyles.field}>\n <label style={layoutStyles.label} htmlFor=\"target-project\">Target Rudder project</label>\n <select\n id=\"target-project\"\n data-testid=\"linear-target-project\"\n style={layoutStyles.select}\n value={targetProjectId}\n onChange={(event) => setTargetProjectId(event.target.value)}\n >\n <option value=\"\">Choose a project</option>\n {(bootstrap.data?.projects ?? []).map((project: PageBootstrapData[\"projects\"][number]) => (\n <option key={project.id} value={project.id}>{project.name}</option>\n ))}\n </select>\n </div>\n <div style={layoutStyles.field}>\n <label style={layoutStyles.label} htmlFor=\"linear-team-filter\">Linear team</label>\n <select\n id=\"linear-team-filter\"\n style={layoutStyles.select}\n value={filters.teamId}\n onChange={(event) => setFilters((current) => ({ ...current, teamId: event.target.value, stateId: \"\" }))}\n >\n <option value=\"\">All allowed teams</option>\n {(catalog.data?.teams ?? []).map((team: LinearCatalogData[\"teams\"][number]) => (\n <option key={team.id} value={team.id}>{team.name}</option>\n ))}\n </select>\n </div>\n <div style={layoutStyles.field}>\n <label style={layoutStyles.label} htmlFor=\"linear-state-filter\">Workflow state</label>\n <select\n id=\"linear-state-filter\"\n style={layoutStyles.select}\n value={filters.stateId}\n onChange={(event) => setFilters((current) => ({ ...current, stateId: event.target.value }))}\n >\n <option value=\"\">All states</option>\n {stateOptions.map((state) => (\n <option key={state.id} value={state.id}>{state.name}</option>\n ))}\n </select>\n </div>\n <div style={layoutStyles.field}>\n <label style={layoutStyles.label} htmlFor=\"linear-project-filter\">Linear project</label>\n <select\n id=\"linear-project-filter\"\n style={layoutStyles.select}\n value={filters.projectId}\n onChange={(event) => setFilters((current) => ({ ...current, projectId: event.target.value }))}\n >\n <option value=\"\">All projects</option>\n {(catalog.data?.projects ?? []).map((project: LinearCatalogData[\"projects\"][number]) => (\n <option key={project.id} value={project.id}>{project.name}</option>\n ))}\n </select>\n </div>\n <div style={layoutStyles.field}>\n <label style={layoutStyles.label} htmlFor=\"linear-assignee-filter\">Assignee</label>\n <select\n id=\"linear-assignee-filter\"\n style={layoutStyles.select}\n value={filters.assigneeId}\n onChange={(event) => setFilters((current) => ({ ...current, assigneeId: event.target.value }))}\n >\n <option value=\"\">Anyone</option>\n {(catalog.data?.users ?? []).map((user: LinearCatalogData[\"users\"][number]) => (\n <option key={user.id} value={user.id}>{user.name}</option>\n ))}\n </select>\n </div>\n <div style={layoutStyles.field}>\n <label style={layoutStyles.label} htmlFor=\"linear-query-filter\">Search</label>\n <input\n id=\"linear-query-filter\"\n style={layoutStyles.input}\n value={filters.query}\n onChange={(event) => setFilters((current) => ({ ...current, query: event.target.value }))}\n placeholder=\"Identifier, title, or description\"\n />\n </div>\n </div>\n </section>\n\n <section style={layoutStyles.card}>\n <div style={{ ...layoutStyles.row, justifyContent: \"space-between\" }}>\n <div style={layoutStyles.row}>\n <button\n type=\"button\"\n style={layoutStyles.button}\n onClick={() => {\n const rows = issues.data?.rows ?? [];\n const selectableIds = rows\n .filter((row: LinearIssueRow) => !row.imported)\n .map((row: LinearIssueRow) => row.id);\n setSelectedIssueIds(selectableIds);\n }}\n disabled={issues.loading}\n >\n Select current page\n </button>\n <button\n type=\"button\"\n style={layoutStyles.button}\n onClick={() => setSelectedIssueIds([])}\n disabled={selectedIssueIds.length === 0}\n >\n Clear selection\n </button>\n </div>\n <div style={layoutStyles.row}>\n <button\n type=\"button\"\n style={layoutStyles.button}\n disabled={!targetProjectId || selectedIssueIds.length === 0 || importing}\n onClick={() => void handleImport(\"selected\", selectedIssueIds)}\n >\n Import selected\n </button>\n <button\n type=\"button\"\n style={layoutStyles.primaryButton}\n data-testid=\"linear-import-all\"\n disabled={!targetProjectId || importing}\n onClick={() => void handleImport(\"allMatching\")}\n title={`Imports up to ${LINEAR_IMPORT_ALL_LIMIT} matching issues.`}\n >\n Import all matching\n </button>\n </div>\n </div>\n {!targetProjectId && (\n <div style={{ marginTop: 12, ...layoutStyles.warning }}>\n Choose a target Rudder project to enable per-row, selected, or all-matching import actions.\n </div>\n )}\n </section>\n\n <section style={layoutStyles.card}>\n {issues.loading ? (\n <div>Loading Linear issues\u2026</div>\n ) : issues.error ? (\n <div style={layoutStyles.warning}>{issues.error.message}</div>\n ) : (\n <>\n <table style={layoutStyles.table}>\n <thead>\n <tr>\n <th style={layoutStyles.th}></th>\n <th style={layoutStyles.th}>Issue</th>\n <th style={layoutStyles.th}>State</th>\n <th style={layoutStyles.th}>Project</th>\n <th style={layoutStyles.th}>Assignee</th>\n <th style={layoutStyles.th}>Status</th>\n <th style={layoutStyles.th}>Action</th>\n </tr>\n </thead>\n <tbody>\n {(issues.data?.rows ?? []).map((row: LinearIssueRow) => {\n const checked = selectedIssueIds.includes(row.id);\n const sameOrgLink = row.imported && (!row.importedOrgId || row.importedOrgId === context.orgId);\n return (\n <tr key={row.id}>\n <td style={layoutStyles.td}>\n <input\n type=\"checkbox\"\n checked={checked}\n disabled={row.imported}\n onChange={(event) => {\n setSelectedIssueIds((current) => {\n if (event.target.checked) return [...current, row.id];\n return current.filter((id) => id !== row.id);\n });\n }}\n />\n </td>\n <td style={layoutStyles.td}>\n <div style={{ display: \"grid\", gap: 6 }}>\n <a href={row.url} target=\"_blank\" rel=\"noreferrer\">\n <strong>{row.identifier}</strong> {row.title}\n </a>\n <span style={layoutStyles.pill}>{row.team.name}</span>\n </div>\n </td>\n <td style={layoutStyles.td}>{row.state.name}</td>\n <td style={layoutStyles.td}>{row.project?.name ?? \"None\"}</td>\n <td style={layoutStyles.td}>{row.assignee?.name ?? \"Unassigned\"}</td>\n <td style={layoutStyles.td}>\n {row.imported ? (\n <span data-testid={`linear-imported-${row.id}`} style={layoutStyles.pill}>\n Imported\n </span>\n ) : (\n <span style={layoutStyles.pill}>Ready</span>\n )}\n </td>\n <td style={layoutStyles.td}>\n {row.imported ? (\n sameOrgLink && row.importedRudderIssueId ? (\n <a href={issueHref(orgPrefix, row.importedRudderIssueId)}>Open Rudder issue</a>\n ) : (\n <span>Imported elsewhere</span>\n )\n ) : (\n <button\n type=\"button\"\n style={layoutStyles.subtleButton}\n disabled={!targetProjectId || importing}\n onClick={() => void handleImport(\"single\", [row.id])}\n >\n Import\n </button>\n )}\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n\n {(issues.data?.rows.length ?? 0) === 0 && (\n <div style={{ marginTop: 16, color: \"rgba(15, 23, 42, 0.68)\" }}>\n No Linear issues matched the current filters.\n </div>\n )}\n\n <div style={{ ...layoutStyles.row, justifyContent: \"space-between\", marginTop: 16 }}>\n <span style={{ fontSize: 13, color: \"rgba(15, 23, 42, 0.68)\" }}>\n Showing {issues.data?.totalShown ?? 0} issue(s).\n </span>\n <div style={layoutStyles.row}>\n <button\n type=\"button\"\n style={layoutStyles.button}\n disabled={cursorHistory.length === 0 || importing}\n onClick={() => {\n setCursorHistory((current) => {\n const nextHistory = [...current];\n const previousCursor = nextHistory.pop() ?? null;\n setAfterCursor(previousCursor);\n return nextHistory;\n });\n }}\n >\n Previous\n </button>\n <button\n type=\"button\"\n style={layoutStyles.button}\n disabled={!issues.data?.hasNextPage || importing}\n onClick={() => {\n if (!issues.data?.endCursor) return;\n setCursorHistory((current) => [...current, afterCursor ?? \"\"]);\n setAfterCursor(issues.data.endCursor);\n }}\n >\n Next\n </button>\n </div>\n </div>\n </>\n )}\n </section>\n </>\n )}\n </div>\n );\n}\n\nexport function LinearIssueTab({ context }: PluginDetailTabProps) {\n const orgId = context.orgId ?? \"__missing__\";\n const orgPrefix = getOrgPrefix(context as unknown as Record<string, unknown>);\n const data = usePluginData<IssueLinkData>(DATA_KEYS.issueLink, {\n orgId,\n issueId: context.entityId,\n });\n\n if (data.loading) {\n return <div style={layoutStyles.card}>Loading Linear issue details\u2026</div>;\n }\n\n if (data.error) {\n return <div style={{ ...layoutStyles.card, ...layoutStyles.warning }}>{data.error.message}</div>;\n }\n\n if (!data.data || !data.data.linked) {\n return (\n <div style={layoutStyles.card}>\n <h2 style={{ marginTop: 0 }}>No linked Linear issue</h2>\n <p style={layoutStyles.subtitle}>\n This Rudder issue has not been imported from Linear yet.\n </p>\n <a href={pageHref(orgPrefix, data.data?.searchQuery ?? \"\")}>Open Linear intake with this issue title as the search query</a>\n </div>\n );\n }\n\n const latest = data.data.latestIssue;\n const link = data.data.link;\n\n return (\n <div style={layoutStyles.shell}>\n <section style={layoutStyles.card}>\n <h2 style={{ marginTop: 0 }}>Linked Linear issue</h2>\n <p style={layoutStyles.subtitle}>\n {link.linearIdentifier} maps to this Rudder issue.\n </p>\n <div style={{ ...layoutStyles.row, marginTop: 12 }}>\n <a href={link.linearUrl} target=\"_blank\" rel=\"noreferrer\">Open in Linear</a>\n <span style={layoutStyles.pill}>{latest?.team.name ?? link.teamName}</span>\n <span style={layoutStyles.pill}>{latest?.state.name ?? link.stateName}</span>\n {latest?.project?.name ? <span style={layoutStyles.pill}>{latest.project.name}</span> : null}\n </div>\n </section>\n\n {data.data.staleReason ? (\n <section style={{ ...layoutStyles.card, ...layoutStyles.warning }}>\n {data.data.staleReason}\n </section>\n ) : null}\n\n <section style={layoutStyles.card}>\n <h3 style={{ marginTop: 0 }}>\n {(latest?.identifier ?? link.linearIdentifier)} {latest?.title ?? link.linearTitle}\n </h3>\n <div style={{ ...layoutStyles.row, marginBottom: 12 }}>\n <span style={layoutStyles.pill}>Updated {formatRelativeTime(latest?.updatedAt ?? link.updatedAt)}</span>\n <span style={layoutStyles.pill}>Imported {formatRelativeTime(link.importedAt)}</span>\n <span style={layoutStyles.pill}>{latest?.assignee?.name ?? \"Unassigned\"}</span>\n </div>\n <div style={{ whiteSpace: \"pre-wrap\", lineHeight: 1.6 }}>\n {latest?.description?.trim() || \"This Linear issue has no description.\"}\n </div>\n </section>\n </div>\n );\n}\n\nexport function LinearPluginSettingsPage(_props: PluginSettingsPageProps) {\n const toast = usePluginToast();\n const bootstrap = usePluginData<SettingsBootstrapData>(DATA_KEYS.settingsBootstrap);\n const [draft, setDraft] = useState<LinearPluginConfig>(normalizeConfig(null));\n const [tokenInput, setTokenInput] = useState(\"\");\n const [settingsCatalog, setSettingsCatalog] = useState<SettingsCatalogData | null>(null);\n const [catalogLoading, setCatalogLoading] = useState(false);\n const [catalogError, setCatalogError] = useState<string | null>(null);\n const [connecting, setConnecting] = useState(false);\n const [saving, setSaving] = useState(false);\n const pluginId = getPluginIdFromLocation();\n\n useEffect(() => {\n if (!bootstrap.data) return;\n const nextDraft = normalizeConfig(bootstrap.data.config);\n setDraft(nextDraft);\n }, [bootstrap.data]);\n\n useEffect(() => {\n if (!pluginId || !draft.apiTokenSecretRef) {\n setSettingsCatalog(null);\n setCatalogError(null);\n setCatalogLoading(false);\n return;\n }\n\n let cancelled = false;\n setCatalogLoading(true);\n setCatalogError(null);\n\n void fetchSettingsCatalog()\n .then((catalog) => {\n if (cancelled) return;\n setSettingsCatalog(catalog);\n setDraft((current) => {\n const normalized = normalizeConfig(current);\n const selectedTeamIds = normalized.teamMappings\n .map((team) => team.teamId)\n .filter(Boolean);\n const nextTeamMappings = selectedTeamIds.length > 0\n ? buildTeamMappingsForSelectedTeams(catalog, selectedTeamIds, normalized.teamMappings)\n : buildTeamMappingsFromCatalog(catalog);\n return {\n ...normalized,\n teamMappings: nextTeamMappings,\n };\n });\n })\n .catch((error) => {\n if (cancelled) return;\n setSettingsCatalog(null);\n setCatalogError(error instanceof Error ? error.message : String(error));\n })\n .finally(() => {\n if (!cancelled) setCatalogLoading(false);\n });\n\n return () => {\n cancelled = true;\n };\n }, [draft.apiTokenSecretRef, pluginId]);\n\n const selectedTeamIds = draft.teamMappings\n .map((team) => team.teamId)\n .filter(Boolean);\n const selectedTeamIdSet = new Set(selectedTeamIds);\n const selectedTeamCount = selectedTeamIds.length;\n const catalogTeamCount = settingsCatalog?.teams.length ?? 0;\n const issueBoardHref = linearIssueBoardHref(\n bootstrap.data?.organizations[0]?.issuePrefix ?? null,\n selectedTeamIds[0] ?? null,\n );\n\n async function savePluginConfig(config: LinearPluginConfig) {\n if (!pluginId) throw new Error(\"Unable to resolve plugin id\");\n return await apiFetch(`/api/plugins/${encodeURIComponent(pluginId)}/config`, {\n method: \"POST\",\n body: JSON.stringify({ configJson: prepareConfigForSubmit(config) }),\n });\n }\n\n async function listOrgSecrets(orgId: string): Promise<SecretSummary[]> {\n return await apiFetch<SecretSummary[]>(`/api/orgs/${encodeURIComponent(orgId)}/secrets`);\n }\n\n async function rotateSecret(secretId: string, value: string): Promise<SecretSummary> {\n return await apiFetch<SecretSummary>(`/api/secrets/${encodeURIComponent(secretId)}/rotate`, {\n method: \"POST\",\n body: JSON.stringify({ value }),\n });\n }\n\n async function createLinearTokenSecret(orgId: string, value: string): Promise<SecretSummary> {\n return await apiFetch<SecretSummary>(`/api/orgs/${encodeURIComponent(orgId)}/secrets`, {\n method: \"POST\",\n body: JSON.stringify({\n name: LINEAR_TOKEN_SECRET_NAME,\n value,\n description: \"Used by the Linear plugin to read issues across Rudder organizations.\",\n }),\n });\n }\n\n async function saveLinearTokenSecret(orgId: string, value: string, currentSecretRef: string): Promise<string> {\n if (currentSecretRef) {\n const rotated = await rotateSecret(currentSecretRef, value);\n return rotated.id;\n }\n\n try {\n const created = await createLinearTokenSecret(orgId, value);\n return created.id;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n if (!/Secret already exists/i.test(message)) throw error;\n\n const existing = (await listOrgSecrets(orgId)).find((secret) => secret.name === LINEAR_TOKEN_SECRET_NAME);\n if (!existing) throw error;\n const rotated = await rotateSecret(existing.id, value);\n return rotated.id;\n }\n }\n\n async function fetchPluginData<T>(key: string, params: Record<string, unknown> = {}, orgId?: string): Promise<T> {\n if (!pluginId) throw new Error(\"Unable to resolve plugin id\");\n const payload = await apiFetch<{ data: T }>(`/api/plugins/${encodeURIComponent(pluginId)}/data/${key}`, {\n method: \"POST\",\n body: JSON.stringify({\n ...(orgId ? { orgId } : {}),\n params: {\n ...params,\n ...(orgId ? { orgId } : {}),\n },\n }),\n });\n return payload.data;\n }\n\n async function fetchSettingsCatalogWithRetry(): Promise<SettingsCatalogData> {\n let lastError: unknown = null;\n for (let attempt = 0; attempt < 5; attempt += 1) {\n try {\n return await fetchPluginData<SettingsCatalogData>(DATA_KEYS.settingsCatalog);\n } catch (error) {\n if (isMissingSettingsCatalogHandler(error)) throw error;\n lastError = error;\n await new Promise((resolve) => window.setTimeout(resolve, 350 + attempt * 250));\n }\n }\n throw lastError instanceof Error ? lastError : new Error(String(lastError));\n }\n\n async function refreshPluginRuntime() {\n if (!pluginId) throw new Error(\"Unable to resolve plugin id\");\n await apiFetch(`/api/plugins/${encodeURIComponent(pluginId)}/disable`, {\n method: \"POST\",\n body: JSON.stringify({ reason: \"Refresh Linear plugin after settings update\" }),\n });\n await apiFetch(`/api/plugins/${encodeURIComponent(pluginId)}/enable`, {\n method: \"POST\",\n body: JSON.stringify({}),\n });\n }\n\n async function fetchSettingsCatalog(): Promise<SettingsCatalogData> {\n try {\n return await fetchSettingsCatalogWithRetry();\n } catch (error) {\n if (!isMissingSettingsCatalogHandler(error)) throw error;\n await refreshPluginRuntime();\n return await fetchSettingsCatalogWithRetry();\n }\n }\n\n function toggleTeam(teamId: string) {\n if (!settingsCatalog) return;\n setDraft((current) => {\n const normalized = normalizeConfig(current);\n const nextTeamIds = new Set(normalized.teamMappings.map((team) => team.teamId).filter(Boolean));\n if (nextTeamIds.has(teamId)) {\n nextTeamIds.delete(teamId);\n } else {\n nextTeamIds.add(teamId);\n }\n return {\n ...normalized,\n teamMappings: buildTeamMappingsForSelectedTeams(settingsCatalog, [...nextTeamIds], normalized.teamMappings),\n };\n });\n }\n\n function selectAllTeams() {\n if (!settingsCatalog) return;\n setDraft((current) => {\n const normalized = normalizeConfig(current);\n return {\n ...normalized,\n teamMappings: buildTeamMappingsForSelectedTeams(\n settingsCatalog,\n settingsCatalog.teams.map((team) => team.id),\n normalized.teamMappings,\n ),\n };\n });\n }\n\n function setStatusRule(teamId: string, stateId: string, rudderStatus: LinearStateMapping[\"rudderStatus\"]) {\n setDraft((current) => ({\n ...current,\n teamMappings: current.teamMappings.map((team) => {\n if (team.teamId !== teamId) return team;\n return {\n ...team,\n stateMappings: team.stateMappings.map((state) =>\n state.linearStateId === stateId ? { ...state, rudderStatus } : state,\n ),\n };\n }),\n }));\n }\n\n async function connectLinear() {\n if (!pluginId) {\n toast({ title: \"Unable to resolve plugin id\", tone: \"error\" });\n return;\n }\n\n setConnecting(true);\n try {\n let apiTokenSecretRef = draft.apiTokenSecretRef?.trim() ?? \"\";\n const trimmedToken = tokenInput.trim();\n if (trimmedToken) {\n const secretOrgId = bootstrap.data?.organizations[0]?.id ?? \"\";\n if (!secretOrgId) {\n toast({\n title: \"Create a Rudder organization first\",\n body: \"Rudder needs one organization to store the Linear token reference.\",\n tone: \"warn\",\n });\n return;\n }\n apiTokenSecretRef = await saveLinearTokenSecret(secretOrgId, trimmedToken, apiTokenSecretRef);\n }\n if (!apiTokenSecretRef) {\n toast({\n title: \"Paste a Linear token\",\n body: \"Create one in Linear, paste it here, then connect.\",\n tone: \"warn\",\n });\n return;\n }\n\n const seedConfig = {\n ...draft,\n apiTokenSecretRef,\n };\n await savePluginConfig(seedConfig);\n\n const catalog = await fetchSettingsCatalog();\n if (catalog.teams.length === 0) {\n throw new Error(\"Linear returned no teams for this token.\");\n }\n const generatedTeamMappings = buildTeamMappingsFromCatalog(catalog);\n const nextConfig = prepareConfigForSubmit({\n ...seedConfig,\n teamMappings: generatedTeamMappings,\n });\n await savePluginConfig(nextConfig);\n setSettingsCatalog(catalog);\n setCatalogError(null);\n setDraft(nextConfig);\n setTokenInput(\"\");\n bootstrap.refresh();\n const firstTeamId = generatedTeamMappings[0]?.teamId ?? null;\n const firstOrgPrefix = bootstrap.data?.organizations[0]?.issuePrefix ?? null;\n toast({\n title: \"Linear is ready\",\n body: summarizeMapping(generatedTeamMappings),\n tone: \"success\",\n action: {\n label: \"Open Linear issues\",\n href: linearIssueBoardHref(firstOrgPrefix, firstTeamId),\n },\n });\n } catch (error) {\n toast({\n title: \"Linear connection failed\",\n body: error instanceof Error ? error.message : String(error),\n tone: \"error\",\n });\n } finally {\n setConnecting(false);\n }\n }\n\n async function saveConfig() {\n if (!pluginId) {\n toast({ title: \"Unable to resolve plugin id\", tone: \"error\" });\n return;\n }\n if (draft.apiTokenSecretRef && settingsCatalog && selectedTeamCount === 0) {\n toast({\n title: \"Choose at least one Linear team\",\n body: \"The import page needs one or more teams to show Linear issues.\",\n tone: \"warn\",\n });\n return;\n }\n setSaving(true);\n try {\n await savePluginConfig(draft);\n bootstrap.refresh();\n toast({\n title: \"Linear settings saved\",\n tone: \"success\",\n });\n } catch (error) {\n toast({\n title: \"Failed to save Linear settings\",\n body: error instanceof Error ? error.message : String(error),\n tone: \"error\",\n });\n } finally {\n setSaving(false);\n }\n }\n\n function connectionStatusText(): string {\n if (bootstrap.loading) return \"Loading plugin settings\u2026\";\n if (catalogLoading) return \"Reading teams and workflow states from Linear\u2026\";\n if (catalogError) return `Linear could not be loaded: ${catalogError}`;\n if (settingsCatalog) {\n return `Connected. ${catalogTeamCount} Linear team${catalogTeamCount === 1 ? \"\" : \"s\"} found; ${selectedTeamCount} selected for import.`;\n }\n if (draft.apiTokenSecretRef) return \"Token saved. Refresh from Linear to load teams.\";\n return \"Paste a Linear token to connect this instance.\";\n }\n\n return (\n <div style={layoutStyles.shell}>\n <section key=\"linear-settings-intro\" style={layoutStyles.card}>\n <h2 style={{ marginTop: 0 }}>Linear</h2>\n <p style={layoutStyles.subtitle}>\n Paste a Linear token once. Rudder will read your teams and workflow states, then prepare the import settings automatically.\n </p>\n {bootstrap.data?.fixtureMode ? (\n <div style={{ marginTop: 12, ...layoutStyles.warning }}>\n Fixture mode is enabled in this environment. Linear reads use deterministic test data.\n </div>\n ) : null}\n </section>\n\n <section key=\"linear-settings-connect\" style={layoutStyles.card}>\n <div style={layoutStyles.sectionHeader}>\n <div>\n <h3 style={{ margin: 0 }}>Connect Linear</h3>\n <p style={layoutStyles.subtitle}>\n Paste a token and Rudder will prepare the import setup from Linear.{\" \"}\n <a href={LINEAR_TOKEN_SETTINGS_URL} target=\"_blank\" rel=\"noreferrer\" style={layoutStyles.monoLink}>\n Create a Linear token\n </a>\n .\n </p>\n </div>\n </div>\n <div style={{ ...layoutStyles.connectionGrid, marginTop: 14 }}>\n <div style={layoutStyles.field}>\n <label style={layoutStyles.label} htmlFor=\"linear-token\">Linear token</label>\n <input\n id=\"linear-token\"\n data-testid=\"linear-token-input\"\n style={layoutStyles.input}\n type=\"password\"\n autoComplete=\"off\"\n value={tokenInput}\n onChange={(event) => setTokenInput(event.target.value)}\n placeholder={draft.apiTokenSecretRef ? \"Token saved. Paste a new token to replace it.\" : \"Paste a Linear token\"}\n />\n </div>\n <div style={{ display: \"grid\", gap: 6, justifySelf: \"start\" }}>\n <span aria-hidden=\"true\" style={{ ...layoutStyles.label, visibility: \"hidden\" }}>Action</span>\n <button\n type=\"button\"\n style={layoutStyles.primaryButton}\n data-testid=\"linear-connect\"\n onClick={() => void connectLinear()}\n disabled={connecting}\n >\n {connecting ? \"Connecting\u2026\" : draft.apiTokenSecretRef ? \"Refresh from Linear\" : \"Connect Linear\"}\n </button>\n </div>\n </div>\n <div style={{ ...layoutStyles.statusLine, display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 12, flexWrap: \"wrap\" }}>\n <span>{connectionStatusText()}</span>\n {settingsCatalog && selectedTeamCount > 0 ? (\n <a href={issueBoardHref} style={layoutStyles.monoLink}>Open Linear issues</a>\n ) : null}\n </div>\n </section>\n\n {draft.apiTokenSecretRef ? (\n <section key=\"linear-settings-teams\" style={layoutStyles.card}>\n <div style={layoutStyles.sectionHeader}>\n <div>\n <h3 style={{ margin: 0 }}>Teams to import</h3>\n <p style={layoutStyles.subtitle}>\n Choose the Linear teams that should appear on the import page. Rudder stores the technical details for you.\n </p>\n </div>\n <button\n type=\"button\"\n style={layoutStyles.subtleButton}\n onClick={selectAllTeams}\n disabled={!settingsCatalog || catalogLoading || catalogTeamCount === selectedTeamCount}\n >\n Select all teams\n </button>\n </div>\n\n {catalogLoading ? (\n <p style={layoutStyles.helpText}>Loading teams from Linear\u2026</p>\n ) : catalogError ? (\n <div style={{ marginTop: 14, ...layoutStyles.warning }}>\n <strong>Linear could not be loaded.</strong>\n <div style={{ marginTop: 6 }}>{catalogError}</div>\n </div>\n ) : settingsCatalog ? (\n <>\n <div style={layoutStyles.teamGrid}>\n {settingsCatalog.teams.map((team, index) => {\n const checked = selectedTeamIdSet.has(team.id);\n return (\n <label\n key={`${team.id}-${index}`}\n style={{\n ...layoutStyles.teamChoice,\n borderColor: checked ? \"var(--primary, #2563eb)\" : \"var(--border, rgba(15, 23, 42, 0.14))\",\n background: checked ? \"rgba(37, 99, 235, 0.08)\" : \"var(--background, transparent)\",\n }}\n >\n <input\n data-testid={`linear-team-choice-${team.id}`}\n style={layoutStyles.checkbox}\n type=\"checkbox\"\n checked={checked}\n onChange={() => toggleTeam(team.id)}\n />\n <span>\n <strong>{team.name}</strong>\n <span style={{ display: \"block\", marginTop: 3, ...layoutStyles.helpText }}>\n {team.key} \u00B7 {team.states.length} workflow state{team.states.length === 1 ? \"\" : \"s\"}\n </span>\n </span>\n </label>\n );\n })}\n </div>\n <div style={{ ...layoutStyles.row, justifyContent: \"space-between\", marginTop: 14 }}>\n <span style={layoutStyles.helpText}>\n {selectedTeamCount === 0\n ? \"Choose at least one team before saving.\"\n : `${selectedTeamCount} team${selectedTeamCount === 1 ? \"\" : \"s\"} selected for import.`}\n </span>\n <button\n type=\"button\"\n style={layoutStyles.primaryButton}\n data-testid=\"linear-save-team-choices\"\n onClick={() => void saveConfig()}\n disabled={saving || selectedTeamCount === 0}\n >\n {saving ? \"Saving\u2026\" : \"Save choices\"}\n </button>\n </div>\n </>\n ) : (\n <p style={layoutStyles.helpText}>Refresh from Linear to load teams for this token.</p>\n )}\n </section>\n ) : null}\n\n {settingsCatalog && draft.teamMappings.length > 0 ? (\n <section key=\"linear-settings-status-rules\" style={layoutStyles.card}>\n <details>\n <summary style={{ cursor: \"pointer\", fontWeight: 700 }}>Status rules (optional)</summary>\n <p style={layoutStyles.subtitle}>\n Rudder applies smart defaults from Linear. Change these only if imported issues land in the wrong Rudder status.\n </p>\n <div style={{ display: \"grid\", gap: 18, marginTop: 14 }}>\n {draft.teamMappings.map((teamMapping, teamIndex) => {\n const catalogTeam = settingsCatalog.teams.find((team) => team.id === teamMapping.teamId);\n const states = catalogTeam?.states ?? teamMapping.stateMappings.map((state) => ({\n id: state.linearStateId,\n name: state.linearStateName ?? \"Linear status\",\n type: null,\n }));\n const statusByStateId = new Map(teamMapping.stateMappings.map((state) => [state.linearStateId, state.rudderStatus]));\n return (\n <div key={`${teamMapping.teamId}-${teamIndex}`} style={{ borderTop: \"1px solid var(--border, rgba(15, 23, 42, 0.1))\", paddingTop: 14 }}>\n <h4 style={{ margin: \"0 0 10px\" }}>{teamMapping.teamName ?? catalogTeam?.name ?? \"Linear team\"}</h4>\n <div style={{ display: \"grid\", gap: 8 }}>\n {states.map((state, stateIndex) => (\n <div key={`${teamMapping.teamId}-${state.id}-${stateIndex}`} style={layoutStyles.statusRuleGrid}>\n <div>\n <strong>{state.name}</strong>\n <div style={layoutStyles.helpText}>{state.type ? `${state.type} in Linear` : \"Linear workflow state\"}</div>\n </div>\n <select\n style={layoutStyles.select}\n value={statusByStateId.get(state.id) ?? inferRudderStatus(state)}\n onChange={(event) =>\n setStatusRule(teamMapping.teamId, state.id, event.target.value as LinearStateMapping[\"rudderStatus\"])}\n >\n {RUDDER_STATUS_OPTIONS.map((status) => (\n <option key={`${teamMapping.teamId}-${state.id}-${status}`} value={status}>{formatRudderStatus(status)}</option>\n ))}\n </select>\n </div>\n ))}\n </div>\n </div>\n );\n })}\n </div>\n <div style={{ marginTop: 14 }}>\n <button type=\"button\" style={layoutStyles.primaryButton} onClick={() => void saveConfig()} disabled={saving}>\n {saving ? \"Saving\u2026\" : \"Save status rules\"}\n </button>\n </div>\n </details>\n </section>\n ) : null}\n </div>\n );\n}\n", "import type { Issue } from \"@rudderhq/shared\";\n\nexport const PLUGIN_ID = \"rudder.linear\";\nexport const PLUGIN_VERSION = \"0.1.0\";\nexport const PAGE_ROUTE = \"linear\";\nexport const ENTITY_TYPE_LINEAR_ISSUE_LINK = \"linear_issue_link\";\nexport const ISSUE_LINK_STATE_KEY = \"linear-link\";\nexport const DEFAULT_LINEAR_API_URL = \"https://api.linear.app/graphql\";\nexport const LINEAR_TOKEN_SETTINGS_URL = \"https://linear.app/settings/account/security\";\nexport const LINEAR_PAGE_SIZE = 25;\nexport const LINEAR_IMPORT_ALL_LIMIT = 100;\n\nexport const SLOT_IDS = {\n page: \"linear-page\",\n settingsPage: \"linear-settings-page\",\n issueTab: \"linear-issue-tab\",\n} as const;\n\nexport const EXPORT_NAMES = {\n page: \"LinearPluginPage\",\n settingsPage: \"LinearPluginSettingsPage\",\n issueTab: \"LinearIssueTab\",\n} as const;\n\nexport const DATA_KEYS = {\n settingsBootstrap: \"settings-bootstrap\",\n pageBootstrap: \"page-bootstrap\",\n settingsCatalog: \"settings-catalog\",\n catalog: \"linear-catalog\",\n issues: \"linear-issues\",\n issueLink: \"issue-link\",\n} as const;\n\nexport const ACTION_KEYS = {\n importIssues: \"import-linear-issues\",\n} as const;\n\nexport const RUDDER_STATUS_OPTIONS: Issue[\"status\"][] = [\n \"backlog\",\n \"todo\",\n \"in_progress\",\n \"in_review\",\n \"done\",\n \"blocked\",\n \"cancelled\",\n];\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["selectedTeamIds"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"langfuse-transcript.d.ts","sourceRoot":"","sources":["../src/langfuse-transcript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAGtE,UAAU,wBAAwB;IAChC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,UAAU,gCAAgC;IACxC,OAAO,EAAE,6BAA6B,CAAC;IACvC,iBAAiB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC9C,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;CAClD;AAuBD,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,YAAY,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"langfuse-transcript.d.ts","sourceRoot":"","sources":["../src/langfuse-transcript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAGtE,UAAU,wBAAwB;IAChC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,UAAU,gCAAgC;IACxC,OAAO,EAAE,6BAA6B,CAAC;IACvC,iBAAiB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC9C,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;CAClD;AAuBD,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,YAAY,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;CACnB;AA+DD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,gCAAgC,GACtC,4BAA4B,CA+W9B"}
|
|
@@ -16,6 +16,11 @@ function appendTranscriptText(current, next, isDelta = false) {
|
|
|
16
16
|
return current;
|
|
17
17
|
return current + next;
|
|
18
18
|
}
|
|
19
|
+
function formatTodoListOutput(entry) {
|
|
20
|
+
return entry.items
|
|
21
|
+
.map((item) => `${item.status === "completed" ? "[x]" : item.status === "in_progress" ? "[~]" : "[ ]"} ${item.text}`)
|
|
22
|
+
.join("\n");
|
|
23
|
+
}
|
|
19
24
|
function appendTurnInput(current, next) {
|
|
20
25
|
const normalized = next.trim();
|
|
21
26
|
if (!normalized)
|
|
@@ -276,6 +281,23 @@ export function emitExecutionTranscriptTree(input) {
|
|
|
276
281
|
turn.lastTs = entry.ts;
|
|
277
282
|
break;
|
|
278
283
|
}
|
|
284
|
+
case "todo_list": {
|
|
285
|
+
createTranscriptEvent(input.parentObservation, input.context, {
|
|
286
|
+
name: "todo_list",
|
|
287
|
+
ts: entry.ts,
|
|
288
|
+
output: formatTodoListOutput(entry),
|
|
289
|
+
metadata: {
|
|
290
|
+
todoListId: entry.todoListId ?? null,
|
|
291
|
+
itemCount: entry.items.length,
|
|
292
|
+
completedCount: entry.items.filter((item) => item.status === "completed").length,
|
|
293
|
+
},
|
|
294
|
+
});
|
|
295
|
+
eventCount += 1;
|
|
296
|
+
const turn = activeTurn;
|
|
297
|
+
if (turn)
|
|
298
|
+
turn.lastTs = entry.ts;
|
|
299
|
+
break;
|
|
300
|
+
}
|
|
279
301
|
case "result": {
|
|
280
302
|
const turn = ensureTurn(entry.ts);
|
|
281
303
|
finalizeTurn(turn, entry.ts, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"langfuse-transcript.js","sourceRoot":"","sources":["../src/langfuse-transcript.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"langfuse-transcript.js","sourceRoot":"","sources":["../src/langfuse-transcript.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/routes/agents.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAwCvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAmF1D,wBAAgB,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/routes/agents.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAwCvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAmF1D,wBAAgB,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,8CA08E3D"}
|