@cotal-ai/linear 0.90.1 → 0.92.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/account.d.ts +2 -0
- package/dist/account.d.ts.map +1 -1
- package/dist/account.js +5 -1
- package/dist/account.js.map +1 -1
- package/dist/cli.d.ts +77 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +241 -91
- 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 +94 -0
- package/dist/service-adapter.js.map +1 -0
- package/package.json +4 -4
package/dist/account.d.ts
CHANGED
|
@@ -19,6 +19,8 @@ export declare function storedTokenPath(name: string): string;
|
|
|
19
19
|
export declare function assertPrivateFile(path: string): void;
|
|
20
20
|
export declare function saveAccount(account: LinearAccount, token?: string): void;
|
|
21
21
|
export declare function loadAccount(name: string): LinearAccount;
|
|
22
|
+
/** Whether a {@link loadAccount} failure means no record exists under that name. */
|
|
23
|
+
export declare function accountMissing(error: unknown): boolean;
|
|
22
24
|
/** Read the bearer fresh each time, so a rotated token file is picked up without a restart. */
|
|
23
25
|
export declare function readAccountToken(account: Extract<LinearAccount, {
|
|
24
26
|
auth: "token";
|
package/dist/account.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC,CAAC,yDAAyD;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC9H;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAItD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGnD;AAOD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED;;wGAEwG;AACxG,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAIpD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAaxE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAavD;AAED,+FAA+F;AAC/F,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,MAAM,CAK3F"}
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC,CAAC,yDAAyD;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC9H;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAItD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGnD;AAOD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED;;wGAEwG;AACxG,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAIpD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAaxE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAavD;AAED,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEtD;AAED,+FAA+F;AAC/F,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,MAAM,CAK3F"}
|
package/dist/account.js
CHANGED
|
@@ -71,7 +71,7 @@ export function loadAccount(name) {
|
|
|
71
71
|
raw = JSON.parse(readFileSync(path, "utf8"));
|
|
72
72
|
}
|
|
73
73
|
catch (e) {
|
|
74
|
-
throw new Error(`no Linear account "${name}" (${path}): ${e.message}. Add one with \`cotal linear account add
|
|
74
|
+
throw new Error(`no Linear account "${name}" (${path}): ${e.message}. Add one with \`cotal linear account add\``, { cause: e });
|
|
75
75
|
}
|
|
76
76
|
const a = raw;
|
|
77
77
|
if (a.name !== name || !isLinearMode(a.mode))
|
|
@@ -82,6 +82,10 @@ export function loadAccount(name) {
|
|
|
82
82
|
return { name, mode: a.mode, auth: "oauth" };
|
|
83
83
|
throw new Error(`${path} is not a valid Linear account record`);
|
|
84
84
|
}
|
|
85
|
+
/** Whether a {@link loadAccount} failure means no record exists under that name. */
|
|
86
|
+
export function accountMissing(error) {
|
|
87
|
+
return error instanceof Error && error.cause?.code === "ENOENT";
|
|
88
|
+
}
|
|
85
89
|
/** Read the bearer fresh each time, so a rotated token file is picked up without a restart. */
|
|
86
90
|
export function readAccountToken(account) {
|
|
87
91
|
assertPrivateFile(account.tokenFile);
|
package/dist/account.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.js","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,4 +1,80 @@
|
|
|
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
|
+
/** The recorded account metadata, read without credential contents. An absent record is its own
|
|
70
|
+
* refusal with the route that creates one. */
|
|
71
|
+
export declare function accountForRead(name: string): import("./account.js").LinearAccount;
|
|
72
|
+
export interface LinearServeLifecycle {
|
|
73
|
+
readonly root: string;
|
|
74
|
+
readonly onInitialized: () => void | Promise<void>;
|
|
75
|
+
}
|
|
76
|
+
/** Register and serve until SIGINT/SIGTERM, renewing the serve credential at 75% of its life.
|
|
77
|
+
* The embedding callback observes initialization, not a current endpoint response or cleanup. */
|
|
78
|
+
export declare function serveLinearAccount(account: string, endpoint: string, v: Record<string, unknown>, lifecycle?: LinearServeLifecycle): Promise<void>;
|
|
3
79
|
export declare function linear(args: ParsedArgs): Promise<void>;
|
|
4
80
|
//# 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;AAED;+CAC+C;AAC/C,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,wCAM1C;AAmFD,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
|
-
|
|
7
|
-
*/
|
|
8
|
-
import { resolve } from "node:path";
|
|
9
|
-
import { writeSecretFileCreateOnly } from "@cotal-ai/core";
|
|
10
|
-
import { getSpaceAuth, hasUserAuthState, resolveMeshTarget, workspaceSecretStore } from "@cotal-ai/workspace";
|
|
11
|
-
import { assertAccountName, loadAccount, saveAccount, storedTokenPath } from "./account.js";
|
|
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";
|
|
6
|
+
import { accountMissing, 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,110 @@ 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
|
+
/** The recorded account metadata, read without credential contents. An absent record is its own
|
|
88
|
+
* refusal with the route that creates one. */
|
|
89
|
+
export function accountForRead(name) {
|
|
90
|
+
try {
|
|
91
|
+
return loadAccount(name);
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
if (accountMissing(error))
|
|
95
|
+
throw new CommandFailure("refused", "TARGET_NOT_FOUND", "no Linear account with this name is recorded; nothing was opened or sent", { target: { account: name }, remedy: `record it first with cotal linear account add ${name} --mode <write|readonly> --token-file <path>, or cotal linear account login ${name} --mode <write|readonly>` });
|
|
96
|
+
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 } });
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function emitAccount(args, account, saved) {
|
|
100
|
+
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."] }] }] }));
|
|
101
|
+
}
|
|
25
102
|
function fail(msg) {
|
|
26
103
|
console.error(msg);
|
|
27
104
|
process.exit(1);
|
|
28
105
|
}
|
|
29
106
|
async function readStdin() {
|
|
30
107
|
if (process.stdin.isTTY)
|
|
31
|
-
|
|
108
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "--token-stdin requires a pipe; no secret should be typed into argv");
|
|
32
109
|
const chunks = [];
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
110
|
+
let size = 0;
|
|
111
|
+
for await (const chunk of process.stdin) {
|
|
112
|
+
const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
113
|
+
size += bytes.length;
|
|
114
|
+
if (size > 1024 * 1024)
|
|
115
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "the piped token exceeds 1 MiB; nothing was saved and no bytes were printed");
|
|
116
|
+
chunks.push(bytes);
|
|
117
|
+
}
|
|
118
|
+
try {
|
|
119
|
+
return new TextDecoder("utf-8", { fatal: true }).decode(Buffer.concat(chunks));
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "the piped token is not UTF-8; nothing was saved and no bytes were printed");
|
|
123
|
+
}
|
|
36
124
|
}
|
|
37
125
|
function jsonArgs(raw) {
|
|
38
126
|
if (raw === undefined)
|
|
@@ -41,28 +129,24 @@ function jsonArgs(raw) {
|
|
|
41
129
|
try {
|
|
42
130
|
v = JSON.parse(String(raw));
|
|
43
131
|
}
|
|
44
|
-
catch
|
|
45
|
-
|
|
132
|
+
catch {
|
|
133
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "--args must contain valid JSON; argument values were not printed");
|
|
46
134
|
}
|
|
47
135
|
if (!v || typeof v !== "object" || Array.isArray(v))
|
|
48
|
-
|
|
136
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "--args must be a JSON object");
|
|
49
137
|
return v;
|
|
50
138
|
}
|
|
51
139
|
function timeout(raw) {
|
|
52
140
|
if (raw === undefined)
|
|
53
141
|
return undefined;
|
|
54
142
|
const n = Number(raw);
|
|
55
|
-
if (!Number.isSafeInteger(n) || n <= 0)
|
|
56
|
-
|
|
143
|
+
if (!Number.isSafeInteger(n) || n <= 0 || n > DEFAULT_LIMITS.maxTimeoutMs)
|
|
144
|
+
throw new CommandFailure("refused", "USAGE_INVALID", `--timeout must be a positive integer of milliseconds, at most ${DEFAULT_LIMITS.maxTimeoutMs}`);
|
|
57
145
|
return n;
|
|
58
146
|
}
|
|
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
147
|
/** Run one request; SIGINT cancels it (reported as `unknown` once dispatched) and closes the session. */
|
|
64
148
|
async function withUpstream(account, fn) {
|
|
65
|
-
const upstream = new LinearUpstream(
|
|
149
|
+
const upstream = new LinearUpstream(accountForRead(account));
|
|
66
150
|
const ctl = new AbortController();
|
|
67
151
|
const onSignal = () => ctl.abort();
|
|
68
152
|
process.once("SIGINT", onSignal);
|
|
@@ -76,31 +160,57 @@ async function withUpstream(account, fn) {
|
|
|
76
160
|
await upstream.close();
|
|
77
161
|
}
|
|
78
162
|
}
|
|
163
|
+
async function forward(args, account, operation, run) {
|
|
164
|
+
let reply;
|
|
165
|
+
try {
|
|
166
|
+
reply = await withUpstream(account, run);
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
if (isCommandFailure(error))
|
|
170
|
+
throw error;
|
|
171
|
+
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 } });
|
|
172
|
+
}
|
|
173
|
+
emitUpstream(args, account, operation, reply);
|
|
174
|
+
}
|
|
79
175
|
/** The static-auth mesh and the operator's own space authority, or a loud refusal. A per-user-auth
|
|
80
176
|
* mesh issues endpoint credentials through its remote auth service, which this package has no
|
|
81
177
|
* 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
|
-
|
|
178
|
+
async function staticAuthority(v, root) {
|
|
179
|
+
const target = resolveMeshTarget(root ?? process.cwd(), { space: v.space, server: v.server, readOnly: true });
|
|
180
|
+
recordOperationSpace(target.space);
|
|
181
|
+
if (root)
|
|
182
|
+
resolveNativeServiceTarget(root, target.space, v.server);
|
|
183
|
+
if (target.mode === "user" || hasUserAuthState(target.root, target.space, { readOnly: true }))
|
|
184
|
+
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
185
|
if (target.mode !== "auth")
|
|
87
|
-
|
|
88
|
-
|
|
186
|
+
throw new CommandFailure("refused", "UNSUPPORTED", "an open space has no static credential system for this native Linear action", { target: { space: target.space } });
|
|
187
|
+
let auth;
|
|
188
|
+
try {
|
|
189
|
+
auth = await getSpaceAuth(workspaceSecretStore(target.root), target.space);
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
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 } });
|
|
193
|
+
}
|
|
89
194
|
if (!auth)
|
|
90
|
-
|
|
195
|
+
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
196
|
return { target, auth };
|
|
92
197
|
}
|
|
93
|
-
/** Register and serve until SIGINT/SIGTERM, renewing the serve credential at 75% of its life.
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
const
|
|
198
|
+
/** Register and serve until SIGINT/SIGTERM, renewing the serve credential at 75% of its life.
|
|
199
|
+
* The embedding callback observes initialization, not a current endpoint response or cleanup. */
|
|
200
|
+
export async function serveLinearAccount(account, endpoint, v, lifecycle) {
|
|
201
|
+
const { target, auth } = await staticAuthority(v, lifecycle?.root);
|
|
202
|
+
const upstream = new LinearUpstream(accountForRead(account));
|
|
97
203
|
// Read the inventory first, so a broken account never becomes a registered endpoint.
|
|
98
204
|
const inv = await upstream.inventory().catch(async (e) => {
|
|
99
205
|
await upstream.close();
|
|
206
|
+
if (lifecycle)
|
|
207
|
+
throw new CommandFailure("refused", "DEPENDENCY_UNAVAILABLE", "the selected native Linear account did not complete inventory discovery; no service registration was requested");
|
|
100
208
|
fail(`the Linear account "${account}" did not answer discovery: ${e.message}`);
|
|
101
209
|
});
|
|
102
210
|
const reg = await registerLinearEndpoint({ auth, servers: target.server, space: target.space, tls: target.tlsRequired, endpoint }).catch(async (e) => {
|
|
103
211
|
await upstream.close();
|
|
212
|
+
if (lifecycle)
|
|
213
|
+
throw new CommandFailure("unknown", "OPERATION_UNKNOWN", "the native Linear registration did not return a confirmed result; no new registration was retried");
|
|
104
214
|
fail(`registering ${endpoint} failed: ${e.message}`);
|
|
105
215
|
});
|
|
106
216
|
// The record is READY from registration on, so a start that fails after it must take the record
|
|
@@ -112,16 +222,19 @@ async function serve(account, endpoint, v) {
|
|
|
112
222
|
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
223
|
]);
|
|
114
224
|
await upstream.close();
|
|
225
|
+
if (lifecycle)
|
|
226
|
+
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
227
|
fail(`${endpoint} did not start serving: ${e.message}; ${removal}`);
|
|
116
228
|
});
|
|
117
|
-
|
|
229
|
+
if (!lifecycle)
|
|
230
|
+
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
231
|
let timer;
|
|
119
232
|
const schedule = (ms) => {
|
|
120
233
|
if (ms === undefined)
|
|
121
234
|
return;
|
|
122
235
|
timer = setTimeout(() => {
|
|
123
236
|
reg.renew().then((creds) => schedule(renewalDelayMs(creds)), (e) => {
|
|
124
|
-
console.error(`serve credential renewal failed (${e.message}); retrying in 30s`);
|
|
237
|
+
console.error(lifecycle ? "native Linear serve credential renewal failed; retaining its existing renewal policy" : `serve credential renewal failed (${e.message}); retrying in 30s`);
|
|
125
238
|
schedule(30_000);
|
|
126
239
|
});
|
|
127
240
|
}, ms);
|
|
@@ -135,38 +248,74 @@ async function serve(account, endpoint, v) {
|
|
|
135
248
|
if (timer)
|
|
136
249
|
clearTimeout(timer);
|
|
137
250
|
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`));
|
|
251
|
+
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
252
|
process.exit(code);
|
|
140
253
|
};
|
|
141
254
|
process.once("SIGINT", () => void stop(0));
|
|
142
255
|
process.once("SIGTERM", () => void stop(0));
|
|
256
|
+
if (lifecycle) {
|
|
257
|
+
try {
|
|
258
|
+
await lifecycle.onInitialized();
|
|
259
|
+
}
|
|
260
|
+
catch {
|
|
261
|
+
await stop(1);
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
143
265
|
const err = await handle.closed;
|
|
144
266
|
if (!stopping) {
|
|
145
|
-
console.error(`the serve connection closed${err ? `: ${err.message}` : ""}`);
|
|
267
|
+
console.error(lifecycle ? "the native Linear serve connection closed; no replacement was started" : `the serve connection closed${err ? `: ${err.message}` : ""}`);
|
|
146
268
|
await stop(1);
|
|
147
269
|
}
|
|
148
270
|
}
|
|
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
|
-
|
|
271
|
+
async function caller(args, name, endpoint) {
|
|
272
|
+
const v = args.values;
|
|
273
|
+
const { target: mesh, auth } = await staticAuthority(v);
|
|
274
|
+
const out = resolve(String(v.out)), target = { space: mesh.space, name, endpoint, path: out };
|
|
275
|
+
assertExternalCredentialExport(out, [mesh.root]);
|
|
276
|
+
protectedLocalDirectory(dirname(out));
|
|
277
|
+
const held = acquireLock(`${out}.mint.lock`, { label: "Linear caller output", waitMs: 0, onTimeout: () => new CommandFailure("refused", "CONFLICT", "another writer holds the caller output", { target }) });
|
|
278
|
+
let submitted = false;
|
|
279
|
+
const changed = [];
|
|
280
|
+
try {
|
|
281
|
+
if (lstatSync(out, { throwIfNoEntry: false }))
|
|
282
|
+
throw new CommandFailure("refused", "CONFLICT", "the selected caller output already exists; it was not replaced and no new caller was issued", { target });
|
|
283
|
+
const channels = v.channels === undefined ? [] : String(v.channels).split(",").map((channel) => channel.trim()).filter(Boolean);
|
|
284
|
+
submitted = true;
|
|
285
|
+
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"]) } : {}) });
|
|
286
|
+
changed.push({ kind: "native-caller-footprint", identity: minted.identity, lifecycleUid: minted.lifecycleUid, acknowledged: true });
|
|
287
|
+
protectedLocalDirectory(dirname(out));
|
|
288
|
+
writeSecretFileCreateOnly(out, minted.creds);
|
|
289
|
+
changed.push({ kind: "private-caller-file", path: out, acknowledged: true });
|
|
290
|
+
protectedCredentialReference(out);
|
|
291
|
+
const current = readLocalRecordSource(out, 1024 * 1024, true);
|
|
292
|
+
if (!current?.equals(Buffer.from(minted.creds, "utf8")))
|
|
293
|
+
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 });
|
|
294
|
+
const claims = credsClaims(minted.creds);
|
|
295
|
+
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 };
|
|
296
|
+
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."] }] }] }));
|
|
297
|
+
}
|
|
298
|
+
catch (error) {
|
|
299
|
+
if (!submitted && isCommandFailure(error))
|
|
300
|
+
throw error;
|
|
301
|
+
if (!submitted)
|
|
302
|
+
throw new CommandFailure("refused", "DEPENDENCY_UNAVAILABLE", "the selected private caller destination could not be prepared; no caller issuance was submitted", { target });
|
|
303
|
+
if (isCommandFailure(error) && error.outcome === "unknown")
|
|
304
|
+
throw error;
|
|
305
|
+
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" });
|
|
306
|
+
}
|
|
307
|
+
finally {
|
|
308
|
+
held.release();
|
|
309
|
+
}
|
|
167
310
|
}
|
|
168
311
|
export async function linear(args) {
|
|
312
|
+
validateLinearArguments(args);
|
|
169
313
|
const [sub, ...rest] = args.positionals;
|
|
314
|
+
if (sub === undefined || sub === "account" && rest.length === 0) {
|
|
315
|
+
const forms = sub === "account" ? linearForms.filter((form) => form.path[0] === "account") : linearForms;
|
|
316
|
+
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."] }] }] }));
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
170
319
|
const v = args.values;
|
|
171
320
|
switch (sub) {
|
|
172
321
|
case "account": {
|
|
@@ -175,15 +324,20 @@ export async function linear(args) {
|
|
|
175
324
|
fail(USAGE);
|
|
176
325
|
assertAccountName(name);
|
|
177
326
|
if (action === "show") {
|
|
178
|
-
|
|
327
|
+
emitAccount(args, accountForRead(name), false);
|
|
179
328
|
return;
|
|
180
329
|
}
|
|
181
330
|
if (action === "login") {
|
|
182
331
|
const mode = v.mode;
|
|
183
332
|
if (!isLinearMode(mode))
|
|
184
333
|
fail("--mode must be write or readonly");
|
|
185
|
-
|
|
186
|
-
|
|
334
|
+
try {
|
|
335
|
+
await loginAccount(name, mode);
|
|
336
|
+
}
|
|
337
|
+
catch {
|
|
338
|
+
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 } });
|
|
339
|
+
}
|
|
340
|
+
emitAccount(args, { name, mode, auth: "oauth" }, true);
|
|
187
341
|
return;
|
|
188
342
|
}
|
|
189
343
|
if (action !== "add")
|
|
@@ -193,35 +347,31 @@ export async function linear(args) {
|
|
|
193
347
|
fail("--mode must be write or readonly");
|
|
194
348
|
if (Boolean(v["token-stdin"]) === (v["token-file"] !== undefined))
|
|
195
349
|
fail("give exactly one of --token-stdin or --token-file");
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
saveAccount(
|
|
200
|
-
|
|
350
|
+
const account = { name, mode, auth: "token", tokenFile: v["token-stdin"] ? storedTokenPath(name) : resolve(String(v["token-file"])) };
|
|
351
|
+
const token = v["token-stdin"] ? await readStdin() : undefined;
|
|
352
|
+
try {
|
|
353
|
+
saveAccount(account, token);
|
|
354
|
+
}
|
|
355
|
+
catch {
|
|
356
|
+
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 } });
|
|
357
|
+
}
|
|
358
|
+
emitAccount(args, account, true);
|
|
201
359
|
return;
|
|
202
360
|
}
|
|
203
361
|
case "inventory": {
|
|
204
362
|
const [account] = rest;
|
|
205
363
|
if (!account)
|
|
206
364
|
fail(USAGE);
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
365
|
+
let inventory;
|
|
366
|
+
try {
|
|
367
|
+
inventory = await withUpstream(account, (u, signal) => u.inventory({ signal }));
|
|
368
|
+
}
|
|
369
|
+
catch (error) {
|
|
370
|
+
if (isCommandFailure(error))
|
|
371
|
+
throw error;
|
|
372
|
+
throw new CommandFailure("refused", "DEPENDENCY_UNAVAILABLE", "the complete bounded Linear inventory was not obtained; no partial inventory was presented as complete", { target: { account } });
|
|
211
373
|
}
|
|
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)}`);
|
|
374
|
+
emitInventory(args, account, inventory);
|
|
225
375
|
return;
|
|
226
376
|
}
|
|
227
377
|
case "call": {
|
|
@@ -229,14 +379,14 @@ export async function linear(args) {
|
|
|
229
379
|
if (!account || !tool)
|
|
230
380
|
fail(USAGE);
|
|
231
381
|
const req = { name: tool, arguments: jsonArgs(v.args), inventoryDigest: v.inventory, timeoutMs: timeout(v.timeout) };
|
|
232
|
-
|
|
382
|
+
await forward(args, account, "call", (u, signal) => u.callTool({ ...req, signal }));
|
|
233
383
|
return;
|
|
234
384
|
}
|
|
235
385
|
case "resource": {
|
|
236
386
|
const [account, uri] = rest;
|
|
237
387
|
if (!account || !uri)
|
|
238
388
|
fail(USAGE);
|
|
239
|
-
|
|
389
|
+
await forward(args, account, "resource", (u, signal) => u.readResource({ uri, inventoryDigest: v.inventory, timeoutMs: timeout(v.timeout), signal }));
|
|
240
390
|
return;
|
|
241
391
|
}
|
|
242
392
|
case "prompt": {
|
|
@@ -246,21 +396,21 @@ export async function linear(args) {
|
|
|
246
396
|
const a = jsonArgs(v.args);
|
|
247
397
|
if (a && Object.values(a).some((x) => typeof x !== "string"))
|
|
248
398
|
fail("prompt --args values must be strings");
|
|
249
|
-
|
|
399
|
+
await forward(args, account, "prompt", (u, signal) => u.getPrompt({ name, arguments: a, inventoryDigest: v.inventory, timeoutMs: timeout(v.timeout), signal }));
|
|
250
400
|
return;
|
|
251
401
|
}
|
|
252
402
|
case "serve": {
|
|
253
403
|
const [account] = rest;
|
|
254
404
|
if (!account || typeof v.endpoint !== "string")
|
|
255
405
|
fail(USAGE);
|
|
256
|
-
await
|
|
406
|
+
await serveLinearAccount(account, v.endpoint, v);
|
|
257
407
|
return;
|
|
258
408
|
}
|
|
259
409
|
case "caller": {
|
|
260
410
|
const [name] = rest;
|
|
261
411
|
if (!name || typeof v.endpoint !== "string")
|
|
262
412
|
fail(USAGE);
|
|
263
|
-
await caller(name, v.endpoint
|
|
413
|
+
await caller(args, name, v.endpoint);
|
|
264
414
|
return;
|
|
265
415
|
}
|
|
266
416
|
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":"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"}
|
|
@@ -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,YA4B3B,CAAC;AASF,eAAO,MAAM,0BAA0B,EAAE,OAkBxC,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { isAbsolute } from "node:path";
|
|
2
|
+
import { registry } from "@cotal-ai/core";
|
|
3
|
+
import { CommandFailure, colorEnabled, hasUserAuthState, homeCotalDirFallbacks, observeServiceStartup, publishServiceStartup, resolveNativeServiceTarget, serviceOperationId, serviceStartupPath, validateServiceStartupPath, } from "@cotal-ai/workspace";
|
|
4
|
+
import { assertAccountName } from "./account.js";
|
|
5
|
+
import { accountForRead, 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
|
+
// The child inherits COTAL_HOME, which envRefs cannot set. Without it, a reference to a variable the
|
|
48
|
+
// Cotal home falls back to can give the child another home than the one this process reads.
|
|
49
|
+
const moved = process.env.COTAL_HOME ? [] : Object.keys(context.envRefs ?? {}).filter((name) => homeCotalDirFallbacks().includes(name));
|
|
50
|
+
if (moved.length)
|
|
51
|
+
throw new CommandFailure("refused", "UNSUPPORTED", `the definition's envRefs set ${moved.join(" and ")} for the Linear child, so it can read its account from another Cotal home than this start checks; no account was read`, { remedy: `set COTAL_HOME where the service starts, or remove ${moved.join(" and ")} from the definition's envRefs` });
|
|
52
|
+
const target = nativeTarget(String(context.options.root), context.space, context.options.server);
|
|
53
|
+
const selected = inputs(context.options.account, context.options.endpoint);
|
|
54
|
+
// The child now reads the same Cotal home as this process, so an absent account refuses here, before a launch.
|
|
55
|
+
accountForRead(selected.account);
|
|
56
|
+
const [executable, ...self] = context.cliInvocation;
|
|
57
|
+
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)] };
|
|
58
|
+
},
|
|
59
|
+
async checkServiceReadiness(context) { return observeServiceStartup(context, "linear-serve-initialized"); },
|
|
60
|
+
};
|
|
61
|
+
function validateChild(args) {
|
|
62
|
+
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]))
|
|
63
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "the native Linear child requires one complete explicit controller launch");
|
|
64
|
+
for (const key of ["root", "ready-file"])
|
|
65
|
+
if (!isAbsolute(String(args.values[key])) || /[\u0000-\u001f\u007f]/u.test(String(args.values[key])))
|
|
66
|
+
throw new CommandFailure("refused", "USAGE_INVALID", "native Linear paths must be absolute and contain no terminal controls");
|
|
67
|
+
inputs(args.values.account, args.values.endpoint);
|
|
68
|
+
serviceOperationId(args.values["service-instance"]);
|
|
69
|
+
serviceOperationId(args.values["launch-request"]);
|
|
70
|
+
}
|
|
71
|
+
export const nativeLinearServiceCommand = {
|
|
72
|
+
kind: "command", name: "__service-linear", hidden: true, prepareMeshTarget: false,
|
|
73
|
+
summary: "native Linear child with a private process/launch initialization receipt",
|
|
74
|
+
flags: ["root", "space", "server", "account", "endpoint", "service-instance", "launch-request", "ready-file"].map((name) => ({ name, type: "string" })),
|
|
75
|
+
validate: validateChild,
|
|
76
|
+
async run(args) {
|
|
77
|
+
validateChild(args);
|
|
78
|
+
const target = nativeTarget(String(args.values.root), String(args.values.space), String(args.values.server));
|
|
79
|
+
const selected = inputs(args.values.account, args.values.endpoint);
|
|
80
|
+
const instanceId = serviceOperationId(args.values["service-instance"]), launchRequestId = serviceOperationId(args.values["launch-request"]), path = String(args.values["ready-file"]);
|
|
81
|
+
validateServiceStartupPath(path, instanceId, launchRequestId);
|
|
82
|
+
try {
|
|
83
|
+
await serveLinearAccount(selected.account, selected.endpoint, { space: target.space, server: target.server }, {
|
|
84
|
+
root: target.root,
|
|
85
|
+
onInitialized: () => publishServiceStartup(path, { phase: "linear-serve-initialized", space: target.space, instanceId, launchRequestId }),
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
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");
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
registry.register(linearService, linearServicePreset, nativeLinearServiceCommand);
|
|
94
|
+
//# sourceMappingURL=service-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-adapter.js","sourceRoot":"","sources":["../src/service-adapter.ts"],"names":[],"mappings":"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"}
|
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.92.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.92.0",
|
|
31
|
+
"@cotal-ai/workspace": "0.92.0"
|
|
32
32
|
},
|
|
33
33
|
"files": [
|
|
34
34
|
"dist"
|
|
@@ -39,6 +39,6 @@
|
|
|
39
39
|
"scripts": {
|
|
40
40
|
"typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.smoke.json",
|
|
41
41
|
"build": "tsc -p tsconfig.json",
|
|
42
|
-
"test": "tsx smoke/protocol.smoke.ts"
|
|
42
|
+
"test": "tsx smoke/protocol.smoke.ts && tsx smoke/account-refusals.smoke.ts"
|
|
43
43
|
}
|
|
44
44
|
}
|