issue-flow 0.17.0 → 0.18.0
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/{agent-TB6W7PT7.js → agent-HMZTXCRT.js} +5 -5
- package/dist/{analyze-6M3KEOX7.js → analyze-Q4ONIWRZ.js} +10 -10
- package/dist/{apply-ADB3ZK7W.js → apply-EEFPY2W4.js} +5 -5
- package/dist/{bench-FM7I7EIV.js → bench-WWWXLTFH.js} +9 -9
- package/dist/{chunk-KZ5EY5XX.js → chunk-34OCSKOB.js} +7 -7
- package/dist/{chunk-UWDCIFTP.js → chunk-45WZ6GMI.js} +27 -43
- package/dist/chunk-45WZ6GMI.js.map +1 -0
- package/dist/{chunk-QMIQR7EE.js → chunk-62GVVZQO.js} +3 -3
- package/dist/{chunk-YII4U7ZD.js → chunk-6K2LCFG6.js} +2 -2
- package/dist/{chunk-A4H7P7T7.js → chunk-7UMMFOL2.js} +3 -3
- package/dist/chunk-7UMMFOL2.js.map +1 -0
- package/dist/{chunk-HJBF4WD2.js → chunk-CWSQVHVV.js} +59 -25
- package/dist/chunk-CWSQVHVV.js.map +1 -0
- package/dist/{chunk-SGTTR4XW.js → chunk-E4I6MMHD.js} +4 -4
- package/dist/{chunk-6YQT3SSM.js → chunk-ECU7YO7S.js} +2 -2
- package/dist/{chunk-MI5TREN3.js → chunk-EG2MGDP5.js} +6 -6
- package/dist/{chunk-RCZJQUTC.js → chunk-HOAHMERN.js} +43 -10
- package/dist/chunk-HOAHMERN.js.map +1 -0
- package/dist/{chunk-HLAPOUEM.js → chunk-KMCS76ZW.js} +3 -3
- package/dist/{chunk-KZXQWC7U.js → chunk-KRAGAUKD.js} +8 -8
- package/dist/{chunk-E6KXCV3T.js → chunk-LGHND47K.js} +2 -2
- package/dist/{chunk-DV7HUC4Z.js → chunk-LI35PIIS.js} +2 -2
- package/dist/{chunk-Z5O2XBWA.js → chunk-LTH6XYZ3.js} +5 -5
- package/dist/{chunk-2SUFAE6X.js → chunk-NEWNXZ65.js} +21 -12
- package/dist/{chunk-2SUFAE6X.js.map → chunk-NEWNXZ65.js.map} +1 -1
- package/dist/{chunk-LPWPFIIB.js → chunk-OODXFCQV.js} +7 -7
- package/dist/{chunk-ISZ54SVE.js → chunk-PMLE7KAQ.js} +17 -9
- package/dist/chunk-PMLE7KAQ.js.map +1 -0
- package/dist/{chunk-HY5HLFDU.js → chunk-QF7VEL3M.js} +115 -14
- package/dist/chunk-QF7VEL3M.js.map +1 -0
- package/dist/{chunk-B3TSS7BT.js → chunk-QJ44VG5G.js} +2 -2
- package/dist/{chunk-VE3IYNDN.js → chunk-SA6HXL4Y.js} +2 -2
- package/dist/{chunk-UK4E2FUA.js → chunk-TZYINKCC.js} +75 -53
- package/dist/chunk-TZYINKCC.js.map +1 -0
- package/dist/{chunk-32JSYXEK.js → chunk-V7QOIQYC.js} +2 -2
- package/dist/{chunk-ANI2NTR4.js → chunk-XUEMATVY.js} +6 -6
- package/dist/{chunk-D6ZBGJ3L.js → chunk-ZVZMWNCG.js} +129 -35
- package/dist/chunk-ZVZMWNCG.js.map +1 -0
- package/dist/cli.js +35 -35
- package/dist/cli.js.map +1 -1
- package/dist/{config-KGZUPAUP.js → config-LEBZZCJP.js} +4 -4
- package/dist/{conventions-RYN7OXJN.js → conventions-XOT6YW5L.js} +6 -6
- package/dist/{execute-QL3ZQIAP.js → execute-LELOSR5T.js} +14 -14
- package/dist/{generate-CX6KNHZS.js → generate-JGW5JSKB.js} +10 -10
- package/dist/{init-PDVQDRS6.js → init-TO6MUXO4.js} +7 -5
- package/dist/{operations-CAKIT2BO.js → operations-O4FORFIH.js} +4 -4
- package/dist/{plan-PRORGS3L.js → plan-OXAT344Q.js} +12 -12
- package/dist/{policy-WX6O2JID.js → policy-U5NBFAO5.js} +5 -5
- package/dist/{pr-27RMQI5F.js → pr-UZHNKKZC.js} +12 -12
- package/dist/{pr-review-VNESMAMT.js → pr-review-Q4ACAWDM.js} +9 -9
- package/dist/{prd-ZNC4T5BS.js → prd-6CYEMLDY.js} +12 -12
- package/dist/{recorder-N7U66HCO.js → recorder-2BAKPBRA.js} +2 -2
- package/dist/{resume-VLWIE264.js → resume-URCU6CIJ.js} +26 -26
- package/dist/{review-7CREJDKB.js → review-LVZT2TMW.js} +13 -13
- package/dist/{routing-VCDYHSXA.js → routing-EK6RBZM4.js} +6 -6
- package/dist/run-2RXJCJKT.js +56 -0
- package/dist/{usage-U7QNGCPK.js → usage-KTMYXAPF.js} +3 -3
- package/dist/{web-HUNDHCJ4.js → web-B5UPHHR5.js} +8 -8
- package/package.json +1 -1
- package/web/AGENTS.md +115 -7
- package/web/public/app.css +393 -245
- package/web/public/app.js +108 -38
- package/web/public/index.html +106 -78
- package/dist/chunk-A4H7P7T7.js.map +0 -1
- package/dist/chunk-D6ZBGJ3L.js.map +0 -1
- package/dist/chunk-HJBF4WD2.js.map +0 -1
- package/dist/chunk-HY5HLFDU.js.map +0 -1
- package/dist/chunk-ISZ54SVE.js.map +0 -1
- package/dist/chunk-RCZJQUTC.js.map +0 -1
- package/dist/chunk-UK4E2FUA.js.map +0 -1
- package/dist/chunk-UWDCIFTP.js.map +0 -1
- package/dist/run-3MPORLF5.js +0 -56
- /package/dist/{agent-TB6W7PT7.js.map → agent-HMZTXCRT.js.map} +0 -0
- /package/dist/{analyze-6M3KEOX7.js.map → analyze-Q4ONIWRZ.js.map} +0 -0
- /package/dist/{apply-ADB3ZK7W.js.map → apply-EEFPY2W4.js.map} +0 -0
- /package/dist/{bench-FM7I7EIV.js.map → bench-WWWXLTFH.js.map} +0 -0
- /package/dist/{chunk-KZ5EY5XX.js.map → chunk-34OCSKOB.js.map} +0 -0
- /package/dist/{chunk-QMIQR7EE.js.map → chunk-62GVVZQO.js.map} +0 -0
- /package/dist/{chunk-YII4U7ZD.js.map → chunk-6K2LCFG6.js.map} +0 -0
- /package/dist/{chunk-SGTTR4XW.js.map → chunk-E4I6MMHD.js.map} +0 -0
- /package/dist/{chunk-6YQT3SSM.js.map → chunk-ECU7YO7S.js.map} +0 -0
- /package/dist/{chunk-MI5TREN3.js.map → chunk-EG2MGDP5.js.map} +0 -0
- /package/dist/{chunk-HLAPOUEM.js.map → chunk-KMCS76ZW.js.map} +0 -0
- /package/dist/{chunk-KZXQWC7U.js.map → chunk-KRAGAUKD.js.map} +0 -0
- /package/dist/{chunk-E6KXCV3T.js.map → chunk-LGHND47K.js.map} +0 -0
- /package/dist/{chunk-DV7HUC4Z.js.map → chunk-LI35PIIS.js.map} +0 -0
- /package/dist/{chunk-Z5O2XBWA.js.map → chunk-LTH6XYZ3.js.map} +0 -0
- /package/dist/{chunk-LPWPFIIB.js.map → chunk-OODXFCQV.js.map} +0 -0
- /package/dist/{chunk-B3TSS7BT.js.map → chunk-QJ44VG5G.js.map} +0 -0
- /package/dist/{chunk-VE3IYNDN.js.map → chunk-SA6HXL4Y.js.map} +0 -0
- /package/dist/{chunk-32JSYXEK.js.map → chunk-V7QOIQYC.js.map} +0 -0
- /package/dist/{chunk-ANI2NTR4.js.map → chunk-XUEMATVY.js.map} +0 -0
- /package/dist/{config-KGZUPAUP.js.map → config-LEBZZCJP.js.map} +0 -0
- /package/dist/{conventions-RYN7OXJN.js.map → conventions-XOT6YW5L.js.map} +0 -0
- /package/dist/{execute-QL3ZQIAP.js.map → execute-LELOSR5T.js.map} +0 -0
- /package/dist/{generate-CX6KNHZS.js.map → generate-JGW5JSKB.js.map} +0 -0
- /package/dist/{init-PDVQDRS6.js.map → init-TO6MUXO4.js.map} +0 -0
- /package/dist/{operations-CAKIT2BO.js.map → operations-O4FORFIH.js.map} +0 -0
- /package/dist/{plan-PRORGS3L.js.map → plan-OXAT344Q.js.map} +0 -0
- /package/dist/{policy-WX6O2JID.js.map → policy-U5NBFAO5.js.map} +0 -0
- /package/dist/{pr-27RMQI5F.js.map → pr-UZHNKKZC.js.map} +0 -0
- /package/dist/{pr-review-VNESMAMT.js.map → pr-review-Q4ACAWDM.js.map} +0 -0
- /package/dist/{prd-ZNC4T5BS.js.map → prd-6CYEMLDY.js.map} +0 -0
- /package/dist/{recorder-N7U66HCO.js.map → recorder-2BAKPBRA.js.map} +0 -0
- /package/dist/{resume-VLWIE264.js.map → resume-URCU6CIJ.js.map} +0 -0
- /package/dist/{review-7CREJDKB.js.map → review-LVZT2TMW.js.map} +0 -0
- /package/dist/{routing-VCDYHSXA.js.map → routing-EK6RBZM4.js.map} +0 -0
- /package/dist/{run-3MPORLF5.js.map → run-2RXJCJKT.js.map} +0 -0
- /package/dist/{usage-U7QNGCPK.js.map → usage-KTMYXAPF.js.map} +0 -0
- /package/dist/{web-HUNDHCJ4.js.map → web-B5UPHHR5.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
resolveIssuePaths
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-LI35PIIS.js";
|
|
5
5
|
import {
|
|
6
6
|
formatDuration,
|
|
7
7
|
printWarning
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
} from "./chunk-YVPZUN6X.js";
|
|
17
17
|
import {
|
|
18
18
|
DEFAULT_TELEMETRY_CONFIG
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-6K2LCFG6.js";
|
|
20
20
|
import {
|
|
21
21
|
parseCodexUsage,
|
|
22
22
|
parseUsage
|
|
@@ -1631,7 +1631,7 @@ function dropUndefined(value) {
|
|
|
1631
1631
|
return result;
|
|
1632
1632
|
}
|
|
1633
1633
|
async function resolveAgentFor(phase, options = {}) {
|
|
1634
|
-
const { getAgentCliOverrides: getAgentCliOverrides2, loadAgentConfig: loadAgentConfig2 } = await import("./config-
|
|
1634
|
+
const { getAgentCliOverrides: getAgentCliOverrides2, loadAgentConfig: loadAgentConfig2 } = await import("./config-LEBZZCJP.js");
|
|
1635
1635
|
const config = options.config ?? await loadAgentConfig2();
|
|
1636
1636
|
const cli = options.cli ?? getAgentCliOverrides2();
|
|
1637
1637
|
const defaultBlock = {
|
|
@@ -1737,7 +1737,7 @@ async function describeRunAgents(phases = AGENT_PHASES) {
|
|
|
1737
1737
|
defaultModel = settings.model;
|
|
1738
1738
|
}
|
|
1739
1739
|
}
|
|
1740
|
-
const { loadAgentConfig: loadAgentConfig2 } = await import("./config-
|
|
1740
|
+
const { loadAgentConfig: loadAgentConfig2 } = await import("./config-LEBZZCJP.js");
|
|
1741
1741
|
const config = await loadAgentConfig2();
|
|
1742
1742
|
defaultProvider = config.provider;
|
|
1743
1743
|
defaultModel = config.model;
|
|
@@ -1769,17 +1769,54 @@ function hasExplicitAgentSelection(config, cli, phase) {
|
|
|
1769
1769
|
}
|
|
1770
1770
|
|
|
1771
1771
|
// src/agents/availability.ts
|
|
1772
|
+
var READINESS_SCHEMA_VERSION = "1";
|
|
1773
|
+
var DEFAULT_READINESS_TTL_MS = 5 * 6e4;
|
|
1774
|
+
var PROVIDER_HARNESS = {
|
|
1775
|
+
claude: "claude-code",
|
|
1776
|
+
codex: "codex-cli",
|
|
1777
|
+
cursor: "cursor-cli",
|
|
1778
|
+
antigravity: "antigravity-cli"
|
|
1779
|
+
};
|
|
1780
|
+
var ALL_PROVIDERS = ["claude", "codex", "cursor", "antigravity"];
|
|
1772
1781
|
var probeCache = /* @__PURE__ */ new Map();
|
|
1782
|
+
var inventoryCache = null;
|
|
1783
|
+
function deriveState(installed2, authentication, cooldownUntil, nowMs) {
|
|
1784
|
+
if (!installed2) return "unavailable";
|
|
1785
|
+
if (cooldownUntil !== null && Date.parse(cooldownUntil) > nowMs) return "unavailable";
|
|
1786
|
+
if (authentication === "failed") return "unavailable";
|
|
1787
|
+
if (authentication === "unverified") return "conditional";
|
|
1788
|
+
return "ready";
|
|
1789
|
+
}
|
|
1790
|
+
function toAvailability(readiness) {
|
|
1791
|
+
return {
|
|
1792
|
+
id: readiness.provider,
|
|
1793
|
+
installed: readiness.installed,
|
|
1794
|
+
version: readiness.version,
|
|
1795
|
+
authenticated: readiness.installed && readiness.authentication !== "failed",
|
|
1796
|
+
authentication: readiness.authentication,
|
|
1797
|
+
state: readiness.state,
|
|
1798
|
+
detail: readiness.detail,
|
|
1799
|
+
observedAt: readiness.observedAt,
|
|
1800
|
+
expiresAt: readiness.expiresAt,
|
|
1801
|
+
source: readiness.source,
|
|
1802
|
+
cooldownUntil: readiness.cooldownUntil
|
|
1803
|
+
};
|
|
1804
|
+
}
|
|
1773
1805
|
async function probeAgent(id) {
|
|
1774
1806
|
const cached = probeCache.get(id);
|
|
1775
1807
|
if (cached) return cached;
|
|
1776
|
-
const pending = probeAgentUncached(id);
|
|
1808
|
+
const pending = probeAgentUncached(id).then(toAvailability);
|
|
1777
1809
|
probeCache.set(id, pending);
|
|
1778
1810
|
return pending;
|
|
1779
1811
|
}
|
|
1780
|
-
async function probeAgentUncached(id) {
|
|
1812
|
+
async function probeAgentUncached(id, options = {}) {
|
|
1781
1813
|
ensureRunnersRegistered();
|
|
1782
1814
|
const runner = runnerFor(id);
|
|
1815
|
+
const now = options.now?.() ?? /* @__PURE__ */ new Date();
|
|
1816
|
+
const ttlMs = options.ttlMs ?? DEFAULT_READINESS_TTL_MS;
|
|
1817
|
+
const observedAt = now.toISOString();
|
|
1818
|
+
const expiresAt = new Date(now.getTime() + ttlMs).toISOString();
|
|
1819
|
+
const cooldownUntil = options.cooldownUntil ?? null;
|
|
1783
1820
|
let version = null;
|
|
1784
1821
|
let installed2 = false;
|
|
1785
1822
|
try {
|
|
@@ -1790,22 +1827,85 @@ async function probeAgentUncached(id) {
|
|
|
1790
1827
|
} catch {
|
|
1791
1828
|
installed2 = false;
|
|
1792
1829
|
}
|
|
1793
|
-
let
|
|
1830
|
+
let authentication = installed2 ? "unverified" : "failed";
|
|
1794
1831
|
let detail = installed2 ? version ?? "installed" : "not found";
|
|
1795
|
-
|
|
1832
|
+
let source = "probe";
|
|
1833
|
+
if (!installed2) {
|
|
1834
|
+
authentication = "failed";
|
|
1835
|
+
detail = "not found";
|
|
1836
|
+
} else if (runner.authCommand && runner.capabilities.authProbe !== "none") {
|
|
1796
1837
|
try {
|
|
1797
1838
|
const { command, args } = runner.authCommand();
|
|
1798
1839
|
const auth = await execa6(command, args, { reject: false, timeout: 1e4 });
|
|
1799
1840
|
const text = `${auth.stdout?.toString() ?? ""}
|
|
1800
1841
|
${auth.stderr?.toString() ?? ""}`;
|
|
1801
|
-
|
|
1802
|
-
|
|
1842
|
+
const ok = runner.capabilities.authProbe === "text" ? !/not logged in|not authenticated|no models available/i.test(text) : auth.exitCode === 0;
|
|
1843
|
+
authentication = ok ? "confirmed" : "failed";
|
|
1844
|
+
detail = ok ? `${version} (authenticated)` : `${version} (not authenticated)`;
|
|
1803
1845
|
} catch {
|
|
1804
|
-
|
|
1846
|
+
authentication = "failed";
|
|
1805
1847
|
detail = `${version} (not authenticated)`;
|
|
1806
1848
|
}
|
|
1849
|
+
} else {
|
|
1850
|
+
authentication = "unverified";
|
|
1851
|
+
detail = `${version} (auth unverified)`;
|
|
1852
|
+
source = "probe";
|
|
1853
|
+
}
|
|
1854
|
+
const state = deriveState(installed2, authentication, cooldownUntil, now.getTime());
|
|
1855
|
+
if (state === "unavailable" && cooldownUntil !== null && Date.parse(cooldownUntil) > now.getTime()) {
|
|
1856
|
+
detail = `${detail}; cooldown until ${cooldownUntil}`;
|
|
1807
1857
|
}
|
|
1808
|
-
return {
|
|
1858
|
+
return {
|
|
1859
|
+
provider: id,
|
|
1860
|
+
harness: PROVIDER_HARNESS[id],
|
|
1861
|
+
installed: installed2,
|
|
1862
|
+
authentication,
|
|
1863
|
+
state,
|
|
1864
|
+
models: [
|
|
1865
|
+
{
|
|
1866
|
+
id: null,
|
|
1867
|
+
access: installed2 ? "unverified" : "denied",
|
|
1868
|
+
confidence: "unknown",
|
|
1869
|
+
source: "static-catalog"
|
|
1870
|
+
}
|
|
1871
|
+
],
|
|
1872
|
+
version,
|
|
1873
|
+
detail,
|
|
1874
|
+
observedAt,
|
|
1875
|
+
expiresAt,
|
|
1876
|
+
source,
|
|
1877
|
+
cooldownUntil
|
|
1878
|
+
};
|
|
1879
|
+
}
|
|
1880
|
+
async function probeReadinessInventory(options = {}) {
|
|
1881
|
+
const now = options.now?.() ?? /* @__PURE__ */ new Date();
|
|
1882
|
+
const ttlMs = options.ttlMs ?? DEFAULT_READINESS_TTL_MS;
|
|
1883
|
+
if (!options.force && inventoryCache !== null && inventoryCache.expiresAtMs > now.getTime()) {
|
|
1884
|
+
return inventoryCache.promise;
|
|
1885
|
+
}
|
|
1886
|
+
const promise = (async () => {
|
|
1887
|
+
const providers = await Promise.all(
|
|
1888
|
+
ALL_PROVIDERS.map(
|
|
1889
|
+
(id) => probeAgentUncached(id, {
|
|
1890
|
+
now: () => now,
|
|
1891
|
+
ttlMs,
|
|
1892
|
+
cooldownUntil: options.cooldowns?.[id] ?? null
|
|
1893
|
+
})
|
|
1894
|
+
)
|
|
1895
|
+
);
|
|
1896
|
+
const byId = Object.fromEntries(providers.map((entry) => [entry.provider, entry]));
|
|
1897
|
+
for (const entry of providers) {
|
|
1898
|
+
probeCache.set(entry.provider, Promise.resolve(toAvailability(entry)));
|
|
1899
|
+
}
|
|
1900
|
+
return {
|
|
1901
|
+
schemaVersion: READINESS_SCHEMA_VERSION,
|
|
1902
|
+
observedAt: now.toISOString(),
|
|
1903
|
+
expiresAt: new Date(now.getTime() + ttlMs).toISOString(),
|
|
1904
|
+
providers: byId
|
|
1905
|
+
};
|
|
1906
|
+
})();
|
|
1907
|
+
inventoryCache = { expiresAtMs: now.getTime() + ttlMs, promise };
|
|
1908
|
+
return promise;
|
|
1809
1909
|
}
|
|
1810
1910
|
function installHint(id) {
|
|
1811
1911
|
if (id === "codex") {
|
|
@@ -2170,7 +2270,7 @@ async function resolvePaths(config, scriptDir) {
|
|
|
2170
2270
|
lastBranchFile: join3(base, ".last-branch"),
|
|
2171
2271
|
projectRoot
|
|
2172
2272
|
};
|
|
2173
|
-
const { bindTelemetry } = await import("./recorder-
|
|
2273
|
+
const { bindTelemetry } = await import("./recorder-2BAKPBRA.js");
|
|
2174
2274
|
bindTelemetry({ tasksPath: standalone.prdFile });
|
|
2175
2275
|
return standalone;
|
|
2176
2276
|
}
|
|
@@ -2742,6 +2842,7 @@ export {
|
|
|
2742
2842
|
runnerFor,
|
|
2743
2843
|
ensureHarnessVersion,
|
|
2744
2844
|
probeAgent,
|
|
2845
|
+
probeReadinessInventory,
|
|
2745
2846
|
mergeConfigLayers,
|
|
2746
2847
|
setAgentCliOverrides,
|
|
2747
2848
|
getAgentCliOverrides,
|
|
@@ -2774,4 +2875,4 @@ export {
|
|
|
2774
2875
|
describeRunAgents,
|
|
2775
2876
|
hasExplicitAgentSelection
|
|
2776
2877
|
};
|
|
2777
|
-
//# sourceMappingURL=chunk-
|
|
2878
|
+
//# sourceMappingURL=chunk-QF7VEL3M.js.map
|