@indy2kro/agentenv 1.1.3 → 1.2.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/adapters/base.d.ts +2 -0
- package/dist/adapters/base.d.ts.map +1 -1
- package/dist/adapters/base.js.map +1 -1
- package/dist/adapters/cline.d.ts.map +1 -1
- package/dist/adapters/cline.js +1 -0
- package/dist/adapters/cline.js.map +1 -1
- package/dist/adapters/codex.d.ts.map +1 -1
- package/dist/adapters/codex.js +9 -2
- package/dist/adapters/codex.js.map +1 -1
- package/dist/adapters/copilot.d.ts.map +1 -1
- package/dist/adapters/copilot.js +5 -1
- package/dist/adapters/copilot.js.map +1 -1
- package/dist/adapters/gemini.d.ts.map +1 -1
- package/dist/adapters/gemini.js +5 -0
- package/dist/adapters/gemini.js.map +1 -1
- package/dist/adapters/rtk-delegation.d.ts +15 -0
- package/dist/adapters/rtk-delegation.d.ts.map +1 -1
- package/dist/adapters/rtk-delegation.js +38 -3
- package/dist/adapters/rtk-delegation.js.map +1 -1
- package/dist/adapters/vibe.d.ts.map +1 -1
- package/dist/adapters/vibe.js +2 -0
- package/dist/adapters/vibe.js.map +1 -1
- package/dist/adapters/windsurf.d.ts.map +1 -1
- package/dist/adapters/windsurf.js +1 -0
- package/dist/adapters/windsurf.js.map +1 -1
- package/dist/cli/exit.d.ts +7 -0
- package/dist/cli/exit.d.ts.map +1 -1
- package/dist/cli/exit.js +9 -0
- package/dist/cli/exit.js.map +1 -1
- package/dist/commands/agent-files.d.ts +14 -0
- package/dist/commands/agent-files.d.ts.map +1 -0
- package/dist/commands/agent-files.js +58 -0
- package/dist/commands/agent-files.js.map +1 -0
- package/dist/commands/apply.d.ts +37 -1
- package/dist/commands/apply.d.ts.map +1 -1
- package/dist/commands/apply.js +117 -38
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/config-edit.d.ts +9 -1
- package/dist/commands/config-edit.d.ts.map +1 -1
- package/dist/commands/config-edit.js +53 -12
- package/dist/commands/config-edit.js.map +1 -1
- package/dist/commands/doctor.d.ts +9 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +123 -8
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/setup.d.ts +7 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +53 -15
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/status.d.ts +8 -7
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +39 -47
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/uninstall.d.ts +8 -0
- package/dist/commands/uninstall.d.ts.map +1 -1
- package/dist/commands/uninstall.js +42 -1
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.d.ts +29 -2
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +169 -12
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/wizard.d.ts.map +1 -1
- package/dist/commands/wizard.js +20 -11
- package/dist/commands/wizard.js.map +1 -1
- package/dist/config/schema.d.ts +0 -1
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +30 -22
- package/dist/config/schema.js.map +1 -1
- package/dist/config/scopes.d.ts +8 -0
- package/dist/config/scopes.d.ts.map +1 -1
- package/dist/config/scopes.js +15 -0
- package/dist/config/scopes.js.map +1 -1
- package/dist/generate/agentsmd.d.ts.map +1 -1
- package/dist/generate/agentsmd.js +45 -10
- package/dist/generate/agentsmd.js.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/base.d.ts +0 -1
- package/dist/integrations/base.d.ts.map +1 -1
- package/dist/integrations/superpowers.d.ts +12 -4
- package/dist/integrations/superpowers.d.ts.map +1 -1
- package/dist/integrations/superpowers.js +18 -34
- package/dist/integrations/superpowers.js.map +1 -1
- package/dist/shell/shell-fix-state.d.ts.map +1 -1
- package/dist/shell/shell-fix-state.js +10 -0
- package/dist/shell/shell-fix-state.js.map +1 -1
- package/dist/toolchain/gh.d.ts +7 -0
- package/dist/toolchain/gh.d.ts.map +1 -1
- package/dist/toolchain/gh.js +13 -1
- package/dist/toolchain/gh.js.map +1 -1
- package/dist/toolchain/mise.d.ts +39 -1
- package/dist/toolchain/mise.d.ts.map +1 -1
- package/dist/toolchain/mise.js +114 -23
- package/dist/toolchain/mise.js.map +1 -1
- package/dist/toolchain/rtk.d.ts +7 -0
- package/dist/toolchain/rtk.d.ts.map +1 -1
- package/dist/toolchain/rtk.js +9 -0
- package/dist/toolchain/rtk.js.map +1 -1
- package/dist/ui/output.d.ts.map +1 -1
- package/dist/ui/output.js +7 -3
- package/dist/ui/output.js.map +1 -1
- package/dist/wizard/build.d.ts +7 -1
- package/dist/wizard/build.d.ts.map +1 -1
- package/dist/wizard/build.js +11 -6
- package/dist/wizard/build.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Superpowers Integration Adapter
|
|
3
|
-
* Installs github:obra/superpowers for Claude Code only, via
|
|
4
|
-
*
|
|
5
|
-
* documented, non-interactive
|
|
3
|
+
* Installs Superpowers (github:obra/superpowers) for Claude Code only, via
|
|
4
|
+
* `claude plugin install superpowers@claude-plugins-official` — the only agent
|
|
5
|
+
* with a documented, non-interactive installer. The configured `ref` is
|
|
6
|
+
* recorded but not enforced: the official marketplace cannot pin one. See
|
|
6
7
|
* docs/research/superpowers-install-mechanisms.md for the other three
|
|
7
8
|
* agents, which always report `unsupported` and never execute a command.
|
|
8
9
|
*/
|
|
@@ -13,7 +14,14 @@ import * as path from 'path';
|
|
|
13
14
|
import { needsWindowsShell, resolveBinary } from '../adapters/detect.js';
|
|
14
15
|
import { AGENT_KEYS, resolveIntegrationScope } from '../config/schema.js';
|
|
15
16
|
export const SUPERPOWERS_MARKETPLACE_REPO = 'obra/superpowers-marketplace';
|
|
16
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Superpowers from Claude Code's built-in official marketplace: a plain
|
|
19
|
+
* `claude plugin install` with no `marketplace add`. The third-party
|
|
20
|
+
* obra/superpowers-marketplace repo this used to add (at `#<ref>`) has no tag
|
|
21
|
+
* or branch for the plugin's ref, so that command failed with "Remote branch
|
|
22
|
+
* v6.3.0 not found". The official marketplace cannot pin a ref.
|
|
23
|
+
*/
|
|
24
|
+
export const SUPERPOWERS_PLUGIN_ID = 'superpowers@claude-plugins-official';
|
|
17
25
|
const MANUAL_INSTALL_HINTS = {
|
|
18
26
|
codex_cli: 'No non-interactive install is documented for Codex CLI. In an interactive Codex session, run /plugins, search "superpowers", and select Install Plugin.',
|
|
19
27
|
copilot: 'Upstream documents `copilot plugin marketplace add obra/superpowers-marketplace` then `copilot plugin install superpowers@superpowers-marketplace`, but no ref-pin mechanism is documented, so agentenv does not run this automatically. See docs/research/superpowers-install-mechanisms.md.',
|
|
@@ -92,7 +100,7 @@ export class SuperpowersAdapter {
|
|
|
92
100
|
this.fsImpl.mkdirSync(path.posix.dirname(file), { recursive: true });
|
|
93
101
|
this.fsImpl.writeFileSync(file, JSON.stringify(marker, null, 2));
|
|
94
102
|
}
|
|
95
|
-
detectClaudeCode(baseDir
|
|
103
|
+
detectClaudeCode(baseDir) {
|
|
96
104
|
const list = this.runClaudeCli(['plugin', 'list'], baseDir);
|
|
97
105
|
if (!list.success && list.exitCode === null) {
|
|
98
106
|
// Spawn failure with no exit code means the `claude` binary itself is
|
|
@@ -113,18 +121,10 @@ export class SuperpowersAdapter {
|
|
|
113
121
|
if (!installed)
|
|
114
122
|
return { agent: 'claude_code', state: 'missing' };
|
|
115
123
|
const marker = this.readMarker(baseDir);
|
|
116
|
-
const requestedRef = config?.ref;
|
|
117
|
-
if (marker && requestedRef && marker.ref !== requestedRef) {
|
|
118
|
-
return {
|
|
119
|
-
agent: 'claude_code',
|
|
120
|
-
state: 'drifted',
|
|
121
|
-
detail: `installed at ${marker.ref}, config requests ${requestedRef}`,
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
124
|
return {
|
|
125
125
|
agent: 'claude_code',
|
|
126
126
|
state: 'installed',
|
|
127
|
-
detail: marker ?
|
|
127
|
+
detail: marker ? 'installed by agentenv' : 'installed outside agentenv',
|
|
128
128
|
};
|
|
129
129
|
}
|
|
130
130
|
async detect(baseDir, config) {
|
|
@@ -135,7 +135,6 @@ export class SuperpowersAdapter {
|
|
|
135
135
|
const result = {
|
|
136
136
|
name: this.getName(),
|
|
137
137
|
source: config?.source,
|
|
138
|
-
ref: config?.ref,
|
|
139
138
|
scope,
|
|
140
139
|
agents: [],
|
|
141
140
|
changedFiles: [],
|
|
@@ -148,7 +147,7 @@ export class SuperpowersAdapter {
|
|
|
148
147
|
result.agents.push({ agent, state: 'unsupported', detail: MANUAL_INSTALL_HINTS[agent] });
|
|
149
148
|
continue;
|
|
150
149
|
}
|
|
151
|
-
result.agents.push(this.detectClaudeCode(baseDir
|
|
150
|
+
result.agents.push(this.detectClaudeCode(baseDir));
|
|
152
151
|
}
|
|
153
152
|
return result;
|
|
154
153
|
}
|
|
@@ -159,9 +158,8 @@ export class SuperpowersAdapter {
|
|
|
159
158
|
const detected = await this.detect(baseDir, config);
|
|
160
159
|
if (!this.isEnabled(config))
|
|
161
160
|
return detected;
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
detected.errors.push('integrations.superpowers.source and .ref must be set to apply');
|
|
161
|
+
if (!config?.source) {
|
|
162
|
+
detected.errors.push('integrations.superpowers.source must be set to apply');
|
|
165
163
|
return detected;
|
|
166
164
|
}
|
|
167
165
|
for (const agentState of detected.agents) {
|
|
@@ -173,19 +171,6 @@ export class SuperpowersAdapter {
|
|
|
173
171
|
}
|
|
174
172
|
if (agentState.state === 'installed')
|
|
175
173
|
continue;
|
|
176
|
-
const wasDrifted = agentState.state === 'drifted';
|
|
177
|
-
const marketplaceArgs = [
|
|
178
|
-
'plugin',
|
|
179
|
-
'marketplace',
|
|
180
|
-
'add',
|
|
181
|
-
`${SUPERPOWERS_MARKETPLACE_REPO}#${ref}`,
|
|
182
|
-
];
|
|
183
|
-
const marketplaceRun = this.runClaudeCli(marketplaceArgs, baseDir);
|
|
184
|
-
detected.nativeCommands.push(`claude ${marketplaceArgs.join(' ')}`);
|
|
185
|
-
if (!marketplaceRun.success) {
|
|
186
|
-
detected.errors.push(`claude plugin marketplace add failed: ${marketplaceRun.stderr || marketplaceRun.stdout}`);
|
|
187
|
-
continue;
|
|
188
|
-
}
|
|
189
174
|
const installArgs = ['plugin', 'install', SUPERPOWERS_PLUGIN_ID, '--scope', detected.scope];
|
|
190
175
|
const installRun = this.runClaudeCli(installArgs, baseDir);
|
|
191
176
|
detected.nativeCommands.push(`claude ${installArgs.join(' ')}`);
|
|
@@ -194,14 +179,13 @@ export class SuperpowersAdapter {
|
|
|
194
179
|
continue;
|
|
195
180
|
}
|
|
196
181
|
const marker = {
|
|
197
|
-
ref,
|
|
198
182
|
scope: detected.scope,
|
|
199
183
|
installedAt: new Date().toISOString(),
|
|
200
184
|
};
|
|
201
185
|
this.writeMarker(baseDir, marker);
|
|
202
186
|
detected.changedFiles.push(this.markerPath(baseDir));
|
|
203
187
|
agentState.state = 'installed';
|
|
204
|
-
agentState.detail =
|
|
188
|
+
agentState.detail = 'installed from the official marketplace';
|
|
205
189
|
}
|
|
206
190
|
if (config.allow_external_requests !== true) {
|
|
207
191
|
detected.warnings.push('external requests disabled: agentenv never installs the optional Superpowers visual companion');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"superpowers.js","sourceRoot":"","sources":["../../src/integrations/superpowers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"superpowers.js","sourceRoot":"","sources":["../../src/integrations/superpowers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-fix-state.d.ts","sourceRoot":"","sources":["../../src/shell/shell-fix-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,oFAAoF;AACpF,MAAM,WAAW,aAAa;IAC5B,8GAA8G;IAC9G,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,iBAAiB,CAAC,SAAS,GAAE,MAA4B,GAAG,aAAa,GAAG,IAAI,CAS/F;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,SAAS,GAAE,MAA4B,GACtC,IAAI,
|
|
1
|
+
{"version":3,"file":"shell-fix-state.d.ts","sourceRoot":"","sources":["../../src/shell/shell-fix-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,oFAAoF;AACpF,MAAM,WAAW,aAAa;IAC5B,8GAA8G;IAC9G,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,iBAAiB,CAAC,SAAS,GAAE,MAA4B,GAAG,aAAa,GAAG,IAAI,CAS/F;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,SAAS,GAAE,MAA4B,GACtC,IAAI,CAYN;AAED,wBAAgB,kBAAkB,CAAC,SAAS,GAAE,MAA4B,GAAG,IAAI,CAEhF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,aAAa,GAAG,IAAI,EAC9B,OAAO,EAAE,kBAAkB,EAAE,EAC7B,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAAiC,GACrC,aAAa,CAwBf"}
|
|
@@ -31,6 +31,16 @@ export function readShellFixState(statePath = shellFixStatePath()) {
|
|
|
31
31
|
}
|
|
32
32
|
export function writeShellFixState(state, statePath = shellFixStatePath()) {
|
|
33
33
|
fs.mkdirSync(path.dirname(statePath), { recursive: true });
|
|
34
|
+
// An existing manifest we can't parse is the only record revert could have
|
|
35
|
+
// used; keep it next to the new one rather than silently replacing it.
|
|
36
|
+
if (fs.existsSync(statePath) && readShellFixState(statePath) === null) {
|
|
37
|
+
try {
|
|
38
|
+
fs.copyFileSync(statePath, `${statePath}.corrupt`);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// Advisory only — never block recording the new state.
|
|
42
|
+
}
|
|
43
|
+
}
|
|
34
44
|
writeFileWithRetry(statePath, `${JSON.stringify(state, null, 2)}\n`);
|
|
35
45
|
}
|
|
36
46
|
export function clearShellFixState(statePath = shellFixStatePath()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-fix-state.js","sourceRoot":"","sources":["../../src/shell/shell-fix-state.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shell-fix-state.js","sourceRoot":"","sources":["../../src/shell/shell-fix-state.ts"],"names":[],"mappings":"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"}
|
package/dist/toolchain/gh.d.ts
CHANGED
|
@@ -7,6 +7,13 @@ export type GhAuthStatus = 'authenticated' | 'unauthenticated' | 'unknown' | 'no
|
|
|
7
7
|
export interface GhAuthProbeResult {
|
|
8
8
|
status: GhAuthStatus;
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* The host `gh auth status` is asked about: `GH_HOST` (what gh itself honors
|
|
12
|
+
* for GitHub Enterprise) when it is a plain hostname, otherwise github.com.
|
|
13
|
+
* Anything else — a URL, a flag-looking value — falls back rather than reaching
|
|
14
|
+
* gh's command line.
|
|
15
|
+
*/
|
|
16
|
+
export declare function ghAuthHostname(env?: NodeJS.ProcessEnv): string;
|
|
10
17
|
/** Injectable so tests never spawn a real `gh` binary. */
|
|
11
18
|
export type GhAuthProbeFn = () => GhAuthProbeResult;
|
|
12
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gh.d.ts","sourceRoot":"","sources":["../../src/toolchain/gh.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,iBAAiB,GAAG,SAAS,GAAG,eAAe,CAAC;AAE7F,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,0DAA0D;AAC1D,MAAM,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC;AAEpD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CASxF;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"gh.d.ts","sourceRoot":"","sources":["../../src/toolchain/gh.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,iBAAiB,GAAG,SAAS,GAAG,eAAe,CAAC;AAE7F,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,YAAY,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAK3E;AAED,0DAA0D;AAC1D,MAAM,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC;AAEpD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CASxF;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAkBhC,CAAC;AAEF,oEAAoE;AACpE,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,aAAa,CAEvE"}
|
package/dist/toolchain/gh.js
CHANGED
|
@@ -5,6 +5,18 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import * as child_process from 'child_process';
|
|
7
7
|
import { resolveBinary } from '../adapters/detect.js';
|
|
8
|
+
/**
|
|
9
|
+
* The host `gh auth status` is asked about: `GH_HOST` (what gh itself honors
|
|
10
|
+
* for GitHub Enterprise) when it is a plain hostname, otherwise github.com.
|
|
11
|
+
* Anything else — a URL, a flag-looking value — falls back rather than reaching
|
|
12
|
+
* gh's command line.
|
|
13
|
+
*/
|
|
14
|
+
export function ghAuthHostname(env = process.env) {
|
|
15
|
+
const host = env.GH_HOST?.trim();
|
|
16
|
+
return host && /^[A-Za-z0-9]([A-Za-z0-9.-]*[A-Za-z0-9])?(:\d+)?$/.test(host)
|
|
17
|
+
? host
|
|
18
|
+
: 'github.com';
|
|
19
|
+
}
|
|
8
20
|
/**
|
|
9
21
|
* Classify `gh auth status` output. Legacy: exit-code-only split where any
|
|
10
22
|
* non-zero meant "unauthenticated". Refined: exit 1 with network-ish stderr
|
|
@@ -34,7 +46,7 @@ export const defaultGhAuthProbe = () => {
|
|
|
34
46
|
if (!ghPath)
|
|
35
47
|
return { status: 'not_installed' };
|
|
36
48
|
try {
|
|
37
|
-
const result = child_process.spawnSync(ghPath, ['auth', 'status', '--hostname',
|
|
49
|
+
const result = child_process.spawnSync(ghPath, ['auth', 'status', '--hostname', ghAuthHostname()], {
|
|
38
50
|
encoding: 'utf-8',
|
|
39
51
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
40
52
|
timeout: 15000,
|
package/dist/toolchain/gh.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gh.js","sourceRoot":"","sources":["../../src/toolchain/gh.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,aAAa,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"gh.js","sourceRoot":"","sources":["../../src/toolchain/gh.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,aAAa,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAQtD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,MAAyB,OAAO,CAAC,GAAG;IACjE,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;IACjC,OAAO,IAAI,IAAI,kDAAkD,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1E,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,YAAY,CAAC;AACnB,CAAC;AAKD;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAqB,EAAE,MAAc;IACxE,IAAI,MAAM,KAAK,CAAC;QAAE,OAAO,eAAe,CAAC;IACzC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,MAAM,UAAU,GACd,wGAAwG,CAAC;QAC3G,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO,SAAS,CAAC;QAC9C,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAkB,GAAG,EAAE;IACpD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CACpC,MAAM,EACN,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,EAClD;YACE,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,OAAO,EAAE,KAAK;SACf,CACF,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC,CAAC;AAEF,oEAAoE;AACpE,MAAM,UAAU,kBAAkB,CAAC,KAAqB;IACtD,OAAO,KAAK,IAAI,kBAAkB,CAAC;AACrC,CAAC"}
|
package/dist/toolchain/mise.d.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Mise Toolchain Integration
|
|
3
3
|
* Handles mise.toml generation and mise commands
|
|
4
4
|
*/
|
|
5
|
+
import * as child_process from 'child_process';
|
|
5
6
|
import { AgentenvConfig } from '../config/schema.js';
|
|
6
7
|
import { FALLBACK_REQUIRED_TOOLS, isPlatformUnsupported, requiresFallback } from './fallbacks.js';
|
|
7
8
|
export declare const MISE_TOOL_NAMES: Record<string, string>;
|
|
@@ -81,6 +82,36 @@ export declare function miseGlobalConfigPath(): string;
|
|
|
81
82
|
export declare function pathContainsDir(pathVar: string, dir: string): boolean;
|
|
82
83
|
/** Whether the shims dir (~/.local/bin) is already resolvable from PATH. */
|
|
83
84
|
export declare function shimsDirOnPath(): boolean;
|
|
85
|
+
export interface OutdatedTool {
|
|
86
|
+
tool: string;
|
|
87
|
+
current: string;
|
|
88
|
+
latest: string;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Parse `mise outdated --json` (an object keyed by tool name with `current` and
|
|
92
|
+
* `latest` versions) into rows. Empty output means nothing is outdated; output
|
|
93
|
+
* that isn't that object returns null, meaning "couldn't tell".
|
|
94
|
+
*/
|
|
95
|
+
export declare function parseOutdated(raw: string): OutdatedTool[] | null;
|
|
96
|
+
/** Ask mise which installed tools have a newer version; null when mise couldn't answer. */
|
|
97
|
+
export declare function getOutdatedTools(cwd: string): OutdatedTool[] | null;
|
|
98
|
+
export interface ShadowedShim {
|
|
99
|
+
binary: string;
|
|
100
|
+
/** The executable that wins over the mise shim. */
|
|
101
|
+
shadowedBy: string;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Binaries whose first hit on PATH sits *before* the mise shims dir, i.e. the
|
|
105
|
+
* agent runs another copy (WinGet, a bundled `rg.exe`, …) instead of the
|
|
106
|
+
* version agentenv installed. Returns nothing when the shims dir isn't on PATH
|
|
107
|
+
* at all; shimsDirOnPath() reports that separately.
|
|
108
|
+
*/
|
|
109
|
+
export declare function findShadowedShims(binaries: string[], opts: {
|
|
110
|
+
pathEnv: string;
|
|
111
|
+
shimsDir: string;
|
|
112
|
+
platform?: NodeJS.Platform;
|
|
113
|
+
exists?: (file: string) => boolean;
|
|
114
|
+
}): ShadowedShim[];
|
|
84
115
|
/** Runs a PowerShell script with extra env vars; injectable so tests never touch the registry. */
|
|
85
116
|
export type PowerShellRunner = (script: string, env: Record<string, string>) => {
|
|
86
117
|
status: number | null;
|
|
@@ -162,12 +193,19 @@ export declare function runMiseSelfUpdate(): Promise<{
|
|
|
162
193
|
* Bump the given `mise up` targets to their latest versions within the current
|
|
163
194
|
* config constraints (pins stay put because pinned tools are not passed in).
|
|
164
195
|
*/
|
|
165
|
-
export declare function runMiseUpgrade(tools: string[], cwd: string): Promise<{
|
|
196
|
+
export declare function runMiseUpgrade(tools: string[], cwd: string, onOutput?: (chunk: string, stream: 'stdout' | 'stderr') => void, spawnFn?: typeof child_process.spawn): Promise<{
|
|
166
197
|
success: boolean;
|
|
167
198
|
stdout: string;
|
|
168
199
|
stderr: string;
|
|
169
200
|
exitCode: number | null;
|
|
170
201
|
}>;
|
|
202
|
+
/**
|
|
203
|
+
* The tools mise reported it could not install, one `spec — reason` line each,
|
|
204
|
+
* pulled from its `ERROR Failed to install <spec>: <reason>` lines. A failed
|
|
205
|
+
* `mise up` otherwise buries the one tool that broke under progress bars for
|
|
206
|
+
* the ones that worked.
|
|
207
|
+
*/
|
|
208
|
+
export declare function summarizeMiseFailures(output: string): string[];
|
|
171
209
|
/**
|
|
172
210
|
* Uninstall the given tools from the mise store. Each tool name is passed
|
|
173
211
|
* version-less (no `@version`) together with `--all`, removing every installed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mise.d.ts","sourceRoot":"","sources":["../../src/toolchain/mise.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"mise.d.ts","sourceRoot":"","sources":["../../src/toolchain/mise.ts"],"names":[],"mappings":"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"}
|
package/dist/toolchain/mise.js
CHANGED
|
@@ -105,7 +105,7 @@ export function generateMiseToml(config, customTools = []) {
|
|
|
105
105
|
continue;
|
|
106
106
|
}
|
|
107
107
|
const miseName = MISE_TOOL_NAMES[toolKey] || toolKey;
|
|
108
|
-
const version =
|
|
108
|
+
const version = config.tool_versions?.[toolKey] || PINNED_TOOL_VERSIONS[miseName] || 'latest';
|
|
109
109
|
lines.push(`${miseName} = "${version}"`);
|
|
110
110
|
}
|
|
111
111
|
// Add custom tools with mise_source
|
|
@@ -242,6 +242,65 @@ export function pathContainsDir(pathVar, dir) {
|
|
|
242
242
|
export function shimsDirOnPath() {
|
|
243
243
|
return pathContainsDir(process.env.PATH ?? '', shimsDir());
|
|
244
244
|
}
|
|
245
|
+
/**
|
|
246
|
+
* Parse `mise outdated --json` (an object keyed by tool name with `current` and
|
|
247
|
+
* `latest` versions) into rows. Empty output means nothing is outdated; output
|
|
248
|
+
* that isn't that object returns null, meaning "couldn't tell".
|
|
249
|
+
*/
|
|
250
|
+
export function parseOutdated(raw) {
|
|
251
|
+
let parsed;
|
|
252
|
+
try {
|
|
253
|
+
parsed = JSON.parse(raw);
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed))
|
|
259
|
+
return null;
|
|
260
|
+
const rows = [];
|
|
261
|
+
for (const [tool, entry] of Object.entries(parsed)) {
|
|
262
|
+
const { current, latest } = (entry ?? {});
|
|
263
|
+
if (typeof current === 'string' && typeof latest === 'string') {
|
|
264
|
+
rows.push({ tool, current, latest });
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return rows;
|
|
268
|
+
}
|
|
269
|
+
/** Ask mise which installed tools have a newer version; null when mise couldn't answer. */
|
|
270
|
+
export function getOutdatedTools(cwd) {
|
|
271
|
+
const result = runMiseCaptured(['outdated', '--json'], { cwd, timeoutMs: 60000 });
|
|
272
|
+
return result.status === 0 ? parseOutdated(result.stdout) : null;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Binaries whose first hit on PATH sits *before* the mise shims dir, i.e. the
|
|
276
|
+
* agent runs another copy (WinGet, a bundled `rg.exe`, …) instead of the
|
|
277
|
+
* version agentenv installed. Returns nothing when the shims dir isn't on PATH
|
|
278
|
+
* at all; shimsDirOnPath() reports that separately.
|
|
279
|
+
*/
|
|
280
|
+
export function findShadowedShims(binaries, opts) {
|
|
281
|
+
const win = (opts.platform ?? process.platform) === 'win32';
|
|
282
|
+
const pathApi = win ? path.win32 : path.posix;
|
|
283
|
+
const exists = opts.exists ?? fs.existsSync;
|
|
284
|
+
const norm = (dir) => {
|
|
285
|
+
const resolved = pathApi.resolve(dir);
|
|
286
|
+
return win ? resolved.toLowerCase() : resolved;
|
|
287
|
+
};
|
|
288
|
+
const entries = opts.pathEnv.split(win ? ';' : ':').filter((entry) => entry.trim() !== '');
|
|
289
|
+
const shimsIndex = entries.findIndex((entry) => norm(entry) === norm(opts.shimsDir));
|
|
290
|
+
if (shimsIndex < 0)
|
|
291
|
+
return [];
|
|
292
|
+
const before = entries.slice(0, shimsIndex);
|
|
293
|
+
const extensions = win ? ['.exe', '.cmd', '.bat', '.com'] : [''];
|
|
294
|
+
const shadowed = [];
|
|
295
|
+
for (const binary of binaries) {
|
|
296
|
+
const hit = before
|
|
297
|
+
.flatMap((dir) => extensions.map((ext) => pathApi.join(dir, `${binary}${ext}`)))
|
|
298
|
+
.find((candidate) => exists(candidate));
|
|
299
|
+
if (hit)
|
|
300
|
+
shadowed.push({ binary, shadowedBy: hit });
|
|
301
|
+
}
|
|
302
|
+
return shadowed;
|
|
303
|
+
}
|
|
245
304
|
const defaultPowerShellRunner = (script, env) => {
|
|
246
305
|
const result = child_process.spawnSync('powershell.exe', ['-NoProfile', '-NonInteractive', '-Command', script], { encoding: 'utf-8', env: { ...process.env, ...env }, timeout: 15000, windowsHide: true });
|
|
247
306
|
return { status: result.status, stdout: result.stdout ?? '', stderr: result.stderr ?? '' };
|
|
@@ -473,7 +532,7 @@ export function getToolsToInstall(config) {
|
|
|
473
532
|
result.push({
|
|
474
533
|
name: key,
|
|
475
534
|
miseName,
|
|
476
|
-
version:
|
|
535
|
+
version: config.tool_versions?.[key] || PINNED_TOOL_VERSIONS[miseName] || 'latest',
|
|
477
536
|
tier: TOOL_TIERS[key] || 3,
|
|
478
537
|
});
|
|
479
538
|
}
|
|
@@ -518,29 +577,61 @@ export async function runMiseSelfUpdate() {
|
|
|
518
577
|
* Bump the given `mise up` targets to their latest versions within the current
|
|
519
578
|
* config constraints (pins stay put because pinned tools are not passed in).
|
|
520
579
|
*/
|
|
521
|
-
export async function runMiseUpgrade(tools, cwd) {
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
580
|
+
export async function runMiseUpgrade(tools, cwd, onOutput, spawnFn = child_process.spawn) {
|
|
581
|
+
// Async spawn with no fixed time limit, like runMiseInstall: upgrading a
|
|
582
|
+
// full tool list routinely takes minutes, a sync call froze the spinner for
|
|
583
|
+
// all of it, and killing a slow-but-working upgrade at a deadline reported
|
|
584
|
+
// an empty "failed (exit null)".
|
|
585
|
+
return new Promise((resolve) => {
|
|
586
|
+
let child;
|
|
587
|
+
try {
|
|
588
|
+
child = spawnFn('mise', ['up', ...tools], {
|
|
589
|
+
cwd,
|
|
590
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
591
|
+
});
|
|
592
|
+
}
|
|
593
|
+
catch (err) {
|
|
594
|
+
resolve({
|
|
595
|
+
success: false,
|
|
596
|
+
stdout: '',
|
|
597
|
+
stderr: err instanceof Error ? err.message : String(err),
|
|
598
|
+
exitCode: null,
|
|
599
|
+
});
|
|
600
|
+
return;
|
|
601
|
+
}
|
|
602
|
+
let stdout = '';
|
|
603
|
+
let stderr = '';
|
|
604
|
+
child.stdout?.setEncoding('utf-8').on('data', (chunk) => {
|
|
605
|
+
stdout += chunk;
|
|
606
|
+
onOutput?.(chunk, 'stdout');
|
|
528
607
|
});
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
608
|
+
child.stderr?.setEncoding('utf-8').on('data', (chunk) => {
|
|
609
|
+
stderr += chunk;
|
|
610
|
+
onOutput?.(chunk, 'stderr');
|
|
611
|
+
});
|
|
612
|
+
child.on('error', (err) => {
|
|
613
|
+
resolve({ success: false, stdout, stderr: stderr || err.message, exitCode: null });
|
|
614
|
+
});
|
|
615
|
+
child.on('close', (code) => {
|
|
616
|
+
resolve({ success: code === 0, stdout, stderr, exitCode: code });
|
|
617
|
+
});
|
|
618
|
+
});
|
|
619
|
+
}
|
|
620
|
+
const ANSI_ESCAPE = new RegExp(`${String.fromCharCode(27)}\\[[0-9;]*[A-Za-z]`, 'g');
|
|
621
|
+
/**
|
|
622
|
+
* The tools mise reported it could not install, one `spec — reason` line each,
|
|
623
|
+
* pulled from its `ERROR Failed to install <spec>: <reason>` lines. A failed
|
|
624
|
+
* `mise up` otherwise buries the one tool that broke under progress bars for
|
|
625
|
+
* the ones that worked.
|
|
626
|
+
*/
|
|
627
|
+
export function summarizeMiseFailures(output) {
|
|
628
|
+
const failures = [];
|
|
629
|
+
for (const line of output.replace(ANSI_ESCAPE, '').split(/\r?\n/)) {
|
|
630
|
+
const match = /ERROR\s+Failed to install\s+(\S+?):\s+(.+)$/.exec(line);
|
|
631
|
+
if (match)
|
|
632
|
+
failures.push(`${match[1]} — ${match[2].trim()}`);
|
|
543
633
|
}
|
|
634
|
+
return failures;
|
|
544
635
|
}
|
|
545
636
|
/**
|
|
546
637
|
* Uninstall the given tools from the mise store. Each tool name is passed
|