@made-by-moonlight/athene-core 0.9.1
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 +22 -0
- package/README.md +241 -0
- package/dist/activity-events.d.ts +42 -0
- package/dist/activity-events.d.ts.map +1 -0
- package/dist/activity-events.js +192 -0
- package/dist/activity-events.js.map +1 -0
- package/dist/activity-log.d.ts +71 -0
- package/dist/activity-log.d.ts.map +1 -0
- package/dist/activity-log.js +203 -0
- package/dist/activity-log.js.map +1 -0
- package/dist/activity-signal.d.ts +20 -0
- package/dist/activity-signal.d.ts.map +1 -0
- package/dist/activity-signal.js +91 -0
- package/dist/activity-signal.js.map +1 -0
- package/dist/agent-report.d.ts +148 -0
- package/dist/agent-report.d.ts.map +1 -0
- package/dist/agent-report.js +516 -0
- package/dist/agent-report.js.map +1 -0
- package/dist/agent-selection.d.ts +31 -0
- package/dist/agent-selection.d.ts.map +1 -0
- package/dist/agent-selection.js +69 -0
- package/dist/agent-selection.js.map +1 -0
- package/dist/agent-workspace-hooks.d.ts +74 -0
- package/dist/agent-workspace-hooks.d.ts.map +1 -0
- package/dist/agent-workspace-hooks.js +988 -0
- package/dist/agent-workspace-hooks.js.map +1 -0
- package/dist/atomic-write.d.ts +6 -0
- package/dist/atomic-write.d.ts.map +1 -0
- package/dist/atomic-write.js +49 -0
- package/dist/atomic-write.js.map +1 -0
- package/dist/cleanup-stack.d.ts +37 -0
- package/dist/cleanup-stack.d.ts.map +1 -0
- package/dist/cleanup-stack.js +45 -0
- package/dist/cleanup-stack.js.map +1 -0
- package/dist/code-review-manager.d.ts +118 -0
- package/dist/code-review-manager.d.ts.map +1 -0
- package/dist/code-review-manager.js +719 -0
- package/dist/code-review-manager.js.map +1 -0
- package/dist/code-review-store.d.ts +114 -0
- package/dist/code-review-store.d.ts.map +1 -0
- package/dist/code-review-store.js +346 -0
- package/dist/code-review-store.js.map +1 -0
- package/dist/config-generator.d.ts +84 -0
- package/dist/config-generator.d.ts.map +1 -0
- package/dist/config-generator.js +295 -0
- package/dist/config-generator.js.map +1 -0
- package/dist/config.d.ts +55 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +852 -0
- package/dist/config.js.map +1 -0
- package/dist/daemon-children.d.ts +55 -0
- package/dist/daemon-children.d.ts.map +1 -0
- package/dist/daemon-children.js +435 -0
- package/dist/daemon-children.js.map +1 -0
- package/dist/dashboard-notifications.d.ts +42 -0
- package/dist/dashboard-notifications.d.ts.map +1 -0
- package/dist/dashboard-notifications.js +123 -0
- package/dist/dashboard-notifications.js.map +1 -0
- package/dist/events-db.d.ts +39 -0
- package/dist/events-db.d.ts.map +1 -0
- package/dist/events-db.js +185 -0
- package/dist/events-db.js.map +1 -0
- package/dist/feature-flags.d.ts +2 -0
- package/dist/feature-flags.d.ts.map +1 -0
- package/dist/feature-flags.js +9 -0
- package/dist/feature-flags.js.map +1 -0
- package/dist/feedback-tools.d.ts +97 -0
- package/dist/feedback-tools.d.ts.map +1 -0
- package/dist/feedback-tools.js +161 -0
- package/dist/feedback-tools.js.map +1 -0
- package/dist/file-lock.d.ts +5 -0
- package/dist/file-lock.d.ts.map +1 -0
- package/dist/file-lock.js +59 -0
- package/dist/file-lock.js.map +1 -0
- package/dist/format-automated-comments.d.ts +18 -0
- package/dist/format-automated-comments.d.ts.map +1 -0
- package/dist/gh-trace.d.ts +57 -0
- package/dist/gh-trace.d.ts.map +1 -0
- package/dist/gh-trace.js +320 -0
- package/dist/gh-trace.js.map +1 -0
- package/dist/git-activity.d.ts +10 -0
- package/dist/git-activity.d.ts.map +1 -0
- package/dist/git-activity.js +30 -0
- package/dist/git-activity.js.map +1 -0
- package/dist/global-config.d.ts +1085 -0
- package/dist/global-config.d.ts.map +1 -0
- package/dist/global-config.js +1067 -0
- package/dist/global-config.js.map +1 -0
- package/dist/index.d.ts +91 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -0
- package/dist/key-value.d.ts +7 -0
- package/dist/key-value.d.ts.map +1 -0
- package/dist/key-value.js +24 -0
- package/dist/key-value.js.map +1 -0
- package/dist/lifecycle-manager.d.ts +22 -0
- package/dist/lifecycle-manager.d.ts.map +1 -0
- package/dist/lifecycle-manager.js +2813 -0
- package/dist/lifecycle-manager.js.map +1 -0
- package/dist/lifecycle-state.d.ts +28 -0
- package/dist/lifecycle-state.d.ts.map +1 -0
- package/dist/lifecycle-state.js +446 -0
- package/dist/lifecycle-state.js.map +1 -0
- package/dist/lifecycle-status-decisions.d.ts +85 -0
- package/dist/lifecycle-status-decisions.d.ts.map +1 -0
- package/dist/lifecycle-status-decisions.js +262 -0
- package/dist/lifecycle-status-decisions.js.map +1 -0
- package/dist/lifecycle-transition.d.ts +81 -0
- package/dist/lifecycle-transition.d.ts.map +1 -0
- package/dist/lifecycle-transition.js +207 -0
- package/dist/lifecycle-transition.js.map +1 -0
- package/dist/metadata.d.ts +54 -0
- package/dist/metadata.d.ts.map +1 -0
- package/dist/metadata.js +484 -0
- package/dist/metadata.js.map +1 -0
- package/dist/migration/storage-v2.d.ts +76 -0
- package/dist/migration/storage-v2.d.ts.map +1 -0
- package/dist/migration/storage-v2.js +1614 -0
- package/dist/migration/storage-v2.js.map +1 -0
- package/dist/notification-data.d.ts +135 -0
- package/dist/notification-data.d.ts.map +1 -0
- package/dist/notification-data.js +204 -0
- package/dist/notification-data.js.map +1 -0
- package/dist/notification-observability.d.ts +21 -0
- package/dist/notification-observability.d.ts.map +1 -0
- package/dist/notification-observability.js +154 -0
- package/dist/notification-observability.js.map +1 -0
- package/dist/notifier-resolution.d.ts +14 -0
- package/dist/notifier-resolution.d.ts.map +1 -0
- package/dist/notifier-resolution.js +23 -0
- package/dist/notifier-resolution.js.map +1 -0
- package/dist/observability.d.ts +100 -0
- package/dist/observability.d.ts.map +1 -0
- package/dist/observability.js +535 -0
- package/dist/observability.js.map +1 -0
- package/dist/opencode-agents-md.d.ts +3 -0
- package/dist/opencode-agents-md.d.ts.map +1 -0
- package/dist/opencode-agents-md.js +40 -0
- package/dist/opencode-agents-md.js.map +1 -0
- package/dist/opencode-config.d.ts +2 -0
- package/dist/opencode-config.d.ts.map +1 -0
- package/dist/opencode-config.js +17 -0
- package/dist/opencode-config.js.map +1 -0
- package/dist/opencode-session-id.d.ts +2 -0
- package/dist/opencode-session-id.d.ts.map +1 -0
- package/dist/opencode-session-id.js +12 -0
- package/dist/opencode-session-id.js.map +1 -0
- package/dist/opencode-shared.d.ts +80 -0
- package/dist/opencode-shared.d.ts.map +1 -0
- package/dist/opencode-shared.js +202 -0
- package/dist/opencode-shared.js.map +1 -0
- package/dist/orchestrator-prompt.d.ts +19 -0
- package/dist/orchestrator-prompt.d.ts.map +1 -0
- package/dist/orchestrator-prompt.js +130 -0
- package/dist/orchestrator-prompt.js.map +1 -0
- package/dist/orchestrator-session-strategy.d.ts +5 -0
- package/dist/orchestrator-session-strategy.d.ts.map +1 -0
- package/dist/orchestrator-session-strategy.js +13 -0
- package/dist/orchestrator-session-strategy.js.map +1 -0
- package/dist/paths.d.ts +145 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +288 -0
- package/dist/paths.js.map +1 -0
- package/dist/platform.d.ts +32 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +211 -0
- package/dist/platform.js.map +1 -0
- package/dist/plugin-registry.d.ts +15 -0
- package/dist/plugin-registry.d.ts.map +1 -0
- package/dist/plugin-registry.js +499 -0
- package/dist/plugin-registry.js.map +1 -0
- package/dist/portfolio-projects.d.ts +7 -0
- package/dist/portfolio-projects.d.ts.map +1 -0
- package/dist/portfolio-projects.js +65 -0
- package/dist/portfolio-projects.js.map +1 -0
- package/dist/portfolio-registry.d.ts +42 -0
- package/dist/portfolio-registry.d.ts.map +1 -0
- package/dist/portfolio-registry.js +311 -0
- package/dist/portfolio-registry.js.map +1 -0
- package/dist/portfolio-routing.d.ts +5 -0
- package/dist/portfolio-routing.d.ts.map +1 -0
- package/dist/portfolio-routing.js +24 -0
- package/dist/portfolio-routing.js.map +1 -0
- package/dist/portfolio-session-service.d.ts +15 -0
- package/dist/portfolio-session-service.d.ts.map +1 -0
- package/dist/portfolio-session-service.js +206 -0
- package/dist/portfolio-session-service.js.map +1 -0
- package/dist/process-cache.d.ts +32 -0
- package/dist/process-cache.d.ts.map +1 -0
- package/dist/process-cache.js +44 -0
- package/dist/process-cache.js.map +1 -0
- package/dist/project-resolver.d.ts +5 -0
- package/dist/project-resolver.d.ts.map +1 -0
- package/dist/project-resolver.js +20 -0
- package/dist/project-resolver.js.map +1 -0
- package/dist/prompt-builder.d.ts +42 -0
- package/dist/prompt-builder.d.ts.map +1 -0
- package/dist/prompt-builder.js +182 -0
- package/dist/prompt-builder.js.map +1 -0
- package/dist/prompts/orchestrator.md.js +4 -0
- package/dist/prompts/orchestrator.md.js.map +1 -0
- package/dist/query-activity-events.d.ts +42 -0
- package/dist/query-activity-events.d.ts.map +1 -0
- package/dist/query-activity-events.js +170 -0
- package/dist/query-activity-events.js.map +1 -0
- package/dist/recovery/actions.d.ts +7 -0
- package/dist/recovery/actions.d.ts.map +1 -0
- package/dist/recovery/index.d.ts +8 -0
- package/dist/recovery/index.d.ts.map +1 -0
- package/dist/recovery/logger.d.ts +12 -0
- package/dist/recovery/logger.d.ts.map +1 -0
- package/dist/recovery/manager.d.ts +24 -0
- package/dist/recovery/manager.d.ts.map +1 -0
- package/dist/recovery/scanner.d.ts +11 -0
- package/dist/recovery/scanner.d.ts.map +1 -0
- package/dist/recovery/types.d.ts +170 -0
- package/dist/recovery/types.d.ts.map +1 -0
- package/dist/recovery/validator.d.ts +8 -0
- package/dist/recovery/validator.d.ts.map +1 -0
- package/dist/report-watcher.d.ts +93 -0
- package/dist/report-watcher.d.ts.map +1 -0
- package/dist/report-watcher.js +182 -0
- package/dist/report-watcher.js.map +1 -0
- package/dist/scm-webhook-utils.d.ts +6 -0
- package/dist/scm-webhook-utils.d.ts.map +1 -0
- package/dist/scm-webhook-utils.js +36 -0
- package/dist/scm-webhook-utils.js.map +1 -0
- package/dist/session-manager.d.ts +22 -0
- package/dist/session-manager.d.ts.map +1 -0
- package/dist/session-manager.js +3077 -0
- package/dist/session-manager.js.map +1 -0
- package/dist/spawn-target.d.ts +23 -0
- package/dist/spawn-target.d.ts.map +1 -0
- package/dist/spawn-target.js +39 -0
- package/dist/spawn-target.js.map +1 -0
- package/dist/storage-key.d.ts +9 -0
- package/dist/storage-key.d.ts.map +1 -0
- package/dist/storage-key.js +59 -0
- package/dist/storage-key.js.map +1 -0
- package/dist/tmux.d.ts +39 -0
- package/dist/tmux.d.ts.map +1 -0
- package/dist/tmux.js +141 -0
- package/dist/tmux.js.map +1 -0
- package/dist/types.d.ts +1496 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +215 -0
- package/dist/types.js.map +1 -0
- package/dist/update-cache.d.ts +59 -0
- package/dist/update-cache.d.ts.map +1 -0
- package/dist/update-cache.js +77 -0
- package/dist/update-cache.js.map +1 -0
- package/dist/utils/metadata-flatten.d.ts +3 -0
- package/dist/utils/metadata-flatten.d.ts.map +1 -0
- package/dist/utils/metadata-flatten.js +18 -0
- package/dist/utils/metadata-flatten.js.map +1 -0
- package/dist/utils/pr.d.ts +7 -0
- package/dist/utils/pr.d.ts.map +1 -0
- package/dist/utils/pr.js +97 -0
- package/dist/utils/pr.js.map +1 -0
- package/dist/utils/session-from-metadata.d.ts +16 -0
- package/dist/utils/session-from-metadata.d.ts.map +1 -0
- package/dist/utils/session-from-metadata.js +87 -0
- package/dist/utils/session-from-metadata.js.map +1 -0
- package/dist/utils/session-id.d.ts +4 -0
- package/dist/utils/session-id.d.ts.map +1 -0
- package/dist/utils/session-id.js +9 -0
- package/dist/utils/session-id.js.map +1 -0
- package/dist/utils/validation.d.ts +9 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +45 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/utils.d.ts +65 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +189 -0
- package/dist/utils.js.map +1 -0
- package/dist/version-compare.d.ts +27 -0
- package/dist/version-compare.d.ts.map +1 -0
- package/dist/version-compare.js +121 -0
- package/dist/version-compare.js.map +1 -0
- package/dist/windows-pty-registry.d.ts +27 -0
- package/dist/windows-pty-registry.d.ts.map +1 -0
- package/dist/windows-pty-registry.js +109 -0
- package/dist/windows-pty-registry.js.map +1 -0
- package/package.json +110 -0
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { join, resolve } from 'node:path';
|
|
3
|
+
import { stringify } from 'yaml';
|
|
4
|
+
import { generateSessionPrefix } from './paths.js';
|
|
5
|
+
import { getDefaultRuntime } from './platform.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Config generator for `athene start <url>` — auto-detects project settings
|
|
9
|
+
* from a repo URL and generates a valid agent-orchestrator.yaml.
|
|
10
|
+
*
|
|
11
|
+
* SCM-agnostic: parses GitHub, GitLab, Bitbucket URLs and infers plugins.
|
|
12
|
+
*/
|
|
13
|
+
// Main is the canonical config-schema contract; schema evolution must remain
|
|
14
|
+
// forward-compatible and additive for older CLIs that stamp this URL.
|
|
15
|
+
const CONFIG_SCHEMA_URL = "https://raw.githubusercontent.com/slievr/Athene/main/schema/config.schema.json";
|
|
16
|
+
function withConfigSchema(config) {
|
|
17
|
+
const { $schema: providedSchema, ...rest } = config;
|
|
18
|
+
const schema = typeof providedSchema === "string" && providedSchema.trim().length > 0
|
|
19
|
+
? providedSchema
|
|
20
|
+
: CONFIG_SCHEMA_URL;
|
|
21
|
+
return {
|
|
22
|
+
$schema: schema,
|
|
23
|
+
...rest,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Check if a string looks like a repo URL (HTTP(S) or SSH git URL).
|
|
28
|
+
*/
|
|
29
|
+
function isRepoUrl(arg) {
|
|
30
|
+
return /^https?:\/\//.test(arg) || /^git@[^:]+:.+\/.+/.test(arg);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Parse a repo URL into components.
|
|
34
|
+
* Supports:
|
|
35
|
+
* - https://github.com/owner/repo
|
|
36
|
+
* - https://github.com/owner/repo.git
|
|
37
|
+
* - git@github.com:owner/repo.git
|
|
38
|
+
* - Same patterns for GitLab, Bitbucket, etc.
|
|
39
|
+
*/
|
|
40
|
+
function parseRepoUrl(url) {
|
|
41
|
+
// SSH format: git@host:owner/repo.git
|
|
42
|
+
const sshMatch = url.match(/^git@([^:]+):([^/]+)\/([^/]+?)(?:\.git)?$/);
|
|
43
|
+
if (sshMatch) {
|
|
44
|
+
const host = sshMatch[1];
|
|
45
|
+
const owner = sshMatch[2];
|
|
46
|
+
const repo = sshMatch[3];
|
|
47
|
+
return {
|
|
48
|
+
ownerRepo: `${owner}/${repo}`,
|
|
49
|
+
owner,
|
|
50
|
+
repo,
|
|
51
|
+
host,
|
|
52
|
+
cloneUrl: `https://${host}/${owner}/${repo}.git`,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// HTTPS format: https://host/owner/repo[.git]
|
|
56
|
+
const httpsMatch = url.match(/^https?:\/\/([^/]+)\/([^/]+)\/([^/]+?)(?:\.git)?\/?$/);
|
|
57
|
+
if (httpsMatch) {
|
|
58
|
+
const host = httpsMatch[1];
|
|
59
|
+
const owner = httpsMatch[2];
|
|
60
|
+
const repo = httpsMatch[3];
|
|
61
|
+
return {
|
|
62
|
+
ownerRepo: `${owner}/${repo}`,
|
|
63
|
+
owner,
|
|
64
|
+
repo,
|
|
65
|
+
host,
|
|
66
|
+
cloneUrl: `https://${host}/${owner}/${repo}.git`,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
throw new Error(`Could not parse repo URL: ${url}\n` +
|
|
70
|
+
`Expected format: https://github.com/owner/repo or git@github.com:owner/repo.git`);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Detect SCM platform from hostname.
|
|
74
|
+
*/
|
|
75
|
+
function detectScmPlatform(host) {
|
|
76
|
+
const lower = host.toLowerCase();
|
|
77
|
+
if (lower === "github.com" || lower.endsWith(".github.com"))
|
|
78
|
+
return "github";
|
|
79
|
+
if (lower === "gitlab.com" || lower.endsWith(".gitlab.com"))
|
|
80
|
+
return "gitlab";
|
|
81
|
+
if (lower === "bitbucket.org" ||
|
|
82
|
+
lower.endsWith(".bitbucket.org") ||
|
|
83
|
+
lower.endsWith(".bitbucket.com"))
|
|
84
|
+
return "bitbucket";
|
|
85
|
+
return "unknown";
|
|
86
|
+
}
|
|
87
|
+
// =============================================================================
|
|
88
|
+
// PROJECT DETECTION (minimal — reuses cli/project-detection for full detection)
|
|
89
|
+
// =============================================================================
|
|
90
|
+
/** Detect the default branch from a local repo directory. */
|
|
91
|
+
function detectDefaultBranchFromDir(repoDir) {
|
|
92
|
+
// Check HEAD file for symref
|
|
93
|
+
const headPath = join(repoDir, ".git", "HEAD");
|
|
94
|
+
if (existsSync(headPath)) {
|
|
95
|
+
const head = readFileSync(headPath, "utf-8").trim();
|
|
96
|
+
const match = head.match(/^ref: refs\/heads\/(.+)$/);
|
|
97
|
+
if (match) {
|
|
98
|
+
// This is the current branch, not necessarily the default.
|
|
99
|
+
// Check for common default branch names in refs.
|
|
100
|
+
const commonDefaults = ["main", "master", "next", "develop"];
|
|
101
|
+
for (const branch of commonDefaults) {
|
|
102
|
+
const refPath = join(repoDir, ".git", "refs", "remotes", "origin", branch);
|
|
103
|
+
const packedRefs = join(repoDir, ".git", "packed-refs");
|
|
104
|
+
if (existsSync(refPath))
|
|
105
|
+
return branch;
|
|
106
|
+
// Check packed-refs for the branch
|
|
107
|
+
if (existsSync(packedRefs)) {
|
|
108
|
+
const packed = readFileSync(packedRefs, "utf-8");
|
|
109
|
+
if (packed.includes(`refs/remotes/origin/${branch}`))
|
|
110
|
+
return branch;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// Fallback to current branch if no common default found
|
|
114
|
+
return match[1];
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return "main";
|
|
118
|
+
}
|
|
119
|
+
function detectProjectInfo(repoDir) {
|
|
120
|
+
const hasFile = (name) => existsSync(join(repoDir, name));
|
|
121
|
+
if (hasFile("package.json")) {
|
|
122
|
+
const pm = hasFile("pnpm-lock.yaml")
|
|
123
|
+
? "pnpm"
|
|
124
|
+
: hasFile("yarn.lock")
|
|
125
|
+
? "yarn"
|
|
126
|
+
: hasFile("bun.lockb") || hasFile("bun.lock")
|
|
127
|
+
? "bun"
|
|
128
|
+
: "npm";
|
|
129
|
+
const lang = hasFile("tsconfig.json") || hasFile("tsconfig.base.json") ? "typescript" : "javascript";
|
|
130
|
+
return { language: lang, packageManager: pm };
|
|
131
|
+
}
|
|
132
|
+
if (hasFile("Cargo.toml"))
|
|
133
|
+
return { language: "rust", packageManager: "cargo" };
|
|
134
|
+
if (hasFile("go.mod"))
|
|
135
|
+
return { language: "go", packageManager: "go" };
|
|
136
|
+
if (hasFile("pyproject.toml") || hasFile("requirements.txt") || hasFile("setup.py")) {
|
|
137
|
+
return { language: "python", packageManager: "pip" };
|
|
138
|
+
}
|
|
139
|
+
return { language: null, packageManager: null };
|
|
140
|
+
}
|
|
141
|
+
function readOriginRemoteUrl(projectPath) {
|
|
142
|
+
const gitConfigPath = join(resolve(projectPath), ".git", "config");
|
|
143
|
+
if (!existsSync(gitConfigPath))
|
|
144
|
+
return null;
|
|
145
|
+
const lines = readFileSync(gitConfigPath, "utf-8").split(/\r?\n/);
|
|
146
|
+
let inOrigin = false;
|
|
147
|
+
for (const line of lines) {
|
|
148
|
+
const trimmed = line.trim();
|
|
149
|
+
if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
|
|
150
|
+
inOrigin = trimmed === '[remote "origin"]';
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
if (!inOrigin)
|
|
154
|
+
continue;
|
|
155
|
+
const match = line.match(/^\s*url\s*=\s*(.+)\s*$/);
|
|
156
|
+
if (match?.[1])
|
|
157
|
+
return match[1].trim();
|
|
158
|
+
}
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
// =============================================================================
|
|
162
|
+
// CONFIG GENERATION
|
|
163
|
+
// =============================================================================
|
|
164
|
+
/**
|
|
165
|
+
* Sanitize a repo name for use as a YAML project key.
|
|
166
|
+
* Lowercases, replaces dots/special chars with hyphens, strips leading/trailing hyphens.
|
|
167
|
+
*/
|
|
168
|
+
function sanitizeProjectId(repoName) {
|
|
169
|
+
return repoName
|
|
170
|
+
.toLowerCase()
|
|
171
|
+
.replace(/[^a-z0-9_-]/g, "-")
|
|
172
|
+
.replace(/^-+|-+$/g, "")
|
|
173
|
+
.replace(/-{2,}/g, "-");
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Generate a complete agent-orchestrator.yaml config object from a repo URL.
|
|
177
|
+
* Returns the raw object ready for YAML serialization.
|
|
178
|
+
*/
|
|
179
|
+
function generateConfigFromUrl(options) {
|
|
180
|
+
const { parsed, repoPath, port = 3000 } = options;
|
|
181
|
+
const platform = detectScmPlatform(parsed.host);
|
|
182
|
+
const defaultBranch = detectDefaultBranchFromDir(repoPath);
|
|
183
|
+
const projectInfo = detectProjectInfo(repoPath);
|
|
184
|
+
// Use original case for prefix generation (preserves CamelCase detection),
|
|
185
|
+
// lowercase for the YAML project key.
|
|
186
|
+
const projectId = sanitizeProjectId(parsed.repo);
|
|
187
|
+
// Strip characters invalid in sessionPrefix (Zod: [a-zA-Z0-9_-]+) before
|
|
188
|
+
// passing to generateSessionPrefix, so "my.app" → "my-app" → "ma" (kebab path).
|
|
189
|
+
const prefixInput = parsed.repo.replace(/[^a-zA-Z0-9_-]/g, "-").replace(/^-+|-+$/g, "");
|
|
190
|
+
const prefix = generateSessionPrefix(prefixInput || parsed.repo);
|
|
191
|
+
// Build project config
|
|
192
|
+
const projectConfig = {
|
|
193
|
+
name: parsed.repo,
|
|
194
|
+
repo: parsed.ownerRepo,
|
|
195
|
+
path: repoPath,
|
|
196
|
+
defaultBranch,
|
|
197
|
+
sessionPrefix: prefix,
|
|
198
|
+
};
|
|
199
|
+
// SCM plugin — always set explicitly so applyProjectDefaults doesn't override.
|
|
200
|
+
// For known platforms, use the matching plugin. For unknown hosts, default to github
|
|
201
|
+
// (best available option since it's the only fully implemented SCM plugin).
|
|
202
|
+
projectConfig.scm = { plugin: platform !== "unknown" ? platform : "github" };
|
|
203
|
+
// Tracker — same platform as SCM for known hosts, github as fallback
|
|
204
|
+
projectConfig.tracker = {
|
|
205
|
+
plugin: platform === "github" || platform === "gitlab" ? platform : "github",
|
|
206
|
+
};
|
|
207
|
+
// Post-create commands based on detected package manager (JS ecosystem only)
|
|
208
|
+
const JS_PACKAGE_MANAGERS = {
|
|
209
|
+
pnpm: "pnpm install",
|
|
210
|
+
yarn: "yarn install",
|
|
211
|
+
bun: "bun install",
|
|
212
|
+
npm: "npm install",
|
|
213
|
+
};
|
|
214
|
+
const installCmd = projectInfo.packageManager
|
|
215
|
+
? JS_PACKAGE_MANAGERS[projectInfo.packageManager]
|
|
216
|
+
: undefined;
|
|
217
|
+
if (installCmd) {
|
|
218
|
+
projectConfig.postCreate = [installCmd];
|
|
219
|
+
}
|
|
220
|
+
return withConfigSchema({
|
|
221
|
+
port,
|
|
222
|
+
defaults: {
|
|
223
|
+
runtime: getDefaultRuntime(),
|
|
224
|
+
agent: "claude-code",
|
|
225
|
+
workspace: "worktree",
|
|
226
|
+
notifiers: [],
|
|
227
|
+
},
|
|
228
|
+
projects: {
|
|
229
|
+
[projectId]: projectConfig,
|
|
230
|
+
},
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Serialize a config object to YAML string.
|
|
235
|
+
*/
|
|
236
|
+
function configToYaml(config) {
|
|
237
|
+
return stringify(withConfigSchema(config), { indent: 2 });
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Check if a directory already has the repo cloned by comparing remote URLs.
|
|
241
|
+
* Returns true if the directory is a git repo with a matching origin remote.
|
|
242
|
+
*/
|
|
243
|
+
function isRepoAlreadyCloned(dir, expectedCloneUrl) {
|
|
244
|
+
if (!existsSync(join(dir, ".git")))
|
|
245
|
+
return false;
|
|
246
|
+
const configPath = join(dir, ".git", "config");
|
|
247
|
+
if (!existsSync(configPath))
|
|
248
|
+
return false;
|
|
249
|
+
const gitConfig = readFileSync(configPath, "utf-8");
|
|
250
|
+
// Normalize URLs for comparison:
|
|
251
|
+
// - Convert SSH to HTTPS (git@host:owner/repo → https://host/owner/repo)
|
|
252
|
+
// - Strip .git suffix and trailing slashes
|
|
253
|
+
// - Lowercase for case-insensitive match
|
|
254
|
+
const normalize = (url) => {
|
|
255
|
+
let normalized = url.trim();
|
|
256
|
+
// Convert SSH format to HTTPS
|
|
257
|
+
const sshMatch = normalized.match(/^git@([^:]+):(.+)$/);
|
|
258
|
+
if (sshMatch) {
|
|
259
|
+
normalized = `https://${sshMatch[1]}/${sshMatch[2]}`;
|
|
260
|
+
}
|
|
261
|
+
return normalized
|
|
262
|
+
.replace(/\.git$/, "")
|
|
263
|
+
.replace(/\/$/, "")
|
|
264
|
+
.toLowerCase();
|
|
265
|
+
};
|
|
266
|
+
const expectedNorm = normalize(expectedCloneUrl);
|
|
267
|
+
// Look for url = ... lines in git config
|
|
268
|
+
const urlMatches = gitConfig.match(/url\s*=\s*(.+)/g);
|
|
269
|
+
if (!urlMatches)
|
|
270
|
+
return false;
|
|
271
|
+
return urlMatches.some((line) => {
|
|
272
|
+
const url = line.replace(/url\s*=\s*/, "").trim();
|
|
273
|
+
return normalize(url) === expectedNorm;
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Determine the target directory for cloning a repo.
|
|
278
|
+
* If CWD matches the repo, return CWD. Otherwise return CWD/repo-name.
|
|
279
|
+
*/
|
|
280
|
+
function resolveCloneTarget(parsed, cwd) {
|
|
281
|
+
// If CWD is already the repo, reuse it
|
|
282
|
+
if (isRepoAlreadyCloned(cwd, parsed.cloneUrl)) {
|
|
283
|
+
return cwd;
|
|
284
|
+
}
|
|
285
|
+
// If CWD/repo-name exists and matches, reuse it
|
|
286
|
+
const subDir = resolve(cwd, parsed.repo);
|
|
287
|
+
if (isRepoAlreadyCloned(subDir, parsed.cloneUrl)) {
|
|
288
|
+
return subDir;
|
|
289
|
+
}
|
|
290
|
+
// Clone into CWD/repo-name
|
|
291
|
+
return subDir;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
export { CONFIG_SCHEMA_URL, configToYaml, detectDefaultBranchFromDir, detectProjectInfo, detectScmPlatform, generateConfigFromUrl, isRepoAlreadyCloned, isRepoUrl, parseRepoUrl, readOriginRemoteUrl, resolveCloneTarget, sanitizeProjectId, withConfigSchema };
|
|
295
|
+
//# sourceMappingURL=config-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-generator.js","sources":["../src/config-generator.ts"],"sourcesContent":[null],"names":["yamlStringify"],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration loader — reads agent-orchestrator.yaml and validates with Zod.
|
|
3
|
+
*
|
|
4
|
+
* Minimal config that just works:
|
|
5
|
+
* projects:
|
|
6
|
+
* my-app:
|
|
7
|
+
* repo: org/repo
|
|
8
|
+
* path: ~/my-app
|
|
9
|
+
*
|
|
10
|
+
* Everything else has sensible defaults.
|
|
11
|
+
*/
|
|
12
|
+
import { type ExternalPluginEntryRef, type LoadedConfig, type OrchestratorConfig } from "./types.js";
|
|
13
|
+
/**
|
|
14
|
+
* Collect external plugin configs from tracker, scm, and notifier inline configs.
|
|
15
|
+
* These will be auto-added to config.plugins for loading.
|
|
16
|
+
*
|
|
17
|
+
* Also sets a temporary plugin name on configs that only have package/path,
|
|
18
|
+
* so that resolvePlugins() can look up the plugin by name.
|
|
19
|
+
*
|
|
20
|
+
* IMPORTANT: Only sets expectedPluginName when user explicitly specified `plugin`.
|
|
21
|
+
* When plugin is auto-generated, expectedPluginName is left undefined so that
|
|
22
|
+
* any manifest.name is accepted and the config is updated with it.
|
|
23
|
+
*/
|
|
24
|
+
export declare function collectExternalPluginConfigs(config: OrchestratorConfig): ExternalPluginEntryRef[];
|
|
25
|
+
/**
|
|
26
|
+
* Sentinel string for the default `bugbot-comments` reaction message.
|
|
27
|
+
* The lifecycle dispatcher replaces this exact value with a formatted listing
|
|
28
|
+
* of the actual automated comments + correct-API guidance (see #895). If a
|
|
29
|
+
* project customizes the message in their YAML, the dispatcher leaves it alone.
|
|
30
|
+
*/
|
|
31
|
+
export declare const DEFAULT_BUGBOT_COMMENTS_MESSAGE = "Automated review comments found on your PR. Fix the issues flagged by the bot.";
|
|
32
|
+
/**
|
|
33
|
+
* Search for config file in standard locations.
|
|
34
|
+
*
|
|
35
|
+
* Search order:
|
|
36
|
+
* 1. AO_CONFIG_PATH environment variable (if set)
|
|
37
|
+
* 2. Search up directory tree from CWD (like git)
|
|
38
|
+
* 3. Explicit startDir (if provided)
|
|
39
|
+
* 4. Home directory locations
|
|
40
|
+
*/
|
|
41
|
+
export declare function findConfigFile(startDir?: string): string | null;
|
|
42
|
+
/** Find config file path (exported for use in hash generation) */
|
|
43
|
+
export declare function findConfig(startDir?: string): string | null;
|
|
44
|
+
/** Load and validate config from a YAML file */
|
|
45
|
+
export declare function loadConfig(configPath?: string): LoadedConfig;
|
|
46
|
+
/** Load config and return both config and resolved path */
|
|
47
|
+
export declare function loadConfigWithPath(configPath?: string): {
|
|
48
|
+
config: LoadedConfig;
|
|
49
|
+
path: string;
|
|
50
|
+
};
|
|
51
|
+
/** Validate a raw config object */
|
|
52
|
+
export declare function validateConfig(raw: unknown): OrchestratorConfig;
|
|
53
|
+
/** Get the default config (useful for first-run setup) */
|
|
54
|
+
export declare function getDefaultConfig(): OrchestratorConfig;
|
|
55
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACxB,MAAM,YAAY,CAAC;AA6cpB;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,kBAAkB,GAAG,sBAAsB,EAAE,CAwCjG;AA2HD;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,mFACsC,CAAC;AAiFnF;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkE/D;AAoGD,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE3D;AAED,gDAAgD;AAChD,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,CA+B5D;AAED,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG;IACvD,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd,CA6BA;AAED,mCAAmC;AACnC,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,CAqB/D;AAED,0DAA0D;AAC1D,wBAAgB,gBAAgB,IAAI,kBAAkB,CAIrD"}
|