@cotal-ai/linear 0.90.0 → 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 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":"AAQA,OAAO,EAA6B,KAAK,UAAU,EAAkB,MAAM,gBAAgB,CAAC;AAQ5F,eAAO,MAAM,KAAK,0tBAQyH,CAAC;AA+I5I,wBAAsB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAoF5D"}
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
- * `cotal linear …`: operator commands over {@link LinearUpstream}. Every reply is printed as JSON so
3
- * the upstream's content, `structuredContent` and `isError` reach the reader unchanged; what the
4
- * server sent is untrusted data and is never interpreted here. Exit status: 0 for an MCP result
5
- * (including a tool result with `isError: true`), 2 for a refusal before dispatch, 3 for a protocol
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 { provisionLinearCaller, registerLinearEndpoint, renewalDelayMs, runLinearEndpoint } from "./serve.js";
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
- fail("--token-stdin reads the token from a pipe, for example `cotal linear account add ro --mode readonly --token-stdin < token.txt`");
104
+ throw new CommandFailure("refused", "USAGE_INVALID", "--token-stdin requires a pipe; no secret should be typed into argv");
32
105
  const chunks = [];
33
- for await (const c of process.stdin)
34
- chunks.push(c);
35
- return Buffer.concat(chunks).toString("utf8");
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 (e) {
45
- fail(`--args is not JSON: ${e.message}`);
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
- fail("--args must be a JSON object");
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
- fail("--timeout must be a positive integer of milliseconds");
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(loadAccount(account));
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
- if (target.mode === "user" || hasUserAuthState(target.root, target.space))
85
- fail(`"${target.space}" is a per-user-auth mesh: its endpoint credentials come from the remote auth service, which \`cotal linear\` does not support yet. Nothing was registered or minted.`);
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
- fail(`"${target.space}" is an open mesh: there is no credential system to scope a Linear endpoint or its callers. Use a static-auth mesh.`);
88
- const auth = await getSpaceAuth(workspaceSecretStore(target.root), target.space);
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
- fail(`no space authority for "${target.space}" under ${target.root}; run this where the mesh was set up`);
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
- async function serve(account, endpoint, v) {
95
- const { target, auth } = await staticAuthority(v);
96
- const upstream = new LinearUpstream(loadAccount(account));
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
- console.log(`serving ${handle.endpoint} (instance ${handle.instanceId}, epoch ${handle.epoch}) for Linear account ${account} (${inv.mode}, ${inv.tools.length} tools, inventory ${inv.digest})`);
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, v) {
150
- if (v.out === undefined)
151
- fail("--out <path> is required: the credential is written there 0600 and never printed");
152
- const { target, auth } = await staticAuthority(v);
153
- const channels = v.channels === undefined ? [] : String(v.channels).split(",").map((c) => c.trim()).filter(Boolean);
154
- const expires = v["expires-in"] === undefined ? undefined : Number(v["expires-in"]);
155
- if (expires !== undefined && (!Number.isSafeInteger(expires) || expires <= 0))
156
- fail("--expires-in must be a positive integer of seconds");
157
- const out = resolve(String(v.out));
158
- const minted = await provisionLinearCaller(auth, { servers: target.server, space: target.space, tls: target.tlsRequired }, endpoint, {
159
- channels, ...(expires !== undefined ? { expiresInSeconds: expires } : {}),
160
- });
161
- writeSecretFileCreateOnly(out, minted.creds);
162
- console.log(`minted Linear caller "${name}" for ${endpoint} on ${target.space}: identity ${minted.identity}`);
163
- console.log(` credential ${out} (0600)`);
164
- console.log(` lifecycle ${minted.lifecycleUid}`);
165
- console.log(` launch a hand-driven seat with COTAL_SERVERS=${target.server} COTAL_SPACE=${target.space} COTAL_NAME=${name} COTAL_CREDS=${out} COTAL_LIFECYCLE_UID=${minted.lifecycleUid}`);
166
- console.log(" a Claude Code or jcode seat also needs COTAL_CONTROL_SOCKET=<socket path> and COTAL_CONTROL_TOKEN=<random secret>");
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
- console.log(JSON.stringify(loadAccount(name), null, 2));
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
- await loginAccount(name, mode);
186
- console.log(`saved Linear account ${name} (${mode}, oauth)`);
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
- if (v["token-stdin"])
197
- saveAccount({ name, mode, auth: "token", tokenFile: storedTokenPath(name) }, await readStdin());
198
- else
199
- saveAccount({ name, mode, auth: "token", tokenFile: resolve(String(v["token-file"])) });
200
- console.log(`saved Linear account ${name} (${mode})`);
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
- const inv = await withUpstream(account, (u) => u.inventory());
208
- if (v.json) {
209
- console.log(JSON.stringify(inv, null, 2));
210
- return;
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
- console.log(`endpoint ${inv.endpoint} (${inv.mode})`);
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
- emit(await withUpstream(account, (u, signal) => u.callTool({ ...req, signal })));
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
- emit(await withUpstream(account, (u, signal) => u.readResource({ uri, inventoryDigest: v.inventory, timeoutMs: timeout(v.timeout), signal })));
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
- emit(await withUpstream(account, (u, signal) => u.getPrompt({ name, arguments: a, inventoryDigest: v.inventory, timeoutMs: timeout(v.timeout), signal })));
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 serve(account, v.endpoint, v);
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, v);
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";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAqCA,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"}
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
- { name: "json", type: "boolean", description: "inventory: print the full inventory" },
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;AAC5D,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;;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;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,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,qCAAqC,EAAE;QACrF,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"}
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,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":"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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.90.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.90.0",
31
- "@cotal-ai/workspace": "0.90.0"
30
+ "@cotal-ai/core": "0.91.0",
31
+ "@cotal-ai/workspace": "0.91.0"
32
32
  },
33
33
  "files": [
34
34
  "dist"