@on-par/factory-cli 0.9.2 → 0.9.4
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/README.md +5 -3
- package/dist/cli/doctor.d.ts +78 -3
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +355 -33
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/first-run.d.ts +6 -1
- package/dist/cli/first-run.d.ts.map +1 -1
- package/dist/cli/first-run.js +9 -2
- package/dist/cli/first-run.js.map +1 -1
- package/dist/cli/index.d.ts +26 -5
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +244 -112
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/stop-sentinel.d.ts.map +1 -1
- package/dist/cli/stop-sentinel.js +4 -3
- package/dist/cli/stop-sentinel.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -11,16 +11,18 @@ Built in TypeScript. Routes work across Claude and Codex, with experimental loca
|
|
|
11
11
|
## Install
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
npm install -g @on-par/factory-cli
|
|
14
|
+
npm install -g @on-par/factory-cli # Requires Node.js 24 or newer
|
|
15
15
|
factory --version
|
|
16
16
|
factory doctor
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
Also requires `git`, one supported coding agent CLI (see [docs/agents.md](https://github.com/on-par/software-factory/blob/main/docs/agents.md)), signed in, and the GitHub CLI signed in with `gh auth login`. The factory reads `GITHUB_TOKEN`, then `GH_TOKEN`, and falls back to `gh auth token`. `factory doctor` checks all of this and prints a fix for anything missing. It also checks your git identity and the sandbox runtime, and it runs outside a repo.
|
|
20
|
+
|
|
21
|
+
`factory init` creates a local-only `.factory/` (git-excluded) with a `default-code` constitution. See the main README quick start.
|
|
20
22
|
|
|
21
23
|
## Safety
|
|
22
24
|
|
|
23
|
-
Agents run with their permission prompts off (Claude Code with `--permission-mode bypassPermissions`, Codex with `approval_policy=never`) in a separate git worktree
|
|
25
|
+
Agents run with their permission prompts off (Claude Code with `--permission-mode bypassPermissions`, Codex with `approval_policy=never`) in a separate git worktree under `~/.factory/worktrees/<owner>/<repo>/`, with your permissions and your GitHub token. Only point the factory at repos and issues you trust. It never merges by default: `factory run` and `factory supervise` merge only if you turn auto-merge on (`FACTORY_MERGE=1`, `run.merge.auto: true`, or `--auto-merge`), and `factory land` merges when you run it. Details are in the [Safety section](https://github.com/on-par/software-factory#safety) and [SECURITY.md](https://github.com/on-par/software-factory/blob/main/SECURITY.md).
|
|
24
26
|
|
|
25
27
|
## Updating
|
|
26
28
|
|
package/dist/cli/doctor.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DeclaredHarnessProbe } from '@on-par/factory-core';
|
|
1
2
|
export interface DoctorCheck {
|
|
2
3
|
name: string;
|
|
3
4
|
ok: boolean;
|
|
@@ -6,12 +7,22 @@ export interface DoctorCheck {
|
|
|
6
7
|
fix?: string;
|
|
7
8
|
/** Optional checks never fail the doctor exit code. */
|
|
8
9
|
optional?: boolean;
|
|
10
|
+
/** Setup section the row renders under (#2555); unsectioned rows render first. */
|
|
11
|
+
section?: string;
|
|
12
|
+
/** Exactly one shell command to run next (#2557); rendered as the last line of a non-ok row. */
|
|
13
|
+
next?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface DoctorExecOptions {
|
|
16
|
+
/** Extra env vars merged over process.env for this command. */
|
|
17
|
+
env?: Record<string, string>;
|
|
18
|
+
/** Kill the command after this many ms; the probe then returns null. */
|
|
19
|
+
timeoutMs?: number;
|
|
9
20
|
}
|
|
10
21
|
export interface DoctorEnvProbes {
|
|
11
22
|
commandAvailable: (cmd: string) => boolean;
|
|
12
23
|
envPresent: (key: string) => boolean;
|
|
13
|
-
/** Run a command, return trimmed stdout, or null if it fails. */
|
|
14
|
-
tryExec: (cmd: string) => string | null;
|
|
24
|
+
/** Run a command, return trimmed stdout, or null if it fails. `opts` adds env vars and a timeout. */
|
|
25
|
+
tryExec: (cmd: string, opts?: DoctorExecOptions) => string | null;
|
|
15
26
|
pathExists: (p: string) => boolean;
|
|
16
27
|
/** Host platform; defaults to process.platform. */
|
|
17
28
|
platform?: NodeJS.Platform;
|
|
@@ -19,8 +30,18 @@ export interface DoctorEnvProbes {
|
|
|
19
30
|
fresh: boolean;
|
|
20
31
|
detail: string;
|
|
21
32
|
};
|
|
33
|
+
/** Stored Codex ChatGPT session state (#2509), read locally; never refreshes. */
|
|
34
|
+
codexSessionState?: () => 'ok' | 'refresh-pending' | 'unusable' | 'unknown';
|
|
35
|
+
/** Whether a stored Claude Code login exists (#2556); reads local state only, never runs inference. */
|
|
36
|
+
claudeLoggedIn?: () => boolean;
|
|
37
|
+
/** Whether a stored opencode auth login exists (#2556); reads local state only, never runs inference. */
|
|
38
|
+
opencodeLoggedIn?: () => boolean;
|
|
22
39
|
}
|
|
40
|
+
/** Repo wired-up rows, sectioned only inside a git repo (#2557). */
|
|
41
|
+
export declare const REPO_SECTION = "Repo";
|
|
23
42
|
export declare const NOT_IN_REPO_HINT = "cd into your repo, then run factory doctor again";
|
|
43
|
+
/** Detail for every repo wired-up row when doctor runs outside a git repository (#2554). */
|
|
44
|
+
export declare const NOT_IN_REPO_SKIP_DETAIL = "skipped \u2014 not inside a git repository; cd into your repo, then run factory doctor again";
|
|
24
45
|
export declare function hasSandboxRuntime(platform: NodeJS.Platform, commandAvailable: (cmd: string) => boolean): boolean;
|
|
25
46
|
/** Reason the sandboxed claude auth probe is skipped before a sandbox policy is resolved,
|
|
26
47
|
* or null when cmdDoctor should resolve the policy as before (#2383). */
|
|
@@ -29,8 +50,51 @@ export declare function sandboxAuthSkipDetail(opts: {
|
|
|
29
50
|
hostOk: boolean;
|
|
30
51
|
inRepo: boolean;
|
|
31
52
|
}): string | null;
|
|
53
|
+
/** Sign-in method reported by `codex login status`, or null when it shows no login. Never returns
|
|
54
|
+
* any part of a credential: only a fixed label is derived from the status text. */
|
|
55
|
+
export declare function codexAuthMethod(statusOutput: string | null): string | null;
|
|
56
|
+
/** Non-interactive read-only probe of origin. `credential.interactive=never` turns off Git
|
|
57
|
+
* Credential Manager UI and an empty `core.askPass` turns off configured askpass programs;
|
|
58
|
+
* stored credentials from any helper still work. */
|
|
59
|
+
export declare const GIT_AUTH_PROBE_CMD = "git -c credential.interactive=never -c core.askPass= ls-remote --quiet origin HEAD";
|
|
60
|
+
/** GIT_TERMINAL_PROMPT=0 makes git fail instead of asking on the terminal; empty GIT_ASKPASS
|
|
61
|
+
* and SSH_ASKPASS turn off askpass programs and ssh's GUI askpass; GCM_INTERACTIVE=never
|
|
62
|
+
* turns off Git Credential Manager prompts. */
|
|
63
|
+
export declare const GIT_AUTH_PROBE_ENV: Readonly<Record<string, string>>;
|
|
64
|
+
/** Bounds the probe, e.g. an ssh key passphrase prompt that waits on /dev/tty. */
|
|
65
|
+
export declare const GIT_AUTH_PROBE_TIMEOUT_MS = 15000;
|
|
66
|
+
/** Remedy shown only when the git-auth probe fails: wires git's credential helper to gh. */
|
|
67
|
+
export declare const GIT_AUTH_FIX = "run `gh auth setup-git` so git uses your gh credentials, then re-run `factory doctor`";
|
|
68
|
+
/** Git-auth check (#2482, #2483): skipped, never failing, outside a git repository or without
|
|
69
|
+
* an origin remote. Otherwise runs a non-interactive `git ls-remote` against origin and fails
|
|
70
|
+
* when it cannot authenticate. The detail never echoes the origin URL, which may hold a token. */
|
|
71
|
+
export declare function gitAuthCheck(repoRoot: string | null, tryExec: (cmd: string, opts?: DoctorExecOptions) => string | null): DoctorCheck;
|
|
72
|
+
export interface HarnessSetup {
|
|
73
|
+
section: string;
|
|
74
|
+
cli: string;
|
|
75
|
+
install: string;
|
|
76
|
+
/** Exact shell command that signs the harness in (#2556); also the row's `next` command. */
|
|
77
|
+
login: string;
|
|
78
|
+
/** Env vars that count as sign-in evidence (#2556). */
|
|
79
|
+
envKeys: readonly string[];
|
|
80
|
+
}
|
|
81
|
+
/** One doctor section per built-in harness (#2555), in display order. */
|
|
82
|
+
export declare const HARNESS_SETUP: readonly HarnessSetup[];
|
|
83
|
+
/** One optional `<cli> installed` row per harness, with the CLI version when found and the install command when not (#2555). */
|
|
84
|
+
export declare function harnessInstallChecks(commandAvailable: (cmd: string) => boolean, tryExec: (cmd: string) => string | null): DoctorCheck[];
|
|
85
|
+
/** One `<cli> signed in` row per harness (#2556), judged only from local evidence: an env key,
|
|
86
|
+
* stored credentials, or `codex login status`. Never runs inference and never prints a secret. */
|
|
87
|
+
export declare function harnessSignInChecks(probes: DoctorEnvProbes): DoctorCheck[];
|
|
88
|
+
/** Coding agent prerequisites: at least one agent CLI is required; each CLI is then reported
|
|
89
|
+
* on its own optional line, with sign-in reported separately from installation (#1269, #2422, #2555, #2556). */
|
|
90
|
+
export declare function agentCliChecks(probes: DoctorEnvProbes): DoctorCheck[];
|
|
32
91
|
export declare function runDoctorChecks(probes: DoctorEnvProbes): DoctorCheck[];
|
|
33
|
-
|
|
92
|
+
/** Row icon (#2550): ❌ only for a failure (counted in "N failed"), ➖ for a skipped row, ⚠️ for an optional warning. */
|
|
93
|
+
export declare function doctorCheckIcon(check: DoctorCheck): string;
|
|
94
|
+
/** Outside a repo the models hint is skipped because `factory models --doctor` needs a repo (#2472). */
|
|
95
|
+
export declare function formatDoctorChecks(checks: DoctorCheck[], opts?: {
|
|
96
|
+
inRepo?: boolean;
|
|
97
|
+
}): string;
|
|
34
98
|
export declare function doctorFailed(checks: DoctorCheck[]): boolean;
|
|
35
99
|
/** Which Claude profile a keychain probe checked: the keychain service name and, for a
|
|
36
100
|
* non-default profile, the CLAUDE_CONFIG_DIR it belongs to. Absent = default profile. */
|
|
@@ -64,6 +128,10 @@ export interface ClaudeAuthProbeResult {
|
|
|
64
128
|
* differential — host ok, sandboxed failed — is a hard doctor failure; that is the one
|
|
65
129
|
* combination that proves the sandbox, not the credentials, is at fault. */
|
|
66
130
|
export declare function sandboxClaudeAuthChecks(result: ClaudeAuthProbeResult): DoctorCheck[];
|
|
131
|
+
/** #2496: doctor fails on agent sign-in only when no installed agent is signed in. A logged-out
|
|
132
|
+
* agent is a warning while another one is signed in, and a hard failure when none is. Skipped
|
|
133
|
+
* probes (optional passes, e.g. a `<cli> signed in` row for a CLI not on PATH) never count as signed in. */
|
|
134
|
+
export declare function reconcileAgentAuthChecks(checks: DoctorCheck[]): DoctorCheck[];
|
|
67
135
|
export interface LeaseHealthRow {
|
|
68
136
|
worktreeId: string;
|
|
69
137
|
branch: string;
|
|
@@ -135,4 +203,11 @@ export type GreenPrScanResult = {
|
|
|
135
203
|
detail: string;
|
|
136
204
|
};
|
|
137
205
|
export declare function unmergedGreenPrChecks(result: GreenPrScanResult): DoctorCheck[];
|
|
206
|
+
/** One doctor check per user-declared harness, from its `probe` result. */
|
|
207
|
+
export declare function declaredHarnessChecks(probes: DeclaredHarnessProbe[]): DoctorCheck[];
|
|
208
|
+
/** One failed check per models.registry entry whose harness is missing or unknown;
|
|
209
|
+
* a single ok row when every entry is valid; nothing when there is no registry. */
|
|
210
|
+
export declare function modelsRegistryChecks(configPath: string, registry: Readonly<Record<string, {
|
|
211
|
+
harness?: string;
|
|
212
|
+
}>> | undefined, validHarnesses: readonly string[]): DoctorCheck[];
|
|
138
213
|
//# sourceMappingURL=doctor.d.ts.map
|
package/dist/cli/doctor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
|