@iloom/cli 0.1.16 → 0.1.18
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 +20 -7
- package/dist/ClaudeContextManager-LD3VB6EM.js +13 -0
- package/dist/ClaudeService-CFFI7DD5.js +12 -0
- package/dist/{GitHubService-F7Z3XJOS.js → GitHubService-SH4H6VS5.js} +3 -3
- package/dist/{LoomLauncher-MODG2SEM.js → LoomLauncher-FB2MV2ZI.js} +7 -7
- package/dist/{PromptTemplateManager-7FINLRDE.js → PromptTemplateManager-WM5GIPEF.js} +2 -2
- package/dist/{SettingsManager-VAZF26S2.js → SettingsManager-SKLUVE3K.js} +6 -2
- package/dist/{add-issue-22JBNOML.js → add-issue-L5HX6LEV.js} +23 -8
- package/dist/add-issue-L5HX6LEV.js.map +1 -0
- package/dist/{chunk-U3WU5OWO.js → chunk-4XIDC3NF.js} +2 -2
- package/dist/chunk-4XIDC3NF.js.map +1 -0
- package/dist/{chunk-SSR5AVRJ.js → chunk-6OTVPRXH.js} +21 -8
- package/dist/chunk-6OTVPRXH.js.map +1 -0
- package/dist/{chunk-KQDEK2ZW.js → chunk-DGEKUT7Q.js} +9 -5
- package/dist/chunk-DGEKUT7Q.js.map +1 -0
- package/dist/chunk-FXV24OYZ.js +83 -0
- package/dist/chunk-FXV24OYZ.js.map +1 -0
- package/dist/{chunk-HPJJSYNS.js → chunk-H5LDRGVK.js} +6 -8
- package/dist/{chunk-HPJJSYNS.js.map → chunk-H5LDRGVK.js.map} +1 -1
- package/dist/{chunk-WKEWRSDB.js → chunk-HURVAQRK.js} +3 -3
- package/dist/{chunk-T7QPXANZ.js → chunk-IIPTBZQW.js} +17 -17
- package/dist/chunk-IIPTBZQW.js.map +1 -0
- package/dist/{chunk-QEPVTTHD.js → chunk-IO4WFTL2.js} +17 -11
- package/dist/chunk-IO4WFTL2.js.map +1 -0
- package/dist/{chunk-JQ7VOSTC.js → chunk-KOCQAD2E.js} +3 -3
- package/dist/{chunk-F3XBU2R7.js → chunk-L4QGC27H.js} +68 -2
- package/dist/chunk-L4QGC27H.js.map +1 -0
- package/dist/{chunk-YYSKGAZT.js → chunk-LAPY6NAE.js} +17 -8
- package/dist/chunk-LAPY6NAE.js.map +1 -0
- package/dist/{chunk-O2QWO64Z.js → chunk-PV3GAXQO.js} +56 -3
- package/dist/chunk-PV3GAXQO.js.map +1 -0
- package/dist/{chunk-CP2NU2JC.js → chunk-Q2KYPAH2.js} +7 -7
- package/dist/{chunk-CP2NU2JC.js.map → chunk-Q2KYPAH2.js.map} +1 -1
- package/dist/{chunk-Y7SAGNUT.js → chunk-SLIMABFA.js} +2 -2
- package/dist/{chunk-W3DQTW63.js → chunk-USVVV3FP.js} +4 -4
- package/dist/chunk-VVH3ANF2.js +307 -0
- package/dist/chunk-VVH3ANF2.js.map +1 -0
- package/dist/{chunk-JBH2ZYYZ.js → chunk-VYQLLHZ7.js} +22 -3
- package/dist/chunk-VYQLLHZ7.js.map +1 -0
- package/dist/{chunk-SJUQ2NDR.js → chunk-ZMNQBJUI.js} +24 -19
- package/dist/chunk-ZMNQBJUI.js.map +1 -0
- package/dist/{cleanup-3LUWPSM7.js → cleanup-ZHROIBSQ.js} +12 -16
- package/dist/cleanup-ZHROIBSQ.js.map +1 -0
- package/dist/cli.js +97 -49
- package/dist/cli.js.map +1 -1
- package/dist/{enhance-XJIQHVPD.js → enhance-VVMAKMVZ.js} +18 -8
- package/dist/enhance-VVMAKMVZ.js.map +1 -0
- package/dist/{feedback-23CLXKFT.js → feedback-AKHD7QIM.js} +8 -8
- package/dist/{finish-CY4CIH6O.js → finish-WGPISUEH.js} +60 -313
- package/dist/finish-WGPISUEH.js.map +1 -0
- package/dist/{git-LVRZ57GJ.js → git-OUYMVYJX.js} +2 -2
- package/dist/{ignite-WXEF2ID5.js → ignite-JEN3K3OT.js} +7 -7
- package/dist/index.d.ts +791 -712
- package/dist/index.js +126 -32
- package/dist/index.js.map +1 -1
- package/dist/init-EVUT4ZQJ.js +339 -0
- package/dist/init-EVUT4ZQJ.js.map +1 -0
- package/dist/mcp/github-comment-server.js +12 -9
- package/dist/mcp/github-comment-server.js.map +1 -1
- package/dist/neon-helpers-ZVIRPKCI.js +10 -0
- package/dist/{open-X6BTENPV.js → open-ETZUFSE4.js} +15 -17
- package/dist/{open-X6BTENPV.js.map → open-ETZUFSE4.js.map} +1 -1
- package/dist/prompts/init-prompt.txt +746 -0
- package/dist/prompts/issue-prompt.txt +48 -5
- package/dist/prompts/pr-prompt.txt +46 -1
- package/dist/prompts/regular-prompt.txt +22 -0
- package/dist/rebase-KBWFDZCN.js +95 -0
- package/dist/rebase-KBWFDZCN.js.map +1 -0
- package/dist/remote-GJEZWRCC.js +14 -0
- package/dist/{run-2JCPQAX3.js → run-4SVQ3WEU.js} +15 -17
- package/dist/{run-2JCPQAX3.js.map → run-4SVQ3WEU.js.map} +1 -1
- package/dist/schema/settings.schema.json +51 -1
- package/dist/{start-LWVRBJ6S.js → start-2NEZU7SE.js} +54 -53
- package/dist/{start-LWVRBJ6S.js.map → start-2NEZU7SE.js.map} +1 -1
- package/dist/{test-git-XPF4SZXJ.js → test-git-MKZATGZN.js} +3 -3
- package/dist/{test-prefix-XGFXFAYN.js → test-prefix-ZNLWDI3K.js} +3 -3
- package/dist/{update-3ZT2XX2G.js → update-4TDDUR5K.js} +11 -5
- package/dist/{update-3ZT2XX2G.js.map → update-4TDDUR5K.js.map} +1 -1
- package/dist/{update-notifier-QSSEB5KC.js → update-notifier-QEX3CJHA.js} +2 -2
- package/package.json +1 -1
- package/dist/ClaudeContextManager-XOSXQ67R.js +0 -13
- package/dist/ClaudeService-YSZ6EXWP.js +0 -12
- package/dist/NeonProvider-PAGPUH7F.js +0 -12
- package/dist/add-issue-22JBNOML.js.map +0 -1
- package/dist/chunk-37DYYFVK.js +0 -29
- package/dist/chunk-37DYYFVK.js.map +0 -1
- package/dist/chunk-F3XBU2R7.js.map +0 -1
- package/dist/chunk-JBH2ZYYZ.js.map +0 -1
- package/dist/chunk-KQDEK2ZW.js.map +0 -1
- package/dist/chunk-O2QWO64Z.js.map +0 -1
- package/dist/chunk-QEPVTTHD.js.map +0 -1
- package/dist/chunk-SJUQ2NDR.js.map +0 -1
- package/dist/chunk-SSR5AVRJ.js.map +0 -1
- package/dist/chunk-T7QPXANZ.js.map +0 -1
- package/dist/chunk-U3WU5OWO.js.map +0 -1
- package/dist/chunk-YYSKGAZT.js.map +0 -1
- package/dist/cleanup-3LUWPSM7.js.map +0 -1
- package/dist/enhance-XJIQHVPD.js.map +0 -1
- package/dist/env-MDFL4ZXL.js +0 -23
- package/dist/finish-CY4CIH6O.js.map +0 -1
- package/dist/init-RHACUR4E.js +0 -123
- package/dist/init-RHACUR4E.js.map +0 -1
- /package/dist/{ClaudeContextManager-XOSXQ67R.js.map → ClaudeContextManager-LD3VB6EM.js.map} +0 -0
- /package/dist/{ClaudeService-YSZ6EXWP.js.map → ClaudeService-CFFI7DD5.js.map} +0 -0
- /package/dist/{GitHubService-F7Z3XJOS.js.map → GitHubService-SH4H6VS5.js.map} +0 -0
- /package/dist/{LoomLauncher-MODG2SEM.js.map → LoomLauncher-FB2MV2ZI.js.map} +0 -0
- /package/dist/{NeonProvider-PAGPUH7F.js.map → PromptTemplateManager-WM5GIPEF.js.map} +0 -0
- /package/dist/{PromptTemplateManager-7FINLRDE.js.map → SettingsManager-SKLUVE3K.js.map} +0 -0
- /package/dist/{chunk-WKEWRSDB.js.map → chunk-HURVAQRK.js.map} +0 -0
- /package/dist/{chunk-JQ7VOSTC.js.map → chunk-KOCQAD2E.js.map} +0 -0
- /package/dist/{chunk-Y7SAGNUT.js.map → chunk-SLIMABFA.js.map} +0 -0
- /package/dist/{chunk-W3DQTW63.js.map → chunk-USVVV3FP.js.map} +0 -0
- /package/dist/{feedback-23CLXKFT.js.map → feedback-AKHD7QIM.js.map} +0 -0
- /package/dist/{SettingsManager-VAZF26S2.js.map → git-OUYMVYJX.js.map} +0 -0
- /package/dist/{ignite-WXEF2ID5.js.map → ignite-JEN3K3OT.js.map} +0 -0
- /package/dist/{env-MDFL4ZXL.js.map → neon-helpers-ZVIRPKCI.js.map} +0 -0
- /package/dist/{git-LVRZ57GJ.js.map → remote-GJEZWRCC.js.map} +0 -0
- /package/dist/{test-git-XPF4SZXJ.js.map → test-git-MKZATGZN.js.map} +0 -0
- /package/dist/{test-prefix-XGFXFAYN.js.map → test-prefix-ZNLWDI3K.js.map} +0 -0
- /package/dist/{update-notifier-QSSEB5KC.js.map → update-notifier-QEX3CJHA.js.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -147,7 +147,9 @@ var SettingsManager_exports = {};
|
|
|
147
147
|
__export(SettingsManager_exports, {
|
|
148
148
|
AgentSettingsSchema: () => AgentSettingsSchema,
|
|
149
149
|
CapabilitiesSettingsSchema: () => CapabilitiesSettingsSchema,
|
|
150
|
+
DatabaseProvidersSettingsSchema: () => DatabaseProvidersSettingsSchema,
|
|
150
151
|
IloomSettingsSchema: () => IloomSettingsSchema,
|
|
152
|
+
NeonSettingsSchema: () => NeonSettingsSchema,
|
|
151
153
|
SettingsManager: () => SettingsManager,
|
|
152
154
|
WorkflowPermissionSchema: () => WorkflowPermissionSchema,
|
|
153
155
|
WorkflowsSettingsSchema: () => WorkflowsSettingsSchema
|
|
@@ -156,7 +158,7 @@ import { readFile } from "fs/promises";
|
|
|
156
158
|
import path from "path";
|
|
157
159
|
import { z } from "zod";
|
|
158
160
|
import deepmerge from "deepmerge";
|
|
159
|
-
var AgentSettingsSchema, WorkflowPermissionSchema, WorkflowsSettingsSchema, CapabilitiesSettingsSchema, IloomSettingsSchema, SettingsManager;
|
|
161
|
+
var AgentSettingsSchema, WorkflowPermissionSchema, WorkflowsSettingsSchema, CapabilitiesSettingsSchema, NeonSettingsSchema, DatabaseProvidersSettingsSchema, IloomSettingsSchema, SettingsManager;
|
|
160
162
|
var init_SettingsManager = __esm({
|
|
161
163
|
"src/lib/SettingsManager.ts"() {
|
|
162
164
|
"use strict";
|
|
@@ -186,6 +188,15 @@ var init_SettingsManager = __esm({
|
|
|
186
188
|
databaseUrlEnvVarName: z.string().min(1, "Database URL variable name cannot be empty").regex(/^[A-Z_][A-Z0-9_]*$/, "Must be valid env var name (uppercase, underscores)").optional().default("DATABASE_URL").describe("Name of environment variable for database connection URL")
|
|
187
189
|
}).optional()
|
|
188
190
|
}).optional();
|
|
191
|
+
NeonSettingsSchema = z.object({
|
|
192
|
+
projectId: z.string().min(1).regex(/^[a-zA-Z0-9-]+$/, "Neon project ID must contain only letters, numbers, and hyphens").describe('Neon project ID found in your project URL (e.g., "fantastic-fox-3566354")'),
|
|
193
|
+
parentBranch: z.string().min(1).describe("Branch from which new database branches are created")
|
|
194
|
+
});
|
|
195
|
+
DatabaseProvidersSettingsSchema = z.object({
|
|
196
|
+
neon: NeonSettingsSchema.optional().describe(
|
|
197
|
+
"Neon database configuration. Requires Neon CLI installed and authenticated for database branching."
|
|
198
|
+
)
|
|
199
|
+
}).optional();
|
|
189
200
|
IloomSettingsSchema = z.object({
|
|
190
201
|
mainBranch: z.string().min(1, "Settings 'mainBranch' cannot be empty").optional().describe("Name of the main/primary branch for the repository"),
|
|
191
202
|
worktreePrefix: z.string().optional().refine(
|
|
@@ -211,8 +222,16 @@ var init_SettingsManager = __esm({
|
|
|
211
222
|
),
|
|
212
223
|
protectedBranches: z.array(z.string().min(1, "Protected branch name cannot be empty")).optional().describe('List of branches that cannot be deleted (defaults to [mainBranch, "main", "master", "develop"])'),
|
|
213
224
|
workflows: WorkflowsSettingsSchema.describe("Per-workflow-type permission configurations"),
|
|
214
|
-
agents: z.record(z.string(), AgentSettingsSchema).optional().nullable().describe(
|
|
215
|
-
|
|
225
|
+
agents: z.record(z.string(), AgentSettingsSchema).optional().nullable().describe(
|
|
226
|
+
"Per-agent configuration overrides. Available agents: iloom-issue-analyzer (analyzes issues), iloom-issue-planner (creates implementation plans), iloom-issue-analyze-and-plan (combined analysis and planning), iloom-issue-complexity-evaluator (evaluates complexity), iloom-issue-enhancer (enhances issue descriptions), iloom-issue-implementer (implements code changes), iloom-issue-reviewer (reviews code changes against requirements)"
|
|
227
|
+
),
|
|
228
|
+
capabilities: CapabilitiesSettingsSchema.describe("Project capability configurations"),
|
|
229
|
+
databaseProviders: DatabaseProvidersSettingsSchema.describe("Database provider configurations"),
|
|
230
|
+
issueManagement: z.object({
|
|
231
|
+
github: z.object({
|
|
232
|
+
remote: z.string().min(1, "Remote name cannot be empty").describe("Git remote name to use for GitHub operations")
|
|
233
|
+
}).optional()
|
|
234
|
+
}).optional().describe("Issue management configuration")
|
|
216
235
|
});
|
|
217
236
|
SettingsManager = class {
|
|
218
237
|
/**
|
|
@@ -1445,14 +1464,15 @@ var GitWorktreeManager = class {
|
|
|
1445
1464
|
}
|
|
1446
1465
|
/**
|
|
1447
1466
|
* Check if a worktree is the main repository worktree
|
|
1448
|
-
*
|
|
1449
|
-
*
|
|
1450
|
-
*
|
|
1467
|
+
* Uses findMainWorktreePathWithSettings to determine the main worktree based on settings.
|
|
1468
|
+
*
|
|
1469
|
+
* @param worktree - The worktree to check
|
|
1470
|
+
* @param settingsManager - SettingsManager instance for loading settings
|
|
1471
|
+
* @returns true if the worktree is the main worktree
|
|
1451
1472
|
*/
|
|
1452
|
-
async isMainWorktree(worktree) {
|
|
1453
|
-
const
|
|
1454
|
-
|
|
1455
|
-
return mainWorktree !== void 0 && mainWorktree.path === worktree.path;
|
|
1473
|
+
async isMainWorktree(worktree, settingsManager) {
|
|
1474
|
+
const mainWorktreePath = await findMainWorktreePathWithSettings(worktree.path, settingsManager);
|
|
1475
|
+
return worktree.path === mainWorktreePath;
|
|
1456
1476
|
}
|
|
1457
1477
|
/**
|
|
1458
1478
|
* Check if a worktree is a PR worktree based on naming patterns
|
|
@@ -1735,13 +1755,17 @@ var GitWorktreeManager = class {
|
|
|
1735
1755
|
* Remove multiple worktrees
|
|
1736
1756
|
* Returns a summary of successes and failures
|
|
1737
1757
|
* Automatically filters out the main worktree
|
|
1758
|
+
*
|
|
1759
|
+
* @param worktrees - Array of worktrees to remove
|
|
1760
|
+
* @param settingsManager - SettingsManager instance for determining main worktree
|
|
1761
|
+
* @param options - Cleanup options
|
|
1738
1762
|
*/
|
|
1739
|
-
async removeWorktrees(worktrees, options = {}) {
|
|
1763
|
+
async removeWorktrees(worktrees, settingsManager, options = {}) {
|
|
1740
1764
|
const successes = [];
|
|
1741
1765
|
const failures = [];
|
|
1742
1766
|
const skipped = [];
|
|
1743
1767
|
for (const worktree of worktrees) {
|
|
1744
|
-
if (await this.isMainWorktree(worktree)) {
|
|
1768
|
+
if (await this.isMainWorktree(worktree, settingsManager)) {
|
|
1745
1769
|
skipped.push({ worktree, reason: "Cannot remove main worktree" });
|
|
1746
1770
|
continue;
|
|
1747
1771
|
}
|
|
@@ -1835,15 +1859,19 @@ async function fetchGhIssue(issueNumber, repo) {
|
|
|
1835
1859
|
}
|
|
1836
1860
|
return executeGhCommand(args);
|
|
1837
1861
|
}
|
|
1838
|
-
async function fetchGhPR(prNumber) {
|
|
1839
|
-
logger.debug("Fetching GitHub PR", { prNumber });
|
|
1840
|
-
|
|
1862
|
+
async function fetchGhPR(prNumber, repo) {
|
|
1863
|
+
logger.debug("Fetching GitHub PR", { prNumber, repo });
|
|
1864
|
+
const args = [
|
|
1841
1865
|
"pr",
|
|
1842
1866
|
"view",
|
|
1843
1867
|
String(prNumber),
|
|
1844
1868
|
"--json",
|
|
1845
1869
|
"number,title,body,state,headRefName,baseRefName,url,isDraft,mergeable,createdAt,updatedAt"
|
|
1846
|
-
]
|
|
1870
|
+
];
|
|
1871
|
+
if (repo) {
|
|
1872
|
+
args.push("--repo", repo);
|
|
1873
|
+
}
|
|
1874
|
+
return executeGhCommand(args);
|
|
1847
1875
|
}
|
|
1848
1876
|
async function fetchProjectList(owner) {
|
|
1849
1877
|
const result = await executeGhCommand([
|
|
@@ -2005,29 +2033,29 @@ var GitHubService = class {
|
|
|
2005
2033
|
this.prompter = (options == null ? void 0 : options.prompter) ?? promptConfirmation;
|
|
2006
2034
|
}
|
|
2007
2035
|
// Input detection
|
|
2008
|
-
async detectInputType(input) {
|
|
2036
|
+
async detectInputType(input, repo) {
|
|
2009
2037
|
const numberMatch = input.match(/^#?(\d+)$/);
|
|
2010
2038
|
if (!(numberMatch == null ? void 0 : numberMatch[1])) {
|
|
2011
2039
|
return { type: "unknown", number: null, rawInput: input };
|
|
2012
2040
|
}
|
|
2013
2041
|
const number = parseInt(numberMatch[1], 10);
|
|
2014
2042
|
logger.debug("Checking if input is a PR", { number });
|
|
2015
|
-
const pr = await this.isValidPR(number);
|
|
2043
|
+
const pr = await this.isValidPR(number, repo);
|
|
2016
2044
|
if (pr) {
|
|
2017
2045
|
return { type: "pr", number, rawInput: input };
|
|
2018
2046
|
}
|
|
2019
2047
|
logger.debug("Checking if input is an issue", { number });
|
|
2020
|
-
const issue = await this.isValidIssue(number);
|
|
2048
|
+
const issue = await this.isValidIssue(number, repo);
|
|
2021
2049
|
if (issue) {
|
|
2022
2050
|
return { type: "issue", number, rawInput: input };
|
|
2023
2051
|
}
|
|
2024
2052
|
return { type: "unknown", number: null, rawInput: input };
|
|
2025
2053
|
}
|
|
2026
2054
|
// Issue fetching with validation
|
|
2027
|
-
async fetchIssue(issueNumber) {
|
|
2055
|
+
async fetchIssue(issueNumber, repo) {
|
|
2028
2056
|
var _a;
|
|
2029
2057
|
try {
|
|
2030
|
-
return await this.fetchIssueInternal(issueNumber);
|
|
2058
|
+
return await this.fetchIssueInternal(issueNumber, repo);
|
|
2031
2059
|
} catch (error) {
|
|
2032
2060
|
if (error instanceof Error && "stderr" in error && ((_a = error.stderr) == null ? void 0 : _a.includes("Could not resolve"))) {
|
|
2033
2061
|
throw new GitHubError(
|
|
@@ -2040,10 +2068,10 @@ var GitHubService = class {
|
|
|
2040
2068
|
}
|
|
2041
2069
|
}
|
|
2042
2070
|
// Silent issue validation (for detection phase)
|
|
2043
|
-
async isValidIssue(issueNumber) {
|
|
2071
|
+
async isValidIssue(issueNumber, repo) {
|
|
2044
2072
|
var _a;
|
|
2045
2073
|
try {
|
|
2046
|
-
return await this.fetchIssueInternal(issueNumber);
|
|
2074
|
+
return await this.fetchIssueInternal(issueNumber, repo);
|
|
2047
2075
|
} catch (error) {
|
|
2048
2076
|
if (error instanceof Error && "stderr" in error && ((_a = error.stderr) == null ? void 0 : _a.includes("Could not resolve"))) {
|
|
2049
2077
|
return false;
|
|
@@ -2052,8 +2080,8 @@ var GitHubService = class {
|
|
|
2052
2080
|
}
|
|
2053
2081
|
}
|
|
2054
2082
|
// Internal issue fetching logic (shared by fetchIssue and isValidIssue)
|
|
2055
|
-
async fetchIssueInternal(issueNumber) {
|
|
2056
|
-
const ghIssue = await fetchGhIssue(issueNumber);
|
|
2083
|
+
async fetchIssueInternal(issueNumber, repo) {
|
|
2084
|
+
const ghIssue = await fetchGhIssue(issueNumber, repo);
|
|
2057
2085
|
return this.mapGitHubIssueToIssue(ghIssue);
|
|
2058
2086
|
}
|
|
2059
2087
|
async validateIssueState(issue) {
|
|
@@ -2070,10 +2098,10 @@ var GitHubService = class {
|
|
|
2070
2098
|
}
|
|
2071
2099
|
}
|
|
2072
2100
|
// PR fetching with validation
|
|
2073
|
-
async fetchPR(prNumber) {
|
|
2101
|
+
async fetchPR(prNumber, repo) {
|
|
2074
2102
|
var _a;
|
|
2075
2103
|
try {
|
|
2076
|
-
return await this.fetchPRInternal(prNumber);
|
|
2104
|
+
return await this.fetchPRInternal(prNumber, repo);
|
|
2077
2105
|
} catch (error) {
|
|
2078
2106
|
if (error instanceof Error && "stderr" in error && ((_a = error.stderr) == null ? void 0 : _a.includes("Could not resolve"))) {
|
|
2079
2107
|
throw new GitHubError(
|
|
@@ -2086,10 +2114,10 @@ var GitHubService = class {
|
|
|
2086
2114
|
}
|
|
2087
2115
|
}
|
|
2088
2116
|
// Silent PR validation (for detection phase)
|
|
2089
|
-
async isValidPR(prNumber) {
|
|
2117
|
+
async isValidPR(prNumber, repo) {
|
|
2090
2118
|
var _a;
|
|
2091
2119
|
try {
|
|
2092
|
-
return await this.fetchPRInternal(prNumber);
|
|
2120
|
+
return await this.fetchPRInternal(prNumber, repo);
|
|
2093
2121
|
} catch (error) {
|
|
2094
2122
|
if (error instanceof Error && "stderr" in error && ((_a = error.stderr) == null ? void 0 : _a.includes("Could not resolve"))) {
|
|
2095
2123
|
return false;
|
|
@@ -2098,8 +2126,8 @@ var GitHubService = class {
|
|
|
2098
2126
|
}
|
|
2099
2127
|
}
|
|
2100
2128
|
// Internal PR fetching logic (shared by fetchPR and isValidPR)
|
|
2101
|
-
async fetchPRInternal(prNumber) {
|
|
2102
|
-
const ghPR = await fetchGhPR(prNumber);
|
|
2129
|
+
async fetchPRInternal(prNumber, repo) {
|
|
2130
|
+
const ghPR = await fetchGhPR(prNumber, repo);
|
|
2103
2131
|
return this.mapGitHubPRToPullRequest(ghPR);
|
|
2104
2132
|
}
|
|
2105
2133
|
async validatePRState(pr) {
|
|
@@ -2811,12 +2839,48 @@ var PromptTemplateManager = class {
|
|
|
2811
2839
|
if (variables.PORT !== void 0) {
|
|
2812
2840
|
result = result.replace(/PORT/g, String(variables.PORT));
|
|
2813
2841
|
}
|
|
2842
|
+
if (variables.SETTINGS_SCHEMA !== void 0) {
|
|
2843
|
+
result = result.replace(/SETTINGS_SCHEMA/g, variables.SETTINGS_SCHEMA);
|
|
2844
|
+
}
|
|
2845
|
+
if (variables.SETTINGS_JSON !== void 0) {
|
|
2846
|
+
result = result.replace(/SETTINGS_JSON/g, variables.SETTINGS_JSON);
|
|
2847
|
+
}
|
|
2848
|
+
if (variables.SETTINGS_LOCAL_JSON !== void 0) {
|
|
2849
|
+
result = result.replace(/SETTINGS_LOCAL_JSON/g, variables.SETTINGS_LOCAL_JSON);
|
|
2850
|
+
}
|
|
2851
|
+
if (variables.SHELL_TYPE !== void 0) {
|
|
2852
|
+
result = result.replace(/SHELL_TYPE/g, variables.SHELL_TYPE);
|
|
2853
|
+
}
|
|
2854
|
+
if (variables.SHELL_CONFIG_PATH !== void 0) {
|
|
2855
|
+
result = result.replace(/SHELL_CONFIG_PATH/g, variables.SHELL_CONFIG_PATH);
|
|
2856
|
+
}
|
|
2857
|
+
if (variables.SHELL_CONFIG_CONTENT !== void 0) {
|
|
2858
|
+
result = result.replace(/SHELL_CONFIG_CONTENT/g, variables.SHELL_CONFIG_CONTENT);
|
|
2859
|
+
}
|
|
2860
|
+
if (variables.REMOTES_INFO !== void 0) {
|
|
2861
|
+
result = result.replace(/REMOTES_INFO/g, variables.REMOTES_INFO);
|
|
2862
|
+
}
|
|
2863
|
+
if (variables.MULTIPLE_REMOTES !== void 0) {
|
|
2864
|
+
result = result.replace(/MULTIPLE_REMOTES/g, variables.MULTIPLE_REMOTES);
|
|
2865
|
+
}
|
|
2866
|
+
if (variables.SINGLE_REMOTE !== void 0) {
|
|
2867
|
+
result = result.replace(/SINGLE_REMOTE/g, variables.SINGLE_REMOTE);
|
|
2868
|
+
}
|
|
2869
|
+
if (variables.SINGLE_REMOTE_NAME !== void 0) {
|
|
2870
|
+
result = result.replace(/SINGLE_REMOTE_NAME/g, variables.SINGLE_REMOTE_NAME);
|
|
2871
|
+
}
|
|
2872
|
+
if (variables.SINGLE_REMOTE_URL !== void 0) {
|
|
2873
|
+
result = result.replace(/SINGLE_REMOTE_URL/g, variables.SINGLE_REMOTE_URL);
|
|
2874
|
+
}
|
|
2875
|
+
if (variables.NO_REMOTES !== void 0) {
|
|
2876
|
+
result = result.replace(/NO_REMOTES/g, variables.NO_REMOTES);
|
|
2877
|
+
}
|
|
2814
2878
|
return result;
|
|
2815
2879
|
}
|
|
2816
2880
|
/**
|
|
2817
2881
|
* Process conditional sections in template
|
|
2818
2882
|
* Format: {{#IF ONE_SHOT_MODE}}content{{/IF ONE_SHOT_MODE}}
|
|
2819
|
-
*
|
|
2883
|
+
*
|
|
2820
2884
|
* Note: /s flag allows . to match newlines
|
|
2821
2885
|
*/
|
|
2822
2886
|
processConditionalSections(template, variables) {
|
|
@@ -2827,6 +2891,36 @@ var PromptTemplateManager = class {
|
|
|
2827
2891
|
} else {
|
|
2828
2892
|
result = result.replace(oneShotRegex, "");
|
|
2829
2893
|
}
|
|
2894
|
+
const settingsJsonRegex = /\{\{#IF SETTINGS_JSON\}\}(.*?)\{\{\/IF SETTINGS_JSON\}\}/gs;
|
|
2895
|
+
if (variables.SETTINGS_JSON !== void 0 && variables.SETTINGS_JSON !== "") {
|
|
2896
|
+
result = result.replace(settingsJsonRegex, "$1");
|
|
2897
|
+
} else {
|
|
2898
|
+
result = result.replace(settingsJsonRegex, "");
|
|
2899
|
+
}
|
|
2900
|
+
const settingsLocalJsonRegex = /\{\{#IF SETTINGS_LOCAL_JSON\}\}(.*?)\{\{\/IF SETTINGS_LOCAL_JSON\}\}/gs;
|
|
2901
|
+
if (variables.SETTINGS_LOCAL_JSON !== void 0 && variables.SETTINGS_LOCAL_JSON !== "") {
|
|
2902
|
+
result = result.replace(settingsLocalJsonRegex, "$1");
|
|
2903
|
+
} else {
|
|
2904
|
+
result = result.replace(settingsLocalJsonRegex, "");
|
|
2905
|
+
}
|
|
2906
|
+
const multipleRemotesRegex = /\{\{#IF MULTIPLE_REMOTES\}\}(.*?)\{\{\/IF MULTIPLE_REMOTES\}\}/gs;
|
|
2907
|
+
if (variables.MULTIPLE_REMOTES !== void 0 && variables.MULTIPLE_REMOTES !== "") {
|
|
2908
|
+
result = result.replace(multipleRemotesRegex, "$1");
|
|
2909
|
+
} else {
|
|
2910
|
+
result = result.replace(multipleRemotesRegex, "");
|
|
2911
|
+
}
|
|
2912
|
+
const singleRemoteRegex = /\{\{#IF SINGLE_REMOTE\}\}(.*?)\{\{\/IF SINGLE_REMOTE\}\}/gs;
|
|
2913
|
+
if (variables.SINGLE_REMOTE !== void 0 && variables.SINGLE_REMOTE !== "") {
|
|
2914
|
+
result = result.replace(singleRemoteRegex, "$1");
|
|
2915
|
+
} else {
|
|
2916
|
+
result = result.replace(singleRemoteRegex, "");
|
|
2917
|
+
}
|
|
2918
|
+
const noRemotesRegex = /\{\{#IF NO_REMOTES\}\}(.*?)\{\{\/IF NO_REMOTES\}\}/gs;
|
|
2919
|
+
if (variables.NO_REMOTES !== void 0 && variables.NO_REMOTES !== "") {
|
|
2920
|
+
result = result.replace(noRemotesRegex, "$1");
|
|
2921
|
+
} else {
|
|
2922
|
+
result = result.replace(noRemotesRegex, "");
|
|
2923
|
+
}
|
|
2830
2924
|
return result;
|
|
2831
2925
|
}
|
|
2832
2926
|
/**
|