@hashicorp/kits 0.1.10 → 0.1.12
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 +14 -1
- package/dist/adapters/github-copilot/installer.js +1 -1
- package/dist/adapters/github-copilot/installer.js.map +1 -1
- package/dist/cli/install.d.ts.map +1 -1
- package/dist/cli/install.js +104 -3
- package/dist/cli/install.js.map +1 -1
- package/dist/cli/upgrade.d.ts.map +1 -1
- package/dist/cli/upgrade.js +476 -1
- package/dist/cli/upgrade.js.map +1 -1
- package/dist/core/hook-input.d.ts +28 -0
- package/dist/core/hook-input.d.ts.map +1 -0
- package/dist/core/hook-input.js +86 -0
- package/dist/core/hook-input.js.map +1 -0
- package/dist/core/hook-instance.d.ts +4 -0
- package/dist/core/hook-instance.d.ts.map +1 -1
- package/dist/core/hook-instance.js +32 -0
- package/dist/core/hook-instance.js.map +1 -1
- package/dist/core/mcp-instance.d.ts +4 -0
- package/dist/core/mcp-instance.d.ts.map +1 -1
- package/dist/core/mcp-instance.js +33 -0
- package/dist/core/mcp-instance.js.map +1 -1
- package/dist/core/types.d.ts +1 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/upgrade-executor.d.ts +6 -1
- package/dist/core/upgrade-executor.d.ts.map +1 -1
- package/dist/core/upgrade-executor.js +107 -7
- package/dist/core/upgrade-executor.js.map +1 -1
- package/dist/lockfile/types.d.ts +2 -0
- package/dist/lockfile/types.d.ts.map +1 -1
- package/dist/lockfile/types.js.map +1 -1
- package/dist/tui/hook-prompt.d.ts +23 -0
- package/dist/tui/hook-prompt.d.ts.map +1 -0
- package/dist/tui/hook-prompt.js +239 -0
- package/dist/tui/hook-prompt.js.map +1 -0
- package/dist/tui/index.d.ts +2 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +3 -1
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/kit-select.d.ts.map +1 -1
- package/dist/tui/kit-select.js +7 -11
- package/dist/tui/kit-select.js.map +1 -1
- package/dist/tui/summary.d.ts.map +1 -1
- package/dist/tui/summary.js +1 -0
- package/dist/tui/summary.js.map +1 -1
- package/dist/tui/uninstall.d.ts.map +1 -1
- package/dist/tui/uninstall.js +1 -2
- package/dist/tui/uninstall.js.map +1 -1
- package/dist/tui/upgrade.d.ts +9 -0
- package/dist/tui/upgrade.d.ts.map +1 -1
- package/dist/tui/upgrade.js +29 -4
- package/dist/tui/upgrade.js.map +1 -1
- package/package.json +1 -1
- package/schemas/hook-program.schema.v1.0.0.json +50 -3
- package/schemas/kits-lock.schema.v1.0.0.json +8 -0
package/README.md
CHANGED
|
@@ -9,6 +9,7 @@ Install AI agent kits into your favorite coding assistants.
|
|
|
9
9
|
- [Supported Harnesses](#supported-harnesses)
|
|
10
10
|
- [Install Scopes (Global vs Project)](#install-scopes-global-vs-project)
|
|
11
11
|
- [Kits Manifest + Lock](#kits-manifest--lock)
|
|
12
|
+
- [Backups](#backups)
|
|
12
13
|
- [Documentation Index](#documentation-index)
|
|
13
14
|
- [CLI Commands (Summary)](#cli-commands-summary)
|
|
14
15
|
- [Configuration and Formats](#configuration-and-formats)
|
|
@@ -73,7 +74,19 @@ Manifest-driven installs use `kits.json` to declare intent and `kits-lock.json`
|
|
|
73
74
|
| Global | `~/.agents/kits.json` | `~/.agents/kits-lock.json` |
|
|
74
75
|
| Project | `.agents/kits.json` | `.agents/kits-lock.json` |
|
|
75
76
|
|
|
76
|
-
The lockfile is the source of truth when its hash matches the manifest. It also records shared instance registries (`mcpInstances`, `hookInstances`).
|
|
77
|
+
The lockfile is the source of truth when its hash matches the manifest. It also records shared instance registries (`mcpInstances`, `hookInstances`) plus input schema hashes used to detect configuration changes during upgrades.
|
|
78
|
+
|
|
79
|
+
If an upgraded MCP server or hook program changes its input schema (MCP: env + headers, hooks: env + args), the upgrade flow prompts to reconfigure those inputs. Non-interactive upgrades fail when new required inputs are introduced without defaults.
|
|
80
|
+
|
|
81
|
+
## Backups
|
|
82
|
+
|
|
83
|
+
The installer creates backups before modifying files:
|
|
84
|
+
|
|
85
|
+
- **Config backups** are stored adjacent to harness config files using a `.backup` suffix.
|
|
86
|
+
- **File-based primitive backups (upgrade)** are stored in the scope backup store so harnesses never ingest them.
|
|
87
|
+
- Global backup store: `~/.agents/backups/<harness>/<primitiveType>/<namespaced>.backup-<timestamp>`
|
|
88
|
+
- Project backup store: `.agents/backups/<harness>/<primitiveType>/<namespaced>.backup-<timestamp>`
|
|
89
|
+
- Backups are preserved until you remove them manually.
|
|
77
90
|
|
|
78
91
|
## Documentation Index
|
|
79
92
|
|
|
@@ -118,7 +118,7 @@ export function transformHookConfig(input) {
|
|
|
118
118
|
}
|
|
119
119
|
const timeoutMs = input.program.runtime.timeout_ms;
|
|
120
120
|
const workingDir = input.program.runtime.working_directory;
|
|
121
|
-
const env = { ...(input.
|
|
121
|
+
const env = { ...(input.binding.env ?? {}) };
|
|
122
122
|
const programArgs = renderHookProgramArguments(input.program, input.binding);
|
|
123
123
|
const command = buildHookCommand(input.targetPath, input.program.runtime, programArgs);
|
|
124
124
|
const hookEntry = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../../src/adapters/github-copilot/installer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../../src/adapters/github-copilot/installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/cli/install.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAY,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/cli/install.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAY,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA0H1G;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAoKD;;GAEG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,aAAa,CAAC,CAi6BxB"}
|
package/dist/cli/install.js
CHANGED
|
@@ -12,8 +12,9 @@ import path from "node:path";
|
|
|
12
12
|
import pc from "picocolors";
|
|
13
13
|
import { fetchSource, scanKits, filterKitsByName as filterDiscoveryKitsByName, getMissingKitNames as getDiscoveryMissingKitNames, NoFetcherError, SourceParseError, } from "../discovery/index.js";
|
|
14
14
|
import { resolvePrimitiveReferences, PrimitivesRegistryLoader, validateCliEnvFlags, mergeEnvDefs, resolveEnvVarsFromConfig, } from "../resolution/index.js";
|
|
15
|
-
import { hashMcpConfig } from "../core/mcp-instance.js";
|
|
16
|
-
import { hashHookProgram } from "../core/hook-instance.js";
|
|
15
|
+
import { hashMcpConfig, hashMcpInputSchema } from "../core/mcp-instance.js";
|
|
16
|
+
import { hashHookProgram, hashHookInputSchema } from "../core/hook-instance.js";
|
|
17
|
+
import { buildHookInputDefaults, buildHookDefaultArgMap, buildHookDefaultEnvMap, } from "../core/hook-input.js";
|
|
17
18
|
import { readLockfile } from "../lockfile/read.js";
|
|
18
19
|
import { writeLockfile } from "../lockfile/write.js";
|
|
19
20
|
import { createEmptyLockfile, } from "../lockfile/types.js";
|
|
@@ -38,7 +39,9 @@ selectScope,
|
|
|
38
39
|
// Summary
|
|
39
40
|
displayDryRunSummary,
|
|
40
41
|
// Env prompts (Phase 6)
|
|
41
|
-
promptForEnvVars, promptForSharedMcpInstances,
|
|
42
|
+
promptForEnvVars, promptForSharedMcpInstances,
|
|
43
|
+
// Hook prompts
|
|
44
|
+
promptForHookInputs, } from "../tui/index.js";
|
|
42
45
|
/**
|
|
43
46
|
* Detect installed harnesses.
|
|
44
47
|
*/
|
|
@@ -518,6 +521,9 @@ export async function runInstall(source, options) {
|
|
|
518
521
|
}
|
|
519
522
|
else {
|
|
520
523
|
displayAvailableKits(availableKits);
|
|
524
|
+
if (isInteractive) {
|
|
525
|
+
clack.outro("");
|
|
526
|
+
}
|
|
521
527
|
}
|
|
522
528
|
return { success: true, exitCode: ExitCode.Success };
|
|
523
529
|
}
|
|
@@ -1290,9 +1296,11 @@ async function buildMcpPrimitiveInfoBySourcePath(resolvedByKit, cliEnvFlags, pro
|
|
|
1290
1296
|
const instanceName = resolveInstanceName(config.name, primitive.instanceName, instanceOverrides, kitName);
|
|
1291
1297
|
const resolution = resolveEnvForConfig(config, cliEnvFlags, promptResults, instanceName);
|
|
1292
1298
|
const configHash = hashMcpConfig(config, resolution.resolved, resolution.resolvedHeaders);
|
|
1299
|
+
const inputHash = hashMcpInputSchema(config);
|
|
1293
1300
|
infoBySourcePath.set(key, {
|
|
1294
1301
|
instanceName,
|
|
1295
1302
|
configHash,
|
|
1303
|
+
inputHash,
|
|
1296
1304
|
config,
|
|
1297
1305
|
resolvedEnv: resolution.resolved,
|
|
1298
1306
|
resolvedHeaders: resolution.resolvedHeaders,
|
|
@@ -1320,9 +1328,11 @@ async function buildHookPrimitiveInfoBySourcePath(resolvedByKit) {
|
|
|
1320
1328
|
const instanceName = resolveHookInstanceName(primitive.hookProgram.name ?? primitive.name, primitive.instanceName, kitName);
|
|
1321
1329
|
const entryContents = await fs.readFile(primitive.hookEntryPath, "utf-8");
|
|
1322
1330
|
const checksum = hashHookProgram(primitive.hookProgram, entryContents);
|
|
1331
|
+
const inputHash = hashHookInputSchema(primitive.hookProgram);
|
|
1323
1332
|
infoBySourcePath.set(key, {
|
|
1324
1333
|
instanceName,
|
|
1325
1334
|
checksum,
|
|
1335
|
+
inputHash,
|
|
1326
1336
|
program: primitive.hookProgram,
|
|
1327
1337
|
binding: primitive.hookBinding,
|
|
1328
1338
|
primitiveName: primitive.name,
|
|
@@ -1669,6 +1679,95 @@ async function executeInstallation(kits, harnesses, registryBySource, options) {
|
|
|
1669
1679
|
applyPromptResultsToResolutions(envResolutions, promptResults);
|
|
1670
1680
|
}
|
|
1671
1681
|
}
|
|
1682
|
+
// Hook input configuration (env + args)
|
|
1683
|
+
const hookInputDefaultsByKey = new Map();
|
|
1684
|
+
const hookPromptRequests = [];
|
|
1685
|
+
const hookMissingRequired = [];
|
|
1686
|
+
for (const [kitName, primitives] of resolvedByKit.entries()) {
|
|
1687
|
+
for (const primitive of primitives) {
|
|
1688
|
+
if (primitive.type !== "hooks")
|
|
1689
|
+
continue;
|
|
1690
|
+
if (!primitive.hookProgram || !primitive.hookBinding)
|
|
1691
|
+
continue;
|
|
1692
|
+
const defaults = buildHookInputDefaults(primitive.hookProgram, primitive.hookBinding);
|
|
1693
|
+
if (defaults.env.length === 0 && defaults.args.length === 0) {
|
|
1694
|
+
continue;
|
|
1695
|
+
}
|
|
1696
|
+
const key = buildPrimitiveKey(kitName, primitive.sourcePath);
|
|
1697
|
+
if (hookInputDefaultsByKey.has(key)) {
|
|
1698
|
+
continue;
|
|
1699
|
+
}
|
|
1700
|
+
hookInputDefaultsByKey.set(key, defaults);
|
|
1701
|
+
hookPromptRequests.push({
|
|
1702
|
+
key,
|
|
1703
|
+
hookName: primitive.hookProgram.name ?? primitive.name,
|
|
1704
|
+
kitName,
|
|
1705
|
+
defaults,
|
|
1706
|
+
});
|
|
1707
|
+
if (defaults.missingRequiredEnv.length > 0) {
|
|
1708
|
+
hookMissingRequired.push({
|
|
1709
|
+
hookName: primitive.hookProgram.name ?? primitive.name,
|
|
1710
|
+
kitName,
|
|
1711
|
+
vars: defaults.missingRequiredEnv,
|
|
1712
|
+
});
|
|
1713
|
+
}
|
|
1714
|
+
}
|
|
1715
|
+
}
|
|
1716
|
+
let hookPromptResults;
|
|
1717
|
+
if (hookPromptRequests.length > 0) {
|
|
1718
|
+
if (!isInteractive && hookMissingRequired.length > 0) {
|
|
1719
|
+
const details = hookMissingRequired
|
|
1720
|
+
.map((entry) => `${entry.hookName} (${entry.kitName}): ${entry.vars.join(", ")}`)
|
|
1721
|
+
.join("; ");
|
|
1722
|
+
const message = `Required hook inputs not provided: ${details}. ` +
|
|
1723
|
+
"Run without -y to configure hook inputs.";
|
|
1724
|
+
return {
|
|
1725
|
+
success: false,
|
|
1726
|
+
exitCode: ExitCode.EnvVarRequired,
|
|
1727
|
+
error: message,
|
|
1728
|
+
};
|
|
1729
|
+
}
|
|
1730
|
+
if (isInteractive) {
|
|
1731
|
+
const promptResults = await promptForHookInputs(hookPromptRequests);
|
|
1732
|
+
if (promptResults.cancelled) {
|
|
1733
|
+
return {
|
|
1734
|
+
success: false,
|
|
1735
|
+
exitCode: ExitCode.UserCancelled,
|
|
1736
|
+
error: "Hook configuration cancelled",
|
|
1737
|
+
};
|
|
1738
|
+
}
|
|
1739
|
+
hookPromptResults = promptResults;
|
|
1740
|
+
}
|
|
1741
|
+
// Apply defaults or user overrides to resolved primitives
|
|
1742
|
+
for (const [kitName, primitives] of resolvedByKit.entries()) {
|
|
1743
|
+
for (const primitive of primitives) {
|
|
1744
|
+
if (primitive.type !== "hooks")
|
|
1745
|
+
continue;
|
|
1746
|
+
if (!primitive.hookProgram || !primitive.hookBinding)
|
|
1747
|
+
continue;
|
|
1748
|
+
const key = buildPrimitiveKey(kitName, primitive.sourcePath);
|
|
1749
|
+
const defaults = hookInputDefaultsByKey.get(key);
|
|
1750
|
+
if (!defaults)
|
|
1751
|
+
continue;
|
|
1752
|
+
const overrides = hookPromptResults?.results.get(key);
|
|
1753
|
+
const resolvedEnv = overrides?.env ?? buildHookDefaultEnvMap(defaults);
|
|
1754
|
+
const resolvedArgs = overrides?.args ?? buildHookDefaultArgMap(defaults);
|
|
1755
|
+
const nextBinding = { ...primitive.hookBinding };
|
|
1756
|
+
if (defaults.env.length > 0) {
|
|
1757
|
+
if (Object.keys(resolvedEnv).length > 0) {
|
|
1758
|
+
nextBinding.env = resolvedEnv;
|
|
1759
|
+
}
|
|
1760
|
+
else {
|
|
1761
|
+
delete nextBinding.env;
|
|
1762
|
+
}
|
|
1763
|
+
}
|
|
1764
|
+
if (defaults.args.length > 0) {
|
|
1765
|
+
nextBinding.args = resolvedArgs;
|
|
1766
|
+
}
|
|
1767
|
+
primitive.hookBinding = nextBinding;
|
|
1768
|
+
}
|
|
1769
|
+
}
|
|
1770
|
+
}
|
|
1672
1771
|
if (lockfileSource) {
|
|
1673
1772
|
lockfile.source = lockfileSource;
|
|
1674
1773
|
}
|
|
@@ -2192,6 +2291,7 @@ async function executeInstallation(kits, harnesses, registryBySource, options) {
|
|
|
2192
2291
|
instanceName: assignment.instanceName,
|
|
2193
2292
|
config: info.config,
|
|
2194
2293
|
configHash: assignment.configHash,
|
|
2294
|
+
inputHash: info.inputHash,
|
|
2195
2295
|
version: info.version,
|
|
2196
2296
|
usedBy: [kit.installAs],
|
|
2197
2297
|
sourcePrimitive: info.primitiveName,
|
|
@@ -2228,6 +2328,7 @@ async function executeInstallation(kits, harnesses, registryBySource, options) {
|
|
|
2228
2328
|
instanceName: assignment.instanceRef,
|
|
2229
2329
|
programPath,
|
|
2230
2330
|
checksum: assignment.checksum,
|
|
2331
|
+
inputHash: info.inputHash,
|
|
2231
2332
|
version: info.version,
|
|
2232
2333
|
usedBy: [kit.installAs],
|
|
2233
2334
|
};
|