@cotal-ai/linear 0.90.1 → 0.91.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.d.ts +74 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +236 -90
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -3
- package/dist/index.js.map +1 -1
- package/dist/presentation.d.ts +6 -0
- package/dist/presentation.d.ts.map +1 -0
- package/dist/presentation.js +27 -0
- package/dist/presentation.js.map +1 -0
- package/dist/service-adapter.d.ts +6 -0
- package/dist/service-adapter.d.ts.map +1 -0
- package/dist/service-adapter.js +87 -0
- package/dist/service-adapter.js.map +1 -0
- package/package.json +3 -3
package/dist/cli.d.ts
CHANGED
|
@@ -1,4 +1,77 @@
|
|
|
1
1
|
import { type ParsedArgs } from "@cotal-ai/core";
|
|
2
|
-
export declare const USAGE = "cotal linear account add <name> --mode <write|readonly> (--token-stdin | --token-file <path>)\ncotal linear account login <name> --mode <write|readonly>\ncotal linear account show <name>\ncotal linear inventory <account> [--json]\ncotal linear call <account> <tool> [--args <json>] [--inventory <digest>] [--timeout <ms>]\ncotal linear resource <account> <uri> [--inventory <digest>] [--timeout <ms>]\ncotal linear prompt <account> <name> [--args <json>] [--inventory <digest>] [--timeout <ms>]\ncotal linear serve <account> --endpoint <reverse-dns-name> [--space <s>] [--server <url>]\ncotal linear caller <name> --endpoint <reverse-dns-name> --out <path> [--channels <a,b>] [--expires-in <s>] [--space <s>] [--server <url>]";
|
|
2
|
+
export declare const USAGE = "cotal linear account add <name> --mode <write|readonly> (--token-stdin | --token-file <path>)\ncotal linear account login <name> --mode <write|readonly>\ncotal linear account show <name>\ncotal linear inventory <account> [--json]\ncotal linear call <account> <tool> [--args <json>] [--inventory <digest>] [--timeout <ms>]\ncotal linear resource <account> <uri> [--inventory <digest>] [--timeout <ms>]\ncotal linear prompt <account> <name> [--args <json>] [--inventory <digest>] [--timeout <ms>]\ncotal linear serve <account> --endpoint <reverse-dns-name> [--space <s>] [--server <url>]\ncotal linear caller <name> --endpoint <reverse-dns-name> --out <path> [--channels <a,b>] [--expires-in <s>] [--space <s>] [--server <url>] [--json|--plain]";
|
|
3
|
+
export declare const linearForms: readonly [{
|
|
4
|
+
readonly path: readonly ["account", "add"];
|
|
5
|
+
readonly operands: 1;
|
|
6
|
+
readonly flags: readonly ["mode", "token-stdin", "token-file", "json", "plain"];
|
|
7
|
+
readonly outputs: readonly ["json", "plain"];
|
|
8
|
+
readonly summary: "save an explicit token-file or piped-token account";
|
|
9
|
+
readonly reads: false;
|
|
10
|
+
}, {
|
|
11
|
+
readonly path: readonly ["account", "login"];
|
|
12
|
+
readonly operands: 1;
|
|
13
|
+
readonly flags: readonly ["mode", "plain"];
|
|
14
|
+
readonly outputs: readonly ["plain"];
|
|
15
|
+
readonly summary: "run the native interactive Linear OAuth flow";
|
|
16
|
+
readonly reads: false;
|
|
17
|
+
}, {
|
|
18
|
+
readonly path: readonly ["account", "show"];
|
|
19
|
+
readonly operands: 1;
|
|
20
|
+
readonly flags: readonly ["json", "plain"];
|
|
21
|
+
readonly outputs: readonly ["json", "plain"];
|
|
22
|
+
readonly summary: "read recorded account metadata without credential contents";
|
|
23
|
+
readonly reads: true;
|
|
24
|
+
}, {
|
|
25
|
+
readonly path: readonly ["inventory"];
|
|
26
|
+
readonly operands: 1;
|
|
27
|
+
readonly flags: readonly ["json", "plain"];
|
|
28
|
+
readonly outputs: readonly ["json", "plain"];
|
|
29
|
+
readonly summary: "read the complete bounded native MCP inventory";
|
|
30
|
+
readonly reads: true;
|
|
31
|
+
}, {
|
|
32
|
+
readonly path: readonly ["call"];
|
|
33
|
+
readonly operands: 2;
|
|
34
|
+
readonly flags: readonly ["args", "inventory", "timeout", "json", "plain"];
|
|
35
|
+
readonly outputs: readonly ["json", "plain"];
|
|
36
|
+
readonly summary: "send one native tool request without replay";
|
|
37
|
+
readonly reads: false;
|
|
38
|
+
}, {
|
|
39
|
+
readonly path: readonly ["resource"];
|
|
40
|
+
readonly operands: 2;
|
|
41
|
+
readonly flags: readonly ["inventory", "timeout", "json", "plain"];
|
|
42
|
+
readonly outputs: readonly ["json", "plain"];
|
|
43
|
+
readonly summary: "read one native MCP resource without replay";
|
|
44
|
+
readonly reads: true;
|
|
45
|
+
}, {
|
|
46
|
+
readonly path: readonly ["prompt"];
|
|
47
|
+
readonly operands: 2;
|
|
48
|
+
readonly flags: readonly ["args", "inventory", "timeout", "json", "plain"];
|
|
49
|
+
readonly outputs: readonly ["json", "plain"];
|
|
50
|
+
readonly summary: "request one native MCP prompt without replay";
|
|
51
|
+
readonly reads: true;
|
|
52
|
+
}, {
|
|
53
|
+
readonly path: readonly ["serve"];
|
|
54
|
+
readonly operands: 1;
|
|
55
|
+
readonly flags: readonly ["endpoint", "space", "server"];
|
|
56
|
+
readonly outputs: readonly [];
|
|
57
|
+
readonly summary: "legacy native foreground service; independent lifecycle uses the Linear service preset";
|
|
58
|
+
readonly reads: false;
|
|
59
|
+
}, {
|
|
60
|
+
readonly path: readonly ["caller"];
|
|
61
|
+
readonly operands: 1;
|
|
62
|
+
readonly flags: readonly ["endpoint", "out", "channels", "expires-in", "space", "server", "json", "plain"];
|
|
63
|
+
readonly outputs: readonly ["json", "plain"];
|
|
64
|
+
readonly summary: "write a private native static caller without changing issuance authority";
|
|
65
|
+
readonly reads: false;
|
|
66
|
+
}];
|
|
67
|
+
/** Pure grammar preflight. No account, token, OAuth state, connection or handler is opened. */
|
|
68
|
+
export declare function validateLinearArguments(args: ParsedArgs): void;
|
|
69
|
+
export interface LinearServeLifecycle {
|
|
70
|
+
readonly root: string;
|
|
71
|
+
readonly onInitialized: () => void | Promise<void>;
|
|
72
|
+
}
|
|
73
|
+
/** Register and serve until SIGINT/SIGTERM, renewing the serve credential at 75% of its life.
|
|
74
|
+
* The embedding callback observes initialization, not a current endpoint response or cleanup. */
|
|
75
|
+
export declare function serveLinearAccount(account: string, endpoint: string, v: Record<string, unknown>, lifecycle?: LinearServeLifecycle): Promise<void>;
|
|
3
76
|
export declare function linear(args: ParsedArgs): Promise<void>;
|
|
4
77
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuD,KAAK,UAAU,EAAkB,MAAM,gBAAgB,CAAC;AAStH,eAAO,MAAM,KAAK,2uBAQ0I,CAAC;AAE7J,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUd,CAAC;AAEX,+FAA+F;AAC/F,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAgC9D;AAwFD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED;kGACkG;AAClG,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DvJ;AAkCD,wBAAsB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAmF5D"}
|
package/dist/cli.js
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
* error or a failure after dispatch.
|
|
7
|
-
*/
|
|
8
|
-
import { resolve } from "node:path";
|
|
9
|
-
import { writeSecretFileCreateOnly } from "@cotal-ai/core";
|
|
10
|
-
import { getSpaceAuth, hasUserAuthState, resolveMeshTarget, workspaceSecretStore } from "@cotal-ai/workspace";
|
|
1
|
+
/** Operator frontend over the native Linear client. No request or authority is substituted. */
|
|
2
|
+
import { lstatSync } from "node:fs";
|
|
3
|
+
import { dirname, resolve } from "node:path";
|
|
4
|
+
import { acquireLock, credsClaims, writeSecretFileCreateOnly } from "@cotal-ai/core";
|
|
5
|
+
import { CommandFailure, recordOperationSpace, assertExternalCredentialExport, getSpaceAuth, hasUserAuthState, inputDisabledByFlag, isCommandFailure, presentationOf, protectedCredentialReference, protectedLocalDirectory, readLocalRecordSource, resolveMeshTarget, resolveNativeServiceTarget, workspaceSecretStore, writeResult } from "@cotal-ai/workspace";
|
|
11
6
|
import { assertAccountName, loadAccount, saveAccount, storedTokenPath } from "./account.js";
|
|
12
7
|
import { loginAccount } from "./oauth.js";
|
|
13
8
|
import { isLinearMode } from "./origin.js";
|
|
14
|
-
import { LinearUpstream } from "./upstream.js";
|
|
15
|
-
import {
|
|
9
|
+
import { DEFAULT_LIMITS, LinearUpstream } from "./upstream.js";
|
|
10
|
+
import { emitInventory, emitUpstream } from "./presentation.js";
|
|
11
|
+
import { assertLinearEndpointName, provisionLinearCaller, registerLinearEndpoint, renewalDelayMs, runLinearEndpoint } from "./serve.js";
|
|
16
12
|
export const USAGE = `cotal linear account add <name> --mode <write|readonly> (--token-stdin | --token-file <path>)
|
|
17
13
|
cotal linear account login <name> --mode <write|readonly>
|
|
18
14
|
cotal linear account show <name>
|
|
@@ -21,18 +17,106 @@ cotal linear call <account> <tool> [--args <json>] [--inventory <digest>] [--tim
|
|
|
21
17
|
cotal linear resource <account> <uri> [--inventory <digest>] [--timeout <ms>]
|
|
22
18
|
cotal linear prompt <account> <name> [--args <json>] [--inventory <digest>] [--timeout <ms>]
|
|
23
19
|
cotal linear serve <account> --endpoint <reverse-dns-name> [--space <s>] [--server <url>]
|
|
24
|
-
cotal linear caller <name> --endpoint <reverse-dns-name> --out <path> [--channels <a,b>] [--expires-in <s>] [--space <s>] [--server <url>]`;
|
|
20
|
+
cotal linear caller <name> --endpoint <reverse-dns-name> --out <path> [--channels <a,b>] [--expires-in <s>] [--space <s>] [--server <url>] [--json|--plain]`;
|
|
21
|
+
export const linearForms = [
|
|
22
|
+
{ path: ["account", "add"], operands: 1, flags: ["mode", "token-stdin", "token-file", "json", "plain"], outputs: ["json", "plain"], summary: "save an explicit token-file or piped-token account", reads: false },
|
|
23
|
+
{ path: ["account", "login"], operands: 1, flags: ["mode", "plain"], outputs: ["plain"], summary: "run the native interactive Linear OAuth flow", reads: false },
|
|
24
|
+
{ path: ["account", "show"], operands: 1, flags: ["json", "plain"], outputs: ["json", "plain"], summary: "read recorded account metadata without credential contents", reads: true },
|
|
25
|
+
{ path: ["inventory"], operands: 1, flags: ["json", "plain"], outputs: ["json", "plain"], summary: "read the complete bounded native MCP inventory", reads: true },
|
|
26
|
+
{ path: ["call"], operands: 2, flags: ["args", "inventory", "timeout", "json", "plain"], outputs: ["json", "plain"], summary: "send one native tool request without replay", reads: false },
|
|
27
|
+
{ path: ["resource"], operands: 2, flags: ["inventory", "timeout", "json", "plain"], outputs: ["json", "plain"], summary: "read one native MCP resource without replay", reads: true },
|
|
28
|
+
{ path: ["prompt"], operands: 2, flags: ["args", "inventory", "timeout", "json", "plain"], outputs: ["json", "plain"], summary: "request one native MCP prompt without replay", reads: true },
|
|
29
|
+
{ path: ["serve"], operands: 1, flags: ["endpoint", "space", "server"], outputs: [], summary: "legacy native foreground service; independent lifecycle uses the Linear service preset", reads: false },
|
|
30
|
+
{ path: ["caller"], operands: 1, flags: ["endpoint", "out", "channels", "expires-in", "space", "server", "json", "plain"], outputs: ["json", "plain"], summary: "write a private native static caller without changing issuance authority", reads: false },
|
|
31
|
+
];
|
|
32
|
+
/** Pure grammar preflight. No account, token, OAuth state, connection or handler is opened. */
|
|
33
|
+
export function validateLinearArguments(args) {
|
|
34
|
+
presentationOf(args.values);
|
|
35
|
+
if (!args.positionals.length || args.positionals.length === 1 && args.positionals[0] === "account") {
|
|
36
|
+
if (Object.keys(args.values).some((name) => !["json", "plain"].includes(name)))
|
|
37
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "choose a Linear operation before its options");
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const form = linearForms.find((row) => row.path.every((word, index) => args.positionals[index] === word));
|
|
41
|
+
if (!form || args.positionals.length !== form.path.length + form.operands)
|
|
42
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "choose one complete declared Linear operation and its required operands");
|
|
43
|
+
if (Object.keys(args.values).some((name) => !form.flags.includes(name)))
|
|
44
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "a supplied flag does not belong to this Linear operation; no account or request was opened");
|
|
45
|
+
for (const operand of args.positionals.slice(form.path.length))
|
|
46
|
+
if (!operand || operand.length > 8192 || /[\u0000-\u001f\u007f]/u.test(operand))
|
|
47
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "Linear operands must be bounded nonempty text without terminal controls");
|
|
48
|
+
if (form.path[0] !== "caller") {
|
|
49
|
+
try {
|
|
50
|
+
assertAccountName(args.positionals[form.path.length]);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "the Linear account name must use 1 to 32 lowercase letters, digits or dashes and begin with a letter or digit");
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (form.path[0] === "account" && ["add", "login"].includes(args.positionals[1])) {
|
|
57
|
+
if (!isLinearMode(args.values.mode))
|
|
58
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "choose --mode write or readonly explicitly");
|
|
59
|
+
if (args.positionals[1] === "add" && (args.values["token-stdin"] === true) === (args.values["token-file"] !== undefined))
|
|
60
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "account add needs exactly one of --token-stdin or --token-file");
|
|
61
|
+
if (args.positionals[1] === "login" && (inputDisabledByFlag() || process.env.COTAL_NO_PROMPT === "1"))
|
|
62
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "Linear OAuth login needs human authorization and cannot run with input disabled");
|
|
63
|
+
}
|
|
64
|
+
if (args.values.args !== undefined) {
|
|
65
|
+
const value = jsonArgs(args.values.args);
|
|
66
|
+
if (form.path[0] === "prompt" && value && Object.values(value).some((item) => typeof item !== "string"))
|
|
67
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "prompt argument values must be strings; no argument contents were printed");
|
|
68
|
+
}
|
|
69
|
+
timeout(args.values.timeout);
|
|
70
|
+
if (form.path[0] === "serve" || form.path[0] === "caller") {
|
|
71
|
+
try {
|
|
72
|
+
if (typeof args.values.endpoint !== "string")
|
|
73
|
+
throw new Error();
|
|
74
|
+
assertLinearEndpointName(args.values.endpoint);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "choose --endpoint with the full native reverse-DNS Linear endpoint name");
|
|
78
|
+
}
|
|
79
|
+
if (form.path[0] === "caller") {
|
|
80
|
+
if (typeof args.values.out !== "string" || !args.values.out.trim() || /[\u0000-\u001f\u007f]/u.test(args.values.out))
|
|
81
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "native Linear caller issuance requires --out with a private output path without terminal controls");
|
|
82
|
+
if (args.values["expires-in"] !== undefined && (!/^[0-9]+$/.test(String(args.values["expires-in"])) || !Number.isSafeInteger(Number(args.values["expires-in"])) || Number(args.values["expires-in"]) <= 0))
|
|
83
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "--expires-in must be a positive integer of native seconds");
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function accountForRead(name) {
|
|
88
|
+
try {
|
|
89
|
+
return loadAccount(name);
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
throw new CommandFailure("refused", "DEPENDENCY_UNAVAILABLE", "the selected Linear account metadata could not be read; no token or account-file contents were printed", { target: { account: name } });
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function emitAccount(args, account, saved) {
|
|
96
|
+
writeResult(presentationOf(args.values), { command: "linear", target: { account: account.name }, result: { kind: saved ? "linear-account-saved" : "linear-account-metadata", name: account.name, mode: account.mode, auth: account.auth, credentialReference: account.auth === "token" ? account.tokenFile : null, nativeSave: saved ? "acknowledged" : "not-requested", credentialContentsReadForReport: false, upstreamChecked: false } }, (row) => ({ sections: [{ title: saved ? "Linear account save acknowledged" : "Recorded Linear account", blocks: [{ kind: "fields", rows: [["Account", row.name], ["Mode", row.mode], ["Authentication", row.auth], ["Credential reference", row.credentialReference ?? "private native OAuth state"], ["Upstream", "not checked"]] }, { kind: "lines", lines: ["This is recorded configuration, not proof of current upstream access. Credential contents are not printed. Native OAuth or token persistence retains its own authority and lifetime rules."] }] }] }));
|
|
97
|
+
}
|
|
25
98
|
function fail(msg) {
|
|
26
99
|
console.error(msg);
|
|
27
100
|
process.exit(1);
|
|
28
101
|
}
|
|
29
102
|
async function readStdin() {
|
|
30
103
|
if (process.stdin.isTTY)
|
|
31
|
-
|
|
104
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "--token-stdin requires a pipe; no secret should be typed into argv");
|
|
32
105
|
const chunks = [];
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
106
|
+
let size = 0;
|
|
107
|
+
for await (const chunk of process.stdin) {
|
|
108
|
+
const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
109
|
+
size += bytes.length;
|
|
110
|
+
if (size > 1024 * 1024)
|
|
111
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "the piped token exceeds 1 MiB; nothing was saved and no bytes were printed");
|
|
112
|
+
chunks.push(bytes);
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
return new TextDecoder("utf-8", { fatal: true }).decode(Buffer.concat(chunks));
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "the piped token is not UTF-8; nothing was saved and no bytes were printed");
|
|
119
|
+
}
|
|
36
120
|
}
|
|
37
121
|
function jsonArgs(raw) {
|
|
38
122
|
if (raw === undefined)
|
|
@@ -41,28 +125,24 @@ function jsonArgs(raw) {
|
|
|
41
125
|
try {
|
|
42
126
|
v = JSON.parse(String(raw));
|
|
43
127
|
}
|
|
44
|
-
catch
|
|
45
|
-
|
|
128
|
+
catch {
|
|
129
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "--args must contain valid JSON; argument values were not printed");
|
|
46
130
|
}
|
|
47
131
|
if (!v || typeof v !== "object" || Array.isArray(v))
|
|
48
|
-
|
|
132
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "--args must be a JSON object");
|
|
49
133
|
return v;
|
|
50
134
|
}
|
|
51
135
|
function timeout(raw) {
|
|
52
136
|
if (raw === undefined)
|
|
53
137
|
return undefined;
|
|
54
138
|
const n = Number(raw);
|
|
55
|
-
if (!Number.isSafeInteger(n) || n <= 0)
|
|
56
|
-
|
|
139
|
+
if (!Number.isSafeInteger(n) || n <= 0 || n > DEFAULT_LIMITS.maxTimeoutMs)
|
|
140
|
+
throw new CommandFailure("refused", "USAGE_INVALID", `--timeout must be a positive integer of milliseconds, at most ${DEFAULT_LIMITS.maxTimeoutMs}`);
|
|
57
141
|
return n;
|
|
58
142
|
}
|
|
59
|
-
function emit(reply) {
|
|
60
|
-
console.log(JSON.stringify(reply, null, 2));
|
|
61
|
-
process.exitCode = reply.kind === "result" ? 0 : reply.kind === "refused" ? 2 : 3;
|
|
62
|
-
}
|
|
63
143
|
/** Run one request; SIGINT cancels it (reported as `unknown` once dispatched) and closes the session. */
|
|
64
144
|
async function withUpstream(account, fn) {
|
|
65
|
-
const upstream = new LinearUpstream(
|
|
145
|
+
const upstream = new LinearUpstream(accountForRead(account));
|
|
66
146
|
const ctl = new AbortController();
|
|
67
147
|
const onSignal = () => ctl.abort();
|
|
68
148
|
process.once("SIGINT", onSignal);
|
|
@@ -76,31 +156,57 @@ async function withUpstream(account, fn) {
|
|
|
76
156
|
await upstream.close();
|
|
77
157
|
}
|
|
78
158
|
}
|
|
159
|
+
async function forward(args, account, operation, run) {
|
|
160
|
+
let reply;
|
|
161
|
+
try {
|
|
162
|
+
reply = await withUpstream(account, run);
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
if (isCommandFailure(error))
|
|
166
|
+
throw error;
|
|
167
|
+
throw new CommandFailure("unknown", "OPERATION_UNKNOWN", "the Linear request/session did not return a confirmed native outcome; the request was not retried", { target: { account, operation } });
|
|
168
|
+
}
|
|
169
|
+
emitUpstream(args, account, operation, reply);
|
|
170
|
+
}
|
|
79
171
|
/** The static-auth mesh and the operator's own space authority, or a loud refusal. A per-user-auth
|
|
80
172
|
* mesh issues endpoint credentials through its remote auth service, which this package has no
|
|
81
173
|
* client for, so it is refused rather than signed locally. */
|
|
82
|
-
async function staticAuthority(v) {
|
|
83
|
-
const target = resolveMeshTarget(process.cwd(), { space: v.space, server: v.server });
|
|
84
|
-
|
|
85
|
-
|
|
174
|
+
async function staticAuthority(v, root) {
|
|
175
|
+
const target = resolveMeshTarget(root ?? process.cwd(), { space: v.space, server: v.server, readOnly: true });
|
|
176
|
+
recordOperationSpace(target.space);
|
|
177
|
+
if (root)
|
|
178
|
+
resolveNativeServiceTarget(root, target.space, v.server);
|
|
179
|
+
if (target.mode === "user" || hasUserAuthState(target.root, target.space, { readOnly: true }))
|
|
180
|
+
throw new CommandFailure("refused", "UNSUPPORTED", "Linear's native local issuer does not support per-user-auth spaces; no remote or broader caller was substituted", { target: { space: target.space } });
|
|
86
181
|
if (target.mode !== "auth")
|
|
87
|
-
|
|
88
|
-
|
|
182
|
+
throw new CommandFailure("refused", "UNSUPPORTED", "an open space has no static credential system for this native Linear action", { target: { space: target.space } });
|
|
183
|
+
let auth;
|
|
184
|
+
try {
|
|
185
|
+
auth = await getSpaceAuth(workspaceSecretStore(target.root), target.space);
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
throw new CommandFailure("refused", "AUTH_REQUIRED", "the selected root's space authority could not be read; no native Linear authority action was submitted", { target: { space: target.space } });
|
|
189
|
+
}
|
|
89
190
|
if (!auth)
|
|
90
|
-
|
|
191
|
+
throw new CommandFailure("refused", "AUTH_REQUIRED", "the selected root has no native static space authority; no other root was tried", { target: { space: target.space } });
|
|
91
192
|
return { target, auth };
|
|
92
193
|
}
|
|
93
|
-
/** Register and serve until SIGINT/SIGTERM, renewing the serve credential at 75% of its life.
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
const
|
|
194
|
+
/** Register and serve until SIGINT/SIGTERM, renewing the serve credential at 75% of its life.
|
|
195
|
+
* The embedding callback observes initialization, not a current endpoint response or cleanup. */
|
|
196
|
+
export async function serveLinearAccount(account, endpoint, v, lifecycle) {
|
|
197
|
+
const { target, auth } = await staticAuthority(v, lifecycle?.root);
|
|
198
|
+
const upstream = new LinearUpstream(accountForRead(account));
|
|
97
199
|
// Read the inventory first, so a broken account never becomes a registered endpoint.
|
|
98
200
|
const inv = await upstream.inventory().catch(async (e) => {
|
|
99
201
|
await upstream.close();
|
|
202
|
+
if (lifecycle)
|
|
203
|
+
throw new CommandFailure("refused", "DEPENDENCY_UNAVAILABLE", "the selected native Linear account did not complete inventory discovery; no service registration was requested");
|
|
100
204
|
fail(`the Linear account "${account}" did not answer discovery: ${e.message}`);
|
|
101
205
|
});
|
|
102
206
|
const reg = await registerLinearEndpoint({ auth, servers: target.server, space: target.space, tls: target.tlsRequired, endpoint }).catch(async (e) => {
|
|
103
207
|
await upstream.close();
|
|
208
|
+
if (lifecycle)
|
|
209
|
+
throw new CommandFailure("unknown", "OPERATION_UNKNOWN", "the native Linear registration did not return a confirmed result; no new registration was retried");
|
|
104
210
|
fail(`registering ${endpoint} failed: ${e.message}`);
|
|
105
211
|
});
|
|
106
212
|
// The record is READY from registration on, so a start that fails after it must take the record
|
|
@@ -112,16 +218,19 @@ async function serve(account, endpoint, v) {
|
|
|
112
218
|
new Promise((r) => setTimeout(() => r("its deregistration did not complete within 10 seconds and may still be pending; the record may still advertise this instance"), 10_000).unref()),
|
|
113
219
|
]);
|
|
114
220
|
await upstream.close();
|
|
221
|
+
if (lifecycle)
|
|
222
|
+
throw new CommandFailure("unknown", "OPERATION_UNKNOWN", "the native Linear endpoint did not initialize; its original deregistration attempt was bounded and no registration was retried");
|
|
115
223
|
fail(`${endpoint} did not start serving: ${e.message}; ${removal}`);
|
|
116
224
|
});
|
|
117
|
-
|
|
225
|
+
if (!lifecycle)
|
|
226
|
+
console.log(`serving ${handle.endpoint} (instance ${handle.instanceId}, epoch ${handle.epoch}) for Linear account ${account} (${inv.mode}, ${inv.tools.length} tools, inventory ${inv.digest})`);
|
|
118
227
|
let timer;
|
|
119
228
|
const schedule = (ms) => {
|
|
120
229
|
if (ms === undefined)
|
|
121
230
|
return;
|
|
122
231
|
timer = setTimeout(() => {
|
|
123
232
|
reg.renew().then((creds) => schedule(renewalDelayMs(creds)), (e) => {
|
|
124
|
-
console.error(`serve credential renewal failed (${e.message}); retrying in 30s`);
|
|
233
|
+
console.error(lifecycle ? "native Linear serve credential renewal failed; retaining its existing renewal policy" : `serve credential renewal failed (${e.message}); retrying in 30s`);
|
|
125
234
|
schedule(30_000);
|
|
126
235
|
});
|
|
127
236
|
}, ms);
|
|
@@ -135,38 +244,74 @@ async function serve(account, endpoint, v) {
|
|
|
135
244
|
if (timer)
|
|
136
245
|
clearTimeout(timer);
|
|
137
246
|
await handle.stop(10_000);
|
|
138
|
-
await Promise.race([reg.deregister(), new Promise((r) => setTimeout(r, 10_000).unref())]).catch((e) => console.error(`deregistration failed (${e.message}); the record stays until the instance is registered again`));
|
|
247
|
+
await Promise.race([reg.deregister(), new Promise((r) => setTimeout(r, 10_000).unref())]).catch((e) => console.error(lifecycle ? "native Linear deregistration did not confirm completion; inspect the original registration" : `deregistration failed (${e.message}); the record stays until the instance is registered again`));
|
|
139
248
|
process.exit(code);
|
|
140
249
|
};
|
|
141
250
|
process.once("SIGINT", () => void stop(0));
|
|
142
251
|
process.once("SIGTERM", () => void stop(0));
|
|
252
|
+
if (lifecycle) {
|
|
253
|
+
try {
|
|
254
|
+
await lifecycle.onInitialized();
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
await stop(1);
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
143
261
|
const err = await handle.closed;
|
|
144
262
|
if (!stopping) {
|
|
145
|
-
console.error(`the serve connection closed${err ? `: ${err.message}` : ""}`);
|
|
263
|
+
console.error(lifecycle ? "the native Linear serve connection closed; no replacement was started" : `the serve connection closed${err ? `: ${err.message}` : ""}`);
|
|
146
264
|
await stop(1);
|
|
147
265
|
}
|
|
148
266
|
}
|
|
149
|
-
async function caller(name, endpoint
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
const {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
267
|
+
async function caller(args, name, endpoint) {
|
|
268
|
+
const v = args.values;
|
|
269
|
+
const { target: mesh, auth } = await staticAuthority(v);
|
|
270
|
+
const out = resolve(String(v.out)), target = { space: mesh.space, name, endpoint, path: out };
|
|
271
|
+
assertExternalCredentialExport(out, [mesh.root]);
|
|
272
|
+
protectedLocalDirectory(dirname(out));
|
|
273
|
+
const held = acquireLock(`${out}.mint.lock`, { label: "Linear caller output", waitMs: 0, onTimeout: () => new CommandFailure("refused", "CONFLICT", "another writer holds the caller output", { target }) });
|
|
274
|
+
let submitted = false;
|
|
275
|
+
const changed = [];
|
|
276
|
+
try {
|
|
277
|
+
if (lstatSync(out, { throwIfNoEntry: false }))
|
|
278
|
+
throw new CommandFailure("refused", "CONFLICT", "the selected caller output already exists; it was not replaced and no new caller was issued", { target });
|
|
279
|
+
const channels = v.channels === undefined ? [] : String(v.channels).split(",").map((channel) => channel.trim()).filter(Boolean);
|
|
280
|
+
submitted = true;
|
|
281
|
+
const minted = await provisionLinearCaller(auth, { servers: mesh.server, space: mesh.space, tls: mesh.tlsRequired }, endpoint, { channels, ...(v["expires-in"] !== undefined ? { expiresInSeconds: Number(v["expires-in"]) } : {}) });
|
|
282
|
+
changed.push({ kind: "native-caller-footprint", identity: minted.identity, lifecycleUid: minted.lifecycleUid, acknowledged: true });
|
|
283
|
+
protectedLocalDirectory(dirname(out));
|
|
284
|
+
writeSecretFileCreateOnly(out, minted.creds);
|
|
285
|
+
changed.push({ kind: "private-caller-file", path: out, acknowledged: true });
|
|
286
|
+
protectedCredentialReference(out);
|
|
287
|
+
const current = readLocalRecordSource(out, 1024 * 1024, true);
|
|
288
|
+
if (!current?.equals(Buffer.from(minted.creds, "utf8")))
|
|
289
|
+
throw new CommandFailure("unknown", "OPERATION_UNKNOWN", "the native caller file publication was acknowledged but its current private bytes could not be confirmed; issuance was not retried", { target, changed });
|
|
290
|
+
const claims = credsClaims(minted.creds);
|
|
291
|
+
const result = { kind: "linear-caller-written", name, space: mesh.space, endpoint, identity: minted.identity, lifecycleUid: minted.lifecycleUid, output: out, channels, expiresAt: claims.exp ?? null, nativeProvisioning: "acknowledged", secretOnStdout: false, seatStarted: false, managedSpawnSupport: false, changed };
|
|
292
|
+
writeResult(presentationOf(v), { command: "linear", target, result }, (row) => ({ sections: [{ title: "Private Linear caller written", blocks: [{ kind: "fields", rows: [["Label", row.name], ["Space", row.space], ["Endpoint", row.endpoint], ["Identity", row.identity], ["Lifecycle", row.lifecycleUid], ["Private file", row.output], ["Expiry", row.expiresAt === null ? "not reported" : `${row.expiresAt} native Unix seconds`], ["Provisioning", row.nativeProvisioning], ["Seat", "not started"]] }, { kind: "lines", lines: ["The existing native issuer created its standalone agent footprint and exact Linear command grants. It adds no spawn, run or admin capability. Provisioning is not presence or completed work. Managed static spawns still refuse endpoint capabilities; this is not a generic caller/launch adapter. No credential bytes or environment-export onboarding were printed."] }] }] }));
|
|
293
|
+
}
|
|
294
|
+
catch (error) {
|
|
295
|
+
if (!submitted && isCommandFailure(error))
|
|
296
|
+
throw error;
|
|
297
|
+
if (!submitted)
|
|
298
|
+
throw new CommandFailure("refused", "DEPENDENCY_UNAVAILABLE", "the selected private caller destination could not be prepared; no caller issuance was submitted", { target });
|
|
299
|
+
if (isCommandFailure(error) && error.outcome === "unknown")
|
|
300
|
+
throw error;
|
|
301
|
+
throw new CommandFailure("unknown", "OPERATION_UNKNOWN", "native caller provisioning or private publication did not confirm its final outcome; a caller footprint or output may exist. Issuance was not retried", { target, changed, remedy: "inspect this private output and any reported original identity/lifecycle before issuing another caller" });
|
|
302
|
+
}
|
|
303
|
+
finally {
|
|
304
|
+
held.release();
|
|
305
|
+
}
|
|
167
306
|
}
|
|
168
307
|
export async function linear(args) {
|
|
308
|
+
validateLinearArguments(args);
|
|
169
309
|
const [sub, ...rest] = args.positionals;
|
|
310
|
+
if (sub === undefined || sub === "account" && rest.length === 0) {
|
|
311
|
+
const forms = sub === "account" ? linearForms.filter((form) => form.path[0] === "account") : linearForms;
|
|
312
|
+
writeResult(presentationOf(args.values), { command: "linear", target: sub === "account" ? { group: "account" } : null, result: { kind: "linear-commands", operations: forms.map((form) => ({ path: [...form.path], summary: form.summary })), upstreamChecked: false } }, (row) => ({ sections: [{ title: "Linear", blocks: [{ kind: "commands", items: row.operations.map((form) => ({ command: `cotal linear ${form.path.join(" ")}`, description: form.summary })) }, { kind: "lines", lines: ["No account was opened, token read or upstream request sent."] }] }] }));
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
170
315
|
const v = args.values;
|
|
171
316
|
switch (sub) {
|
|
172
317
|
case "account": {
|
|
@@ -175,15 +320,20 @@ export async function linear(args) {
|
|
|
175
320
|
fail(USAGE);
|
|
176
321
|
assertAccountName(name);
|
|
177
322
|
if (action === "show") {
|
|
178
|
-
|
|
323
|
+
emitAccount(args, accountForRead(name), false);
|
|
179
324
|
return;
|
|
180
325
|
}
|
|
181
326
|
if (action === "login") {
|
|
182
327
|
const mode = v.mode;
|
|
183
328
|
if (!isLinearMode(mode))
|
|
184
329
|
fail("--mode must be write or readonly");
|
|
185
|
-
|
|
186
|
-
|
|
330
|
+
try {
|
|
331
|
+
await loginAccount(name, mode);
|
|
332
|
+
}
|
|
333
|
+
catch {
|
|
334
|
+
throw new CommandFailure("unknown", "OPERATION_UNKNOWN", "native Linear OAuth did not confirm its final local save; authorization or private state may have changed. Login was not retried", { target: { account: name } });
|
|
335
|
+
}
|
|
336
|
+
emitAccount(args, { name, mode, auth: "oauth" }, true);
|
|
187
337
|
return;
|
|
188
338
|
}
|
|
189
339
|
if (action !== "add")
|
|
@@ -193,35 +343,31 @@ export async function linear(args) {
|
|
|
193
343
|
fail("--mode must be write or readonly");
|
|
194
344
|
if (Boolean(v["token-stdin"]) === (v["token-file"] !== undefined))
|
|
195
345
|
fail("give exactly one of --token-stdin or --token-file");
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
saveAccount(
|
|
200
|
-
|
|
346
|
+
const account = { name, mode, auth: "token", tokenFile: v["token-stdin"] ? storedTokenPath(name) : resolve(String(v["token-file"])) };
|
|
347
|
+
const token = v["token-stdin"] ? await readStdin() : undefined;
|
|
348
|
+
try {
|
|
349
|
+
saveAccount(account, token);
|
|
350
|
+
}
|
|
351
|
+
catch {
|
|
352
|
+
throw new CommandFailure("unknown", "OPERATION_UNKNOWN", "the native Linear account save did not confirm completion; a private token or record may have changed. The save was not retried", { target: { account: name } });
|
|
353
|
+
}
|
|
354
|
+
emitAccount(args, account, true);
|
|
201
355
|
return;
|
|
202
356
|
}
|
|
203
357
|
case "inventory": {
|
|
204
358
|
const [account] = rest;
|
|
205
359
|
if (!account)
|
|
206
360
|
fail(USAGE);
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
361
|
+
let inventory;
|
|
362
|
+
try {
|
|
363
|
+
inventory = await withUpstream(account, (u, signal) => u.inventory({ signal }));
|
|
364
|
+
}
|
|
365
|
+
catch (error) {
|
|
366
|
+
if (isCommandFailure(error))
|
|
367
|
+
throw error;
|
|
368
|
+
throw new CommandFailure("refused", "DEPENDENCY_UNAVAILABLE", "the complete bounded Linear inventory was not obtained; no partial inventory was presented as complete", { target: { account } });
|
|
211
369
|
}
|
|
212
|
-
|
|
213
|
-
console.log(`server ${inv.server.name ?? "?"} ${inv.server.version ?? ""}`.trimEnd());
|
|
214
|
-
console.log(`digest ${inv.digest}`);
|
|
215
|
-
console.log(`tools ${inv.tools.length}`);
|
|
216
|
-
if (inv.resources)
|
|
217
|
-
console.log(`resources ${inv.resources.length} (+${inv.resourceTemplates?.length ?? 0} templates)`);
|
|
218
|
-
if (inv.prompts)
|
|
219
|
-
console.log(`prompts ${inv.prompts.length}`);
|
|
220
|
-
console.log(`discovery ${inv.pages} pages, ${inv.bytes} bytes`);
|
|
221
|
-
if (inv.unsupported.length)
|
|
222
|
-
console.log(`unsupported ${inv.unsupported.join(", ")}`);
|
|
223
|
-
for (const t of inv.tools)
|
|
224
|
-
console.log(` ${String(t.name)}`);
|
|
370
|
+
emitInventory(args, account, inventory);
|
|
225
371
|
return;
|
|
226
372
|
}
|
|
227
373
|
case "call": {
|
|
@@ -229,14 +375,14 @@ export async function linear(args) {
|
|
|
229
375
|
if (!account || !tool)
|
|
230
376
|
fail(USAGE);
|
|
231
377
|
const req = { name: tool, arguments: jsonArgs(v.args), inventoryDigest: v.inventory, timeoutMs: timeout(v.timeout) };
|
|
232
|
-
|
|
378
|
+
await forward(args, account, "call", (u, signal) => u.callTool({ ...req, signal }));
|
|
233
379
|
return;
|
|
234
380
|
}
|
|
235
381
|
case "resource": {
|
|
236
382
|
const [account, uri] = rest;
|
|
237
383
|
if (!account || !uri)
|
|
238
384
|
fail(USAGE);
|
|
239
|
-
|
|
385
|
+
await forward(args, account, "resource", (u, signal) => u.readResource({ uri, inventoryDigest: v.inventory, timeoutMs: timeout(v.timeout), signal }));
|
|
240
386
|
return;
|
|
241
387
|
}
|
|
242
388
|
case "prompt": {
|
|
@@ -246,21 +392,21 @@ export async function linear(args) {
|
|
|
246
392
|
const a = jsonArgs(v.args);
|
|
247
393
|
if (a && Object.values(a).some((x) => typeof x !== "string"))
|
|
248
394
|
fail("prompt --args values must be strings");
|
|
249
|
-
|
|
395
|
+
await forward(args, account, "prompt", (u, signal) => u.getPrompt({ name, arguments: a, inventoryDigest: v.inventory, timeoutMs: timeout(v.timeout), signal }));
|
|
250
396
|
return;
|
|
251
397
|
}
|
|
252
398
|
case "serve": {
|
|
253
399
|
const [account] = rest;
|
|
254
400
|
if (!account || typeof v.endpoint !== "string")
|
|
255
401
|
fail(USAGE);
|
|
256
|
-
await
|
|
402
|
+
await serveLinearAccount(account, v.endpoint, v);
|
|
257
403
|
return;
|
|
258
404
|
}
|
|
259
405
|
case "caller": {
|
|
260
406
|
const [name] = rest;
|
|
261
407
|
if (!name || typeof v.endpoint !== "string")
|
|
262
408
|
fail(USAGE);
|
|
263
|
-
await caller(name, v.endpoint
|
|
409
|
+
await caller(args, name, v.endpoint);
|
|
264
410
|
return;
|
|
265
411
|
}
|
|
266
412
|
default:
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import "./service-adapter.js";
|
|
1
2
|
export { LinearUpstream, DEFAULT_LIMITS, type LinearInventory, type LinearLimits, type UpstreamReply } from "./upstream.js";
|
|
2
3
|
export { LINEAR_MCP_ORIGIN, LINEAR_MCP_PATHS, linearMcpUrl, type LinearMode } from "./origin.js";
|
|
3
4
|
export { loadAccount, type LinearAccount } from "./account.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AA6C9B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5H,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChO,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import "./service-adapter.js"; // self-registers the native Linear service preset and child
|
|
1
2
|
import { registry } from "@cotal-ai/core";
|
|
2
|
-
import { serverFlag, spaceFlag } from "@cotal-ai/workspace";
|
|
3
|
-
import { linear, USAGE } from "./cli.js";
|
|
3
|
+
import { jsonFlag, plainFlag, serverFlag, spaceFlag } from "@cotal-ai/workspace";
|
|
4
|
+
import { linear, linearForms, validateLinearArguments, USAGE } from "./cli.js";
|
|
4
5
|
/**
|
|
5
6
|
* `@cotal-ai/linear`: the official Linear MCP server as a registered Cotal endpoint, plus the
|
|
6
7
|
* operator commands that set it up, as an operator-installed CLI extension. `cotal ext add
|
|
@@ -15,11 +16,18 @@ const linearCommand = {
|
|
|
15
16
|
usage: USAGE,
|
|
16
17
|
positionals: "<subcommand> …",
|
|
17
18
|
prepareMeshTarget: false,
|
|
19
|
+
reads: true,
|
|
20
|
+
outputs: ["json", "plain"],
|
|
21
|
+
subcommands: [
|
|
22
|
+
{ name: "account", summary: "record an explicit account or read its metadata", reads: true, prepareMeshTarget: false, outputs: ["json", "plain"], flagNames: ["json", "plain"], subcommands: linearForms.filter((form) => form.path[0] === "account").map((form) => ({ name: form.path[1], summary: form.summary, flagNames: [...form.flags], outputs: [...form.outputs], ...(form.reads ? { reads: true } : {}), prepareMeshTarget: false })) },
|
|
23
|
+
...linearForms.filter((form) => form.path.length === 1).map((form) => ({ name: form.path[0], summary: form.summary, flagNames: [...form.flags], outputs: [...form.outputs], ...(form.reads ? { reads: true } : {}), prepareMeshTarget: false })),
|
|
24
|
+
],
|
|
25
|
+
validate: validateLinearArguments,
|
|
18
26
|
flags: [
|
|
19
27
|
{ name: "mode", type: "string", value: "<write|readonly>", description: "account add: which Linear MCP server the account uses" },
|
|
20
28
|
{ name: "token-stdin", type: "boolean", description: "account add: read the API key or OAuth token from stdin and store it 0600" },
|
|
21
29
|
{ name: "token-file", type: "string", value: "<path>", description: "account add: use an existing 0600 file holding the token" },
|
|
22
|
-
|
|
30
|
+
jsonFlag, plainFlag,
|
|
23
31
|
{ name: "args", type: "string", value: "<json>", description: "call/prompt: arguments as a JSON object" },
|
|
24
32
|
{ name: "inventory", type: "string", value: "<digest>", description: "refuse before dispatch unless the live inventory has this digest" },
|
|
25
33
|
{ name: "timeout", type: "string", value: "<ms>", description: "request deadline in milliseconds (default 30000, max 120000)" },
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAgB,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC,CAAC,4DAA4D;AAC3F,OAAO,EAAE,QAAQ,EAAgB,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,aAAa,GAAY;IAC7B,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,cAAc;IACrB,OAAO,EAAE,0FAA0F;IACnG,KAAK,EAAE,KAAK;IACZ,WAAW,EAAE,gBAAgB;IAC7B,iBAAiB,EAAE,KAAK;IACxB,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE;QACX,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,iDAAiD,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,KAAc,EAAE,CAAC,CAAC,EAAE;QACnc,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,KAAc,EAAE,CAAC,CAAC;KACnQ;IACD,QAAQ,EAAE,uBAAuB;IACjC,KAAK,EAAE;QACL,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,uDAAuD,EAAE;QACjI,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,2EAA2E,EAAE;QAClI,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,0DAA0D,EAAE;QAChI,QAAQ,EAAE,SAAS;QACnB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;QACzG,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,kEAAkE,EAAE;QACzI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,8DAA8D,EAAE;QAC/H,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,qEAAqE,EAAE;QACzI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,gEAAgE,EAAE;QAC/H,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,oDAAoD,EAAE;QACvH,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,wCAAwC,EAAE;QAC3G,SAAS;QACT,UAAU;KACX;IACD,GAAG,EAAE,MAAM;CACZ,CAAC;AACF,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,cAAc,EAA+D,MAAM,eAAe,CAAC;AAC5H,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,YAAY,EAAmB,MAAM,aAAa,CAAC;AACjG,OAAO,EAAE,WAAW,EAAsB,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChO,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,iBAAiB,GAIlB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ParsedArgs } from "@cotal-ai/core";
|
|
2
|
+
import type { LinearInventory, UpstreamReply } from "./upstream.js";
|
|
3
|
+
/** The native MCP outcome remains separate from a tool's reported isError content. */
|
|
4
|
+
export declare function emitUpstream(args: ParsedArgs, account: string, operation: string, reply: UpstreamReply): void;
|
|
5
|
+
export declare function emitInventory(args: ParsedArgs, account: string, inventory: LinearInventory): void;
|
|
6
|
+
//# sourceMappingURL=presentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../src/presentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEpE,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI,CAe7G;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,IAAI,CAOjG"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { CommandFailure, presentationOf, writeResult } from "@cotal-ai/workspace";
|
|
2
|
+
/** The native MCP outcome remains separate from a tool's reported isError content. */
|
|
3
|
+
export function emitUpstream(args, account, operation, reply) {
|
|
4
|
+
const target = { account, operation };
|
|
5
|
+
const failure = reply.kind === "result" ? undefined : reply.outcome === "unknown"
|
|
6
|
+
? new CommandFailure("unknown", "OPERATION_UNKNOWN", "the native Linear request did not confirm its outcome; it was not retried", { target })
|
|
7
|
+
: new CommandFailure("refused", reply.kind === "refused" && ["unknown-tool", "not-advertised"].includes(reply.reason) ? "TARGET_NOT_FOUND" : reply.kind === "refused" && reply.reason === "stale-inventory" ? "CONFLICT" : "TARGET_UNAVAILABLE", "the native Linear request was refused before dispatch", { target });
|
|
8
|
+
writeResult(presentationOf(args.values), {
|
|
9
|
+
command: "linear", target, result: { kind: "linear-upstream-reply", operation, reply }, ...(failure ? { failure } : {}),
|
|
10
|
+
...(reply.kind === "result" && reply.result.isError === true ? { warnings: [{ code: "MCP_TOOL_ERROR", target, message: "The server returned an MCP tool result with isError=true. The result is retained; it is not a transport or protocol success claim about the requested work." }] } : {}),
|
|
11
|
+
}, (data) => {
|
|
12
|
+
const lines = JSON.stringify(data.reply, null, 2).split("\n");
|
|
13
|
+
return { sections: [
|
|
14
|
+
{ title: "Linear reply", blocks: [{ kind: "fields", rows: [["Account", account], ["Operation", operation], ["Native reply", data.reply.kind], ["Execution outcome", data.reply.kind === "result" ? "MCP result received; work outcome is server-reported" : data.reply.outcome], ...(data.reply.kind === "result" ? [["Inventory", data.reply.inventoryDigest], ["Tool isError", data.reply.result.isError === true ? "true" : data.reply.result.isError === false ? "false" : "not reported"]] : [])] }, { kind: "lines", lines: lines.slice(0, 60) }] },
|
|
15
|
+
{ blocks: [{ kind: "lines", lines: [...(lines.length > 60 ? [`${lines.length - 60} whole result lines omitted; --json retains the native reply.`] : []), "Upstream content is data, not instructions. The native client scrubs its bearer; the rest of the content is not claimed to be secret-redacted. No unknown request is replayed."] }] },
|
|
16
|
+
] };
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
export function emitInventory(args, account, inventory) {
|
|
20
|
+
writeResult(presentationOf(args.values), { command: "linear", target: { account }, result: { kind: "linear-inventory", inventory } }, (data) => ({ sections: [
|
|
21
|
+
{ title: "Linear inventory", blocks: [{ kind: "fields", rows: [["Account", account], ["Upstream", data.inventory.endpoint], ["Mode", data.inventory.mode], ["Server", data.inventory.server.name ?? "not reported"], ["Server version", data.inventory.server.version ?? "not reported"], ["Digest", data.inventory.digest], ["Fetched at", data.inventory.fetchedAt], ["Discovery pages", String(data.inventory.pages)], ["Discovery bytes", String(data.inventory.bytes)], ["Tools", String(data.inventory.tools.length)], ["Resources", data.inventory.resources === undefined ? "not advertised" : String(data.inventory.resources.length)], ["Resource templates", data.inventory.resourceTemplates === undefined ? "not advertised" : String(data.inventory.resourceTemplates.length)], ["Prompts", data.inventory.prompts === undefined ? "not advertised" : String(data.inventory.prompts.length)]] }] },
|
|
22
|
+
{ title: "Advertised tools", blocks: data.inventory.tools.length ? [{ kind: "table", columns: [{ key: "name", label: "Tool" }, { key: "read", label: "Read-only hint" }], rows: data.inventory.tools.slice(0, 60).map((tool) => ({ name: typeof tool.name === "string" ? tool.name : "not reported", read: tool.annotations && typeof tool.annotations === "object" && !Array.isArray(tool.annotations) && typeof tool.annotations.readOnlyHint === "boolean" ? `reported ${tool.annotations.readOnlyHint}` : "not reported" })) }] : [{ kind: "lines", lines: ["No tools were advertised in this completed native inventory."] }] },
|
|
23
|
+
...(data.inventory.unsupported.length ? [{ title: "Not represented by this client", blocks: [{ kind: "lines", lines: data.inventory.unsupported }] }] : []),
|
|
24
|
+
{ blocks: [{ kind: "lines", lines: [...(data.inventory.tools.length > 60 ? [`${data.inventory.tools.length - 60} tool rows omitted; --json retains the full native inventory.`] : []), "Names, schemas and hints are upstream declarations, not authority or work progress. Pin the digest with --inventory before dispatch if that snapshot matters."] }] },
|
|
25
|
+
] }));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=presentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation.js","sourceRoot":"","sources":["../src/presentation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type Command } from "@cotal-ai/core";
|
|
2
|
+
import { type LocalProcess, type ServicePreset } from "@cotal-ai/workspace";
|
|
3
|
+
export declare const linearServicePreset: ServicePreset;
|
|
4
|
+
export declare const linearService: LocalProcess;
|
|
5
|
+
export declare const nativeLinearServiceCommand: Command;
|
|
6
|
+
//# sourceMappingURL=service-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-adapter.d.ts","sourceRoot":"","sources":["../src/service-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,OAAO,EAAmB,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAG2C,KAAK,YAAY,EAAE,KAAK,aAAa,EACtF,MAAM,qBAAqB,CAAC;AAmB7B,eAAO,MAAM,mBAAmB,EAAE,aAGjC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,YAsB3B,CAAC;AASF,eAAO,MAAM,0BAA0B,EAAE,OAkBxC,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { isAbsolute } from "node:path";
|
|
2
|
+
import { registry } from "@cotal-ai/core";
|
|
3
|
+
import { CommandFailure, colorEnabled, hasUserAuthState, observeServiceStartup, publishServiceStartup, resolveNativeServiceTarget, serviceOperationId, serviceStartupPath, validateServiceStartupPath, } from "@cotal-ai/workspace";
|
|
4
|
+
import { assertAccountName } from "./account.js";
|
|
5
|
+
import { serveLinearAccount } from "./cli.js";
|
|
6
|
+
import { assertLinearEndpointName } from "./serve.js";
|
|
7
|
+
function nativeTarget(root, space, server) {
|
|
8
|
+
const target = resolveNativeServiceTarget(root, space, server);
|
|
9
|
+
if (target.mode !== "auth" || hasUserAuthState(target.root, target.space, { readOnly: true }))
|
|
10
|
+
throw new CommandFailure("refused", "UNSUPPORTED", "the native Linear service requires its selected static-auth root; no user-auth issuer or open-space authority was substituted");
|
|
11
|
+
return target;
|
|
12
|
+
}
|
|
13
|
+
function inputs(account, endpoint) {
|
|
14
|
+
try {
|
|
15
|
+
if (typeof account !== "string" || typeof endpoint !== "string")
|
|
16
|
+
throw new Error();
|
|
17
|
+
assertAccountName(account);
|
|
18
|
+
assertLinearEndpointName(endpoint);
|
|
19
|
+
return { account, endpoint };
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
throw new CommandFailure("refused", "SCHEMA_INVALID", "the Linear service needs a native account name and full reverse-DNS endpoint class");
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export const linearServicePreset = {
|
|
26
|
+
kind: "service-preset", name: "linear", adapter: "linear-service", timeoutMs: 120000,
|
|
27
|
+
summary: "native registered Linear MCP service using an existing account and static-auth root",
|
|
28
|
+
};
|
|
29
|
+
export const linearService = {
|
|
30
|
+
kind: "local-process", name: "linear-service", label: "Linear service", controllerOnly: true,
|
|
31
|
+
pidFile: "linear.{space}.pid",
|
|
32
|
+
service: {
|
|
33
|
+
abiVersion: 1, requiresCli: true, readiness: "process",
|
|
34
|
+
capabilities: { multiInstance: true, foreground: true, logs: true }, paths: { root: "directory" },
|
|
35
|
+
optionsSchema: { type: "object", additionalProperties: false, required: ["root", "account", "endpoint"], properties: {
|
|
36
|
+
root: { type: "string", minLength: 1, maxLength: 4096, description: "registered static-auth root; its native authority stays in the service process" },
|
|
37
|
+
account: { type: "string", minLength: 1, maxLength: 32, description: "existing native Linear account name; no OAuth flow runs at startup" },
|
|
38
|
+
endpoint: { type: "string", minLength: 1, maxLength: 253, description: "full reverse-DNS endpoint class in a namespace you own" },
|
|
39
|
+
server: { type: "string", minLength: 1, maxLength: 4096, description: "optional repeat of the registered broker; its TLS requirement is retained" },
|
|
40
|
+
} },
|
|
41
|
+
},
|
|
42
|
+
buildServiceLaunch(context) {
|
|
43
|
+
if (!context.cliInvocation?.length)
|
|
44
|
+
throw new CommandFailure("refused", "UNSUPPORTED", "the Linear service requires the verified cotal entry; no PATH binary was selected");
|
|
45
|
+
if (context.credentialRef)
|
|
46
|
+
throw new CommandFailure("refused", "UNSUPPORTED", "Linear service authority comes from its selected native static root and recorded upstream account, not a generic caller reference");
|
|
47
|
+
const target = nativeTarget(String(context.options.root), context.space, context.options.server);
|
|
48
|
+
const selected = inputs(context.options.account, context.options.endpoint);
|
|
49
|
+
const [executable, ...self] = context.cliInvocation;
|
|
50
|
+
return { executable: executable, cwd: target.root, args: [...self, ...(colorEnabled() ? [] : ["--no-color"]), "__service-linear", "--root", target.root, "--space", context.space, "--server", target.server, "--account", selected.account, "--endpoint", selected.endpoint, "--service-instance", context.instanceId, "--launch-request", context.launchRequestId, "--ready-file", serviceStartupPath(context)] };
|
|
51
|
+
},
|
|
52
|
+
async checkServiceReadiness(context) { return observeServiceStartup(context, "linear-serve-initialized"); },
|
|
53
|
+
};
|
|
54
|
+
function validateChild(args) {
|
|
55
|
+
if (args.positionals.length || ["root", "space", "server", "account", "endpoint", "service-instance", "launch-request", "ready-file"].some((key) => typeof args.values[key] !== "string" || !args.values[key]))
|
|
56
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "the native Linear child requires one complete explicit controller launch");
|
|
57
|
+
for (const key of ["root", "ready-file"])
|
|
58
|
+
if (!isAbsolute(String(args.values[key])) || /[\u0000-\u001f\u007f]/u.test(String(args.values[key])))
|
|
59
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "native Linear paths must be absolute and contain no terminal controls");
|
|
60
|
+
inputs(args.values.account, args.values.endpoint);
|
|
61
|
+
serviceOperationId(args.values["service-instance"]);
|
|
62
|
+
serviceOperationId(args.values["launch-request"]);
|
|
63
|
+
}
|
|
64
|
+
export const nativeLinearServiceCommand = {
|
|
65
|
+
kind: "command", name: "__service-linear", hidden: true, prepareMeshTarget: false,
|
|
66
|
+
summary: "native Linear child with a private process/launch initialization receipt",
|
|
67
|
+
flags: ["root", "space", "server", "account", "endpoint", "service-instance", "launch-request", "ready-file"].map((name) => ({ name, type: "string" })),
|
|
68
|
+
validate: validateChild,
|
|
69
|
+
async run(args) {
|
|
70
|
+
validateChild(args);
|
|
71
|
+
const target = nativeTarget(String(args.values.root), String(args.values.space), String(args.values.server));
|
|
72
|
+
const selected = inputs(args.values.account, args.values.endpoint);
|
|
73
|
+
const instanceId = serviceOperationId(args.values["service-instance"]), launchRequestId = serviceOperationId(args.values["launch-request"]), path = String(args.values["ready-file"]);
|
|
74
|
+
validateServiceStartupPath(path, instanceId, launchRequestId);
|
|
75
|
+
try {
|
|
76
|
+
await serveLinearAccount(selected.account, selected.endpoint, { space: target.space, server: target.server }, {
|
|
77
|
+
root: target.root,
|
|
78
|
+
onInitialized: () => publishServiceStartup(path, { phase: "linear-serve-initialized", space: target.space, instanceId, launchRequestId }),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
throw new CommandFailure("unknown", "OPERATION_UNKNOWN", "the original native Linear initialization or private phase receipt was not confirmed; no account, registration or request was retried");
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
registry.register(linearService, linearServicePreset, nativeLinearServiceCommand);
|
|
87
|
+
//# sourceMappingURL=service-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-adapter.js","sourceRoot":"","sources":["../src/service-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAiC,MAAM,gBAAgB,CAAC;AACzE,OAAO,EACL,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EACrE,qBAAqB,EAAE,0BAA0B,EAAE,kBAAkB,EACrE,kBAAkB,EAAE,0BAA0B,GAC/C,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEtD,SAAS,YAAY,CAAC,IAAY,EAAE,KAAa,EAAE,MAAe;IAChE,MAAM,MAAM,GAAG,0BAA0B,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/D,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAAE,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,aAAa,EAAE,+HAA+H,CAAC,CAAC;IACnR,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,MAAM,CAAC,OAAgB,EAAE,QAAiB;IACjD,IAAI,CAAC;QACH,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,EAAE,CAAC;QACnF,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAC/D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,gBAAgB,EAAE,oFAAoF,CAAC,CAAC;IAAC,CAAC;AAC1J,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAkB;IAChD,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM;IACpF,OAAO,EAAE,qFAAqF;CAC/F,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAiB;IACzC,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,IAAI;IAC5F,OAAO,EAAE,oBAAoB;IAC7B,OAAO,EAAE;QACP,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;QACtD,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;QACjG,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE;gBACnH,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,gFAAgF,EAAE;gBACtJ,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,oEAAoE,EAAE;gBAC3I,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,wDAAwD,EAAE;gBACjI,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,2EAA2E,EAAE;aACpJ,EAAE;KACJ;IACD,kBAAkB,CAAC,OAAO;QACxB,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM;YAAE,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,aAAa,EAAE,mFAAmF,CAAC,CAAC;QAC5K,IAAI,OAAO,CAAC,aAAa;YAAE,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,aAAa,EAAE,mIAAmI,CAAC,CAAC;QACnN,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,MAA4B,CAAC,CAAC;QACvH,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3E,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;QACpD,OAAO,EAAE,UAAU,EAAE,UAAW,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,EAAE,OAAO,CAAC,UAAU,EAAE,kBAAkB,EAAE,OAAO,CAAC,eAAe,EAAE,cAAc,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;IACvZ,CAAC;IACD,KAAK,CAAC,qBAAqB,CAAC,OAAO,IAAI,OAAO,qBAAqB,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC;CAC5G,CAAC;AAEF,SAAS,aAAa,CAAC,IAAgB;IACrC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,eAAe,EAAE,0EAA0E,CAAC,CAAC;IACjV,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;QAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,eAAe,EAAE,uEAAuE,CAAC,CAAC;IAC9Q,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClD,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACzG,CAAC;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAY;IACjD,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK;IACjF,OAAO,EAAE,0EAA0E;IACnF,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAC,CAAC;IAChK,QAAQ,EAAE,aAAa;IACvB,KAAK,CAAC,GAAG,CAAC,IAAI;QACZ,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7G,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,eAAe,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QACtL,0BAA0B,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;QAC9D,IAAI,CAAC;YACH,MAAM,kBAAkB,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE;gBAC5G,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,aAAa,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;aAC1I,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,mBAAmB,EAAE,uIAAuI,CAAC,CAAC;QAAC,CAAC;IAChN,CAAC;CACF,CAAC;AAEF,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,mBAAmB,EAAE,0BAA0B,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cotal-ai/linear",
|
|
3
3
|
"description": "Cotal Linear integration: serves the official Linear MCP server as a registered Cotal endpoint and adds the `linear` operator command.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.91.0",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"@cotal-ai/workspace": "*"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@cotal-ai/core": "0.
|
|
31
|
-
"@cotal-ai/workspace": "0.
|
|
30
|
+
"@cotal-ai/core": "0.91.0",
|
|
31
|
+
"@cotal-ai/workspace": "0.91.0"
|
|
32
32
|
},
|
|
33
33
|
"files": [
|
|
34
34
|
"dist"
|