@hashicorp/kits 0.1.11 → 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 +101 -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/upgrade.d.ts +9 -0
- package/dist/tui/upgrade.d.ts.map +1 -1
- package/dist/tui/upgrade.js +29 -0
- 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
|
*/
|
|
@@ -1293,9 +1296,11 @@ async function buildMcpPrimitiveInfoBySourcePath(resolvedByKit, cliEnvFlags, pro
|
|
|
1293
1296
|
const instanceName = resolveInstanceName(config.name, primitive.instanceName, instanceOverrides, kitName);
|
|
1294
1297
|
const resolution = resolveEnvForConfig(config, cliEnvFlags, promptResults, instanceName);
|
|
1295
1298
|
const configHash = hashMcpConfig(config, resolution.resolved, resolution.resolvedHeaders);
|
|
1299
|
+
const inputHash = hashMcpInputSchema(config);
|
|
1296
1300
|
infoBySourcePath.set(key, {
|
|
1297
1301
|
instanceName,
|
|
1298
1302
|
configHash,
|
|
1303
|
+
inputHash,
|
|
1299
1304
|
config,
|
|
1300
1305
|
resolvedEnv: resolution.resolved,
|
|
1301
1306
|
resolvedHeaders: resolution.resolvedHeaders,
|
|
@@ -1323,9 +1328,11 @@ async function buildHookPrimitiveInfoBySourcePath(resolvedByKit) {
|
|
|
1323
1328
|
const instanceName = resolveHookInstanceName(primitive.hookProgram.name ?? primitive.name, primitive.instanceName, kitName);
|
|
1324
1329
|
const entryContents = await fs.readFile(primitive.hookEntryPath, "utf-8");
|
|
1325
1330
|
const checksum = hashHookProgram(primitive.hookProgram, entryContents);
|
|
1331
|
+
const inputHash = hashHookInputSchema(primitive.hookProgram);
|
|
1326
1332
|
infoBySourcePath.set(key, {
|
|
1327
1333
|
instanceName,
|
|
1328
1334
|
checksum,
|
|
1335
|
+
inputHash,
|
|
1329
1336
|
program: primitive.hookProgram,
|
|
1330
1337
|
binding: primitive.hookBinding,
|
|
1331
1338
|
primitiveName: primitive.name,
|
|
@@ -1672,6 +1679,95 @@ async function executeInstallation(kits, harnesses, registryBySource, options) {
|
|
|
1672
1679
|
applyPromptResultsToResolutions(envResolutions, promptResults);
|
|
1673
1680
|
}
|
|
1674
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
|
+
}
|
|
1675
1771
|
if (lockfileSource) {
|
|
1676
1772
|
lockfile.source = lockfileSource;
|
|
1677
1773
|
}
|
|
@@ -2195,6 +2291,7 @@ async function executeInstallation(kits, harnesses, registryBySource, options) {
|
|
|
2195
2291
|
instanceName: assignment.instanceName,
|
|
2196
2292
|
config: info.config,
|
|
2197
2293
|
configHash: assignment.configHash,
|
|
2294
|
+
inputHash: info.inputHash,
|
|
2198
2295
|
version: info.version,
|
|
2199
2296
|
usedBy: [kit.installAs],
|
|
2200
2297
|
sourcePrimitive: info.primitiveName,
|
|
@@ -2231,6 +2328,7 @@ async function executeInstallation(kits, harnesses, registryBySource, options) {
|
|
|
2231
2328
|
instanceName: assignment.instanceRef,
|
|
2232
2329
|
programPath,
|
|
2233
2330
|
checksum: assignment.checksum,
|
|
2331
|
+
inputHash: info.inputHash,
|
|
2234
2332
|
version: info.version,
|
|
2235
2333
|
usedBy: [kit.installAs],
|
|
2236
2334
|
};
|