@phamvuhoang/otto-core 0.2.0 → 0.4.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-help.d.ts +16 -3
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +14 -4
- package/dist/cli-help.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/linear-api.d.ts +161 -0
- package/dist/linear-api.d.ts.map +1 -0
- package/dist/linear-api.js +288 -0
- package/dist/linear-api.js.map +1 -0
- package/dist/linear-auth.d.ts +42 -0
- package/dist/linear-auth.d.ts.map +1 -0
- package/dist/linear-auth.js +115 -0
- package/dist/linear-auth.js.map +1 -0
- package/dist/linear-cli.d.ts +37 -0
- package/dist/linear-cli.d.ts.map +1 -0
- package/dist/linear-cli.js +176 -0
- package/dist/linear-cli.js.map +1 -0
- package/dist/linear-main.d.ts +5 -0
- package/dist/linear-main.d.ts.map +1 -0
- package/dist/linear-main.js +27 -0
- package/dist/linear-main.js.map +1 -0
- package/dist/loop.d.ts +2 -0
- package/dist/loop.d.ts.map +1 -1
- package/dist/loop.js +79 -5
- package/dist/loop.js.map +1 -1
- package/dist/preflight.d.ts +3 -0
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +13 -1
- package/dist/preflight.js.map +1 -1
- package/dist/run-bin.d.ts +21 -1
- package/dist/run-bin.d.ts.map +1 -1
- package/dist/run-bin.js +12 -6
- package/dist/run-bin.js.map +1 -1
- package/dist/stages.d.ts +10 -0
- package/dist/stages.d.ts.map +1 -1
- package/dist/stages.js +10 -0
- package/dist/stages.js.map +1 -1
- package/dist/watch.d.ts +53 -4
- package/dist/watch.d.ts.map +1 -1
- package/dist/watch.js +76 -11
- package/dist/watch.js.map +1 -1
- package/package.json +1 -1
- package/templates/ghprompt-workflow.md +6 -3
- package/templates/linear-completion.md +17 -0
- package/templates/linearafk-issue.md +31 -0
- package/templates/linearafk.md +29 -0
- package/templates/linearprompt.md +39 -0
- package/templates/prompt.md +4 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear-api.js","sourceRoot":"","sources":["../src/linear-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type LinearViewer } from "./linear-api.js";
|
|
2
|
+
/**
|
|
3
|
+
* Injectable host surface for {@link runLinearAuth} so the credential tool stays
|
|
4
|
+
* pure-ish and unit-testable without touching the real home dir, stdin, or the
|
|
5
|
+
* network. {@link defaultLinearAuthDeps} wires up the host.
|
|
6
|
+
*/
|
|
7
|
+
export type LinearAuthCliDeps = {
|
|
8
|
+
env: NodeJS.ProcessEnv;
|
|
9
|
+
/** Home directory holding the credential file. */
|
|
10
|
+
home: string;
|
|
11
|
+
/** Read a file's contents, or null if it is absent/unreadable. */
|
|
12
|
+
readFile: (path: string) => string | null;
|
|
13
|
+
/** Write `contents` to `path`, creating parent dirs, with the given mode. */
|
|
14
|
+
writeFile: (path: string, contents: string, mode: number) => void;
|
|
15
|
+
/** Delete `path`; return true if a file was actually removed. */
|
|
16
|
+
removeFile: (path: string) => boolean;
|
|
17
|
+
/** Read the API key the user pastes on stdin (login). */
|
|
18
|
+
readStdin: () => Promise<string>;
|
|
19
|
+
/** Print one line to stdout. */
|
|
20
|
+
out: (msg: string) => void;
|
|
21
|
+
/** Print one line to stderr. */
|
|
22
|
+
err: (msg: string) => void;
|
|
23
|
+
/** Live credential check for `status --verify-live`; injectable for tests. */
|
|
24
|
+
verify: (token: string) => Promise<LinearViewer>;
|
|
25
|
+
};
|
|
26
|
+
/** Host-wired defaults for {@link runLinearAuth}. */
|
|
27
|
+
export declare const defaultLinearAuthDeps: LinearAuthCliDeps;
|
|
28
|
+
/**
|
|
29
|
+
* Drive the `otto-linear-auth` credential tool. Resolves to the process exit
|
|
30
|
+
* code so the thin bin wrapper can `process.exit(code)`.
|
|
31
|
+
*
|
|
32
|
+
* - `login` — read a Linear personal API key from stdin and store it at
|
|
33
|
+
* `~/.config/otto/linear.json` (`0600`, outside any repo). The secret is
|
|
34
|
+
* never echoed back.
|
|
35
|
+
* - `status` — report whether a credential resolves (and from where, via
|
|
36
|
+
* {@link resolveLinearAuth}) without printing the token; `--verify-live`
|
|
37
|
+
* additionally calls the Linear API to confirm the key works.
|
|
38
|
+
* - `logout` — delete the stored credential file; warns if an env-var key
|
|
39
|
+
* still takes precedence.
|
|
40
|
+
*/
|
|
41
|
+
export declare function runLinearAuth(argv: string[], deps?: LinearAuthCliDeps): Promise<number>;
|
|
42
|
+
//# sourceMappingURL=linear-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear-auth.d.ts","sourceRoot":"","sources":["../src/linear-auth.ts"],"names":[],"mappings":"AAUA,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAEzB;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC1C,6EAA6E;IAC7E,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClE,iEAAiE;IACjE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,yDAAyD;IACzD,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,gCAAgC;IAChC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,gCAAgC;IAChC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,8EAA8E;IAC9E,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;CAClD,CAAC;AAUF,qDAAqD;AACrD,eAAO,MAAM,qBAAqB,EAAE,iBA6BnC,CAAC;AAKF;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,iBAAyC,GAC9C,OAAO,CAAC,MAAM,CAAC,CA+DjB"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
import { chmodSync, mkdirSync, readFileSync, unlinkSync, writeFileSync, } from "node:fs";
|
|
4
|
+
import { createLinearClient, linearConfigPath, resolveLinearAuth, LinearApiError, } from "./linear-api.js";
|
|
5
|
+
async function readAllStdin() {
|
|
6
|
+
const chunks = [];
|
|
7
|
+
for await (const chunk of process.stdin) {
|
|
8
|
+
chunks.push(Buffer.from(chunk));
|
|
9
|
+
}
|
|
10
|
+
return Buffer.concat(chunks).toString("utf8");
|
|
11
|
+
}
|
|
12
|
+
/** Host-wired defaults for {@link runLinearAuth}. */
|
|
13
|
+
export const defaultLinearAuthDeps = {
|
|
14
|
+
env: process.env,
|
|
15
|
+
home: homedir(),
|
|
16
|
+
readFile: (p) => {
|
|
17
|
+
try {
|
|
18
|
+
return readFileSync(p, "utf8");
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
writeFile: (p, contents, mode) => {
|
|
25
|
+
mkdirSync(dirname(p), { recursive: true, mode: 0o700 });
|
|
26
|
+
writeFileSync(p, contents, { mode });
|
|
27
|
+
// `mode` above only applies when the file is created, so re-tighten an
|
|
28
|
+
// existing credential file whose perms may have drifted looser.
|
|
29
|
+
chmodSync(p, mode);
|
|
30
|
+
},
|
|
31
|
+
removeFile: (p) => {
|
|
32
|
+
try {
|
|
33
|
+
unlinkSync(p);
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
readStdin: readAllStdin,
|
|
41
|
+
out: (m) => process.stdout.write(`${m}\n`),
|
|
42
|
+
err: (m) => process.stderr.write(`${m}\n`),
|
|
43
|
+
verify: (token) => createLinearClient({ token }).whoami(),
|
|
44
|
+
};
|
|
45
|
+
const USAGE = "Usage: otto-linear-auth <login|status [--verify-live]|logout>";
|
|
46
|
+
/**
|
|
47
|
+
* Drive the `otto-linear-auth` credential tool. Resolves to the process exit
|
|
48
|
+
* code so the thin bin wrapper can `process.exit(code)`.
|
|
49
|
+
*
|
|
50
|
+
* - `login` — read a Linear personal API key from stdin and store it at
|
|
51
|
+
* `~/.config/otto/linear.json` (`0600`, outside any repo). The secret is
|
|
52
|
+
* never echoed back.
|
|
53
|
+
* - `status` — report whether a credential resolves (and from where, via
|
|
54
|
+
* {@link resolveLinearAuth}) without printing the token; `--verify-live`
|
|
55
|
+
* additionally calls the Linear API to confirm the key works.
|
|
56
|
+
* - `logout` — delete the stored credential file; warns if an env-var key
|
|
57
|
+
* still takes precedence.
|
|
58
|
+
*/
|
|
59
|
+
export async function runLinearAuth(argv, deps = defaultLinearAuthDeps) {
|
|
60
|
+
const [sub, ...rest] = argv;
|
|
61
|
+
const path = linearConfigPath(deps.home);
|
|
62
|
+
switch (sub) {
|
|
63
|
+
case "login": {
|
|
64
|
+
const token = (await deps.readStdin()).trim();
|
|
65
|
+
if (!token) {
|
|
66
|
+
deps.err("No API key provided. Paste your Linear personal API key.");
|
|
67
|
+
return 1;
|
|
68
|
+
}
|
|
69
|
+
const body = JSON.stringify({ type: "apiKey", token }, null, 2);
|
|
70
|
+
deps.writeFile(path, `${body}\n`, 0o600);
|
|
71
|
+
deps.out(`Stored Linear API key at ${path} (0600).`);
|
|
72
|
+
return 0;
|
|
73
|
+
}
|
|
74
|
+
case "status": {
|
|
75
|
+
const auth = resolveLinearAuth({
|
|
76
|
+
env: deps.env,
|
|
77
|
+
readFile: deps.readFile,
|
|
78
|
+
home: deps.home,
|
|
79
|
+
});
|
|
80
|
+
if (!auth) {
|
|
81
|
+
deps.out("Linear auth: not found — run `otto-linear-auth login`.");
|
|
82
|
+
return 1;
|
|
83
|
+
}
|
|
84
|
+
deps.out(`Linear auth: found (source: ${auth.source}).`);
|
|
85
|
+
if (rest.includes("--verify-live")) {
|
|
86
|
+
try {
|
|
87
|
+
const me = await deps.verify(auth.token);
|
|
88
|
+
deps.out(`Verified live as ${me.name} <${me.email}>.`);
|
|
89
|
+
}
|
|
90
|
+
catch (e) {
|
|
91
|
+
const kind = e instanceof LinearApiError ? ` (${e.kind})` : "";
|
|
92
|
+
deps.err(`Live verification failed${kind}: ${e.message}`);
|
|
93
|
+
return 1;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return 0;
|
|
97
|
+
}
|
|
98
|
+
case "logout": {
|
|
99
|
+
const removed = deps.removeFile(path);
|
|
100
|
+
deps.out(removed
|
|
101
|
+
? `Removed stored Linear credential at ${path}.`
|
|
102
|
+
: `No stored credential at ${path}; nothing to remove.`);
|
|
103
|
+
for (const name of ["OTTO_LINEAR_API_KEY", "LINEAR_API_KEY"]) {
|
|
104
|
+
if (deps.env[name]?.trim()) {
|
|
105
|
+
deps.out(`Note: ${name} is still set and takes precedence over the file.`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return 0;
|
|
109
|
+
}
|
|
110
|
+
default:
|
|
111
|
+
deps.err(USAGE);
|
|
112
|
+
return 2;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=linear-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear-auth.js","sourceRoot":"","sources":["../src/linear-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type LinearClient } from "./linear-api.js";
|
|
2
|
+
/**
|
|
3
|
+
* Injectable host surface for {@link runLinear} so the bundled `linear` helper
|
|
4
|
+
* stays pure-ish and unit-testable without touching the real home dir or the
|
|
5
|
+
* network. {@link defaultLinearCliDeps} wires up the host.
|
|
6
|
+
*/
|
|
7
|
+
export type LinearCliDeps = {
|
|
8
|
+
env: NodeJS.ProcessEnv;
|
|
9
|
+
/** Home directory holding the credential file. */
|
|
10
|
+
home: string;
|
|
11
|
+
/** Read a file's contents, or null if it is absent/unreadable. */
|
|
12
|
+
readFile: (path: string) => string | null;
|
|
13
|
+
/** Print one line to stdout. */
|
|
14
|
+
out: (msg: string) => void;
|
|
15
|
+
/** Print one line to stderr. */
|
|
16
|
+
err: (msg: string) => void;
|
|
17
|
+
/** Build a Linear client for a resolved token; injectable for tests. */
|
|
18
|
+
makeClient: (token: string) => LinearClient;
|
|
19
|
+
};
|
|
20
|
+
/** Host-wired defaults for {@link runLinear}. */
|
|
21
|
+
export declare const defaultLinearCliDeps: LinearCliDeps;
|
|
22
|
+
/**
|
|
23
|
+
* Drive the bundled `linear` helper CLI — Otto's thin Linear counterpart to the
|
|
24
|
+
* system `gh`, used by the Linear templates and the agent. Resolves to the
|
|
25
|
+
* process exit code so the bin wrapper can `process.exit(code)`.
|
|
26
|
+
*
|
|
27
|
+
* - `list` — print labelled open issues (identifier/title/state/url).
|
|
28
|
+
* - `dump` — emit a JSON array of full issue detail (bodies + comments), for
|
|
29
|
+
* spilling into a prompt (parallel to `gh issue list --json …,body,comments`).
|
|
30
|
+
* - `view` — print one issue's full detail as JSON.
|
|
31
|
+
* - `comment` — add a comment to an issue from `--body-file`.
|
|
32
|
+
* - `done` — move an issue to a completed workflow state, resolved via
|
|
33
|
+
* `OTTO_LINEAR_DONE_STATE` (by name) else the team's first `completed`-type
|
|
34
|
+
* state; exits non-zero (no move) when the target state is ambiguous.
|
|
35
|
+
*/
|
|
36
|
+
export declare function runLinear(argv: string[], deps?: LinearCliDeps): Promise<number>;
|
|
37
|
+
//# sourceMappingURL=linear-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear-cli.d.ts","sourceRoot":"","sources":["../src/linear-cli.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAEzB;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC1C,gCAAgC;IAChC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,gCAAgC;IAChC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,wEAAwE;IACxE,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,YAAY,CAAC;CAC7C,CAAC;AAEF,iDAAiD;AACjD,eAAO,MAAM,oBAAoB,EAAE,aAalC,CAAC;AAqCF;;;;;;;;;;;;;GAaG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,aAAoC,GACzC,OAAO,CAAC,MAAM,CAAC,CAgIjB"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { createLinearClient, parseLinearRef, resolveDoneState, resolveLinearAuth, LinearApiError, } from "./linear-api.js";
|
|
4
|
+
/** Host-wired defaults for {@link runLinear}. */
|
|
5
|
+
export const defaultLinearCliDeps = {
|
|
6
|
+
env: process.env,
|
|
7
|
+
home: homedir(),
|
|
8
|
+
readFile: (p) => {
|
|
9
|
+
try {
|
|
10
|
+
return readFileSync(p, "utf8");
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
out: (m) => process.stdout.write(`${m}\n`),
|
|
17
|
+
err: (m) => process.stderr.write(`${m}\n`),
|
|
18
|
+
makeClient: (token) => createLinearClient({ token }),
|
|
19
|
+
};
|
|
20
|
+
const USAGE = "Usage: linear <list|dump|view <ref>|comment <ref> --body-file <path>|done <ref>> [--label <name>] [--team <key>] [--limit <n>]";
|
|
21
|
+
/** Pull `--name <value>` flags out of argv, returning the flags + positionals. */
|
|
22
|
+
function parseFlags(argv) {
|
|
23
|
+
const flags = {};
|
|
24
|
+
const positionals = [];
|
|
25
|
+
for (let i = 0; i < argv.length; i++) {
|
|
26
|
+
const arg = argv[i];
|
|
27
|
+
if (arg.startsWith("--")) {
|
|
28
|
+
flags[arg.slice(2)] = argv[++i] ?? "";
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
positionals.push(arg);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return { flags, positionals };
|
|
35
|
+
}
|
|
36
|
+
/** Resolve label/team/limit from flags, falling back to env then defaults. */
|
|
37
|
+
function listOptions(flags, env) {
|
|
38
|
+
const label = flags.label?.trim() || env.OTTO_LINEAR_LABEL?.trim() || "otto";
|
|
39
|
+
const team = flags.team?.trim() || env.OTTO_LINEAR_TEAM?.trim() || undefined;
|
|
40
|
+
const limit = flags.limit != null ? Number(flags.limit) : 50;
|
|
41
|
+
if (!Number.isInteger(limit) || limit <= 0) {
|
|
42
|
+
return { error: `--limit must be a positive integer, got: ${flags.limit}` };
|
|
43
|
+
}
|
|
44
|
+
return team ? { label, team, limit } : { label, limit };
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Drive the bundled `linear` helper CLI — Otto's thin Linear counterpart to the
|
|
48
|
+
* system `gh`, used by the Linear templates and the agent. Resolves to the
|
|
49
|
+
* process exit code so the bin wrapper can `process.exit(code)`.
|
|
50
|
+
*
|
|
51
|
+
* - `list` — print labelled open issues (identifier/title/state/url).
|
|
52
|
+
* - `dump` — emit a JSON array of full issue detail (bodies + comments), for
|
|
53
|
+
* spilling into a prompt (parallel to `gh issue list --json …,body,comments`).
|
|
54
|
+
* - `view` — print one issue's full detail as JSON.
|
|
55
|
+
* - `comment` — add a comment to an issue from `--body-file`.
|
|
56
|
+
* - `done` — move an issue to a completed workflow state, resolved via
|
|
57
|
+
* `OTTO_LINEAR_DONE_STATE` (by name) else the team's first `completed`-type
|
|
58
|
+
* state; exits non-zero (no move) when the target state is ambiguous.
|
|
59
|
+
*/
|
|
60
|
+
export async function runLinear(argv, deps = defaultLinearCliDeps) {
|
|
61
|
+
const [sub, ...rest] = argv;
|
|
62
|
+
const { flags, positionals } = parseFlags(rest);
|
|
63
|
+
// Validate args before touching credentials so usage errors stay exit 2.
|
|
64
|
+
let ref;
|
|
65
|
+
let listOpts;
|
|
66
|
+
switch (sub) {
|
|
67
|
+
case "list":
|
|
68
|
+
case "dump": {
|
|
69
|
+
const opts = listOptions(flags, deps.env);
|
|
70
|
+
if ("error" in opts) {
|
|
71
|
+
deps.err(opts.error);
|
|
72
|
+
return 2;
|
|
73
|
+
}
|
|
74
|
+
listOpts = opts;
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
case "view":
|
|
78
|
+
case "comment":
|
|
79
|
+
case "done": {
|
|
80
|
+
if (positionals.length === 0) {
|
|
81
|
+
deps.err(USAGE);
|
|
82
|
+
return 2;
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
ref = parseLinearRef(positionals[0]);
|
|
86
|
+
}
|
|
87
|
+
catch (e) {
|
|
88
|
+
deps.err(e.message);
|
|
89
|
+
return 2;
|
|
90
|
+
}
|
|
91
|
+
if (sub === "comment" && !flags["body-file"]) {
|
|
92
|
+
deps.err("comment requires --body-file <path>.");
|
|
93
|
+
return 2;
|
|
94
|
+
}
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
default:
|
|
98
|
+
deps.err(USAGE);
|
|
99
|
+
return 2;
|
|
100
|
+
}
|
|
101
|
+
const auth = resolveLinearAuth({
|
|
102
|
+
env: deps.env,
|
|
103
|
+
readFile: deps.readFile,
|
|
104
|
+
home: deps.home,
|
|
105
|
+
});
|
|
106
|
+
if (!auth) {
|
|
107
|
+
deps.err("Linear auth: not found — run `otto-linear-auth login`.");
|
|
108
|
+
return 1;
|
|
109
|
+
}
|
|
110
|
+
const client = deps.makeClient(auth.token);
|
|
111
|
+
try {
|
|
112
|
+
switch (sub) {
|
|
113
|
+
case "list": {
|
|
114
|
+
const opts = listOpts;
|
|
115
|
+
const issues = await client.listIssues(opts);
|
|
116
|
+
if (issues.length === 0) {
|
|
117
|
+
deps.out(`No open Linear issues with label "${opts.label}".`);
|
|
118
|
+
return 0;
|
|
119
|
+
}
|
|
120
|
+
for (const i of issues) {
|
|
121
|
+
deps.out(`${i.identifier}\t${i.title}\t[${i.state}]\t${i.url}`);
|
|
122
|
+
}
|
|
123
|
+
return 0;
|
|
124
|
+
}
|
|
125
|
+
case "dump": {
|
|
126
|
+
const opts = listOpts;
|
|
127
|
+
const summaries = await client.listIssues(opts);
|
|
128
|
+
const details = [];
|
|
129
|
+
for (const s of summaries) {
|
|
130
|
+
details.push(await client.viewIssue({ kind: "identifier", identifier: s.identifier }));
|
|
131
|
+
}
|
|
132
|
+
deps.out(JSON.stringify(details, null, 2));
|
|
133
|
+
return 0;
|
|
134
|
+
}
|
|
135
|
+
case "view": {
|
|
136
|
+
const detail = await client.viewIssue(ref);
|
|
137
|
+
deps.out(JSON.stringify(detail, null, 2));
|
|
138
|
+
return 0;
|
|
139
|
+
}
|
|
140
|
+
case "comment": {
|
|
141
|
+
const body = deps.readFile(flags["body-file"]);
|
|
142
|
+
if (body == null) {
|
|
143
|
+
deps.err(`Could not read --body-file: ${flags["body-file"]}`);
|
|
144
|
+
return 2;
|
|
145
|
+
}
|
|
146
|
+
const issue = await client.viewIssue(ref);
|
|
147
|
+
await client.addComment(issue.id, body);
|
|
148
|
+
deps.out(`Commented on ${issue.identifier}.`);
|
|
149
|
+
return 0;
|
|
150
|
+
}
|
|
151
|
+
case "done": {
|
|
152
|
+
const issue = await client.viewIssue(ref);
|
|
153
|
+
const team = issue.identifier.split("-")[0];
|
|
154
|
+
const states = await client.listWorkflowStates(team);
|
|
155
|
+
const resolution = resolveDoneState(states, deps.env.OTTO_LINEAR_DONE_STATE);
|
|
156
|
+
if (resolution.kind === "ambiguous") {
|
|
157
|
+
deps.err(`Cannot move ${issue.identifier} to a done state: ${resolution.reason}. ` +
|
|
158
|
+
`Set OTTO_LINEAR_DONE_STATE or move it in Linear manually.`);
|
|
159
|
+
return 3;
|
|
160
|
+
}
|
|
161
|
+
const moved = await client.moveToDone(issue.id, resolution.state.id);
|
|
162
|
+
deps.out(`Moved ${issue.identifier} to ${moved.state}.`);
|
|
163
|
+
return 0;
|
|
164
|
+
}
|
|
165
|
+
default:
|
|
166
|
+
deps.err(USAGE);
|
|
167
|
+
return 2;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch (e) {
|
|
171
|
+
const kind = e instanceof LinearApiError ? ` (${e.kind})` : "";
|
|
172
|
+
deps.err(`Linear error${kind}: ${e.message}`);
|
|
173
|
+
return 1;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=linear-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear-cli.js","sourceRoot":"","sources":["../src/linear-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear-main.d.ts","sourceRoot":"","sources":["../src/linear-main.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,mBAAmB,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { parseLinearIssueArg } from "./linear-api.js";
|
|
2
|
+
import { runBin } from "./run-bin.js";
|
|
3
|
+
import { STAGES } from "./stages.js";
|
|
4
|
+
import { pollLinearIssues } from "./watch.js";
|
|
5
|
+
export async function runLinearAfk(argv, opts = {}) {
|
|
6
|
+
await runBin(argv, {
|
|
7
|
+
bin: "otto-linear-afk",
|
|
8
|
+
usage: "<iterations>",
|
|
9
|
+
desc: "Linear-issue-driven Claude Code AFK loop",
|
|
10
|
+
stages: [STAGES.linearImplementer, STAGES.reviewer],
|
|
11
|
+
takesInputArg: false,
|
|
12
|
+
cliVersion: opts.cliVersion,
|
|
13
|
+
issueStage: STAGES.linearIssueImplementer,
|
|
14
|
+
parseIssue: parseLinearIssueArg,
|
|
15
|
+
mode: "linear",
|
|
16
|
+
supportsWatch: true,
|
|
17
|
+
// Poll the same labelled set the implementer selects (OTTO_LINEAR_LABEL),
|
|
18
|
+
// narrowed by OTTO_LINEAR_TEAM. The `label` arg is the resolved watch label.
|
|
19
|
+
watchPoll: (label) => pollLinearIssues({
|
|
20
|
+
label,
|
|
21
|
+
team: process.env.OTTO_LINEAR_TEAM?.trim() || undefined,
|
|
22
|
+
}),
|
|
23
|
+
watchProvider: { name: "Linear", authCmd: "otto-linear-auth login" },
|
|
24
|
+
resolveWatchLabel: () => process.env.OTTO_LINEAR_LABEL?.trim() || "otto",
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=linear-main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear-main.js","sourceRoot":"","sources":["../src/linear-main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI9C,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAc,EACd,OAA4B,EAAE;IAE9B,MAAM,MAAM,CAAC,IAAI,EAAE;QACjB,GAAG,EAAE,iBAAiB;QACtB,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,0CAA0C;QAChD,MAAM,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,QAAQ,CAAC;QACnD,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU,EAAE,MAAM,CAAC,sBAAsB;QACzC,UAAU,EAAE,mBAAmB;QAC/B,IAAI,EAAE,QAAQ;QACd,aAAa,EAAE,IAAI;QACnB,0EAA0E;QAC1E,6EAA6E;QAC7E,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CACnB,gBAAgB,CAAC;YACf,KAAK;YACL,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,SAAS;SACxD,CAAC;QACJ,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,wBAAwB,EAAE;QACpE,iBAAiB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,MAAM;KACzE,CAAC,CAAC;AACL,CAAC"}
|
package/dist/loop.d.ts
CHANGED
package/dist/loop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAyBzC,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD;AAYD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA0B3D;AAYD,MAAM,MAAM,WAAW,GAAG;IAGxB,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,kGAAkG;IAClG,UAAU,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mEAAmE;IACnE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mHAAmH;IACnH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;gCAE4B;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAAC;AAEpE,wBAAsB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAkTrE"}
|
package/dist/loop.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { appendFileSync } from "node:fs";
|
|
1
|
+
import { appendFileSync, readFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
2
3
|
import { readCoreVersion } from "./cli-help.js";
|
|
3
4
|
import { acquire } from "./keepalive.js";
|
|
4
5
|
import { notifyComplete, notifyError } from "./notify.js";
|
|
@@ -16,6 +17,72 @@ const SENTINEL = "<promise>NO MORE TASKS</promise>";
|
|
|
16
17
|
const RATE_LIMIT_BUFFER_MS = 30_000;
|
|
17
18
|
const RATE_LIMIT_FALLBACK_MS = 15 * 60_000;
|
|
18
19
|
const DEFAULT_MAX_WAIT_MS = 6 * 3600_000;
|
|
20
|
+
// Maps each end-of-run exit reason (the strings passed to `summarize`) to a
|
|
21
|
+
// terse imperative hint telling the maintainer what to do next. Pure and
|
|
22
|
+
// exported so it is unit-testable; unknown reasons fall back to a generic hint
|
|
23
|
+
// rather than throwing.
|
|
24
|
+
const NEXT_ACTION = {
|
|
25
|
+
complete: "review the diff, then open a PR",
|
|
26
|
+
done: "review the diff, then open a PR",
|
|
27
|
+
"done with failures": "inspect the failed stage logs under `.otto-tmp/logs`, then re-run",
|
|
28
|
+
"stopped (budget)": "raise `--budget` and re-run to resume",
|
|
29
|
+
"halted (rate limit)": "re-run after the limit resets to resume",
|
|
30
|
+
aborted: "re-run to resume from the saved iteration",
|
|
31
|
+
"stopped (error)": "inspect the error above, then re-run",
|
|
32
|
+
};
|
|
33
|
+
export function nextActionFor(reason) {
|
|
34
|
+
return NEXT_ACTION[reason] ?? "re-run to resume";
|
|
35
|
+
}
|
|
36
|
+
// Counts *open* deferred findings recorded in `.otto/review-followups.md` by
|
|
37
|
+
// tallying top-level Markdown bullets (lines starting with "- ", no leading
|
|
38
|
+
// indent). The file is append-only across review sessions and never prunes, so
|
|
39
|
+
// a bullet whose block is marked FIXED/RESOLVED (on the bullet line or any of
|
|
40
|
+
// its indented continuation lines) is excluded — otherwise the count measures
|
|
41
|
+
// file age, not outstanding work. Headings, prose, blank lines, the lazy
|
|
42
|
+
// placeholder, and nested detail bullets are ignored. Lines inside a fenced
|
|
43
|
+
// code block (```…```) are skipped entirely, so a quoted diff or left-margin
|
|
44
|
+
// list in a finding's detail neither inflates the count nor ends the enclosing
|
|
45
|
+
// bullet. Pure + exported so it is unit-testable without a workspace.
|
|
46
|
+
export function countDeferredFollowups(text) {
|
|
47
|
+
const resolved = /\b(FIXED|RESOLVED)\b/;
|
|
48
|
+
let n = 0;
|
|
49
|
+
let open = false; // currently inside a top-level bullet not yet seen resolved
|
|
50
|
+
let inFence = false; // inside a ``` fenced code block — its lines never count
|
|
51
|
+
const flush = () => {
|
|
52
|
+
if (open)
|
|
53
|
+
n++;
|
|
54
|
+
open = false;
|
|
55
|
+
};
|
|
56
|
+
for (const line of text.split("\n")) {
|
|
57
|
+
if (/^\s*```/.test(line)) {
|
|
58
|
+
inFence = !inFence; // fence delimiter: toggle, never a bullet/heading
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
if (inFence)
|
|
62
|
+
continue; // code content neither counts nor ends a bullet
|
|
63
|
+
if (/^- /.test(line)) {
|
|
64
|
+
flush(); // close the previous bullet
|
|
65
|
+
open = !resolved.test(line);
|
|
66
|
+
}
|
|
67
|
+
else if (/^\s/.test(line)) {
|
|
68
|
+
if (open && resolved.test(line))
|
|
69
|
+
open = false; // continuation marks it done
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
flush(); // heading/prose/blank at col 0 ends the current bullet
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
flush();
|
|
76
|
+
return n;
|
|
77
|
+
}
|
|
78
|
+
function deferredFollowupCount(workspaceDir) {
|
|
79
|
+
try {
|
|
80
|
+
return countDeferredFollowups(readFileSync(join(workspaceDir, ".otto", "review-followups.md"), "utf8"));
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return 0; // absent/unreadable trail → nothing deferred to surface.
|
|
84
|
+
}
|
|
85
|
+
}
|
|
19
86
|
export async function runLoop(opts) {
|
|
20
87
|
const { stages, inputs, iterations, workspaceDir, packageDir, noKeepAlive = false, maxRetries = DEFAULT_MAX_RETRIES, notify = false, bin = "otto", cliVersion = "?", budgetUsd, cooldownMs = 0, reviewLenses, signal: externalSignal, mode = "afk", maxWaitMs = DEFAULT_MAX_WAIT_MS, fresh = false, } = opts;
|
|
21
88
|
const versionLine = `${bin} ${cliVersion} (core ${readCoreVersion()})`;
|
|
@@ -83,12 +150,19 @@ export async function runLoop(opts) {
|
|
|
83
150
|
};
|
|
84
151
|
};
|
|
85
152
|
// One consistent end-of-run summary across every terminal path: the exit
|
|
86
|
-
// reason, iterations run, and cumulative cost
|
|
87
|
-
//
|
|
153
|
+
// reason, iterations run, and cumulative cost, then a next-action hint so a
|
|
154
|
+
// maintainer reading the final line knows what to do next. Written to stdout
|
|
155
|
+
// (like the other completion lines) so it survives `> out.txt` redirection.
|
|
88
156
|
const summarize = (reason, iterations) => {
|
|
89
157
|
const iters = `${iterations} iteration${iterations === 1 ? "" : "s"}`;
|
|
90
|
-
|
|
91
|
-
`${dimOut(` · ${iters} · $${runCostUsd.toFixed(2)}`)}\n`
|
|
158
|
+
let line = `${greenOut(SYM_OUT.bullet)} ${boldOut(`Otto ${reason}`)}` +
|
|
159
|
+
`${dimOut(` · ${iters} · $${runCostUsd.toFixed(2)}`)}\n` +
|
|
160
|
+
`${dimOut(` → next: ${nextActionFor(reason)}`)}\n`;
|
|
161
|
+
const deferred = deferredFollowupCount(workspaceDir);
|
|
162
|
+
if (deferred > 0) {
|
|
163
|
+
line += `${dimOut(` ⚑ ${deferred} deferred follow-up${deferred === 1 ? "" : "s"} in .otto/review-followups.md`)}\n`;
|
|
164
|
+
}
|
|
165
|
+
process.stdout.write(line);
|
|
92
166
|
};
|
|
93
167
|
let sawFailure = false;
|
|
94
168
|
const nowIso = () => new Date().toISOString();
|
package/dist/loop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"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"}
|