@pleri/olam-cli 0.1.175 → 0.1.182
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 +19 -0
- package/bin/olam.cjs +22 -0
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +67 -19
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +93 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/destroy.d.ts +41 -0
- package/dist/commands/destroy.d.ts.map +1 -1
- package/dist/commands/destroy.js +81 -33
- package/dist/commands/destroy.js.map +1 -1
- package/dist/commands/dispatch-resolve.d.ts +54 -0
- package/dist/commands/dispatch-resolve.d.ts.map +1 -0
- package/dist/commands/dispatch-resolve.js +105 -0
- package/dist/commands/dispatch-resolve.js.map +1 -0
- package/dist/commands/dispatch.d.ts.map +1 -1
- package/dist/commands/dispatch.js +40 -9
- package/dist/commands/dispatch.js.map +1 -1
- package/dist/commands/flywheel/index.d.ts.map +1 -1
- package/dist/commands/flywheel/index.js +4 -0
- package/dist/commands/flywheel/index.js.map +1 -1
- package/dist/commands/flywheel/install-sessionstart-hook.d.ts +64 -0
- package/dist/commands/flywheel/install-sessionstart-hook.d.ts.map +1 -0
- package/dist/commands/flywheel/install-sessionstart-hook.js +197 -0
- package/dist/commands/flywheel/install-sessionstart-hook.js.map +1 -0
- package/dist/commands/flywheel/k5-validate.d.ts +31 -0
- package/dist/commands/flywheel/k5-validate.d.ts.map +1 -1
- package/dist/commands/flywheel/k5-validate.js +80 -19
- package/dist/commands/flywheel/k5-validate.js.map +1 -1
- package/dist/commands/flywheel/session-start.d.ts +26 -0
- package/dist/commands/flywheel/session-start.d.ts.map +1 -0
- package/dist/commands/flywheel/session-start.js +119 -0
- package/dist/commands/flywheel/session-start.js.map +1 -0
- package/dist/commands/host-cp.d.ts +0 -3
- package/dist/commands/host-cp.d.ts.map +1 -1
- package/dist/commands/host-cp.js +27 -2
- package/dist/commands/host-cp.js.map +1 -1
- package/dist/commands/kg-classify.d.ts.map +1 -1
- package/dist/commands/kg-classify.js +20 -0
- package/dist/commands/kg-classify.js.map +1 -1
- package/dist/commands/kg-doctor.d.ts +67 -6
- package/dist/commands/kg-doctor.d.ts.map +1 -1
- package/dist/commands/kg-doctor.js +126 -46
- package/dist/commands/kg-doctor.js.map +1 -1
- package/dist/commands/list.d.ts +27 -0
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +67 -19
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/memory/status.d.ts +18 -0
- package/dist/commands/memory/status.d.ts.map +1 -1
- package/dist/commands/memory/status.js +38 -2
- package/dist/commands/memory/status.js.map +1 -1
- package/dist/commands/memory-service-container.d.ts +44 -0
- package/dist/commands/memory-service-container.d.ts.map +1 -1
- package/dist/commands/memory-service-container.js +49 -0
- package/dist/commands/memory-service-container.js.map +1 -1
- package/dist/commands/ps.d.ts +32 -0
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +34 -0
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/runbooks.d.ts +32 -0
- package/dist/commands/runbooks.d.ts.map +1 -1
- package/dist/commands/runbooks.js +79 -22
- package/dist/commands/runbooks.js.map +1 -1
- package/dist/commands/skills-source.d.ts.map +1 -1
- package/dist/commands/skills-source.js +77 -2
- package/dist/commands/skills-source.js.map +1 -1
- package/dist/commands/upgrade-history.d.ts +0 -2
- package/dist/commands/upgrade-history.d.ts.map +1 -1
- package/dist/commands/upgrade-history.js +0 -6
- package/dist/commands/upgrade-history.js.map +1 -1
- package/dist/commands/upgrade-lock.d.ts +0 -9
- package/dist/commands/upgrade-lock.d.ts.map +1 -1
- package/dist/commands/upgrade-lock.js +1 -1
- package/dist/commands/upgrade-lock.js.map +1 -1
- package/dist/commands/world-snapshot.d.ts +13 -0
- package/dist/commands/world-snapshot.d.ts.map +1 -1
- package/dist/commands/world-snapshot.js +81 -1
- package/dist/commands/world-snapshot.js.map +1 -1
- package/dist/commands/yolo.d.ts +95 -0
- package/dist/commands/yolo.d.ts.map +1 -0
- package/dist/commands/yolo.js +377 -0
- package/dist/commands/yolo.js.map +1 -0
- package/dist/image-digests.json +8 -8
- package/dist/index.js +3990 -2445
- package/dist/index.js.map +1 -1
- package/dist/lib/anthropic-base-url-file.d.ts +37 -0
- package/dist/lib/anthropic-base-url-file.d.ts.map +1 -0
- package/dist/lib/anthropic-base-url-file.js +46 -0
- package/dist/lib/anthropic-base-url-file.js.map +1 -0
- package/dist/lib/auth-remote.d.ts +9 -17
- package/dist/lib/auth-remote.d.ts.map +1 -1
- package/dist/lib/auth-remote.js +25 -20
- package/dist/lib/auth-remote.js.map +1 -1
- package/dist/lib/cf-access-token.d.ts +32 -0
- package/dist/lib/cf-access-token.d.ts.map +1 -0
- package/dist/lib/cf-access-token.js +52 -0
- package/dist/lib/cf-access-token.js.map +1 -0
- package/dist/lib/config.d.ts +17 -3
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +28 -4
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/kubectl-context.d.ts +49 -0
- package/dist/lib/kubectl-context.d.ts.map +1 -1
- package/dist/lib/kubectl-context.js +64 -2
- package/dist/lib/kubectl-context.js.map +1 -1
- package/dist/lib/upgrade-kubernetes.d.ts +7 -0
- package/dist/lib/upgrade-kubernetes.d.ts.map +1 -1
- package/dist/lib/upgrade-kubernetes.js +35 -8
- package/dist/lib/upgrade-kubernetes.js.map +1 -1
- package/dist/mcp-server.js +1470 -991
- package/hermes-bundle/version.json +1 -1
- package/host-cp/k8s/manifests/45-pvc.yaml +6 -2
- package/host-cp/k8s/manifests/50-deployment.yaml +1 -1
- package/host-cp/k8s/manifests/auth-service/50-deployment.yaml +1 -1
- package/host-cp/k8s/manifests/kg-service/50-deployment.yaml +1 -1
- package/host-cp/k8s/manifests/mcp-auth-service/50-deployment.yaml +1 -1
- package/host-cp/k8s/manifests/memory-service/50-deployment.yaml +1 -1
- package/host-cp/observability/trace-summary.mjs +267 -0
- package/host-cp/src/bootstrap-selective.mjs +58 -0
- package/host-cp/src/host-stream.mjs +52 -0
- package/host-cp/src/plan-chat-service.mjs +51 -0
- package/host-cp/src/redirect.mjs +159 -0
- package/host-cp/src/resolver.mjs +121 -0
- package/host-cp/src/router.mjs +168 -0
- package/host-cp/src/serve-only-config.mjs +85 -0
- package/host-cp/src/server.mjs +375 -205
- package/host-cp/src/world-services.mjs +136 -0
- package/package.json +1 -1
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* olam yolo — First-class CLI primitive for tmux-yolo dispatch.
|
|
3
|
+
*
|
|
4
|
+
* Provisions a git worktree + tmux window + injects a yolo
|
|
5
|
+
* (claude --dangerously-skip-permissions) with the given prompt file.
|
|
6
|
+
*
|
|
7
|
+
* Modes:
|
|
8
|
+
* olam yolo <name> --branch <feat/branch-name> --prompt-file <path> → Spawn
|
|
9
|
+
* olam yolo --list → List active yolo windows
|
|
10
|
+
* olam yolo --cleanup <name> [--force] → Remove worktree + kill window + delete branch
|
|
11
|
+
*
|
|
12
|
+
* Lessons baked in from /tmux-yolo skill usage:
|
|
13
|
+
* - Tmux binary varies: /opt/homebrew/Cellar/tmux/3.6a/bin/tmux on this host.
|
|
14
|
+
* - Session id is "0" by default.
|
|
15
|
+
* - Worktree root: env OLAM_TMUX_YOLO_ROOT > ~/.olam-tmux-yolo-root file > default sibling dir.
|
|
16
|
+
* - Yolo boot time is ~8s before prompt can be injected safely.
|
|
17
|
+
*
|
|
18
|
+
* @see docs/runbooks/olam-yolo-cli.md
|
|
19
|
+
*/
|
|
20
|
+
import type { Command } from 'commander';
|
|
21
|
+
/** Milliseconds to wait for yolo to boot before injecting the prompt. */
|
|
22
|
+
export declare const YOLO_BOOT_DELAY_MS = 8000;
|
|
23
|
+
export type RunnerResult = {
|
|
24
|
+
status: number | null;
|
|
25
|
+
stdout: string;
|
|
26
|
+
stderr: string;
|
|
27
|
+
};
|
|
28
|
+
/** Injectable runner: wraps spawnSync so tests can mock it. */
|
|
29
|
+
export type Runner = (cmd: string, args: string[], opts?: {
|
|
30
|
+
cwd?: string;
|
|
31
|
+
}) => RunnerResult;
|
|
32
|
+
/** Injectable sleep so tests run fast. */
|
|
33
|
+
export type Sleeper = (ms: number) => Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Detect a usable tmux binary.
|
|
36
|
+
* Probes known paths first, then falls back to `which tmux`.
|
|
37
|
+
* Skips any path that contains a shell-plugin shim marker.
|
|
38
|
+
*/
|
|
39
|
+
export declare function detectTmuxBinary(runner?: Runner): string | null;
|
|
40
|
+
/**
|
|
41
|
+
* Resolve the worktree root directory in order:
|
|
42
|
+
* 1. OLAM_TMUX_YOLO_ROOT env var
|
|
43
|
+
* 2. Single-line path in ~/.olam-tmux-yolo-root
|
|
44
|
+
* 3. Default: <dirname(repoRoot)>/<basename(repoRoot)>-wt
|
|
45
|
+
*
|
|
46
|
+
* repoRoot is the git top-level of the current working directory.
|
|
47
|
+
*/
|
|
48
|
+
export declare function resolveWorktreeRoot(runner?: Runner, cwd?: string): string;
|
|
49
|
+
/**
|
|
50
|
+
* Resolve the yolo command to inject into tmux.
|
|
51
|
+
* Prefers `yolo` alias if it's on PATH and not a shim.
|
|
52
|
+
* Falls back to ~/.local/bin/claude --dangerously-skip-permissions.
|
|
53
|
+
*/
|
|
54
|
+
export declare function resolveYoloCommand(runner?: Runner): {
|
|
55
|
+
cmd: string;
|
|
56
|
+
usingFallback: boolean;
|
|
57
|
+
};
|
|
58
|
+
export interface SpawnOptions {
|
|
59
|
+
name: string;
|
|
60
|
+
branch: string;
|
|
61
|
+
base?: string;
|
|
62
|
+
promptFile: string;
|
|
63
|
+
runner?: Runner;
|
|
64
|
+
sleeper?: Sleeper;
|
|
65
|
+
cwd?: string;
|
|
66
|
+
}
|
|
67
|
+
export interface SpawnResult {
|
|
68
|
+
worktreePath: string;
|
|
69
|
+
branch: string;
|
|
70
|
+
windowName: string;
|
|
71
|
+
attachHint: string;
|
|
72
|
+
captureWarning?: string;
|
|
73
|
+
yoloFallbackUsed: boolean;
|
|
74
|
+
}
|
|
75
|
+
export declare function spawnYolo(opts: SpawnOptions): Promise<SpawnResult>;
|
|
76
|
+
export interface ListOptions {
|
|
77
|
+
runner?: Runner;
|
|
78
|
+
cwd?: string;
|
|
79
|
+
}
|
|
80
|
+
export interface YoloWindow {
|
|
81
|
+
name: string;
|
|
82
|
+
worktreePath?: string;
|
|
83
|
+
}
|
|
84
|
+
export declare function listYoloWindows(opts?: ListOptions): YoloWindow[];
|
|
85
|
+
export interface CleanupOptions {
|
|
86
|
+
name: string;
|
|
87
|
+
force?: boolean;
|
|
88
|
+
runner?: Runner;
|
|
89
|
+
cwd?: string;
|
|
90
|
+
/** Base branch used for merged check. Defaults to 'main'. */
|
|
91
|
+
mainBranch?: string;
|
|
92
|
+
}
|
|
93
|
+
export declare function cleanupYolo(opts: CleanupOptions): Promise<void>;
|
|
94
|
+
export declare function registerYolo(program: Command): void;
|
|
95
|
+
//# sourceMappingURL=yolo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yolo.d.ts","sourceRoot":"","sources":["../../src/commands/yolo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUzC,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAkBvC,MAAM,MAAM,YAAY,GAAG;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAErF,+DAA+D;AAC/D,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,YAAY,CAAC;AAE5F,0CAA0C;AAC1C,MAAM,MAAM,OAAO,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AA0BpD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAa9E;AAID;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,GAAE,MAAsB,EAC9B,GAAG,GAAE,MAAsB,GAC1B,MAAM,CAqBR;AAID;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,GAAE,MAAsB,GAAG;IAClE,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,OAAO,CAAC;CACxB,CAYA;AAID,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAgHxE;AAID,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,eAAe,CAAC,IAAI,GAAE,WAAgB,GAAG,UAAU,EAAE,CAwBpE;AAID,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAwErE;AAID,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsGnD"}
|
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* olam yolo — First-class CLI primitive for tmux-yolo dispatch.
|
|
3
|
+
*
|
|
4
|
+
* Provisions a git worktree + tmux window + injects a yolo
|
|
5
|
+
* (claude --dangerously-skip-permissions) with the given prompt file.
|
|
6
|
+
*
|
|
7
|
+
* Modes:
|
|
8
|
+
* olam yolo <name> --branch <feat/branch-name> --prompt-file <path> → Spawn
|
|
9
|
+
* olam yolo --list → List active yolo windows
|
|
10
|
+
* olam yolo --cleanup <name> [--force] → Remove worktree + kill window + delete branch
|
|
11
|
+
*
|
|
12
|
+
* Lessons baked in from /tmux-yolo skill usage:
|
|
13
|
+
* - Tmux binary varies: /opt/homebrew/Cellar/tmux/3.6a/bin/tmux on this host.
|
|
14
|
+
* - Session id is "0" by default.
|
|
15
|
+
* - Worktree root: env OLAM_TMUX_YOLO_ROOT > ~/.olam-tmux-yolo-root file > default sibling dir.
|
|
16
|
+
* - Yolo boot time is ~8s before prompt can be injected safely.
|
|
17
|
+
*
|
|
18
|
+
* @see docs/runbooks/olam-yolo-cli.md
|
|
19
|
+
*/
|
|
20
|
+
import * as childProcess from 'node:child_process';
|
|
21
|
+
import * as fs from 'node:fs';
|
|
22
|
+
import * as os from 'node:os';
|
|
23
|
+
import * as path from 'node:path';
|
|
24
|
+
import pc from 'picocolors';
|
|
25
|
+
import { printError, printWarning, printHeader, printInfo, printSuccess } from '../output.js';
|
|
26
|
+
// ── Tuneable constants ───────────────────────────────────────────────────────
|
|
27
|
+
/** Milliseconds to wait for yolo to boot before injecting the prompt. */
|
|
28
|
+
export const YOLO_BOOT_DELAY_MS = 8000;
|
|
29
|
+
/** Milliseconds to wait after prompt injection before capturing the pane. */
|
|
30
|
+
const CAPTURE_DELAY_MS = 4000;
|
|
31
|
+
/** Tmux binary probe order. Skip paths that look like shell plugin shims. */
|
|
32
|
+
const TMUX_PROBE_PATHS = [
|
|
33
|
+
'/opt/homebrew/Cellar/tmux/3.6a/bin/tmux',
|
|
34
|
+
'/opt/homebrew/bin/tmux',
|
|
35
|
+
'/usr/local/bin/tmux',
|
|
36
|
+
'/usr/bin/tmux',
|
|
37
|
+
];
|
|
38
|
+
/** Strings in a tmux binary path that indicate a shell-plugin shim (skip these). */
|
|
39
|
+
const TMUX_SHIM_MARKERS = ['.oh-my-zsh', '.zsh', '.bash', 'nvm', 'asdf'];
|
|
40
|
+
// ── Default implementations ──────────────────────────────────────────────────
|
|
41
|
+
function defaultRunner(cmd, args, opts) {
|
|
42
|
+
const result = childProcess.spawnSync(cmd, args, {
|
|
43
|
+
encoding: 'utf-8',
|
|
44
|
+
cwd: opts?.cwd,
|
|
45
|
+
});
|
|
46
|
+
return {
|
|
47
|
+
status: result.status,
|
|
48
|
+
stdout: typeof result.stdout === 'string' ? result.stdout.trim() : '',
|
|
49
|
+
stderr: typeof result.stderr === 'string' ? result.stderr.trim() : '',
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function defaultSleeper(ms) {
|
|
53
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
54
|
+
}
|
|
55
|
+
// ── Tmux binary detection ────────────────────────────────────────────────────
|
|
56
|
+
/**
|
|
57
|
+
* Detect a usable tmux binary.
|
|
58
|
+
* Probes known paths first, then falls back to `which tmux`.
|
|
59
|
+
* Skips any path that contains a shell-plugin shim marker.
|
|
60
|
+
*/
|
|
61
|
+
export function detectTmuxBinary(runner = defaultRunner) {
|
|
62
|
+
for (const p of TMUX_PROBE_PATHS) {
|
|
63
|
+
if (TMUX_SHIM_MARKERS.some((m) => p.includes(m)))
|
|
64
|
+
continue;
|
|
65
|
+
if (fs.existsSync(p))
|
|
66
|
+
return p;
|
|
67
|
+
}
|
|
68
|
+
// Fall back to `which tmux` (may be a shim — check)
|
|
69
|
+
const result = runner('which', ['tmux']);
|
|
70
|
+
if (result.status === 0 && result.stdout) {
|
|
71
|
+
const p = result.stdout.trim();
|
|
72
|
+
if (TMUX_SHIM_MARKERS.some((m) => p.includes(m)))
|
|
73
|
+
return null;
|
|
74
|
+
return p;
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
// ── Worktree root resolution ─────────────────────────────────────────────────
|
|
79
|
+
/**
|
|
80
|
+
* Resolve the worktree root directory in order:
|
|
81
|
+
* 1. OLAM_TMUX_YOLO_ROOT env var
|
|
82
|
+
* 2. Single-line path in ~/.olam-tmux-yolo-root
|
|
83
|
+
* 3. Default: <dirname(repoRoot)>/<basename(repoRoot)>-wt
|
|
84
|
+
*
|
|
85
|
+
* repoRoot is the git top-level of the current working directory.
|
|
86
|
+
*/
|
|
87
|
+
export function resolveWorktreeRoot(runner = defaultRunner, cwd = process.cwd()) {
|
|
88
|
+
// 1. Env var
|
|
89
|
+
if (process.env['OLAM_TMUX_YOLO_ROOT']) {
|
|
90
|
+
return process.env['OLAM_TMUX_YOLO_ROOT'];
|
|
91
|
+
}
|
|
92
|
+
// 2. File
|
|
93
|
+
const rootFile = path.join(os.homedir(), '.olam-tmux-yolo-root');
|
|
94
|
+
if (fs.existsSync(rootFile)) {
|
|
95
|
+
const line = fs.readFileSync(rootFile, 'utf-8').trim();
|
|
96
|
+
if (line)
|
|
97
|
+
return line;
|
|
98
|
+
}
|
|
99
|
+
// 3. Default: derive from git top-level
|
|
100
|
+
const gitResult = runner('git', ['rev-parse', '--show-toplevel'], { cwd });
|
|
101
|
+
if (gitResult.status !== 0 || !gitResult.stdout) {
|
|
102
|
+
// Not in a git repo — use cwd as fallback
|
|
103
|
+
return path.join(cwd, '..', path.basename(cwd) + '-wt');
|
|
104
|
+
}
|
|
105
|
+
const repoRoot = gitResult.stdout.trim();
|
|
106
|
+
return path.join(path.dirname(repoRoot), path.basename(repoRoot) + '-wt');
|
|
107
|
+
}
|
|
108
|
+
// ── Yolo command resolution ──────────────────────────────────────────────────
|
|
109
|
+
/**
|
|
110
|
+
* Resolve the yolo command to inject into tmux.
|
|
111
|
+
* Prefers `yolo` alias if it's on PATH and not a shim.
|
|
112
|
+
* Falls back to ~/.local/bin/claude --dangerously-skip-permissions.
|
|
113
|
+
*/
|
|
114
|
+
export function resolveYoloCommand(runner = defaultRunner) {
|
|
115
|
+
const result = runner('bash', ['-lc', 'command -v yolo']);
|
|
116
|
+
if (result.status === 0 && result.stdout) {
|
|
117
|
+
const p = result.stdout.trim();
|
|
118
|
+
if (p && !TMUX_SHIM_MARKERS.some((m) => p.includes(m))) {
|
|
119
|
+
return { cmd: 'yolo', usingFallback: false };
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
cmd: '~/.local/bin/claude --dangerously-skip-permissions',
|
|
124
|
+
usingFallback: true,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
export async function spawnYolo(opts) {
|
|
128
|
+
const runner = opts.runner ?? defaultRunner;
|
|
129
|
+
const sleeper = opts.sleeper ?? defaultSleeper;
|
|
130
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
131
|
+
// 1. Detect tmux binary
|
|
132
|
+
const tmux = detectTmuxBinary(runner);
|
|
133
|
+
if (!tmux) {
|
|
134
|
+
throw new Error('tmux binary not found. Checked: ' +
|
|
135
|
+
TMUX_PROBE_PATHS.join(', ') +
|
|
136
|
+
' and PATH. Ensure tmux is installed and not shadowed by a shell plugin.');
|
|
137
|
+
}
|
|
138
|
+
// 2. Verify --prompt-file exists and is readable
|
|
139
|
+
try {
|
|
140
|
+
fs.accessSync(opts.promptFile, fs.constants.R_OK);
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
throw new Error(`Prompt file not found or not readable: ${opts.promptFile}\n` +
|
|
144
|
+
'Create the file with your task description and try again.');
|
|
145
|
+
}
|
|
146
|
+
// 3. Resolve worktree root
|
|
147
|
+
const worktreeRoot = resolveWorktreeRoot(runner, cwd);
|
|
148
|
+
const worktreePath = path.join(worktreeRoot, opts.name);
|
|
149
|
+
// 4. Verify branch doesn't exist
|
|
150
|
+
const branchCheck = runner('git', ['show-ref', '--verify', '--quiet', `refs/heads/${opts.branch}`], { cwd });
|
|
151
|
+
if (branchCheck.status === 0) {
|
|
152
|
+
throw new Error(`Branch "${opts.branch}" already exists.\n` +
|
|
153
|
+
`Run: olam yolo --cleanup ${opts.name} (or use --force to bypass the merged check)`);
|
|
154
|
+
}
|
|
155
|
+
// 5. Verify worktree directory doesn't exist
|
|
156
|
+
// Design decision: NOT idempotent — error to keep state explicit.
|
|
157
|
+
if (fs.existsSync(worktreePath)) {
|
|
158
|
+
throw new Error(`Worktree directory already exists: ${worktreePath}\n` +
|
|
159
|
+
`Run: olam yolo --cleanup ${opts.name} to remove it first.`);
|
|
160
|
+
}
|
|
161
|
+
// 6. Resolve base branch
|
|
162
|
+
const base = opts.base ?? (() => {
|
|
163
|
+
const r = runner('git', ['rev-parse', '--abbrev-ref', 'HEAD'], { cwd });
|
|
164
|
+
return r.status === 0 ? r.stdout.trim() : 'main';
|
|
165
|
+
})();
|
|
166
|
+
// 7. Create the worktree
|
|
167
|
+
const worktreeAdd = runner('git', ['worktree', 'add', '-b', opts.branch, worktreePath, base], { cwd });
|
|
168
|
+
if (worktreeAdd.status !== 0) {
|
|
169
|
+
throw new Error(`git worktree add failed:\n${worktreeAdd.stderr || worktreeAdd.stdout}`);
|
|
170
|
+
}
|
|
171
|
+
// 8. Tmux: open new window
|
|
172
|
+
const newWindow = runner(tmux, ['new-window', '-t', '0:', '-n', opts.name, '-c', worktreePath]);
|
|
173
|
+
if (newWindow.status !== 0) {
|
|
174
|
+
throw new Error(`tmux new-window failed:\n${newWindow.stderr}\n` +
|
|
175
|
+
'Is tmux running? Start a session with: tmux new-session -d -s 0');
|
|
176
|
+
}
|
|
177
|
+
// 9. Resolve yolo command
|
|
178
|
+
const { cmd: yoloCmd, usingFallback } = resolveYoloCommand(runner);
|
|
179
|
+
// 10. Wait for yolo to boot
|
|
180
|
+
await sleeper(YOLO_BOOT_DELAY_MS);
|
|
181
|
+
// 11. Inject the prompt via tmux send-keys
|
|
182
|
+
// CRITICAL: use $(cat <file>) shell expansion inside the tmux pane.
|
|
183
|
+
// The string we pass to tmux send-keys is a literal — the SHELL inside
|
|
184
|
+
// the pane interprets the $(cat ...) when Enter fires.
|
|
185
|
+
const sendKeysArg = `${yoloCmd} "$(cat ${opts.promptFile})"`;
|
|
186
|
+
const sendKeys = runner(tmux, ['send-keys', '-t', `0:${opts.name}`, sendKeysArg, 'Enter']);
|
|
187
|
+
if (sendKeys.status !== 0) {
|
|
188
|
+
throw new Error(`tmux send-keys failed:\n${sendKeys.stderr}`);
|
|
189
|
+
}
|
|
190
|
+
// 12. Wait, then smoke-check capture-pane
|
|
191
|
+
await sleeper(CAPTURE_DELAY_MS);
|
|
192
|
+
const capture = runner(tmux, ['capture-pane', '-t', `0:${opts.name}`, '-p']);
|
|
193
|
+
const captureText = capture.stdout ?? '';
|
|
194
|
+
let captureWarning;
|
|
195
|
+
const YOLO_STARTED_MARKERS = ['Cogitating', 'Welcome to Claude Code', 'Claude Code', 'Human:', '> '];
|
|
196
|
+
const started = YOLO_STARTED_MARKERS.some((m) => captureText.includes(m));
|
|
197
|
+
if (!started) {
|
|
198
|
+
captureWarning =
|
|
199
|
+
'yolo may not have started — pane output does not contain expected markers. ' +
|
|
200
|
+
'Attach to verify: tmux select-window -t 0:' + opts.name;
|
|
201
|
+
}
|
|
202
|
+
// 13. Return summary
|
|
203
|
+
return {
|
|
204
|
+
worktreePath,
|
|
205
|
+
branch: opts.branch,
|
|
206
|
+
windowName: opts.name,
|
|
207
|
+
attachHint: `tmux select-window -t 0:${opts.name}`,
|
|
208
|
+
captureWarning,
|
|
209
|
+
yoloFallbackUsed: usingFallback,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
export function listYoloWindows(opts = {}) {
|
|
213
|
+
const runner = opts.runner ?? defaultRunner;
|
|
214
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
215
|
+
const tmux = detectTmuxBinary(runner);
|
|
216
|
+
if (!tmux)
|
|
217
|
+
return [];
|
|
218
|
+
const listResult = runner(tmux, ['list-windows', '-t', '0', '-F', '#{window_name}']);
|
|
219
|
+
if (listResult.status !== 0)
|
|
220
|
+
return [];
|
|
221
|
+
const windowNames = listResult.stdout
|
|
222
|
+
.split('\n')
|
|
223
|
+
.map((n) => n.trim())
|
|
224
|
+
.filter(Boolean);
|
|
225
|
+
const worktreeRoot = resolveWorktreeRoot(runner, cwd);
|
|
226
|
+
return windowNames.map((name) => {
|
|
227
|
+
const worktreePath = path.join(worktreeRoot, name);
|
|
228
|
+
return {
|
|
229
|
+
name,
|
|
230
|
+
worktreePath: fs.existsSync(worktreePath) ? worktreePath : undefined,
|
|
231
|
+
};
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
export async function cleanupYolo(opts) {
|
|
235
|
+
const runner = opts.runner ?? defaultRunner;
|
|
236
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
237
|
+
const mainBranch = opts.mainBranch ?? 'main';
|
|
238
|
+
const worktreeRoot = resolveWorktreeRoot(runner, cwd);
|
|
239
|
+
const worktreePath = path.join(worktreeRoot, opts.name);
|
|
240
|
+
// Determine branch name from the worktree (git worktree list output)
|
|
241
|
+
const worktreeList = runner('git', ['worktree', 'list', '--porcelain'], { cwd });
|
|
242
|
+
let branch;
|
|
243
|
+
if (worktreeList.status === 0) {
|
|
244
|
+
// Parse: block lines "worktree <path>\nHEAD ...\nbranch refs/heads/<branch>"
|
|
245
|
+
const lines = worktreeList.stdout.split('\n');
|
|
246
|
+
let inTarget = false;
|
|
247
|
+
for (const line of lines) {
|
|
248
|
+
if (line.startsWith('worktree ')) {
|
|
249
|
+
inTarget = line.slice('worktree '.length).trim() === worktreePath;
|
|
250
|
+
}
|
|
251
|
+
if (inTarget && line.startsWith('branch ')) {
|
|
252
|
+
branch = line.replace('branch refs/heads/', '').trim();
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
// Check merged status (skip with --force)
|
|
258
|
+
if (branch && !opts.force) {
|
|
259
|
+
const mergedCheck = runner('git', ['branch', '--merged', mainBranch], { cwd });
|
|
260
|
+
const mergedBranches = mergedCheck.stdout
|
|
261
|
+
.split('\n')
|
|
262
|
+
.map((b) => b.replace(/^\*?\s*/, '').trim());
|
|
263
|
+
if (!mergedBranches.includes(branch)) {
|
|
264
|
+
throw new Error(`Branch "${branch}" is not merged into ${mainBranch}.\n` +
|
|
265
|
+
`Run: olam yolo --cleanup ${opts.name} --force to remove anyway.`);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
// 1. Kill tmux window
|
|
269
|
+
const tmux = detectTmuxBinary(runner);
|
|
270
|
+
if (tmux) {
|
|
271
|
+
runner(tmux, ['kill-window', '-t', `0:${opts.name}`]);
|
|
272
|
+
}
|
|
273
|
+
// 2. Remove worktree
|
|
274
|
+
const removeArgs = opts.force
|
|
275
|
+
? ['worktree', 'remove', '--force', worktreePath]
|
|
276
|
+
: ['worktree', 'remove', worktreePath];
|
|
277
|
+
const worktreeRemove = runner('git', removeArgs, { cwd });
|
|
278
|
+
if (worktreeRemove.status !== 0) {
|
|
279
|
+
// Non-fatal if the worktree dir doesn't exist
|
|
280
|
+
if (!worktreeRemove.stderr.includes('is not a worktree')) {
|
|
281
|
+
printWarning(`git worktree remove: ${worktreeRemove.stderr}`);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
// 3. Delete branch
|
|
285
|
+
if (branch) {
|
|
286
|
+
const branchDeleteArgs = opts.force
|
|
287
|
+
? ['branch', '-D', branch]
|
|
288
|
+
: ['branch', '-d', branch];
|
|
289
|
+
const branchDelete = runner('git', branchDeleteArgs, { cwd });
|
|
290
|
+
if (branchDelete.status !== 0) {
|
|
291
|
+
printWarning(`git branch delete: ${branchDelete.stderr}`);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// ── CLI registration ──────────────────────────────────────────────────────────
|
|
296
|
+
export function registerYolo(program) {
|
|
297
|
+
const cmd = program
|
|
298
|
+
.command('yolo')
|
|
299
|
+
.description('Dispatch a parallel Claude Code session in a new tmux window + isolated git worktree')
|
|
300
|
+
.argument('[name]', 'Short identifier for the yolo session (kebab-case)')
|
|
301
|
+
.option('--branch <branch>', 'Branch to create in the worktree')
|
|
302
|
+
.option('--base <base>', 'Base branch to fork from (default: current branch)')
|
|
303
|
+
.option('--prompt-file <path>', 'Path to a file containing the task prompt')
|
|
304
|
+
.option('--list', 'List active yolo tmux windows and matched worktree paths')
|
|
305
|
+
.option('--cleanup <name>', 'Remove worktree + kill tmux window + delete branch')
|
|
306
|
+
.option('--force', 'With --cleanup: bypass merged-branch check')
|
|
307
|
+
.action(async (name, opts) => {
|
|
308
|
+
// ── --list ──
|
|
309
|
+
if (opts.list) {
|
|
310
|
+
const windows = listYoloWindows();
|
|
311
|
+
if (windows.length === 0) {
|
|
312
|
+
console.log(pc.dim('No active yolo windows found (tmux session 0).'));
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
printHeader(`${windows.length} yolo window(s)`);
|
|
316
|
+
for (const w of windows) {
|
|
317
|
+
const wt = w.worktreePath ? pc.dim(w.worktreePath) : pc.dim('(no worktree)');
|
|
318
|
+
console.log(` ${pc.bold(w.name.padEnd(24))} ${wt}`);
|
|
319
|
+
}
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
// ── --cleanup ──
|
|
323
|
+
if (opts.cleanup) {
|
|
324
|
+
try {
|
|
325
|
+
await cleanupYolo({
|
|
326
|
+
name: opts.cleanup,
|
|
327
|
+
force: opts.force,
|
|
328
|
+
});
|
|
329
|
+
printSuccess(`cleaned up yolo "${opts.cleanup}"`);
|
|
330
|
+
}
|
|
331
|
+
catch (err) {
|
|
332
|
+
printError(err instanceof Error ? err.message : String(err));
|
|
333
|
+
process.exitCode = 1;
|
|
334
|
+
}
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
// ── Spawn ──
|
|
338
|
+
if (!name) {
|
|
339
|
+
cmd.help();
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
if (!opts.branch) {
|
|
343
|
+
printError('--branch is required for spawn. Example: --branch feat/my-task');
|
|
344
|
+
process.exitCode = 1;
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
if (!opts.promptFile) {
|
|
348
|
+
printError('--prompt-file is required for spawn. Create a file with your task description.');
|
|
349
|
+
process.exitCode = 1;
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
352
|
+
try {
|
|
353
|
+
const result = await spawnYolo({
|
|
354
|
+
name,
|
|
355
|
+
branch: opts.branch,
|
|
356
|
+
base: opts.base,
|
|
357
|
+
promptFile: opts.promptFile,
|
|
358
|
+
});
|
|
359
|
+
printHeader('yolo dispatched');
|
|
360
|
+
printInfo('Worktree', result.worktreePath);
|
|
361
|
+
printInfo('Branch', result.branch);
|
|
362
|
+
printInfo('Window', result.windowName);
|
|
363
|
+
printInfo('Attach', result.attachHint);
|
|
364
|
+
if (result.yoloFallbackUsed) {
|
|
365
|
+
console.log(pc.dim(' [note] yolo alias not found on PATH — used ~/.local/bin/claude --dangerously-skip-permissions'));
|
|
366
|
+
}
|
|
367
|
+
if (result.captureWarning) {
|
|
368
|
+
printWarning(result.captureWarning);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
catch (err) {
|
|
372
|
+
printError(err instanceof Error ? err.message : String(err));
|
|
373
|
+
process.exitCode = 1;
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
//# sourceMappingURL=yolo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yolo.js","sourceRoot":"","sources":["../../src/commands/yolo.ts"],"names":[],"mappings":"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"}
|
package/dist/image-digests.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
|
-
"auth": "sha256:
|
|
3
|
-
"devbox": "sha256:
|
|
4
|
-
"devbox-base": "sha256:
|
|
5
|
-
"host-cp": "sha256:
|
|
6
|
-
"kg-service": "sha256:
|
|
7
|
-
"memory-service": "sha256:
|
|
8
|
-
"mcp-auth": "sha256:
|
|
2
|
+
"auth": "sha256:57d5f69395f9d4199035bb1e8156ffa1a4b815e50f6ecef28c2fc082f4d40e23",
|
|
3
|
+
"devbox": "sha256:9e8b8003e928333b20fb7f59488aeeb1b24c814cd13bb3812e988b67a6cfc6e3",
|
|
4
|
+
"devbox-base": "sha256:3563c07d272b1ea8222d0f6ee1747715b763aac1c14d5db60851460497c4f15f",
|
|
5
|
+
"host-cp": "sha256:20d84b6d490c633bc5a158b0f7f849152aba3cf1d2d45657360f627d8d41ec3f",
|
|
6
|
+
"kg-service": "sha256:7b48bc20dead674fb01f5e01f1fc43fee2b589c05156a7b5384504f42e96a18a",
|
|
7
|
+
"memory-service": "sha256:d94c6699ca3937f67a873b2b6bb28a1d40317f9c0a780f780f45b41c5d103f2d",
|
|
8
|
+
"mcp-auth": "sha256:9cbf2fb4c79a6b447282da5f1a190c730eb9c85e5df1c0c16dc238c34352c583",
|
|
9
9
|
"$schema_version": 1,
|
|
10
|
-
"$published_version": "0.1.
|
|
10
|
+
"$published_version": "0.1.182",
|
|
11
11
|
"$registry": "ghcr.io/pleri"
|
|
12
12
|
}
|