@proletariat/cli 0.3.105 → 0.3.109
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/commands/agent/cleanup.js +13 -1
- package/dist/commands/agent/cleanup.js.map +1 -1
- package/dist/commands/claude/index.js +2 -2
- package/dist/commands/claude/index.js.map +1 -1
- package/dist/commands/feedback/list.js +4 -9
- package/dist/commands/feedback/list.js.map +1 -1
- package/dist/commands/feedback/submit.js +4 -9
- package/dist/commands/feedback/submit.js.map +1 -1
- package/dist/commands/feedback/view.js +4 -9
- package/dist/commands/feedback/view.js.map +1 -1
- package/dist/commands/gc.d.ts +1 -0
- package/dist/commands/gc.js +34 -1
- package/dist/commands/gc.js.map +1 -1
- package/dist/commands/notify/connect.d.ts +34 -0
- package/dist/commands/notify/connect.js +166 -0
- package/dist/commands/notify/connect.js.map +1 -0
- package/dist/commands/notify/disconnect.d.ts +16 -0
- package/dist/commands/notify/disconnect.js +45 -0
- package/dist/commands/notify/disconnect.js.map +1 -0
- package/dist/commands/notify/list.d.ts +15 -0
- package/dist/commands/notify/list.js +101 -0
- package/dist/commands/notify/list.js.map +1 -0
- package/dist/commands/notify/rules/add.d.ts +26 -0
- package/dist/commands/notify/rules/add.js +95 -0
- package/dist/commands/notify/rules/add.js.map +1 -0
- package/dist/commands/notify/rules/list.d.ts +14 -0
- package/dist/commands/notify/rules/list.js +82 -0
- package/dist/commands/notify/rules/list.js.map +1 -0
- package/dist/commands/notify/rules/remove.d.ts +16 -0
- package/dist/commands/notify/rules/remove.js +44 -0
- package/dist/commands/notify/rules/remove.js.map +1 -0
- package/dist/commands/notify/test.d.ts +16 -0
- package/dist/commands/notify/test.js +63 -0
- package/dist/commands/notify/test.js.map +1 -0
- package/dist/commands/orchestrate/index.js +11 -6
- package/dist/commands/orchestrate/index.js.map +1 -1
- package/dist/commands/orchestrate/machine.d.ts +29 -0
- package/dist/commands/orchestrate/machine.js +230 -0
- package/dist/commands/orchestrate/machine.js.map +1 -0
- package/dist/commands/pr/checks.js +4 -8
- package/dist/commands/pr/checks.js.map +1 -1
- package/dist/commands/pr/close.js +4 -8
- package/dist/commands/pr/close.js.map +1 -1
- package/dist/commands/pr/create.js +4 -8
- package/dist/commands/pr/create.js.map +1 -1
- package/dist/commands/pr/index.js +1 -1
- package/dist/commands/pr/index.js.map +1 -1
- package/dist/commands/pr/link.js +4 -8
- package/dist/commands/pr/link.js.map +1 -1
- package/dist/commands/pr/list.js +5 -9
- package/dist/commands/pr/list.js.map +1 -1
- package/dist/commands/pr/merge.d.ts +5 -0
- package/dist/commands/pr/merge.js +35 -11
- package/dist/commands/pr/merge.js.map +1 -1
- package/dist/commands/pr/status.js +5 -4
- package/dist/commands/pr/status.js.map +1 -1
- package/dist/commands/qa/index.js +2 -2
- package/dist/commands/qa/index.js.map +1 -1
- package/dist/commands/repo/create.js +4 -8
- package/dist/commands/repo/create.js.map +1 -1
- package/dist/commands/session/list.js +81 -41
- package/dist/commands/session/list.js.map +1 -1
- package/dist/commands/session/poke.d.ts +1 -11
- package/dist/commands/session/poke.js +20 -78
- package/dist/commands/session/poke.js.map +1 -1
- package/dist/commands/session/prune.js +3 -0
- package/dist/commands/session/prune.js.map +1 -1
- package/dist/commands/ticket/move.d.ts +12 -0
- package/dist/commands/ticket/move.js +75 -2
- package/dist/commands/ticket/move.js.map +1 -1
- package/dist/commands/work/drop.js +2 -2
- package/dist/commands/work/drop.js.map +1 -1
- package/dist/commands/work/ready.js +3 -3
- package/dist/commands/work/ready.js.map +1 -1
- package/dist/commands/work/rebase.js +4 -8
- package/dist/commands/work/rebase.js.map +1 -1
- package/dist/commands/work/run.d.ts +58 -0
- package/dist/commands/work/run.js +411 -0
- package/dist/commands/work/run.js.map +1 -0
- package/dist/commands/work/ship.d.ts +6 -0
- package/dist/commands/work/ship.js +93 -51
- package/dist/commands/work/ship.js.map +1 -1
- package/dist/commands/work/start.d.ts +1 -0
- package/dist/commands/work/start.js +126 -13
- package/dist/commands/work/start.js.map +1 -1
- package/dist/lib/agents/commands.d.ts +6 -0
- package/dist/lib/agents/commands.js +55 -2
- package/dist/lib/agents/commands.js.map +1 -1
- package/dist/lib/database/credential-store.js +2 -3
- package/dist/lib/database/credential-store.js.map +1 -1
- package/dist/lib/database/db-safety.d.ts +25 -0
- package/dist/lib/database/db-safety.js +35 -0
- package/dist/lib/database/db-safety.js.map +1 -1
- package/dist/lib/database/driver.js +6 -12
- package/dist/lib/database/driver.js.map +1 -1
- package/dist/lib/database/drizzle-schema.d.ts +3 -3
- package/dist/lib/database/drizzle.js +3 -3
- package/dist/lib/database/drizzle.js.map +1 -1
- package/dist/lib/database/index.d.ts +1 -1
- package/dist/lib/database/index.js +1 -1
- package/dist/lib/database/index.js.map +1 -1
- package/dist/lib/database/migrations/0021_notification_system.d.ts +2 -0
- package/dist/lib/database/migrations/0021_notification_system.js +39 -0
- package/dist/lib/database/migrations/0021_notification_system.js.map +1 -0
- package/dist/lib/database/migrations/0022_hook_mode_tiers.d.ts +11 -0
- package/dist/lib/database/migrations/0022_hook_mode_tiers.js +53 -0
- package/dist/lib/database/migrations/0022_hook_mode_tiers.js.map +1 -0
- package/dist/lib/database/migrations/index.js +4 -0
- package/dist/lib/database/migrations/index.js.map +1 -1
- package/dist/lib/database/pmo-bootstrap.js +6 -2
- package/dist/lib/database/pmo-bootstrap.js.map +1 -1
- package/dist/lib/database/workspace.js +5 -13
- package/dist/lib/database/workspace.js.map +1 -1
- package/dist/lib/events/emitting-runner.js +10 -0
- package/dist/lib/events/emitting-runner.js.map +1 -1
- package/dist/lib/execution/cc-version.d.ts +62 -0
- package/dist/lib/execution/cc-version.js +103 -0
- package/dist/lib/execution/cc-version.js.map +1 -0
- package/dist/lib/execution/devcontainer.js +2 -1
- package/dist/lib/execution/devcontainer.js.map +1 -1
- package/dist/lib/execution/runners/devcontainer.js +4 -1
- package/dist/lib/execution/runners/devcontainer.js.map +1 -1
- package/dist/lib/execution/runners/docker-management.js +10 -46
- package/dist/lib/execution/runners/docker-management.js.map +1 -1
- package/dist/lib/execution/runners/orchestrator.js +13 -39
- package/dist/lib/execution/runners/orchestrator.js.map +1 -1
- package/dist/lib/execution/session-utils.d.ts +88 -1
- package/dist/lib/execution/session-utils.js +120 -46
- package/dist/lib/execution/session-utils.js.map +1 -1
- package/dist/lib/execution/storage.js +20 -2
- package/dist/lib/execution/storage.js.map +1 -1
- package/dist/lib/flags/resolver.d.ts +8 -1
- package/dist/lib/flags/resolver.js +35 -2
- package/dist/lib/flags/resolver.js.map +1 -1
- package/dist/lib/gc/cascade.d.ts +99 -0
- package/dist/lib/gc/cascade.js +357 -0
- package/dist/lib/gc/cascade.js.map +1 -0
- package/dist/lib/gc/config.d.ts +69 -0
- package/dist/lib/gc/config.js +134 -0
- package/dist/lib/gc/config.js.map +1 -0
- package/dist/lib/gc/index.d.ts +36 -0
- package/dist/lib/gc/index.js +209 -1
- package/dist/lib/gc/index.js.map +1 -1
- package/dist/lib/init/index.js +10 -1
- package/dist/lib/init/index.js.map +1 -1
- package/dist/lib/machine-db.d.ts +144 -0
- package/dist/lib/machine-db.js +338 -0
- package/dist/lib/machine-db.js.map +1 -0
- package/dist/lib/machine-orchestrator.d.ts +35 -0
- package/dist/lib/machine-orchestrator.js +139 -0
- package/dist/lib/machine-orchestrator.js.map +1 -0
- package/dist/lib/notifications/dispatcher.d.ts +29 -0
- package/dist/lib/notifications/dispatcher.js +281 -0
- package/dist/lib/notifications/dispatcher.js.map +1 -0
- package/dist/lib/notifications/index.d.ts +13 -0
- package/dist/lib/notifications/index.js +18 -0
- package/dist/lib/notifications/index.js.map +1 -0
- package/dist/lib/notifications/manager.d.ts +46 -0
- package/dist/lib/notifications/manager.js +200 -0
- package/dist/lib/notifications/manager.js.map +1 -0
- package/dist/lib/notifications/storage.d.ts +60 -0
- package/dist/lib/notifications/storage.js +182 -0
- package/dist/lib/notifications/storage.js.map +1 -0
- package/dist/lib/notifications/types.d.ts +126 -0
- package/dist/lib/notifications/types.js +16 -0
- package/dist/lib/notifications/types.js.map +1 -0
- package/dist/lib/orchestrate/actions.js +182 -3
- package/dist/lib/orchestrate/actions.js.map +1 -1
- package/dist/lib/orchestrate/config-loader.js +9 -35
- package/dist/lib/orchestrate/config-loader.js.map +1 -1
- package/dist/lib/orchestrate/engine.d.ts +53 -1
- package/dist/lib/orchestrate/engine.js +74 -3
- package/dist/lib/orchestrate/engine.js.map +1 -1
- package/dist/lib/orchestrate/escalation.d.ts +87 -0
- package/dist/lib/orchestrate/escalation.js +63 -0
- package/dist/lib/orchestrate/escalation.js.map +1 -0
- package/dist/lib/orchestrate/index.d.ts +2 -0
- package/dist/lib/orchestrate/index.js +1 -0
- package/dist/lib/orchestrate/index.js.map +1 -1
- package/dist/lib/orchestrate/llm-agent.d.ts +101 -0
- package/dist/lib/orchestrate/llm-agent.js +295 -0
- package/dist/lib/orchestrate/llm-agent.js.map +1 -0
- package/dist/lib/orchestrate/presets.d.ts +4 -3
- package/dist/lib/orchestrate/presets.js +13 -8
- package/dist/lib/orchestrate/presets.js.map +1 -1
- package/dist/lib/orchestrate/types.d.ts +7 -1
- package/dist/lib/orchestrate/types.js +1 -0
- package/dist/lib/orchestrate/types.js.map +1 -1
- package/dist/lib/pmo/base-command.js +1 -1
- package/dist/lib/pmo/base-command.js.map +1 -1
- package/dist/lib/pmo/find-pmo.d.ts +8 -0
- package/dist/lib/pmo/find-pmo.js +63 -2
- package/dist/lib/pmo/find-pmo.js.map +1 -1
- package/dist/lib/pmo/index.d.ts +1 -1
- package/dist/lib/pmo/index.js +1 -1
- package/dist/lib/pmo/index.js.map +1 -1
- package/dist/lib/pmo/pmo-context.js +1 -1
- package/dist/lib/pmo/pmo-context.js.map +1 -1
- package/dist/lib/pmo/storage/index.js +2 -1
- package/dist/lib/pmo/storage/index.js.map +1 -1
- package/dist/lib/pr/index.d.ts +32 -0
- package/dist/lib/pr/index.js +45 -0
- package/dist/lib/pr/index.js.map +1 -1
- package/dist/lib/registry/index.js +0 -1
- package/dist/lib/registry/index.js.map +1 -1
- package/dist/lib/signal-handler.d.ts +8 -0
- package/dist/lib/signal-handler.js +33 -0
- package/dist/lib/signal-handler.js.map +1 -1
- package/dist/lib/themes.js +8 -1
- package/dist/lib/themes.js.map +1 -1
- package/dist/lib/work-lifecycle/container-cleanup-hook.d.ts +17 -7
- package/dist/lib/work-lifecycle/container-cleanup-hook.js +64 -11
- package/dist/lib/work-lifecycle/container-cleanup-hook.js.map +1 -1
- package/dist/lib/work-lifecycle/hooks/executor.d.ts +22 -2
- package/dist/lib/work-lifecycle/hooks/executor.js +46 -8
- package/dist/lib/work-lifecycle/hooks/executor.js.map +1 -1
- package/dist/lib/work-lifecycle/hooks/manager.d.ts +62 -3
- package/dist/lib/work-lifecycle/hooks/manager.js +285 -4
- package/dist/lib/work-lifecycle/hooks/manager.js.map +1 -1
- package/dist/lib/work-lifecycle/hooks/types.d.ts +36 -5
- package/dist/lib/work-lifecycle/hooks/types.js +1 -1
- package/dist/lib/work-lifecycle/hooks/types.js.map +1 -1
- package/dist/lib/workspace-resolution.d.ts +73 -0
- package/dist/lib/workspace-resolution.js +188 -0
- package/dist/lib/workspace-resolution.js.map +1 -0
- package/oclif.manifest.json +2830 -2142
- package/package.json +1 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace Resolution for Ticketless Work
|
|
3
|
+
*
|
|
4
|
+
* Auto-detects the directory type and resolves the appropriate working
|
|
5
|
+
* directory for an agent. Handles git repos, non-git directories, and
|
|
6
|
+
* headless (no directory) mode.
|
|
7
|
+
*
|
|
8
|
+
* Resolution rules:
|
|
9
|
+
* 1. Git repo (default) → create worktree for isolation
|
|
10
|
+
* 2. Git repo + noWorktree → work in-place
|
|
11
|
+
* 3. Non-git directory → work in-place (auto-detected)
|
|
12
|
+
* 4. No directory specified → create temp workspace (headless mode)
|
|
13
|
+
* 5. --repo URL → clone into temp dir (handled by caller)
|
|
14
|
+
*
|
|
15
|
+
* The caller should not need to specify a mode — this module detects
|
|
16
|
+
* git vs non-git and does the right thing.
|
|
17
|
+
*/
|
|
18
|
+
export type WorkspaceMode = 'worktree' | 'in-place' | 'headless';
|
|
19
|
+
export interface ResolvedWorkspace {
|
|
20
|
+
/** Actual directory the agent will work in */
|
|
21
|
+
workDir: string;
|
|
22
|
+
/** Original source directory (same as workDir for in-place/headless) */
|
|
23
|
+
sourceDir: string;
|
|
24
|
+
/** Whether the directory is inside a git repository */
|
|
25
|
+
isGitRepo: boolean;
|
|
26
|
+
/** Current git branch (null if not a git repo) */
|
|
27
|
+
branch: string | null;
|
|
28
|
+
/** How the workspace was resolved */
|
|
29
|
+
mode: WorkspaceMode;
|
|
30
|
+
/** Whether the workspace is a temporary directory (should be cleaned up) */
|
|
31
|
+
isTemp: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Check if a directory is inside a git repository.
|
|
35
|
+
*/
|
|
36
|
+
export declare function isGitRepo(dir: string): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Get the git root directory for a path.
|
|
39
|
+
*/
|
|
40
|
+
export declare function getGitRoot(dir: string): string | null;
|
|
41
|
+
/**
|
|
42
|
+
* Get the current git branch.
|
|
43
|
+
*/
|
|
44
|
+
export declare function getCurrentBranch(dir: string): string | null;
|
|
45
|
+
/**
|
|
46
|
+
* Create a git worktree for isolated agent work.
|
|
47
|
+
* Returns the path to the new worktree directory.
|
|
48
|
+
*/
|
|
49
|
+
export declare function createWorktree(repoDir: string, agentName: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* Create a temporary workspace directory for headless work.
|
|
52
|
+
* Used when no --dir or --repo is specified (research, thinking, non-code tasks).
|
|
53
|
+
*/
|
|
54
|
+
export declare function createTempWorkspace(agentName: string): string;
|
|
55
|
+
/**
|
|
56
|
+
* Resolve the workspace for a ticketless work run.
|
|
57
|
+
*
|
|
58
|
+
* Auto-detects git vs non-git and chooses the appropriate strategy:
|
|
59
|
+
* - Git repo → worktree (default) or in-place (--no-worktree)
|
|
60
|
+
* - Non-git dir → in-place
|
|
61
|
+
* - No dir → temp workspace (headless)
|
|
62
|
+
*
|
|
63
|
+
* @param options Resolution options
|
|
64
|
+
* @returns Resolved workspace info
|
|
65
|
+
*/
|
|
66
|
+
export declare function resolveWorkspace(options: {
|
|
67
|
+
/** Explicit directory (--dir flag) */
|
|
68
|
+
dir?: string;
|
|
69
|
+
/** Agent name (for worktree/temp naming) */
|
|
70
|
+
agentName: string;
|
|
71
|
+
/** Skip worktree creation even for git repos (--no-worktree) */
|
|
72
|
+
noWorktree?: boolean;
|
|
73
|
+
}): ResolvedWorkspace;
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace Resolution for Ticketless Work
|
|
3
|
+
*
|
|
4
|
+
* Auto-detects the directory type and resolves the appropriate working
|
|
5
|
+
* directory for an agent. Handles git repos, non-git directories, and
|
|
6
|
+
* headless (no directory) mode.
|
|
7
|
+
*
|
|
8
|
+
* Resolution rules:
|
|
9
|
+
* 1. Git repo (default) → create worktree for isolation
|
|
10
|
+
* 2. Git repo + noWorktree → work in-place
|
|
11
|
+
* 3. Non-git directory → work in-place (auto-detected)
|
|
12
|
+
* 4. No directory specified → create temp workspace (headless mode)
|
|
13
|
+
* 5. --repo URL → clone into temp dir (handled by caller)
|
|
14
|
+
*
|
|
15
|
+
* The caller should not need to specify a mode — this module detects
|
|
16
|
+
* git vs non-git and does the right thing.
|
|
17
|
+
*/
|
|
18
|
+
import * as fs from 'node:fs';
|
|
19
|
+
import * as path from 'node:path';
|
|
20
|
+
import * as os from 'node:os';
|
|
21
|
+
import { execSync } from 'node:child_process';
|
|
22
|
+
// =============================================================================
|
|
23
|
+
// Git Detection
|
|
24
|
+
// =============================================================================
|
|
25
|
+
/**
|
|
26
|
+
* Check if a directory is inside a git repository.
|
|
27
|
+
*/
|
|
28
|
+
export function isGitRepo(dir) {
|
|
29
|
+
try {
|
|
30
|
+
execSync('git rev-parse --git-dir', {
|
|
31
|
+
cwd: dir,
|
|
32
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
33
|
+
encoding: 'utf-8',
|
|
34
|
+
});
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get the git root directory for a path.
|
|
43
|
+
*/
|
|
44
|
+
export function getGitRoot(dir) {
|
|
45
|
+
try {
|
|
46
|
+
return execSync('git rev-parse --show-toplevel', {
|
|
47
|
+
cwd: dir,
|
|
48
|
+
encoding: 'utf-8',
|
|
49
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
50
|
+
}).trim();
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get the current git branch.
|
|
58
|
+
*/
|
|
59
|
+
export function getCurrentBranch(dir) {
|
|
60
|
+
try {
|
|
61
|
+
return execSync('git rev-parse --abbrev-ref HEAD', {
|
|
62
|
+
cwd: dir,
|
|
63
|
+
encoding: 'utf-8',
|
|
64
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
65
|
+
}).trim();
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// =============================================================================
|
|
72
|
+
// Worktree Management
|
|
73
|
+
// =============================================================================
|
|
74
|
+
/**
|
|
75
|
+
* Create a git worktree for isolated agent work.
|
|
76
|
+
* Returns the path to the new worktree directory.
|
|
77
|
+
*/
|
|
78
|
+
export function createWorktree(repoDir, agentName) {
|
|
79
|
+
const gitRoot = getGitRoot(repoDir);
|
|
80
|
+
if (!gitRoot) {
|
|
81
|
+
throw new Error(`Not a git repository: ${repoDir}`);
|
|
82
|
+
}
|
|
83
|
+
// Create worktree in a sibling directory to avoid polluting the repo
|
|
84
|
+
const worktreeBase = path.join(os.tmpdir(), 'prlt-worktrees');
|
|
85
|
+
fs.mkdirSync(worktreeBase, { recursive: true });
|
|
86
|
+
const worktreeDir = path.join(worktreeBase, `${agentName}-${Date.now()}`);
|
|
87
|
+
const branchName = `prlt-run/${agentName}-${Date.now()}`;
|
|
88
|
+
// Get the current HEAD as the base for the worktree
|
|
89
|
+
const baseRef = getCurrentBranch(gitRoot) || 'HEAD';
|
|
90
|
+
execSync(`git worktree add "${worktreeDir}" -b "${branchName}" "${baseRef}"`, {
|
|
91
|
+
cwd: gitRoot,
|
|
92
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
93
|
+
});
|
|
94
|
+
return worktreeDir;
|
|
95
|
+
}
|
|
96
|
+
// =============================================================================
|
|
97
|
+
// Temp Workspace (Headless Mode)
|
|
98
|
+
// =============================================================================
|
|
99
|
+
/**
|
|
100
|
+
* Create a temporary workspace directory for headless work.
|
|
101
|
+
* Used when no --dir or --repo is specified (research, thinking, non-code tasks).
|
|
102
|
+
*/
|
|
103
|
+
export function createTempWorkspace(agentName) {
|
|
104
|
+
const tmpBase = path.join(os.tmpdir(), 'prlt-workspaces');
|
|
105
|
+
fs.mkdirSync(tmpBase, { recursive: true });
|
|
106
|
+
const tmpDir = path.join(tmpBase, `${agentName}-${Date.now()}`);
|
|
107
|
+
fs.mkdirSync(tmpDir, { recursive: true });
|
|
108
|
+
return tmpDir;
|
|
109
|
+
}
|
|
110
|
+
// =============================================================================
|
|
111
|
+
// Resolve Workspace
|
|
112
|
+
// =============================================================================
|
|
113
|
+
/**
|
|
114
|
+
* Resolve the workspace for a ticketless work run.
|
|
115
|
+
*
|
|
116
|
+
* Auto-detects git vs non-git and chooses the appropriate strategy:
|
|
117
|
+
* - Git repo → worktree (default) or in-place (--no-worktree)
|
|
118
|
+
* - Non-git dir → in-place
|
|
119
|
+
* - No dir → temp workspace (headless)
|
|
120
|
+
*
|
|
121
|
+
* @param options Resolution options
|
|
122
|
+
* @returns Resolved workspace info
|
|
123
|
+
*/
|
|
124
|
+
export function resolveWorkspace(options) {
|
|
125
|
+
const { dir, agentName, noWorktree = false } = options;
|
|
126
|
+
// ─── No directory: headless mode ──────────────────────────────
|
|
127
|
+
if (!dir) {
|
|
128
|
+
const tmpDir = createTempWorkspace(agentName);
|
|
129
|
+
return {
|
|
130
|
+
workDir: tmpDir,
|
|
131
|
+
sourceDir: tmpDir,
|
|
132
|
+
isGitRepo: false,
|
|
133
|
+
branch: null,
|
|
134
|
+
mode: 'headless',
|
|
135
|
+
isTemp: true,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
// ─── Explicit directory ───────────────────────────────────────
|
|
139
|
+
const resolvedDir = path.resolve(dir);
|
|
140
|
+
const gitRepo = isGitRepo(resolvedDir);
|
|
141
|
+
if (!gitRepo) {
|
|
142
|
+
// Non-git directory: work in-place (auto-detected)
|
|
143
|
+
return {
|
|
144
|
+
workDir: resolvedDir,
|
|
145
|
+
sourceDir: resolvedDir,
|
|
146
|
+
isGitRepo: false,
|
|
147
|
+
branch: null,
|
|
148
|
+
mode: 'in-place',
|
|
149
|
+
isTemp: false,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
// Git repo
|
|
153
|
+
if (noWorktree) {
|
|
154
|
+
// User opted out of worktree isolation
|
|
155
|
+
return {
|
|
156
|
+
workDir: resolvedDir,
|
|
157
|
+
sourceDir: resolvedDir,
|
|
158
|
+
isGitRepo: true,
|
|
159
|
+
branch: getCurrentBranch(resolvedDir),
|
|
160
|
+
mode: 'in-place',
|
|
161
|
+
isTemp: false,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
// Default: create worktree for isolation
|
|
165
|
+
try {
|
|
166
|
+
const worktreeDir = createWorktree(resolvedDir, agentName);
|
|
167
|
+
return {
|
|
168
|
+
workDir: worktreeDir,
|
|
169
|
+
sourceDir: resolvedDir,
|
|
170
|
+
isGitRepo: true,
|
|
171
|
+
branch: getCurrentBranch(worktreeDir),
|
|
172
|
+
mode: 'worktree',
|
|
173
|
+
isTemp: true,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
// Worktree creation failed — fall back to in-place
|
|
178
|
+
return {
|
|
179
|
+
workDir: resolvedDir,
|
|
180
|
+
sourceDir: resolvedDir,
|
|
181
|
+
isGitRepo: true,
|
|
182
|
+
branch: getCurrentBranch(resolvedDir),
|
|
183
|
+
mode: 'in-place',
|
|
184
|
+
isTemp: false,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=workspace-resolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-resolution.js","sourceRoot":"","sources":["../../src/lib/workspace-resolution.ts"],"names":[],"mappings":"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"}
|