@izantech/lineup-cli 2.0.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 ADDED
@@ -0,0 +1,40 @@
1
+ import { Command } from 'commander';
2
+
3
+ type InstallCommandOptions = {
4
+ host?: string;
5
+ version?: string;
6
+ fromDir?: string;
7
+ yes?: boolean;
8
+ };
9
+
10
+ type StatusCommandOptions = {
11
+ host?: string;
12
+ json?: boolean;
13
+ };
14
+
15
+ type UninstallCommandOptions = {
16
+ host?: string;
17
+ yes?: boolean;
18
+ purge?: boolean;
19
+ };
20
+
21
+ type UpdateCommandOptions = {
22
+ host?: string;
23
+ version?: string;
24
+ fromDir?: string;
25
+ yes?: boolean;
26
+ };
27
+
28
+ type CliHandlers = {
29
+ install: (options: InstallCommandOptions) => Promise<void>;
30
+ update: (options: UpdateCommandOptions) => Promise<void>;
31
+ uninstall: (options: UninstallCommandOptions) => Promise<void>;
32
+ status: (options: StatusCommandOptions) => Promise<void>;
33
+ };
34
+ declare function buildProgram(handlers?: Partial<CliHandlers>): Command;
35
+ declare function printCliError(error: unknown): void;
36
+ declare function resolveExitCode(error: unknown): number;
37
+ declare function handleFatalError(error: unknown): never;
38
+ declare function run(argv?: string[]): Promise<void>;
39
+
40
+ export { type CliHandlers, buildProgram, handleFatalError, printCliError, resolveExitCode, run };
package/dist/cli.js ADDED
@@ -0,0 +1,14 @@
1
+ import {
2
+ buildProgram,
3
+ handleFatalError,
4
+ printCliError,
5
+ resolveExitCode,
6
+ run
7
+ } from "./chunk-RQBQVCEG.js";
8
+ export {
9
+ buildProgram,
10
+ handleFatalError,
11
+ printCliError,
12
+ resolveExitCode,
13
+ run
14
+ };
@@ -0,0 +1,36 @@
1
+ export { CliHandlers, buildProgram, printCliError, resolveExitCode, run } from './cli.js';
2
+ import 'commander';
3
+
4
+ declare const SUPPORTED_HOSTS: readonly ["claude", "codex"];
5
+ type HostName = (typeof SUPPORTED_HOSTS)[number];
6
+
7
+ type HostState = {
8
+ installed: boolean;
9
+ version?: string | null;
10
+ source?: string | null;
11
+ skills_dir?: string | null;
12
+ last_action: "install" | "update" | "uninstall" | null;
13
+ last_updated_at: string | null;
14
+ };
15
+ type InstallerState = {
16
+ schema_version: number;
17
+ updated_at: string | null;
18
+ hosts: Partial<Record<HostName, HostState>>;
19
+ };
20
+ type ReleaseManifest = {
21
+ tag: string;
22
+ tarball_url: string;
23
+ sha256: string;
24
+ published_at?: string;
25
+ generated_at?: string;
26
+ };
27
+
28
+ type HostAdapter = {
29
+ host: string;
30
+ vars: Record<string, string>;
31
+ };
32
+ declare function validateHostAdapter(payload: unknown, source: string): HostAdapter;
33
+ declare function validateInstallerState(payload: unknown, source: string): InstallerState;
34
+ declare function validateReleaseManifest(payload: unknown, source: string): ReleaseManifest;
35
+
36
+ export { validateHostAdapter, validateInstallerState, validateReleaseManifest };
package/dist/index.js ADDED
@@ -0,0 +1,18 @@
1
+ import {
2
+ buildProgram,
3
+ printCliError,
4
+ resolveExitCode,
5
+ run,
6
+ validateHostAdapter,
7
+ validateInstallerState,
8
+ validateReleaseManifest
9
+ } from "./chunk-RQBQVCEG.js";
10
+ export {
11
+ buildProgram,
12
+ printCliError,
13
+ resolveExitCode,
14
+ run,
15
+ validateHostAdapter,
16
+ validateInstallerState,
17
+ validateReleaseManifest
18
+ };
package/package.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "@izantech/lineup-cli",
3
+ "version": "2.0.0",
4
+ "private": false,
5
+ "description": "Lineup multi-host installer and manager for Claude Code and Codex",
6
+ "license": "MIT",
7
+ "type": "module",
8
+ "engines": {
9
+ "node": ">=20"
10
+ },
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://github.com/izantech/lineup"
14
+ },
15
+ "homepage": "https://github.com/izantech/lineup",
16
+ "bugs": {
17
+ "url": "https://github.com/izantech/lineup/issues"
18
+ },
19
+ "keywords": [
20
+ "lineup",
21
+ "cli",
22
+ "claude",
23
+ "codex",
24
+ "agentic"
25
+ ],
26
+ "main": "./dist/index.js",
27
+ "module": "./dist/index.js",
28
+ "types": "./dist/index.d.ts",
29
+ "exports": {
30
+ ".": {
31
+ "types": "./dist/index.d.ts",
32
+ "import": "./dist/index.js"
33
+ },
34
+ "./cli": {
35
+ "import": "./dist/cli.js"
36
+ }
37
+ },
38
+ "bin": {
39
+ "lineup": "bin/lineup.mjs"
40
+ },
41
+ "files": [
42
+ "dist",
43
+ "bin",
44
+ "schemas",
45
+ "README.md"
46
+ ],
47
+ "scripts": {
48
+ "dev": "tsx src/cli.ts",
49
+ "build": "tsup src/cli.ts src/index.ts --format esm --target node20 --out-dir dist --clean --dts",
50
+ "typecheck": "tsc --noEmit",
51
+ "test": "vitest run",
52
+ "schema:check": "tsx src/scripts/schema-check.ts",
53
+ "generate:check": "tsx src/scripts/generate-check.ts",
54
+ "smoke:dist": "tsx src/scripts/smoke-dist.ts"
55
+ },
56
+ "dependencies": {
57
+ "ajv": "^8.17.1",
58
+ "ajv-formats": "^3.0.1",
59
+ "commander": "^14.0.3",
60
+ "yaml": "^2.8.1"
61
+ },
62
+ "devDependencies": {
63
+ "@types/node": "^22.18.1",
64
+ "tsup": "^8.5.0",
65
+ "tsx": "^4.20.4",
66
+ "typescript": "^5.9.2",
67
+ "vitest": "^3.2.4"
68
+ }
69
+ }
@@ -0,0 +1,58 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://lineup.izantech.app/schemas/json/host-adapter.schema.json",
4
+ "title": "Lineup Host Adapter",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["host", "vars"],
8
+ "properties": {
9
+ "host": {
10
+ "type": "string",
11
+ "enum": ["claude", "codex", "gemini"]
12
+ },
13
+ "vars": {
14
+ "type": "object",
15
+ "additionalProperties": false,
16
+ "required": [
17
+ "SKILL_NAME_KICKOFF",
18
+ "SKILL_NAME_CONFIGURE",
19
+ "SKILL_NAME_EXPLAIN",
20
+ "SKILL_NAME_PLAYBOOK",
21
+ "CMD_KICKOFF",
22
+ "CMD_CONFIGURE",
23
+ "CMD_EXPLAIN",
24
+ "CMD_PLAYBOOK",
25
+ "KICKOFF_INIT_PATH",
26
+ "QUESTION_PRIMITIVE",
27
+ "OVERRIDES_DIR",
28
+ "MEMORY_USER_DIR",
29
+ "MEMORY_PROJECT_DIR",
30
+ "HOST_TERM_PLUGIN",
31
+ "HOST_TERM_PLUGIN_POSSESSIVE",
32
+ "HOST_DEFAULTS_TERM",
33
+ "HOST_ARTIFACT_LABEL",
34
+ "HOST_ARTIFACT_LABEL_LOWER"
35
+ ],
36
+ "properties": {
37
+ "SKILL_NAME_KICKOFF": { "type": "string" },
38
+ "SKILL_NAME_CONFIGURE": { "type": "string" },
39
+ "SKILL_NAME_EXPLAIN": { "type": "string" },
40
+ "SKILL_NAME_PLAYBOOK": { "type": "string" },
41
+ "CMD_KICKOFF": { "type": "string" },
42
+ "CMD_CONFIGURE": { "type": "string" },
43
+ "CMD_EXPLAIN": { "type": "string" },
44
+ "CMD_PLAYBOOK": { "type": "string" },
45
+ "KICKOFF_INIT_PATH": { "type": "string" },
46
+ "QUESTION_PRIMITIVE": { "type": "string" },
47
+ "OVERRIDES_DIR": { "type": "string" },
48
+ "MEMORY_USER_DIR": { "type": "string" },
49
+ "MEMORY_PROJECT_DIR": { "type": "string" },
50
+ "HOST_TERM_PLUGIN": { "type": "string" },
51
+ "HOST_TERM_PLUGIN_POSSESSIVE": { "type": "string" },
52
+ "HOST_DEFAULTS_TERM": { "type": "string" },
53
+ "HOST_ARTIFACT_LABEL": { "type": "string" },
54
+ "HOST_ARTIFACT_LABEL_LOWER": { "type": "string" }
55
+ }
56
+ }
57
+ }
58
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://lineup.izantech.app/schemas/json/release-manifest.schema.json",
4
+ "title": "Lineup Release Manifest",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["tag", "tarball_url", "sha256"],
8
+ "properties": {
9
+ "tag": {
10
+ "type": "string",
11
+ "minLength": 1
12
+ },
13
+ "tarball_url": {
14
+ "type": "string",
15
+ "format": "uri"
16
+ },
17
+ "sha256": {
18
+ "type": "string",
19
+ "pattern": "^[a-fA-F0-9]{64}$"
20
+ },
21
+ "published_at": {
22
+ "type": "string",
23
+ "format": "date-time"
24
+ },
25
+ "generated_at": {
26
+ "type": "string",
27
+ "format": "date-time"
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://lineup.izantech.app/schemas/json/state.schema.json",
4
+ "title": "Lineup CLI State",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schema_version", "updated_at", "hosts"],
8
+ "properties": {
9
+ "schema_version": {
10
+ "type": "integer",
11
+ "minimum": 1
12
+ },
13
+ "updated_at": {
14
+ "type": ["string", "null"],
15
+ "format": "date-time"
16
+ },
17
+ "hosts": {
18
+ "type": "object",
19
+ "additionalProperties": false,
20
+ "properties": {
21
+ "claude": {
22
+ "$ref": "#/$defs/hostState"
23
+ },
24
+ "codex": {
25
+ "$ref": "#/$defs/hostState"
26
+ }
27
+ }
28
+ }
29
+ },
30
+ "$defs": {
31
+ "hostState": {
32
+ "type": "object",
33
+ "additionalProperties": false,
34
+ "required": ["installed", "last_action", "last_updated_at"],
35
+ "properties": {
36
+ "installed": {
37
+ "type": "boolean"
38
+ },
39
+ "version": {
40
+ "type": ["string", "null"]
41
+ },
42
+ "source": {
43
+ "type": ["string", "null"]
44
+ },
45
+ "skills_dir": {
46
+ "type": ["string", "null"]
47
+ },
48
+ "last_action": {
49
+ "type": ["string", "null"],
50
+ "enum": ["install", "update", "uninstall", null]
51
+ },
52
+ "last_updated_at": {
53
+ "type": ["string", "null"],
54
+ "format": "date-time"
55
+ }
56
+ }
57
+ }
58
+ }
59
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://lineup.izantech.app/schemas/yaml/agent-output/architect.schema.json",
4
+ "type": "object",
5
+ "additionalProperties": true,
6
+ "required": ["type", "agent", "date", "topic", "status", "pipeline_stage"],
7
+ "properties": {
8
+ "type": { "const": "plan" },
9
+ "agent": { "const": "architect" },
10
+ "date": { "type": "string" },
11
+ "topic": { "type": "string" },
12
+ "status": { "enum": ["draft", "approved", "superseded"] },
13
+ "pipeline_stage": { "type": ["integer", "string"] }
14
+ }
15
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://lineup.izantech.app/schemas/yaml/agent-output/developer.schema.json",
4
+ "type": "object",
5
+ "additionalProperties": true,
6
+ "required": ["type", "agent", "date", "topic", "status", "pipeline_stage", "plan_ref"],
7
+ "properties": {
8
+ "type": { "const": "implementation" },
9
+ "agent": { "const": "developer" },
10
+ "date": { "type": "string" },
11
+ "topic": { "type": "string" },
12
+ "status": { "const": "complete" },
13
+ "pipeline_stage": { "type": ["integer", "string"] },
14
+ "plan_ref": { "type": "string" }
15
+ }
16
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://lineup.izantech.app/schemas/yaml/agent-output/documenter.schema.json",
4
+ "type": "object",
5
+ "additionalProperties": true,
6
+ "required": ["type", "agent", "date", "topic", "status", "pipeline_stage"],
7
+ "properties": {
8
+ "type": { "const": "documentation" },
9
+ "agent": { "const": "documenter" },
10
+ "date": { "type": "string" },
11
+ "topic": { "type": "string" },
12
+ "status": { "const": "complete" },
13
+ "pipeline_stage": { "type": ["integer", "string", "null"] }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://lineup.izantech.app/schemas/yaml/agent-output/researcher.schema.json",
4
+ "type": "object",
5
+ "additionalProperties": true,
6
+ "required": ["type", "agent", "date", "topic", "status", "pipeline_stage"],
7
+ "properties": {
8
+ "type": { "const": "research" },
9
+ "agent": { "const": "researcher" },
10
+ "date": { "type": "string" },
11
+ "topic": { "type": "string" },
12
+ "status": { "const": "complete" },
13
+ "pipeline_stage": { "type": ["integer", "string"] }
14
+ }
15
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://lineup.izantech.app/schemas/yaml/agent-output/reviewer.schema.json",
4
+ "type": "object",
5
+ "additionalProperties": true,
6
+ "required": ["type", "agent", "date", "topic", "status", "pipeline_stage", "plan_ref"],
7
+ "properties": {
8
+ "type": { "const": "review" },
9
+ "agent": { "const": "reviewer" },
10
+ "date": { "type": "string" },
11
+ "topic": { "type": "string" },
12
+ "status": { "enum": ["PASS", "FAIL", "PASS_WITH_WARNINGS"] },
13
+ "pipeline_stage": { "type": ["integer", "string"] },
14
+ "plan_ref": { "type": "string" }
15
+ }
16
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://lineup.izantech.app/schemas/yaml/agent-output/teacher.schema.json",
4
+ "type": "object",
5
+ "additionalProperties": true,
6
+ "required": ["type", "agent", "date", "topic", "status", "pipeline_stage"],
7
+ "properties": {
8
+ "type": { "const": "explanation" },
9
+ "agent": { "const": "teacher" },
10
+ "date": { "type": "string" },
11
+ "topic": { "type": "string" },
12
+ "status": { "const": "complete" },
13
+ "pipeline_stage": { "type": ["integer", "string", "null"] }
14
+ }
15
+ }
@@ -0,0 +1,85 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://lineup.izantech.app/schemas/yaml/tactic.schema.json",
4
+ "title": "Lineup Tactic",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["name", "description", "stages", "verification"],
8
+ "properties": {
9
+ "name": {
10
+ "type": "string",
11
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
12
+ },
13
+ "description": {
14
+ "type": "string",
15
+ "minLength": 1
16
+ },
17
+ "stages": {
18
+ "type": "array",
19
+ "minItems": 1,
20
+ "items": {
21
+ "type": "object",
22
+ "additionalProperties": false,
23
+ "required": ["type", "agent"],
24
+ "properties": {
25
+ "type": {
26
+ "type": "string",
27
+ "enum": [
28
+ "clarify",
29
+ "research",
30
+ "clarification-gate",
31
+ "plan",
32
+ "implement",
33
+ "verify",
34
+ "document",
35
+ "explain"
36
+ ]
37
+ },
38
+ "agent": {
39
+ "type": "string",
40
+ "enum": ["researcher", "architect", "developer", "reviewer", "documenter", "teacher"]
41
+ },
42
+ "prompt": {
43
+ "type": "string"
44
+ },
45
+ "optional": {
46
+ "type": "boolean"
47
+ },
48
+ "gate": {
49
+ "type": ["string", "null"],
50
+ "enum": ["approval", null]
51
+ }
52
+ }
53
+ }
54
+ },
55
+ "verification": {
56
+ "type": "array",
57
+ "minItems": 1,
58
+ "items": {
59
+ "type": "string",
60
+ "minLength": 1
61
+ }
62
+ },
63
+ "variables": {
64
+ "type": "array",
65
+ "items": {
66
+ "type": "object",
67
+ "additionalProperties": false,
68
+ "required": ["name", "description"],
69
+ "properties": {
70
+ "name": {
71
+ "type": "string",
72
+ "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
73
+ },
74
+ "description": {
75
+ "type": "string",
76
+ "minLength": 1
77
+ },
78
+ "default": {
79
+ "type": "string"
80
+ }
81
+ }
82
+ }
83
+ }
84
+ }
85
+ }