agor-live 0.3.7
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/LICENSE +94 -0
- package/README.md +163 -0
- package/bin/agor-daemon.js +20 -0
- package/bin/agor.js +14 -0
- package/dist/cli/base-command.d.ts +29 -0
- package/dist/cli/base-command.js +41 -0
- package/dist/cli/commands/board/add-session.d.ts +15 -0
- package/dist/cli/commands/board/add-session.js +102 -0
- package/dist/cli/commands/board/list.d.ts +14 -0
- package/dist/cli/commands/board/list.js +74 -0
- package/dist/cli/commands/config/clear.d.ts +13 -0
- package/dist/cli/commands/config/clear.js +21 -0
- package/dist/cli/commands/config/get.d.ts +13 -0
- package/dist/cli/commands/config/get.js +41 -0
- package/dist/cli/commands/config/index.d.ts +13 -0
- package/dist/cli/commands/config/index.js +118 -0
- package/dist/cli/commands/config/set.d.ts +14 -0
- package/dist/cli/commands/config/set.js +50 -0
- package/dist/cli/commands/config/unset.d.ts +13 -0
- package/dist/cli/commands/config/unset.js +35 -0
- package/dist/cli/commands/daemon/index.d.ts +13 -0
- package/dist/cli/commands/daemon/index.js +65 -0
- package/dist/cli/commands/daemon/logs.d.ts +13 -0
- package/dist/cli/commands/daemon/logs.js +78 -0
- package/dist/cli/commands/daemon/restart.d.ts +13 -0
- package/dist/cli/commands/daemon/restart.js +177 -0
- package/dist/cli/commands/daemon/start.d.ts +13 -0
- package/dist/cli/commands/daemon/start.js +193 -0
- package/dist/cli/commands/daemon/status.d.ts +13 -0
- package/dist/cli/commands/daemon/status.js +93 -0
- package/dist/cli/commands/daemon/stop.d.ts +13 -0
- package/dist/cli/commands/daemon/stop.js +108 -0
- package/dist/cli/commands/init.d.ts +44 -0
- package/dist/cli/commands/init.js +459 -0
- package/dist/cli/commands/mcp/add.d.ts +26 -0
- package/dist/cli/commands/mcp/add.js +162 -0
- package/dist/cli/commands/mcp/list.d.ts +16 -0
- package/dist/cli/commands/mcp/list.js +89 -0
- package/dist/cli/commands/mcp/remove.d.ts +17 -0
- package/dist/cli/commands/mcp/remove.js +86 -0
- package/dist/cli/commands/mcp/show.d.ts +14 -0
- package/dist/cli/commands/mcp/show.js +131 -0
- package/dist/cli/commands/repo/add.d.ts +16 -0
- package/dist/cli/commands/repo/add.js +105 -0
- package/dist/cli/commands/repo/list.d.ts +17 -0
- package/dist/cli/commands/repo/list.js +99 -0
- package/dist/cli/commands/repo/rm.d.ts +17 -0
- package/dist/cli/commands/repo/rm.js +126 -0
- package/dist/cli/commands/repo/worktree/add.d.ts +21 -0
- package/dist/cli/commands/repo/worktree/add.js +145 -0
- package/dist/cli/commands/repo/worktree/list.d.ts +21 -0
- package/dist/cli/commands/repo/worktree/list.js +136 -0
- package/dist/cli/commands/session/list.d.ts +30 -0
- package/dist/cli/commands/session/list.js +204 -0
- package/dist/cli/commands/session/load-claude.d.ts +16 -0
- package/dist/cli/commands/session/load-claude.js +211 -0
- package/dist/cli/commands/user/create-admin.d.ts +13 -0
- package/dist/cli/commands/user/create-admin.js +65 -0
- package/dist/cli/commands/user/create.d.ts +16 -0
- package/dist/cli/commands/user/create.js +126 -0
- package/dist/cli/commands/user/delete.d.ts +16 -0
- package/dist/cli/commands/user/delete.js +77 -0
- package/dist/cli/commands/user/list.d.ts +13 -0
- package/dist/cli/commands/user/list.js +78 -0
- package/dist/cli/commands/user/update.d.ts +19 -0
- package/dist/cli/commands/user/update.js +149 -0
- package/dist/cli/hooks/command-not-found.d.ts +9 -0
- package/dist/cli/hooks/command-not-found.js +14 -0
- package/dist/cli/lib/banner.d.ts +25 -0
- package/dist/cli/lib/banner.js +25 -0
- package/dist/cli/lib/context.d.ts +27 -0
- package/dist/cli/lib/context.js +32 -0
- package/dist/cli/lib/daemon-manager.d.ts +48 -0
- package/dist/cli/lib/daemon-manager.js +109 -0
- package/dist/cli/lib/help.d.ts +13 -0
- package/dist/cli/lib/help.js +46 -0
- package/dist/core/agentic-tool-B_gFNpk5.d.ts +33 -0
- package/dist/core/agentic-tool-DsyX8diw.d.cts +33 -0
- package/dist/core/api/index.cjs +98 -0
- package/dist/core/api/index.d.cts +174 -0
- package/dist/core/api/index.d.ts +174 -0
- package/dist/core/api/index.js +62 -0
- package/dist/core/board-comment-BUm0fpmD.d.cts +134 -0
- package/dist/core/board-comment-gC_-twPx.d.ts +134 -0
- package/dist/core/claude/index.cjs +673 -0
- package/dist/core/claude/index.d.cts +124 -0
- package/dist/core/claude/index.d.ts +124 -0
- package/dist/core/claude/index.js +629 -0
- package/dist/core/config/browser.cjs +165 -0
- package/dist/core/config/browser.d.cts +289 -0
- package/dist/core/config/browser.d.ts +289 -0
- package/dist/core/config/browser.js +131 -0
- package/dist/core/config/index.cjs +518 -0
- package/dist/core/config/index.d.cts +246 -0
- package/dist/core/config/index.d.ts +246 -0
- package/dist/core/config/index.js +451 -0
- package/dist/core/db/index.cjs +3726 -0
- package/dist/core/db/index.d.cts +631 -0
- package/dist/core/db/index.d.ts +631 -0
- package/dist/core/db/index.js +3649 -0
- package/dist/core/dist/agentic-tool-B_gFNpk5.d.ts +33 -0
- package/dist/core/dist/agentic-tool-DsyX8diw.d.cts +33 -0
- package/dist/core/dist/api/index.cjs +98 -0
- package/dist/core/dist/api/index.d.cts +174 -0
- package/dist/core/dist/api/index.d.ts +174 -0
- package/dist/core/dist/api/index.js +62 -0
- package/dist/core/dist/board-comment-BUm0fpmD.d.cts +134 -0
- package/dist/core/dist/board-comment-gC_-twPx.d.ts +134 -0
- package/dist/core/dist/claude/index.cjs +673 -0
- package/dist/core/dist/claude/index.d.cts +124 -0
- package/dist/core/dist/claude/index.d.ts +124 -0
- package/dist/core/dist/claude/index.js +629 -0
- package/dist/core/dist/config/browser.cjs +165 -0
- package/dist/core/dist/config/browser.d.cts +289 -0
- package/dist/core/dist/config/browser.d.ts +289 -0
- package/dist/core/dist/config/browser.js +131 -0
- package/dist/core/dist/config/index.cjs +518 -0
- package/dist/core/dist/config/index.d.cts +246 -0
- package/dist/core/dist/config/index.d.ts +246 -0
- package/dist/core/dist/config/index.js +451 -0
- package/dist/core/dist/db/index.cjs +3726 -0
- package/dist/core/dist/db/index.d.cts +631 -0
- package/dist/core/dist/db/index.d.ts +631 -0
- package/dist/core/dist/db/index.js +3649 -0
- package/dist/core/dist/environment/variable-resolver.cjs +92 -0
- package/dist/core/dist/environment/variable-resolver.d.cts +52 -0
- package/dist/core/dist/environment/variable-resolver.d.ts +52 -0
- package/dist/core/dist/environment/variable-resolver.js +53 -0
- package/dist/core/dist/feathers/index.cjs +66 -0
- package/dist/core/dist/feathers/index.d.cts +7 -0
- package/dist/core/dist/feathers/index.d.ts +7 -0
- package/dist/core/dist/feathers/index.js +25 -0
- package/dist/core/dist/feathers-BzHEPnpl.d.cts +228 -0
- package/dist/core/dist/feathers-BzHEPnpl.d.ts +228 -0
- package/dist/core/dist/git/index.cjs +302 -0
- package/dist/core/dist/git/index.d.cts +137 -0
- package/dist/core/dist/git/index.d.ts +137 -0
- package/dist/core/dist/git/index.js +260 -0
- package/dist/core/dist/id-DMqyogFB.d.cts +131 -0
- package/dist/core/dist/id-DMqyogFB.d.ts +131 -0
- package/dist/core/dist/index.cjs +4653 -0
- package/dist/core/dist/index.d.cts +23 -0
- package/dist/core/dist/index.d.ts +23 -0
- package/dist/core/dist/index.js +4509 -0
- package/dist/core/dist/message-BoxZISHg.d.cts +120 -0
- package/dist/core/dist/message-DvBzHu7V.d.ts +120 -0
- package/dist/core/dist/permissions/index.cjs +112 -0
- package/dist/core/dist/permissions/index.d.cts +81 -0
- package/dist/core/dist/permissions/index.d.ts +81 -0
- package/dist/core/dist/permissions/index.js +85 -0
- package/dist/core/dist/repo-3CUrCRbq.d.cts +405 -0
- package/dist/core/dist/repo-CnvJ0B6-.d.ts +405 -0
- package/dist/core/dist/session-BPjJlVdZ.d.cts +429 -0
- package/dist/core/dist/session-wAzjHatv.d.ts +429 -0
- package/dist/core/dist/task-BIEgT1DK.d.cts +163 -0
- package/dist/core/dist/task-DuIfiUbW.d.ts +163 -0
- package/dist/core/dist/templates/handlebars-helpers.cjs +156 -0
- package/dist/core/dist/templates/handlebars-helpers.d.cts +45 -0
- package/dist/core/dist/templates/handlebars-helpers.d.ts +45 -0
- package/dist/core/dist/templates/handlebars-helpers.js +119 -0
- package/dist/core/dist/tools/claude/models.cjs +70 -0
- package/dist/core/dist/tools/claude/models.d.cts +27 -0
- package/dist/core/dist/tools/claude/models.d.ts +27 -0
- package/dist/core/dist/tools/claude/models.js +44 -0
- package/dist/core/dist/tools/index.cjs +3367 -0
- package/dist/core/dist/tools/index.d.cts +967 -0
- package/dist/core/dist/tools/index.d.ts +967 -0
- package/dist/core/dist/tools/index.js +3314 -0
- package/dist/core/dist/tools/models.cjs +119 -0
- package/dist/core/dist/tools/models.d.cts +47 -0
- package/dist/core/dist/tools/models.d.ts +47 -0
- package/dist/core/dist/tools/models.js +86 -0
- package/dist/core/dist/types/index.cjs +152 -0
- package/dist/core/dist/types/index.d.cts +214 -0
- package/dist/core/dist/types/index.d.ts +214 -0
- package/dist/core/dist/types/index.js +112 -0
- package/dist/core/dist/user-BmL3kFol.d.ts +50 -0
- package/dist/core/dist/user-eUuKj7yM.d.cts +50 -0
- package/dist/core/dist/utils/pricing.cjs +102 -0
- package/dist/core/dist/utils/pricing.d.cts +43 -0
- package/dist/core/dist/utils/pricing.d.ts +43 -0
- package/dist/core/dist/utils/pricing.js +75 -0
- package/dist/core/dist/worktrees-BzIxB1U6.d.cts +2745 -0
- package/dist/core/dist/worktrees-CYem1ya2.d.ts +2745 -0
- package/dist/core/environment/variable-resolver.cjs +92 -0
- package/dist/core/environment/variable-resolver.d.cts +52 -0
- package/dist/core/environment/variable-resolver.d.ts +52 -0
- package/dist/core/environment/variable-resolver.js +53 -0
- package/dist/core/feathers/index.cjs +66 -0
- package/dist/core/feathers/index.d.cts +7 -0
- package/dist/core/feathers/index.d.ts +7 -0
- package/dist/core/feathers/index.js +25 -0
- package/dist/core/feathers-BzHEPnpl.d.cts +228 -0
- package/dist/core/feathers-BzHEPnpl.d.ts +228 -0
- package/dist/core/git/index.cjs +302 -0
- package/dist/core/git/index.d.cts +137 -0
- package/dist/core/git/index.d.ts +137 -0
- package/dist/core/git/index.js +260 -0
- package/dist/core/id-DMqyogFB.d.cts +131 -0
- package/dist/core/id-DMqyogFB.d.ts +131 -0
- package/dist/core/index.cjs +4653 -0
- package/dist/core/index.d.cts +23 -0
- package/dist/core/index.d.ts +23 -0
- package/dist/core/index.js +4509 -0
- package/dist/core/message-BoxZISHg.d.cts +120 -0
- package/dist/core/message-DvBzHu7V.d.ts +120 -0
- package/dist/core/package.json +133 -0
- package/dist/core/permissions/index.cjs +112 -0
- package/dist/core/permissions/index.d.cts +81 -0
- package/dist/core/permissions/index.d.ts +81 -0
- package/dist/core/permissions/index.js +85 -0
- package/dist/core/repo-3CUrCRbq.d.cts +405 -0
- package/dist/core/repo-CnvJ0B6-.d.ts +405 -0
- package/dist/core/session-BPjJlVdZ.d.cts +429 -0
- package/dist/core/session-wAzjHatv.d.ts +429 -0
- package/dist/core/task-BIEgT1DK.d.cts +163 -0
- package/dist/core/task-DuIfiUbW.d.ts +163 -0
- package/dist/core/templates/handlebars-helpers.cjs +156 -0
- package/dist/core/templates/handlebars-helpers.d.cts +45 -0
- package/dist/core/templates/handlebars-helpers.d.ts +45 -0
- package/dist/core/templates/handlebars-helpers.js +119 -0
- package/dist/core/tools/claude/models.cjs +70 -0
- package/dist/core/tools/claude/models.d.cts +27 -0
- package/dist/core/tools/claude/models.d.ts +27 -0
- package/dist/core/tools/claude/models.js +44 -0
- package/dist/core/tools/index.cjs +3367 -0
- package/dist/core/tools/index.d.cts +967 -0
- package/dist/core/tools/index.d.ts +967 -0
- package/dist/core/tools/index.js +3314 -0
- package/dist/core/tools/models.cjs +119 -0
- package/dist/core/tools/models.d.cts +47 -0
- package/dist/core/tools/models.d.ts +47 -0
- package/dist/core/tools/models.js +86 -0
- package/dist/core/types/index.cjs +152 -0
- package/dist/core/types/index.d.cts +214 -0
- package/dist/core/types/index.d.ts +214 -0
- package/dist/core/types/index.js +112 -0
- package/dist/core/user-BmL3kFol.d.ts +50 -0
- package/dist/core/user-eUuKj7yM.d.cts +50 -0
- package/dist/core/utils/pricing.cjs +102 -0
- package/dist/core/utils/pricing.d.cts +43 -0
- package/dist/core/utils/pricing.d.ts +43 -0
- package/dist/core/utils/pricing.js +75 -0
- package/dist/core/worktrees-BzIxB1U6.d.cts +2745 -0
- package/dist/core/worktrees-CYem1ya2.d.ts +2745 -0
- package/dist/daemon/adapters/drizzle.d.ts +114 -0
- package/dist/daemon/adapters/drizzle.js +219 -0
- package/dist/daemon/declarations.d.ts +101 -0
- package/dist/daemon/declarations.js +0 -0
- package/dist/daemon/index.d.ts +2 -0
- package/dist/daemon/index.js +4093 -0
- package/dist/daemon/mcp/routes.d.ts +15 -0
- package/dist/daemon/mcp/routes.js +641 -0
- package/dist/daemon/mcp/tokens.d.ts +50 -0
- package/dist/daemon/mcp/tokens.js +85 -0
- package/dist/daemon/services/board-comments.d.ts +97 -0
- package/dist/daemon/services/board-comments.js +326 -0
- package/dist/daemon/services/board-objects.d.ts +71 -0
- package/dist/daemon/services/board-objects.js +117 -0
- package/dist/daemon/services/boards.d.ts +64 -0
- package/dist/daemon/services/boards.js +286 -0
- package/dist/daemon/services/config.d.ts +35 -0
- package/dist/daemon/services/config.js +68 -0
- package/dist/daemon/services/context.d.ts +55 -0
- package/dist/daemon/services/context.js +113 -0
- package/dist/daemon/services/health-monitor.d.ts +58 -0
- package/dist/daemon/services/health-monitor.js +158 -0
- package/dist/daemon/services/mcp-servers.d.ts +42 -0
- package/dist/daemon/services/mcp-servers.js +275 -0
- package/dist/daemon/services/messages.d.ts +49 -0
- package/dist/daemon/services/messages.js +269 -0
- package/dist/daemon/services/repos.d.ts +61 -0
- package/dist/daemon/services/repos.js +350 -0
- package/dist/daemon/services/session-mcp-servers.d.ts +56 -0
- package/dist/daemon/services/session-mcp-servers.js +51 -0
- package/dist/daemon/services/sessions.d.ts +64 -0
- package/dist/daemon/services/sessions.js +398 -0
- package/dist/daemon/services/tasks.d.ts +55 -0
- package/dist/daemon/services/tasks.js +318 -0
- package/dist/daemon/services/terminals.d.ts +75 -0
- package/dist/daemon/services/terminals.js +110 -0
- package/dist/daemon/services/users.d.ts +98 -0
- package/dist/daemon/services/users.js +177 -0
- package/dist/daemon/services/worktrees.d.ts +98 -0
- package/dist/daemon/services/worktrees.js +719 -0
- package/dist/daemon/strategies/anonymous.d.ts +20 -0
- package/dist/daemon/strategies/anonymous.js +32 -0
- package/dist/ui/assets/cc-CYmbalCD.png +0 -0
- package/dist/ui/assets/codex-4sLD1mVS.png +0 -0
- package/dist/ui/assets/cursor-BUy5pFVL.png +0 -0
- package/dist/ui/assets/gemini-ajOb7iAl.png +0 -0
- package/dist/ui/assets/index-Dc4ELxry.css +32 -0
- package/dist/ui/assets/index-KfIu8v4V.js +578 -0
- package/dist/ui/favicon.png +0 -0
- package/dist/ui/index.html +26 -0
- package/dist/ui/vite.svg +1 -0
- package/package.json +90 -0
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
import { W as WorktreeID, U as UUID, B as BoardID, a as SessionID } from './id-DMqyogFB.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Git worktree - First-class entity for isolated development contexts
|
|
5
|
+
*
|
|
6
|
+
* Worktrees are persistent work contexts that outlive individual sessions.
|
|
7
|
+
* Each worktree has:
|
|
8
|
+
* - Isolated git working directory and branch
|
|
9
|
+
* - Environment configuration and runtime state
|
|
10
|
+
* - Work metadata (issue, PR, notes)
|
|
11
|
+
* - Session history
|
|
12
|
+
*
|
|
13
|
+
* Relationship to sessions:
|
|
14
|
+
* - Sessions = ephemeral conversations with AI agents
|
|
15
|
+
* - Worktrees = persistent work contexts (git + environment + metadata)
|
|
16
|
+
* - Multiple sessions can work on the same worktree over time
|
|
17
|
+
*/
|
|
18
|
+
interface Worktree {
|
|
19
|
+
/** Unique worktree identifier (UUIDv7) */
|
|
20
|
+
worktree_id: WorktreeID;
|
|
21
|
+
/** Repository this worktree belongs to */
|
|
22
|
+
repo_id: UUID;
|
|
23
|
+
/**
|
|
24
|
+
* Unique numeric ID for this worktree (auto-assigned, sequential)
|
|
25
|
+
*
|
|
26
|
+
* Used in environment templates for port allocation:
|
|
27
|
+
* Example: {{add 9000 WORKTREE_UNIQUE_ID}} → 9001, 9002, 9003, ...
|
|
28
|
+
*
|
|
29
|
+
* Auto-incremented when worktree is created (1, 2, 3, ...)
|
|
30
|
+
*/
|
|
31
|
+
worktree_unique_id: number;
|
|
32
|
+
/** Timestamps */
|
|
33
|
+
created_at: string;
|
|
34
|
+
updated_at: string;
|
|
35
|
+
/** User who created this worktree */
|
|
36
|
+
created_by: UUID;
|
|
37
|
+
/**
|
|
38
|
+
* Worktree name (slug format)
|
|
39
|
+
*
|
|
40
|
+
* Used for:
|
|
41
|
+
* - Directory name: ~/.agor/worktrees/{repo-slug}/{name}
|
|
42
|
+
* - Default branch name (if creating new branch)
|
|
43
|
+
* - CLI references
|
|
44
|
+
*
|
|
45
|
+
* Examples: "main", "feat-auth", "exp-rewrite"
|
|
46
|
+
*/
|
|
47
|
+
name: WorktreeName;
|
|
48
|
+
/**
|
|
49
|
+
* Git ref (branch/tag/commit) currently checked out
|
|
50
|
+
*
|
|
51
|
+
* Examples: "feat-auth", "main", "v1.2.3", "a1b2c3d"
|
|
52
|
+
*/
|
|
53
|
+
ref: string;
|
|
54
|
+
/**
|
|
55
|
+
* Absolute path to worktree directory
|
|
56
|
+
*
|
|
57
|
+
* Example: "/Users/max/.agor/worktrees/myapp/feat-auth"
|
|
58
|
+
*/
|
|
59
|
+
path: string;
|
|
60
|
+
/**
|
|
61
|
+
* Branch this worktree diverged from
|
|
62
|
+
*
|
|
63
|
+
* Example: "main" (if this is a feature branch)
|
|
64
|
+
*/
|
|
65
|
+
base_ref?: string;
|
|
66
|
+
/**
|
|
67
|
+
* SHA at worktree creation (base commit)
|
|
68
|
+
*
|
|
69
|
+
* Tracks where this branch started.
|
|
70
|
+
*/
|
|
71
|
+
base_sha?: string;
|
|
72
|
+
/**
|
|
73
|
+
* Latest commit SHA in this worktree
|
|
74
|
+
*
|
|
75
|
+
* Updated when sessions make commits.
|
|
76
|
+
*/
|
|
77
|
+
last_commit_sha?: string;
|
|
78
|
+
/**
|
|
79
|
+
* Remote tracking branch (if any)
|
|
80
|
+
*
|
|
81
|
+
* Examples: "origin/feat-auth", "upstream/main"
|
|
82
|
+
*/
|
|
83
|
+
tracking_branch?: string;
|
|
84
|
+
/**
|
|
85
|
+
* Whether this ref is a new branch created by Agor
|
|
86
|
+
*
|
|
87
|
+
* true: Branch was created during worktree creation
|
|
88
|
+
* false: Branch existed before (tracked from remote or local)
|
|
89
|
+
*/
|
|
90
|
+
new_branch: boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Board this worktree belongs to (if any)
|
|
93
|
+
*
|
|
94
|
+
* Worktrees can live on ONE board (not many).
|
|
95
|
+
* Sessions within the worktree are accessed through the worktree card.
|
|
96
|
+
*/
|
|
97
|
+
board_id?: BoardID;
|
|
98
|
+
/**
|
|
99
|
+
* Associated GitHub/GitLab issue
|
|
100
|
+
*
|
|
101
|
+
* Links worktree to issue it addresses.
|
|
102
|
+
* Worktree-level (not session) because work persists across sessions.
|
|
103
|
+
*
|
|
104
|
+
* Example: "https://github.com/org/repo/issues/123"
|
|
105
|
+
*/
|
|
106
|
+
issue_url?: string;
|
|
107
|
+
/**
|
|
108
|
+
* Associated pull request
|
|
109
|
+
*
|
|
110
|
+
* Links worktree to PR containing changes.
|
|
111
|
+
* Auto-populated when user creates PR.
|
|
112
|
+
*
|
|
113
|
+
* Example: "https://github.com/org/repo/pull/42"
|
|
114
|
+
*/
|
|
115
|
+
pull_request_url?: string;
|
|
116
|
+
/**
|
|
117
|
+
* Freeform notes about this worktree
|
|
118
|
+
*
|
|
119
|
+
* User can document:
|
|
120
|
+
* - What they're working on
|
|
121
|
+
* - Blockers or issues
|
|
122
|
+
* - Design decisions
|
|
123
|
+
* - Next steps
|
|
124
|
+
*
|
|
125
|
+
* Supports markdown.
|
|
126
|
+
*/
|
|
127
|
+
notes?: string;
|
|
128
|
+
/**
|
|
129
|
+
* Environment instance (if repo has environment config)
|
|
130
|
+
*
|
|
131
|
+
* Tracks runtime state, process info, variable values.
|
|
132
|
+
* Each worktree gets its own environment instance with unique ports.
|
|
133
|
+
*/
|
|
134
|
+
environment_instance?: WorktreeEnvironmentInstance;
|
|
135
|
+
/**
|
|
136
|
+
* Sessions using this worktree
|
|
137
|
+
*
|
|
138
|
+
* Multiple sessions can work on same worktree over time.
|
|
139
|
+
* Useful for:
|
|
140
|
+
* - Continuing work across sessions
|
|
141
|
+
* - Collaboration (multiple users working on same worktree)
|
|
142
|
+
* - Fork/spawn relationships on same branch
|
|
143
|
+
*/
|
|
144
|
+
sessions: SessionID[];
|
|
145
|
+
/**
|
|
146
|
+
* Last time this worktree was used
|
|
147
|
+
*
|
|
148
|
+
* Updated when sessions start/complete.
|
|
149
|
+
*/
|
|
150
|
+
last_used: string;
|
|
151
|
+
/**
|
|
152
|
+
* Custom context for Handlebars templates
|
|
153
|
+
*
|
|
154
|
+
* User-defined variables for zone triggers, reports, etc.
|
|
155
|
+
*/
|
|
156
|
+
custom_context?: Record<string, unknown>;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Worktree environment instance
|
|
160
|
+
*
|
|
161
|
+
* Runtime state for a worktree's environment (dev server, Docker, etc.).
|
|
162
|
+
* Template variables are resolved from:
|
|
163
|
+
* - Built-in: WORKTREE_UNIQUE_ID, WORKTREE_NAME, WORKTREE_PATH, REPO_SLUG
|
|
164
|
+
* - Custom: worktree.custom_context (JSON object)
|
|
165
|
+
*/
|
|
166
|
+
interface WorktreeEnvironmentInstance {
|
|
167
|
+
/**
|
|
168
|
+
* Current environment status
|
|
169
|
+
*/
|
|
170
|
+
status: 'stopped' | 'starting' | 'running' | 'stopping' | 'error';
|
|
171
|
+
/**
|
|
172
|
+
* Process metadata (if managed by Agor)
|
|
173
|
+
*/
|
|
174
|
+
process?: {
|
|
175
|
+
/** Process ID */
|
|
176
|
+
pid?: number;
|
|
177
|
+
/** When process started */
|
|
178
|
+
started_at?: string;
|
|
179
|
+
/** Human-readable uptime */
|
|
180
|
+
uptime?: string;
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* Last health check result
|
|
184
|
+
*/
|
|
185
|
+
last_health_check?: {
|
|
186
|
+
timestamp: string;
|
|
187
|
+
status: 'healthy' | 'unhealthy' | 'unknown';
|
|
188
|
+
message?: string;
|
|
189
|
+
};
|
|
190
|
+
/**
|
|
191
|
+
* Resolved access URLs (after template substitution)
|
|
192
|
+
*
|
|
193
|
+
* Example: [
|
|
194
|
+
* { name: "UI", url: "http://localhost:5173" },
|
|
195
|
+
* { name: "API", url: "http://localhost:3030" }
|
|
196
|
+
* ]
|
|
197
|
+
*/
|
|
198
|
+
access_urls?: Array<{
|
|
199
|
+
name: string;
|
|
200
|
+
url: string;
|
|
201
|
+
}>;
|
|
202
|
+
/**
|
|
203
|
+
* Process logs (last N lines)
|
|
204
|
+
*
|
|
205
|
+
* Captured from stdout/stderr of environment process.
|
|
206
|
+
*/
|
|
207
|
+
logs?: string[];
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Repository environment configuration template
|
|
211
|
+
*
|
|
212
|
+
* Defines how to run environments for all worktrees in a repo.
|
|
213
|
+
* Uses Handlebars templating with scoped entity references.
|
|
214
|
+
*
|
|
215
|
+
* Template context (always available):
|
|
216
|
+
* - {{worktree.unique_id}} - Auto-assigned unique number (1, 2, 3, ...)
|
|
217
|
+
* - {{worktree.name}} - Worktree name (e.g., "feat-auth")
|
|
218
|
+
* - {{worktree.path}} - Absolute path to worktree directory
|
|
219
|
+
* - {{repo.slug}} - Repository slug (e.g., "agor")
|
|
220
|
+
* - {{custom.*}} - Any custom context from worktree.custom_context
|
|
221
|
+
* - {{add a b}}, {{sub a b}}, {{mul a b}} - Math helpers
|
|
222
|
+
*/
|
|
223
|
+
interface RepoEnvironmentConfig {
|
|
224
|
+
/**
|
|
225
|
+
* Command to start environment (Handlebars template)
|
|
226
|
+
*
|
|
227
|
+
* Examples:
|
|
228
|
+
* - "docker compose -p {{worktree.name}} up -d"
|
|
229
|
+
* - "UI_PORT={{add 9000 worktree.unique_id}} DAEMON_PORT={{add 8000 worktree.unique_id}} pnpm dev"
|
|
230
|
+
* - "PORT={{add 5000 worktree.unique_id}} npm start"
|
|
231
|
+
*/
|
|
232
|
+
up_command: string;
|
|
233
|
+
/**
|
|
234
|
+
* Command to stop environment (Handlebars template)
|
|
235
|
+
*
|
|
236
|
+
* Examples:
|
|
237
|
+
* - "docker compose -p {{worktree.name}} down"
|
|
238
|
+
* - "pkill -f 'vite.*{{add 9000 worktree.unique_id}}'"
|
|
239
|
+
*/
|
|
240
|
+
down_command: string;
|
|
241
|
+
/**
|
|
242
|
+
* Optional health check configuration
|
|
243
|
+
*/
|
|
244
|
+
health_check?: {
|
|
245
|
+
/** Health check type */
|
|
246
|
+
type: 'http' | 'tcp' | 'process';
|
|
247
|
+
/**
|
|
248
|
+
* URL template for HTTP checks
|
|
249
|
+
*
|
|
250
|
+
* Example: "http://localhost:{{add 9000 worktree.unique_id}}/health"
|
|
251
|
+
*/
|
|
252
|
+
url_template?: string;
|
|
253
|
+
};
|
|
254
|
+
/**
|
|
255
|
+
* App URL template (Handlebars template)
|
|
256
|
+
* URL to access the running application
|
|
257
|
+
*
|
|
258
|
+
* Example: "http://localhost:{{add 5000 worktree.unique_id}}"
|
|
259
|
+
*/
|
|
260
|
+
app_url_template?: string;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* URL-friendly identifier for repositories and worktrees
|
|
265
|
+
*
|
|
266
|
+
* Used for:
|
|
267
|
+
* - Repository slugs (e.g., "myapp", "backend-api")
|
|
268
|
+
* - Worktree names (e.g., "feat-auth", "fix-cors")
|
|
269
|
+
* - Directory names in ~/.agor/repos/ and ~/.agor/worktrees/
|
|
270
|
+
*
|
|
271
|
+
* Format: lowercase, alphanumeric, hyphens only
|
|
272
|
+
*
|
|
273
|
+
* Examples: "myapp", "backend", "feat-auth-middleware"
|
|
274
|
+
*/
|
|
275
|
+
type RepoSlug = string;
|
|
276
|
+
/**
|
|
277
|
+
* Worktree name (slug-formatted)
|
|
278
|
+
*
|
|
279
|
+
* Becomes both the directory name and (optionally) the branch name.
|
|
280
|
+
*/
|
|
281
|
+
type WorktreeName = string;
|
|
282
|
+
/**
|
|
283
|
+
* Git repository managed by Agor
|
|
284
|
+
*
|
|
285
|
+
* All repositories are cloned to ~/.agor/repos/{slug}
|
|
286
|
+
* and managed by Agor for worktree creation and parallel development.
|
|
287
|
+
*/
|
|
288
|
+
interface Repo {
|
|
289
|
+
/** Unique repository identifier (UUIDv7) */
|
|
290
|
+
repo_id: UUID;
|
|
291
|
+
/**
|
|
292
|
+
* URL-friendly slug for the repository
|
|
293
|
+
*
|
|
294
|
+
* Used for:
|
|
295
|
+
* - Directory name: ~/.agor/repos/{slug}
|
|
296
|
+
* - CLI references: agor repo show {slug}
|
|
297
|
+
* - Worktree organization
|
|
298
|
+
*
|
|
299
|
+
* Must be unique across all repos.
|
|
300
|
+
*/
|
|
301
|
+
slug: RepoSlug;
|
|
302
|
+
/**
|
|
303
|
+
* Human-readable name
|
|
304
|
+
*
|
|
305
|
+
* Defaults to slug but can be customized.
|
|
306
|
+
*/
|
|
307
|
+
name: string;
|
|
308
|
+
/**
|
|
309
|
+
* Git remote URL
|
|
310
|
+
*
|
|
311
|
+
* Examples:
|
|
312
|
+
* - "https://github.com/user/repo.git"
|
|
313
|
+
* - "git@github.com:user/repo.git"
|
|
314
|
+
*/
|
|
315
|
+
remote_url: string;
|
|
316
|
+
/**
|
|
317
|
+
* Local path to repository
|
|
318
|
+
*
|
|
319
|
+
* Always: ~/.agor/repos/{slug}
|
|
320
|
+
*/
|
|
321
|
+
local_path: string;
|
|
322
|
+
/**
|
|
323
|
+
* Default branch name
|
|
324
|
+
*
|
|
325
|
+
* Detected from remote or HEAD.
|
|
326
|
+
* Used when creating new worktrees without explicit ref.
|
|
327
|
+
*/
|
|
328
|
+
default_branch?: string;
|
|
329
|
+
/**
|
|
330
|
+
* Environment configuration template (optional)
|
|
331
|
+
*
|
|
332
|
+
* Defines how to run environments for all worktrees in this repo.
|
|
333
|
+
* Each worktree creates an instance with specific variable values.
|
|
334
|
+
*/
|
|
335
|
+
environment_config?: RepoEnvironmentConfig;
|
|
336
|
+
/** Repository metadata */
|
|
337
|
+
created_at: string;
|
|
338
|
+
last_updated: string;
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Git worktree configuration
|
|
342
|
+
*
|
|
343
|
+
* Worktrees are working directories for specific branches,
|
|
344
|
+
* allowing multiple branches to be checked out simultaneously.
|
|
345
|
+
*
|
|
346
|
+
* Structure: ~/.agor/worktrees/{repo-slug}/{name}/
|
|
347
|
+
*/
|
|
348
|
+
interface WorktreeConfig {
|
|
349
|
+
/**
|
|
350
|
+
* Worktree name (slug format)
|
|
351
|
+
*
|
|
352
|
+
* Used for:
|
|
353
|
+
* - Directory name: ~/.agor/worktrees/{repo-slug}/{name}
|
|
354
|
+
* - Default branch name (if creating new branch)
|
|
355
|
+
* - CLI references
|
|
356
|
+
*
|
|
357
|
+
* Examples: "main", "feat-auth", "exp-rewrite"
|
|
358
|
+
*/
|
|
359
|
+
name: WorktreeName;
|
|
360
|
+
/**
|
|
361
|
+
* Absolute path to worktree directory
|
|
362
|
+
*
|
|
363
|
+
* Example: "/Users/max/.agor/worktrees/myapp/feat-auth"
|
|
364
|
+
*/
|
|
365
|
+
path: string;
|
|
366
|
+
/**
|
|
367
|
+
* Git ref (branch/tag/commit) checked out in this worktree
|
|
368
|
+
*
|
|
369
|
+
* Examples: "feat-auth", "main", "v1.2.3", "a1b2c3d"
|
|
370
|
+
*/
|
|
371
|
+
ref: string;
|
|
372
|
+
/**
|
|
373
|
+
* Whether this ref is a new branch created by Agor
|
|
374
|
+
*
|
|
375
|
+
* true: Branch was created during worktree creation
|
|
376
|
+
* false: Branch existed before (tracked from remote or local)
|
|
377
|
+
*/
|
|
378
|
+
new_branch: boolean;
|
|
379
|
+
/**
|
|
380
|
+
* Remote tracking branch (if any)
|
|
381
|
+
*
|
|
382
|
+
* Examples: "origin/feat-auth", "upstream/main"
|
|
383
|
+
*/
|
|
384
|
+
tracking_branch?: string;
|
|
385
|
+
/**
|
|
386
|
+
* Sessions using this worktree
|
|
387
|
+
*
|
|
388
|
+
* Multiple sessions can share a worktree (same working directory).
|
|
389
|
+
* Useful for:
|
|
390
|
+
* - Continuing work across sessions
|
|
391
|
+
* - Fork/spawn relationships on same branch
|
|
392
|
+
*/
|
|
393
|
+
sessions: SessionID[];
|
|
394
|
+
/**
|
|
395
|
+
* Last git commit SHA in this worktree
|
|
396
|
+
*
|
|
397
|
+
* Updated when sessions complete tasks.
|
|
398
|
+
*/
|
|
399
|
+
last_commit_sha?: string;
|
|
400
|
+
/** Worktree metadata */
|
|
401
|
+
created_at: string;
|
|
402
|
+
last_used: string;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
export type { RepoSlug as R, WorktreeName as W, Repo as a, WorktreeConfig as b, Worktree as c, WorktreeEnvironmentInstance as d, RepoEnvironmentConfig as e };
|