@pome-sh/cli 0.21.9 → 0.21.11
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/build-info.json +3 -3
- package/dist/{checks-ZWCORWK4.js → checks-FLXH5OG3.js} +1 -1
- package/dist/{chunk-BK7HSHRA.js → chunk-563RZ7P3.js} +16 -16
- package/dist/{chunk-5TEVH6RY.js → chunk-6BCL7HYR.js} +2 -2
- package/dist/{chunk-F7YLHTCM.js → chunk-75SDBO3W.js} +1 -1
- package/dist/{chunk-PRCZLT4W.js → chunk-EI5ECLLN.js} +2 -2
- package/dist/{chunk-2CMCN5PW.js → chunk-OR4X4BIY.js} +2 -2
- package/dist/{chunk-35TG2GHS.js → chunk-TV5S6WQV.js} +182 -4
- package/dist/{runDemo-7NYX7S5T.js → runDemo-7ZNVR4GX.js} +5 -5
- package/dist/{runTrialGroup-BYUY5WJ7.js → runTrialGroup-7KEOFQEU.js} +4 -4
- package/dist/{server-NJBWJIS3.js → server-DR56XIGP.js} +1 -1
- package/dist/src/cli/main.js +13 -13
- package/dist/{src-TKGHXPEM.js → src-B63VPRRZ.js} +69 -1162
- package/dist/{src-CI5W335G.js → src-JWB5RQSN.js} +66 -331
- package/dist/{src-WQE3MFBD.js → src-RDRKZ4FM.js} +116 -87
- package/dist/{src-4ZLCEPCN.js → src-RUUCDQU4.js} +108 -137
- package/dist/{src-PJGE6SSY.js → src-YH33B2LP.js} +74 -47
- package/dist/twinHarness-4RDIJIM7.js +5 -0
- package/dist/{twinStart-5ZWCVBPZ.js → twinStart-Y525LQUR.js} +3 -3
- package/package.json +1 -1
- package/dist/twinHarness-CJX3IXR3.js +0 -5
|
@@ -2,7 +2,7 @@ export { LINEAR_CHECKS } from './chunk-3QVSXFJI.js';
|
|
|
2
2
|
import { MCP_PAGE_MAX, defaultSeedState, linearSeedSchema, notFound, badUserInput, MCP_PAGE_DEFAULT, DEFAULT_LINEAR_EMAIL, RELAY_PAGE_MAX, RELAY_PAGE_DEFAULT, STATE_EXPORT_CAP, parseSeed, DEFAULT_LINEAR_CLOCK, LINEAR_PROVIDER_TOKEN_PREFIX, DEFAULT_LINEAR_SID, DEFAULT_SCOPES, linearErrorEnvelope, unauthorizedEnvelope, unsupportedEnvelope, assertWebhookUrl, ACCESS_TOKEN_TTL_SECONDS, OAUTH_CODE_TTL_SECONDS, TITLE_MAX_BYTES, BODY_MAX_BYTES, LinearTwinError, GRAPHQL_QUERY_MAX_BYTES, GRAPHQL_SELECTION_DEPTH_MAX } from './chunk-ZKID2HS3.js';
|
|
3
3
|
export { DEFAULT_LINEAR_CLOCK, DEFAULT_LINEAR_EMAIL, DEFAULT_LINEAR_PORT, DEFAULT_LINEAR_SID, DEFAULT_LINEAR_TOKEN, LINEAR_PROVIDER_TOKEN_PREFIX, LinearTwinError, STATE_EXPORT_CAP, assertWebhookUrl, defaultSeedState, linearErrorEnvelope, linearSeedSchema, loadSeedFromEnv, parseSeed, unauthorizedEnvelope, unsupportedEnvelope, webhookUrlError } from './chunk-ZKID2HS3.js';
|
|
4
4
|
import './chunk-NY55QTVQ.js';
|
|
5
|
-
import { openTwinDatabase, defineTwin, createApp } from './chunk-
|
|
5
|
+
import { loadMcpToolFixture, deriveMcpToolTable, openTwinDatabase, defineTwin, createApp } from './chunk-TV5S6WQV.js';
|
|
6
6
|
import './chunk-VBATFCWR.js';
|
|
7
7
|
import './chunk-SG6ZTIMT.js';
|
|
8
8
|
import { createHmac, timingSafeEqual, createHash, randomBytes } from 'node:crypto';
|
|
@@ -2648,321 +2648,63 @@ function resolveLinearCredential(db, token2, nowIso) {
|
|
|
2648
2648
|
};
|
|
2649
2649
|
}
|
|
2650
2650
|
|
|
2651
|
-
// ../packages/twin-linear/dist/fixtures/mcp-tools-list.
|
|
2652
|
-
var
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
|
|
2675
|
-
|
|
2676
|
-
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2691
|
-
|
|
2692
|
-
|
|
2693
|
-
|
|
2694
|
-
|
|
2695
|
-
|
|
2696
|
-
|
|
2697
|
-
|
|
2698
|
-
|
|
2699
|
-
|
|
2700
|
-
|
|
2701
|
-
|
|
2702
|
-
blockedBy: { type: "array", items: { type: "string" }, description: "Append-only blockers" },
|
|
2703
|
-
relatedTo: { type: "array", items: { type: "string" }, description: "Append-only related issues" }
|
|
2704
|
-
},
|
|
2705
|
-
additionalProperties: false
|
|
2706
|
-
}
|
|
2707
|
-
},
|
|
2708
|
-
{
|
|
2709
|
-
name: "list_comments",
|
|
2710
|
-
description: "List comments for a specific Linear issue.",
|
|
2711
|
-
inputSchema: {
|
|
2712
|
-
type: "object",
|
|
2713
|
-
properties: {
|
|
2714
|
-
issueId: { type: "string" },
|
|
2715
|
-
limit: { type: "number" },
|
|
2716
|
-
cursor: { type: "string" }
|
|
2717
|
-
},
|
|
2718
|
-
required: ["issueId"],
|
|
2719
|
-
additionalProperties: false
|
|
2720
|
-
}
|
|
2721
|
-
},
|
|
2722
|
-
{
|
|
2723
|
-
name: "save_comment",
|
|
2724
|
-
description: "Create or update a comment on a Linear issue. Provide id to edit. To reply in a thread, pass parentId (issueId optional when replying).",
|
|
2725
|
-
inputSchema: {
|
|
2726
|
-
type: "object",
|
|
2727
|
-
properties: {
|
|
2728
|
-
id: { type: "string", description: "Comment id (edit)" },
|
|
2729
|
-
issueId: { type: "string" },
|
|
2730
|
-
parentId: { type: "string", description: "Parent comment id for threaded replies" },
|
|
2731
|
-
body: { type: "string" }
|
|
2732
|
-
},
|
|
2733
|
-
required: ["body"],
|
|
2734
|
-
additionalProperties: false
|
|
2735
|
-
}
|
|
2736
|
-
},
|
|
2737
|
-
{
|
|
2738
|
-
name: "delete_comment",
|
|
2739
|
-
description: "Delete a Linear comment by id.",
|
|
2740
|
-
inputSchema: {
|
|
2741
|
-
type: "object",
|
|
2742
|
-
properties: {
|
|
2743
|
-
id: { type: "string", description: "Comment ID" }
|
|
2744
|
-
},
|
|
2745
|
-
required: ["id"],
|
|
2746
|
-
additionalProperties: false
|
|
2747
|
-
}
|
|
2748
|
-
},
|
|
2749
|
-
{
|
|
2750
|
-
name: "list_teams",
|
|
2751
|
-
description: "List teams in the user's Linear workspace.",
|
|
2752
|
-
inputSchema: {
|
|
2753
|
-
type: "object",
|
|
2754
|
-
properties: {
|
|
2755
|
-
limit: { type: "number" },
|
|
2756
|
-
cursor: { type: "string" }
|
|
2757
|
-
},
|
|
2758
|
-
additionalProperties: false
|
|
2759
|
-
}
|
|
2760
|
-
},
|
|
2761
|
-
{
|
|
2762
|
-
name: "get_team",
|
|
2763
|
-
description: "Retrieve details of a specific Linear team.",
|
|
2764
|
-
inputSchema: {
|
|
2765
|
-
type: "object",
|
|
2766
|
-
properties: {
|
|
2767
|
-
query: { type: "string", description: "Team id, key, or name" }
|
|
2768
|
-
},
|
|
2769
|
-
required: ["query"],
|
|
2770
|
-
additionalProperties: false
|
|
2771
|
-
}
|
|
2772
|
-
},
|
|
2773
|
-
{
|
|
2774
|
-
name: "list_users",
|
|
2775
|
-
description: "Retrieve users in the Linear workspace.",
|
|
2776
|
-
inputSchema: {
|
|
2777
|
-
type: "object",
|
|
2778
|
-
properties: {
|
|
2779
|
-
limit: { type: "number" },
|
|
2780
|
-
cursor: { type: "string" }
|
|
2781
|
-
},
|
|
2782
|
-
additionalProperties: false
|
|
2783
|
-
}
|
|
2784
|
-
},
|
|
2785
|
-
{
|
|
2786
|
-
name: "get_user",
|
|
2787
|
-
description: "Retrieve details of a specific Linear user.",
|
|
2788
|
-
inputSchema: {
|
|
2789
|
-
type: "object",
|
|
2790
|
-
properties: {
|
|
2791
|
-
query: { type: "string", description: "User id, email, or name" }
|
|
2792
|
-
},
|
|
2793
|
-
required: ["query"],
|
|
2794
|
-
additionalProperties: false
|
|
2795
|
-
}
|
|
2796
|
-
},
|
|
2797
|
-
{
|
|
2798
|
-
name: "list_issue_statuses",
|
|
2799
|
-
description: "List available issue statuses in a Linear team.",
|
|
2800
|
-
inputSchema: {
|
|
2801
|
-
type: "object",
|
|
2802
|
-
properties: {
|
|
2803
|
-
team: { type: "string" }
|
|
2804
|
-
},
|
|
2805
|
-
required: ["team"],
|
|
2806
|
-
additionalProperties: false
|
|
2807
|
-
}
|
|
2808
|
-
},
|
|
2809
|
-
{
|
|
2810
|
-
name: "get_issue_status",
|
|
2811
|
-
description: "Retrieve detailed information about an issue status by name or ID.",
|
|
2812
|
-
inputSchema: {
|
|
2813
|
-
type: "object",
|
|
2814
|
-
properties: {
|
|
2815
|
-
id: { type: "string" },
|
|
2816
|
-
name: { type: "string" },
|
|
2817
|
-
team: { type: "string" }
|
|
2818
|
-
},
|
|
2819
|
-
additionalProperties: false
|
|
2820
|
-
}
|
|
2821
|
-
},
|
|
2822
|
-
{
|
|
2823
|
-
name: "list_issue_labels",
|
|
2824
|
-
description: "List available issue labels in a Linear workspace or team.",
|
|
2825
|
-
inputSchema: {
|
|
2826
|
-
type: "object",
|
|
2827
|
-
properties: {
|
|
2828
|
-
team: { type: "string" },
|
|
2829
|
-
limit: { type: "number" },
|
|
2830
|
-
cursor: { type: "string" }
|
|
2831
|
-
},
|
|
2832
|
-
additionalProperties: false
|
|
2833
|
-
}
|
|
2834
|
-
},
|
|
2835
|
-
{
|
|
2836
|
-
name: "create_issue_label",
|
|
2837
|
-
description: "Create a new Linear issue label.",
|
|
2838
|
-
inputSchema: {
|
|
2839
|
-
type: "object",
|
|
2840
|
-
properties: {
|
|
2841
|
-
name: { type: "string" },
|
|
2842
|
-
color: { type: "string" },
|
|
2843
|
-
description: { type: "string" },
|
|
2844
|
-
team: { type: "string" }
|
|
2845
|
-
},
|
|
2846
|
-
required: ["name"],
|
|
2847
|
-
additionalProperties: false
|
|
2848
|
-
}
|
|
2849
|
-
},
|
|
2850
|
-
{
|
|
2851
|
-
name: "list_projects",
|
|
2852
|
-
description: "List projects in the user's Linear workspace.",
|
|
2853
|
-
inputSchema: {
|
|
2854
|
-
type: "object",
|
|
2855
|
-
properties: {
|
|
2856
|
-
team: { type: "string" },
|
|
2857
|
-
limit: { type: "number" },
|
|
2858
|
-
cursor: { type: "string" }
|
|
2859
|
-
},
|
|
2860
|
-
additionalProperties: false
|
|
2861
|
-
}
|
|
2862
|
-
},
|
|
2863
|
-
{
|
|
2864
|
-
name: "get_project",
|
|
2865
|
-
description: "Retrieve details of a specific Linear project.",
|
|
2866
|
-
inputSchema: {
|
|
2867
|
-
type: "object",
|
|
2868
|
-
properties: {
|
|
2869
|
-
query: { type: "string" }
|
|
2870
|
-
},
|
|
2871
|
-
required: ["query"],
|
|
2872
|
-
additionalProperties: false
|
|
2873
|
-
}
|
|
2874
|
-
},
|
|
2875
|
-
{
|
|
2876
|
-
name: "save_project",
|
|
2877
|
-
description: "Create or update a Linear project. Omit id to create (name required); provide id for a partial update.",
|
|
2878
|
-
inputSchema: {
|
|
2879
|
-
type: "object",
|
|
2880
|
-
properties: {
|
|
2881
|
-
id: { type: "string" },
|
|
2882
|
-
name: { type: "string" },
|
|
2883
|
-
team: { type: "string" },
|
|
2884
|
-
description: { type: "string" },
|
|
2885
|
-
state: { type: "string" }
|
|
2886
|
-
},
|
|
2887
|
-
additionalProperties: false
|
|
2888
|
-
}
|
|
2889
|
-
},
|
|
2890
|
-
{
|
|
2891
|
-
name: "list_cycles",
|
|
2892
|
-
description: "Retrieve cycles for a specific Linear team.",
|
|
2893
|
-
inputSchema: {
|
|
2894
|
-
type: "object",
|
|
2895
|
-
properties: {
|
|
2896
|
-
teamId: { type: "string" },
|
|
2897
|
-
limit: { type: "number" },
|
|
2898
|
-
cursor: { type: "string" }
|
|
2899
|
-
},
|
|
2900
|
-
required: ["teamId"],
|
|
2901
|
-
additionalProperties: false
|
|
2902
|
-
}
|
|
2903
|
-
},
|
|
2904
|
-
{
|
|
2905
|
-
name: "search_documentation",
|
|
2906
|
-
description: "Search Linear's documentation to learn about features and usage.",
|
|
2907
|
-
inputSchema: {
|
|
2908
|
-
type: "object",
|
|
2909
|
-
properties: {
|
|
2910
|
-
query: { type: "string" }
|
|
2911
|
-
},
|
|
2912
|
-
required: ["query"],
|
|
2913
|
-
additionalProperties: false
|
|
2914
|
-
}
|
|
2915
|
-
},
|
|
2916
|
-
{
|
|
2917
|
-
name: "list_documents",
|
|
2918
|
-
description: "List documents in the user's Linear workspace.",
|
|
2919
|
-
inputSchema: {
|
|
2920
|
-
type: "object",
|
|
2921
|
-
properties: {
|
|
2922
|
-
projectId: { type: "string" },
|
|
2923
|
-
teamId: { type: "string" },
|
|
2924
|
-
query: { type: "string" },
|
|
2925
|
-
limit: { type: "number" },
|
|
2926
|
-
cursor: { type: "string" }
|
|
2927
|
-
},
|
|
2928
|
-
additionalProperties: false
|
|
2929
|
-
}
|
|
2930
|
-
},
|
|
2931
|
-
{
|
|
2932
|
-
name: "get_document",
|
|
2933
|
-
description: "Retrieve a Linear document by ID or slug.",
|
|
2934
|
-
inputSchema: {
|
|
2935
|
-
type: "object",
|
|
2936
|
-
properties: {
|
|
2937
|
-
id: { type: "string", description: "Document ID or slug" }
|
|
2938
|
-
},
|
|
2939
|
-
required: ["id"],
|
|
2940
|
-
additionalProperties: false
|
|
2941
|
-
}
|
|
2942
|
-
},
|
|
2943
|
-
{
|
|
2944
|
-
name: "save_document",
|
|
2945
|
-
description: "Create or update a Linear document. Omit id to create (title + exactly one parent required); provide id for a partial update.",
|
|
2946
|
-
inputSchema: {
|
|
2947
|
-
type: "object",
|
|
2948
|
-
properties: {
|
|
2949
|
-
id: { type: "string" },
|
|
2950
|
-
title: { type: "string" },
|
|
2951
|
-
content: { type: "string" },
|
|
2952
|
-
project: { type: "string" },
|
|
2953
|
-
team: { type: "string" },
|
|
2954
|
-
issue: { type: "string" },
|
|
2955
|
-
cycle: { type: "string" },
|
|
2956
|
-
icon: { type: "string" },
|
|
2957
|
-
color: { type: "string" }
|
|
2958
|
-
},
|
|
2959
|
-
additionalProperties: false
|
|
2960
|
-
}
|
|
2961
|
-
}
|
|
2962
|
-
]
|
|
2651
|
+
// ../packages/twin-linear/dist/fixtures/mcp-tools-list.meta.json
|
|
2652
|
+
var mcp_tools_list_meta_default = {
|
|
2653
|
+
twin: "linear",
|
|
2654
|
+
substrate: "twin-authored-from-vendor-docs",
|
|
2655
|
+
endpoint: "in-process://twin-linear/s/:sid/mcp",
|
|
2656
|
+
method: "tools/list",
|
|
2657
|
+
protocol: "JSON-RPC 2.0 over Streamable HTTP",
|
|
2658
|
+
protocolVersion: "2025-06-18",
|
|
2659
|
+
captureDate: "2026-08-06",
|
|
2660
|
+
rawFileSha256: "f764e11486c25738b1952b6e83e4919fcb84c3c36cd36ef801b326fb40ed111d",
|
|
2661
|
+
liveToolCount: 22,
|
|
2662
|
+
liveToolOrder: [
|
|
2663
|
+
"list_issues",
|
|
2664
|
+
"get_issue",
|
|
2665
|
+
"save_issue",
|
|
2666
|
+
"list_comments",
|
|
2667
|
+
"save_comment",
|
|
2668
|
+
"delete_comment",
|
|
2669
|
+
"list_teams",
|
|
2670
|
+
"get_team",
|
|
2671
|
+
"list_users",
|
|
2672
|
+
"get_user",
|
|
2673
|
+
"list_issue_statuses",
|
|
2674
|
+
"get_issue_status",
|
|
2675
|
+
"list_issue_labels",
|
|
2676
|
+
"create_issue_label",
|
|
2677
|
+
"list_projects",
|
|
2678
|
+
"get_project",
|
|
2679
|
+
"save_project",
|
|
2680
|
+
"list_cycles",
|
|
2681
|
+
"search_documentation",
|
|
2682
|
+
"list_documents",
|
|
2683
|
+
"get_document",
|
|
2684
|
+
"save_document"
|
|
2685
|
+
],
|
|
2686
|
+
transcription: {
|
|
2687
|
+
readFrom: "twin-linear's own tools/list, booted on defaultSeedState() and driven through Hono's app.request, read immediately before this table became fixture-driven (F-1325)",
|
|
2688
|
+
contentOrigin: "the tool NAMES come from Linear's published MCP launch documentation; the inputSchemas are twin-owned Gate-1 fixtures, as this fixture's own notes have always admitted. The pre-F-1325 provenance read `source: documented_official_linear_mcp_launch_set`, which reads like a capture. It was never one.",
|
|
2689
|
+
comparedToUpstream: "never. https://mcp.linear.app/mcp is OAuth-gated, so F-1326 recorded the upstream golden as deferred (fixtures/mcp-tools-list/linear.status.json). Re-sourcing this table needs that token and belongs to F-1329, not here."
|
|
2690
|
+
},
|
|
2691
|
+
notes: [
|
|
2692
|
+
"Gate-1 Wave 4 expands Gate 0's 18-tool freeze: delete_comment plus documents list/get/save; save_issue estimate/parentId/relations; save_comment parentId.",
|
|
2693
|
+
"Documents, initiatives and milestones beyond this minimal set stay named gaps.",
|
|
2694
|
+
"GraphQL keeps issueCreate/issueUpdate for SDK parity; MCP follows the documented listing.",
|
|
2695
|
+
"This listing carries the generic outputSchema the twin serves on every tool. The pre-F-1325 canonical omitted it, so the committed oracle described less than the wire did.",
|
|
2696
|
+
"Seeded from the served table rather than from upstream on purpose. F-1325 is name-neutral by construction: every byte this twin serves is identical before and after it."
|
|
2697
|
+
],
|
|
2698
|
+
canonicalFileSha256: "ff65fdd9e6085e255066e1cf0935993634131d862068d82e0f349c5e7882ff91",
|
|
2699
|
+
files: {
|
|
2700
|
+
raw: "mcp-tools-list.raw.json",
|
|
2701
|
+
canonical: "mcp-tools-list.canonical.json"
|
|
2963
2702
|
}
|
|
2964
2703
|
};
|
|
2965
2704
|
|
|
2705
|
+
// ../packages/twin-linear/dist/fixtures/mcp-tools-list.raw.json
|
|
2706
|
+
var mcp_tools_list_raw_default = { jsonrpc: "2.0", id: 1, result: { tools: [{ name: "list_issues", description: 'List issues in the Linear workspace. For my issues, use "me" as the assignee.', inputSchema: { type: "object", properties: { team: { type: "string", description: "Team key or id" }, assignee: { type: "string", description: 'User email, id, or "me"' }, state: { type: "string", description: "Workflow state name or id" }, limit: { type: "number", description: "Max results (default 50, max 250)" }, cursor: { type: "string", description: "Pagination cursor" }, query: { type: "string", description: "Title/description search" } }, additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "get_issue", description: "Retrieve detailed information about an issue by ID or identifier (e.g. ENG-1).", inputSchema: { type: "object", properties: { id: { type: "string", description: "Issue id or identifier" } }, required: ["id"], additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "save_issue", description: "Create or update a Linear issue. Omit id to create (title and team required); provide id for a partial update. Relation arrays (blocks/blockedBy/relatedTo) are append-only.", inputSchema: { type: "object", properties: { id: { type: "string", description: "Issue id or identifier (update)" }, title: { type: "string" }, team: { type: "string" }, description: { type: "string" }, assignee: { type: "string" }, state: { type: "string" }, priority: { type: "number" }, estimate: { type: ["number", "null"], description: "Estimate points; null clears on update" }, labels: { type: "array", items: { type: "string" } }, project: { type: "string" }, cycle: { type: "string" }, parentId: { type: ["string", "null"], description: "Parent issue id/identifier; null removes" }, blocks: { type: "array", items: { type: "string" }, description: "Append-only blocked issues" }, blockedBy: { type: "array", items: { type: "string" }, description: "Append-only blockers" }, relatedTo: { type: "array", items: { type: "string" }, description: "Append-only related issues" } }, additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "list_comments", description: "List comments for a specific Linear issue.", inputSchema: { type: "object", properties: { issueId: { type: "string" }, limit: { type: "number" }, cursor: { type: "string" } }, required: ["issueId"], additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "save_comment", description: "Create or update a comment on a Linear issue. Provide id to edit. To reply in a thread, pass parentId (issueId optional when replying).", inputSchema: { type: "object", properties: { id: { type: "string", description: "Comment id (edit)" }, issueId: { type: "string" }, parentId: { type: "string", description: "Parent comment id for threaded replies" }, body: { type: "string" } }, required: ["body"], additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "delete_comment", description: "Delete a Linear comment by id.", inputSchema: { type: "object", properties: { id: { type: "string", description: "Comment ID" } }, required: ["id"], additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "list_teams", description: "List teams in the user's Linear workspace.", inputSchema: { type: "object", properties: { limit: { type: "number" }, cursor: { type: "string" } }, additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "get_team", description: "Retrieve details of a specific Linear team.", inputSchema: { type: "object", properties: { query: { type: "string", description: "Team id, key, or name" } }, required: ["query"], additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "list_users", description: "Retrieve users in the Linear workspace.", inputSchema: { type: "object", properties: { limit: { type: "number" }, cursor: { type: "string" } }, additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "get_user", description: "Retrieve details of a specific Linear user.", inputSchema: { type: "object", properties: { query: { type: "string", description: "User id, email, or name" } }, required: ["query"], additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "list_issue_statuses", description: "List available issue statuses in a Linear team.", inputSchema: { type: "object", properties: { team: { type: "string" } }, required: ["team"], additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "get_issue_status", description: "Retrieve detailed information about an issue status by name or ID.", inputSchema: { type: "object", properties: { id: { type: "string" }, name: { type: "string" }, team: { type: "string" } }, additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "list_issue_labels", description: "List available issue labels in a Linear workspace or team.", inputSchema: { type: "object", properties: { team: { type: "string" }, limit: { type: "number" }, cursor: { type: "string" } }, additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "create_issue_label", description: "Create a new Linear issue label.", inputSchema: { type: "object", properties: { name: { type: "string" }, color: { type: "string" }, description: { type: "string" }, team: { type: "string" } }, required: ["name"], additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "list_projects", description: "List projects in the user's Linear workspace.", inputSchema: { type: "object", properties: { team: { type: "string" }, limit: { type: "number" }, cursor: { type: "string" } }, additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "get_project", description: "Retrieve details of a specific Linear project.", inputSchema: { type: "object", properties: { query: { type: "string" } }, required: ["query"], additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "save_project", description: "Create or update a Linear project. Omit id to create (name required); provide id for a partial update.", inputSchema: { type: "object", properties: { id: { type: "string" }, name: { type: "string" }, team: { type: "string" }, description: { type: "string" }, state: { type: "string" } }, additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "list_cycles", description: "Retrieve cycles for a specific Linear team.", inputSchema: { type: "object", properties: { teamId: { type: "string" }, limit: { type: "number" }, cursor: { type: "string" } }, required: ["teamId"], additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "search_documentation", description: "Search Linear's documentation to learn about features and usage.", inputSchema: { type: "object", properties: { query: { type: "string" } }, required: ["query"], additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "list_documents", description: "List documents in the user's Linear workspace.", inputSchema: { type: "object", properties: { projectId: { type: "string" }, teamId: { type: "string" }, query: { type: "string" }, limit: { type: "number" }, cursor: { type: "string" } }, additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "get_document", description: "Retrieve a Linear document by ID or slug.", inputSchema: { type: "object", properties: { id: { type: "string", description: "Document ID or slug" } }, required: ["id"], additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }, { name: "save_document", description: "Create or update a Linear document. Omit id to create (title + exactly one parent required); provide id for a partial update.", inputSchema: { type: "object", properties: { id: { type: "string" }, title: { type: "string" }, content: { type: "string" }, project: { type: "string" }, team: { type: "string" }, issue: { type: "string" }, cycle: { type: "string" }, icon: { type: "string" }, color: { type: "string" } }, additionalProperties: false }, outputSchema: { type: "object", additionalProperties: true } }] } };
|
|
2707
|
+
|
|
2966
2708
|
// ../packages/twin-linear/dist/src/identity.js
|
|
2967
2709
|
function actorFromSession(session) {
|
|
2968
2710
|
return {
|
|
@@ -3163,7 +2905,10 @@ function mcpPage(items, limit, cursor, binding) {
|
|
|
3163
2905
|
}
|
|
3164
2906
|
|
|
3165
2907
|
// ../packages/twin-linear/dist/src/mcp.js
|
|
3166
|
-
var
|
|
2908
|
+
var linearToolFixture = loadMcpToolFixture({
|
|
2909
|
+
raw: mcp_tools_list_raw_default,
|
|
2910
|
+
meta: mcp_tools_list_meta_default
|
|
2911
|
+
});
|
|
3167
2912
|
function mutate(domain, ctx, op) {
|
|
3168
2913
|
const before = domain.exportState();
|
|
3169
2914
|
const result = op();
|
|
@@ -3560,25 +3305,15 @@ var implementations = {
|
|
|
3560
3305
|
})
|
|
3561
3306
|
}
|
|
3562
3307
|
};
|
|
3563
|
-
var
|
|
3564
|
-
|
|
3565
|
-
|
|
3566
|
-
};
|
|
3567
|
-
var linearTools = canonicalTools.map((tool) => {
|
|
3568
|
-
const impl = implementations[tool.name];
|
|
3569
|
-
if (!impl)
|
|
3570
|
-
throw new Error(`Missing MCP implementation for ${tool.name}`);
|
|
3571
|
-
return {
|
|
3572
|
-
name: tool.name,
|
|
3573
|
-
description: tool.description,
|
|
3308
|
+
var boundImplementations = Object.fromEntries(Object.entries(implementations).map(([name, impl]) => [
|
|
3309
|
+
name,
|
|
3310
|
+
{
|
|
3574
3311
|
schema: impl.schema,
|
|
3575
3312
|
mutation: impl.mutation,
|
|
3576
|
-
inputSchema: tool.inputSchema,
|
|
3577
|
-
outputSchema: genericOutputSchema,
|
|
3578
|
-
includeIsError: true,
|
|
3579
3313
|
handler: (domain, args, ctx) => impl.handler(domain, args ?? {}, ctx)
|
|
3580
|
-
}
|
|
3581
|
-
|
|
3314
|
+
}
|
|
3315
|
+
]));
|
|
3316
|
+
var linearTools = deriveMcpToolTable(linearToolFixture, boundImplementations, { includeIsError: true });
|
|
3582
3317
|
var LINEAR_MCP_TOOL_COUNT = linearTools.length;
|
|
3583
3318
|
|
|
3584
3319
|
// ../packages/twin-linear/dist/src/recording.js
|
|
@@ -5457,4 +5192,4 @@ function createLinearTwinApp(options = {}) {
|
|
|
5457
5192
|
return withPublicOAuth(app, db);
|
|
5458
5193
|
}
|
|
5459
5194
|
|
|
5460
|
-
export { LINEAR_MCP_TOOL_COUNT, LinearDomain, createLinearTwinApp, createLinearTwinDefinition, exportLinearState, linearStateDelta, linearTools, looksLikeLinearToken, migrate, openLinearTwinDatabase, projectLinearRecording, registerLinearRoutes, resetDatabase, resolveLinearCredential, withPublicOAuth };
|
|
5195
|
+
export { LINEAR_MCP_TOOL_COUNT, LinearDomain, createLinearTwinApp, createLinearTwinDefinition, exportLinearState, linearStateDelta, linearToolFixture, linearTools, looksLikeLinearToken, migrate, openLinearTwinDatabase, projectLinearRecording, registerLinearRoutes, resetDatabase, resolveLinearCredential, withPublicOAuth };
|