@h9-foundry/agentforge-cli 0.3.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/.tsbuildinfo +1 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +119 -0
- package/dist/bin.js.map +1 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +385 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/builtin-adapters.d.ts +3 -0
- package/dist/internal/builtin-adapters.d.ts.map +1 -0
- package/dist/internal/builtin-adapters.js +239 -0
- package/dist/internal/builtin-adapters.js.map +1 -0
- package/dist/internal/builtin-agents.d.ts +3 -0
- package/dist/internal/builtin-agents.d.ts.map +1 -0
- package/dist/internal/builtin-agents.js +271 -0
- package/dist/internal/builtin-agents.js.map +1 -0
- package/dist/internal/local-plugin-registry.d.ts +7 -0
- package/dist/internal/local-plugin-registry.d.ts.map +1 -0
- package/dist/internal/local-plugin-registry.js +103 -0
- package/dist/internal/local-plugin-registry.js.map +1 -0
- package/dist/internal/release-preflight.d.ts +63 -0
- package/dist/internal/release-preflight.d.ts.map +1 -0
- package/dist/internal/release-preflight.js +228 -0
- package/dist/internal/release-preflight.js.map +1 -0
- package/dist/internal/release-verification.d.ts +33 -0
- package/dist/internal/release-verification.d.ts.map +1 -0
- package/dist/internal/release-verification.js +185 -0
- package/dist/internal/release-verification.js.map +1 -0
- package/package.json +40 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { join, resolve } from "node:path";
|
|
4
|
+
import { spawnSync } from "node:child_process";
|
|
5
|
+
import { findWorkspaceRoot } from "@h9-foundry/agentforge-context-engine";
|
|
6
|
+
export const TARGET_NPM_SCOPE = "@h9-foundry";
|
|
7
|
+
export const EXPECTED_PUBLIC_PACKAGES = [
|
|
8
|
+
"@h9-foundry/agentforge-cli",
|
|
9
|
+
"@h9-foundry/agentforge-schemas",
|
|
10
|
+
"@h9-foundry/agentforge-shared-types",
|
|
11
|
+
"@h9-foundry/agentforge-sdk",
|
|
12
|
+
"@h9-foundry/agentforge-context-engine",
|
|
13
|
+
"@h9-foundry/agentforge-policy-engine",
|
|
14
|
+
"@h9-foundry/agentforge-runtime",
|
|
15
|
+
"@h9-foundry/agentforge-audit"
|
|
16
|
+
];
|
|
17
|
+
function defaultRunCommand(command, args, cwd, env) {
|
|
18
|
+
const result = spawnSync(command, args, {
|
|
19
|
+
cwd,
|
|
20
|
+
env,
|
|
21
|
+
encoding: "utf8"
|
|
22
|
+
});
|
|
23
|
+
return {
|
|
24
|
+
status: result.status ?? 1,
|
|
25
|
+
stdout: result.stdout ?? "",
|
|
26
|
+
stderr: result.stderr ?? (result.error instanceof Error ? result.error.message : "")
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function compareStringArrays(left, right) {
|
|
30
|
+
return left.length === right.length && left.every((entry, index) => entry === right[index]);
|
|
31
|
+
}
|
|
32
|
+
function resolveNpmUserConfigPath(env) {
|
|
33
|
+
if (env.NPM_CONFIG_USERCONFIG) {
|
|
34
|
+
return resolve(env.NPM_CONFIG_USERCONFIG);
|
|
35
|
+
}
|
|
36
|
+
const baseHome = env.HOME || env.USERPROFILE || homedir();
|
|
37
|
+
return join(baseHome, ".npmrc");
|
|
38
|
+
}
|
|
39
|
+
function listPublicWorkspacePackages(root) {
|
|
40
|
+
const packagesDir = join(root, "packages");
|
|
41
|
+
if (!existsSync(packagesDir)) {
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
return readdirSync(packagesDir)
|
|
45
|
+
.map((entry) => join(packagesDir, entry, "package.json"))
|
|
46
|
+
.filter((manifestPath) => existsSync(manifestPath))
|
|
47
|
+
.map((manifestPath) => JSON.parse(readFileSync(manifestPath, "utf8")))
|
|
48
|
+
.filter((manifest) => manifest.private !== true && typeof manifest.name === "string")
|
|
49
|
+
.map((manifest) => manifest.name)
|
|
50
|
+
.sort();
|
|
51
|
+
}
|
|
52
|
+
function inspectReleaseWorkflow(root) {
|
|
53
|
+
const workflowPath = join(root, ".github", "workflows", "release-packages.yml");
|
|
54
|
+
const workflow = existsSync(workflowPath) ? readFileSync(workflowPath, "utf8") : "";
|
|
55
|
+
const idTokenWrite = /id-token:\s*write/.test(workflow);
|
|
56
|
+
const registryUrl = /registry-url:\s*"https:\/\/registry\.npmjs\.org"/.test(workflow);
|
|
57
|
+
const usesChangesetsAction = /changesets\/action@/.test(workflow);
|
|
58
|
+
const requiresNpmToken = /\bNPM_TOKEN\b/.test(workflow);
|
|
59
|
+
return {
|
|
60
|
+
workflowPath,
|
|
61
|
+
idTokenWrite,
|
|
62
|
+
registryUrl,
|
|
63
|
+
usesChangesetsAction,
|
|
64
|
+
requiresNpmToken,
|
|
65
|
+
matches: idTokenWrite && registryUrl && usesChangesetsAction && !requiresNpmToken
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function inspectChangesetConfig(root) {
|
|
69
|
+
const configPath = join(root, ".changeset", "config.json");
|
|
70
|
+
const config = existsSync(configPath)
|
|
71
|
+
? JSON.parse(readFileSync(configPath, "utf8"))
|
|
72
|
+
: {};
|
|
73
|
+
const fixed = Array.isArray(config.fixed?.[0]) ? [...config.fixed[0]].sort() : [];
|
|
74
|
+
const ignore = Array.isArray(config.ignore) ? [...config.ignore].sort() : [];
|
|
75
|
+
return {
|
|
76
|
+
configPath,
|
|
77
|
+
fixed,
|
|
78
|
+
ignore,
|
|
79
|
+
matches: compareStringArrays(fixed, [...EXPECTED_PUBLIC_PACKAGES].sort())
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function pushCheck(checks, id, label, status, detail) {
|
|
83
|
+
checks.push({ id, label, status, detail });
|
|
84
|
+
}
|
|
85
|
+
function summarizeCommandOutput(result) {
|
|
86
|
+
const output = `${result.stdout}\n${result.stderr}`.trim();
|
|
87
|
+
return output ? output.split("\n").slice(0, 3).join(" | ") : "Command completed.";
|
|
88
|
+
}
|
|
89
|
+
export function getReleaseGuide() {
|
|
90
|
+
return {
|
|
91
|
+
title: "AgentForge npm bootstrap guide",
|
|
92
|
+
steps: [
|
|
93
|
+
"Run `npm login` on this workstation so npm auth is available through your user-scoped ~/.npmrc.",
|
|
94
|
+
"Create the npm organization `h9-foundry` and confirm your npm account is an owner before attempting any publish.",
|
|
95
|
+
"Confirm the public package target remains @h9-foundry/agentforge-* and keep GitHub Actions trusted publishing enabled in .github/workflows/release-packages.yml.",
|
|
96
|
+
"After npm org ownership is confirmed, configure npm trusted publishing for H9-Foundry/AgentForge and rerun the Release Packages workflow on main.",
|
|
97
|
+
"Use `agentforge release check --json` before and after external npm setup to confirm the repo is ready and to capture remaining blockers."
|
|
98
|
+
],
|
|
99
|
+
urls: [
|
|
100
|
+
"https://www.npmjs.com/login",
|
|
101
|
+
"https://www.npmjs.com/org/create",
|
|
102
|
+
"https://www.npmjs.com/settings",
|
|
103
|
+
"https://docs.npmjs.com/trusted-publishers",
|
|
104
|
+
"https://github.com/H9-Foundry/AgentForge/actions/workflows/release-packages.yml"
|
|
105
|
+
]
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
export function renderReleaseGuide() {
|
|
109
|
+
const guide = getReleaseGuide();
|
|
110
|
+
return [
|
|
111
|
+
guide.title,
|
|
112
|
+
"",
|
|
113
|
+
...guide.steps.map((step, index) => `${index + 1}. ${step}`),
|
|
114
|
+
"",
|
|
115
|
+
"Reference URLs:",
|
|
116
|
+
...guide.urls.map((url) => `- ${url}`)
|
|
117
|
+
].join("\n");
|
|
118
|
+
}
|
|
119
|
+
export function checkReleaseReadiness(cwd = process.cwd(), options = {}) {
|
|
120
|
+
const root = findWorkspaceRoot(cwd);
|
|
121
|
+
const env = { ...process.env, ...options.env };
|
|
122
|
+
const runCommand = options.runCommand ?? defaultRunCommand;
|
|
123
|
+
const skipNpmAuth = options.skipNpmAuth ?? env.AGENTFORGE_SKIP_NPM_AUTH === "1";
|
|
124
|
+
const skipLocalCommands = options.skipLocalCommands ?? env.AGENTFORGE_SKIP_LOCAL_COMMANDS === "1";
|
|
125
|
+
const checks = [];
|
|
126
|
+
const npmrcPath = resolveNpmUserConfigPath(env);
|
|
127
|
+
let npmReadable = false;
|
|
128
|
+
if (existsSync(npmrcPath)) {
|
|
129
|
+
try {
|
|
130
|
+
readFileSync(npmrcPath, "utf8");
|
|
131
|
+
npmReadable = true;
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
npmReadable = false;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
const npmAuth = {
|
|
138
|
+
path: npmrcPath,
|
|
139
|
+
present: existsSync(npmrcPath),
|
|
140
|
+
readable: npmReadable
|
|
141
|
+
};
|
|
142
|
+
if (skipNpmAuth) {
|
|
143
|
+
pushCheck(checks, "npm-auth", "npm auth file", "pass", "Skipped npm auth verification for this environment.");
|
|
144
|
+
}
|
|
145
|
+
else if (npmAuth.present && npmAuth.readable) {
|
|
146
|
+
pushCheck(checks, "npm-auth", "npm auth file", "pass", `Found readable npm auth at ${npmAuth.path}.`);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
pushCheck(checks, "npm-auth", "npm auth file", "fail", `Expected a readable npm auth file at ${npmAuth.path}. Run npm login first.`);
|
|
150
|
+
}
|
|
151
|
+
let npmUser;
|
|
152
|
+
if (skipNpmAuth) {
|
|
153
|
+
npmUser = {
|
|
154
|
+
resolved: false,
|
|
155
|
+
error: "Skipped npm username resolution for this environment."
|
|
156
|
+
};
|
|
157
|
+
pushCheck(checks, "npm-user", "npm username", "pass", "Skipped npm username resolution for this environment.");
|
|
158
|
+
}
|
|
159
|
+
else if (npmAuth.present && npmAuth.readable) {
|
|
160
|
+
const whoami = runCommand("npm", ["whoami"], root, env);
|
|
161
|
+
if (whoami.status === 0) {
|
|
162
|
+
npmUser = {
|
|
163
|
+
resolved: true,
|
|
164
|
+
value: whoami.stdout.trim()
|
|
165
|
+
};
|
|
166
|
+
pushCheck(checks, "npm-user", "npm username", "pass", `Authenticated as ${npmUser.value}.`);
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
npmUser = {
|
|
170
|
+
resolved: false,
|
|
171
|
+
error: summarizeCommandOutput(whoami)
|
|
172
|
+
};
|
|
173
|
+
pushCheck(checks, "npm-user", "npm username", "fail", `npm whoami failed: ${npmUser.error}`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
npmUser = {
|
|
178
|
+
resolved: false,
|
|
179
|
+
error: "npm auth is not configured on this workstation."
|
|
180
|
+
};
|
|
181
|
+
pushCheck(checks, "npm-user", "npm username", "fail", npmUser.error ?? "npm auth is not configured on this workstation.");
|
|
182
|
+
}
|
|
183
|
+
const publicPackages = {
|
|
184
|
+
expected: [...EXPECTED_PUBLIC_PACKAGES].sort(),
|
|
185
|
+
actual: listPublicWorkspacePackages(root),
|
|
186
|
+
matches: false
|
|
187
|
+
};
|
|
188
|
+
publicPackages.matches = compareStringArrays(publicPackages.actual, publicPackages.expected);
|
|
189
|
+
pushCheck(checks, "public-packages", "public package set", publicPackages.matches ? "pass" : "fail", publicPackages.matches
|
|
190
|
+
? `Workspace public packages match ${TARGET_NPM_SCOPE}.`
|
|
191
|
+
: `Expected ${publicPackages.expected.join(", ")} but found ${publicPackages.actual.join(", ")}.`);
|
|
192
|
+
const workflowTrustedPublishing = inspectReleaseWorkflow(root);
|
|
193
|
+
pushCheck(checks, "trusted-publishing", "release workflow trusted publishing", workflowTrustedPublishing.matches ? "pass" : "fail", workflowTrustedPublishing.matches
|
|
194
|
+
? `Trusted publishing is configured in ${workflowTrustedPublishing.workflowPath}.`
|
|
195
|
+
: "Release workflow must use id-token: write, registry-url, changesets/action, and no NPM_TOKEN.");
|
|
196
|
+
const changesetConfig = inspectChangesetConfig(root);
|
|
197
|
+
pushCheck(checks, "changeset-config", "changeset public package config", changesetConfig.matches ? "pass" : "fail", changesetConfig.matches
|
|
198
|
+
? `Changesets fixed package set matches ${TARGET_NPM_SCOPE}.`
|
|
199
|
+
: `Changesets fixed package set does not match the expected public package list in ${changesetConfig.configPath}.`);
|
|
200
|
+
const localCommandChecks = [
|
|
201
|
+
{ id: "typecheck", label: "typecheck", args: ["typecheck"] },
|
|
202
|
+
{ id: "build-packages", label: "build packages", args: ["build:packages"] },
|
|
203
|
+
{ id: "pack-public", label: "pack public packages", args: ["pack:public"] },
|
|
204
|
+
{ id: "changeset-status", label: "changeset status", args: ["changeset", "status"] }
|
|
205
|
+
];
|
|
206
|
+
if (skipLocalCommands) {
|
|
207
|
+
pushCheck(checks, "local-commands", "local release-shape commands", "pass", "Skipped local command checks for this environment.");
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
for (const commandCheck of localCommandChecks) {
|
|
211
|
+
const result = runCommand("pnpm", commandCheck.args, root, env);
|
|
212
|
+
pushCheck(checks, commandCheck.id, commandCheck.label, result.status === 0 ? "pass" : "fail", result.status === 0
|
|
213
|
+
? summarizeCommandOutput(result)
|
|
214
|
+
: `Command failed: pnpm ${commandCheck.args.join(" ")} | ${summarizeCommandOutput(result)}`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return {
|
|
218
|
+
npmAuth,
|
|
219
|
+
npmUser,
|
|
220
|
+
targetScope: TARGET_NPM_SCOPE,
|
|
221
|
+
publicPackages,
|
|
222
|
+
workflowTrustedPublishing,
|
|
223
|
+
changesetConfig,
|
|
224
|
+
checks,
|
|
225
|
+
ready: checks.every((check) => check.status === "pass")
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=release-preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-preflight.js","sourceRoot":"","sources":["../../src/internal/release-preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
interface CommandResult {
|
|
2
|
+
readonly status: number;
|
|
3
|
+
readonly stdout: string;
|
|
4
|
+
readonly stderr: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ReleaseVerifyEntry {
|
|
7
|
+
id: string;
|
|
8
|
+
label: string;
|
|
9
|
+
status: "pass" | "fail";
|
|
10
|
+
detail: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ReleaseVerifyTarball {
|
|
13
|
+
packageName: string;
|
|
14
|
+
version: string;
|
|
15
|
+
tarballPath: string;
|
|
16
|
+
packageDir: string;
|
|
17
|
+
}
|
|
18
|
+
export interface ReleaseVerifyResult {
|
|
19
|
+
workspaceRoot: string;
|
|
20
|
+
targetScope: string;
|
|
21
|
+
tempDir: string;
|
|
22
|
+
consumerProjectDir: string;
|
|
23
|
+
tarballs: ReleaseVerifyTarball[];
|
|
24
|
+
checks: ReleaseVerifyEntry[];
|
|
25
|
+
ready: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface ReleaseVerifyOptions {
|
|
28
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
29
|
+
readonly runCommand?: (command: string, args: string[], cwd: string, env: NodeJS.ProcessEnv) => CommandResult;
|
|
30
|
+
}
|
|
31
|
+
export declare function verifyReleaseArtifacts(cwd?: string, options?: ReleaseVerifyOptions): ReleaseVerifyResult;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=release-verification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-verification.d.ts","sourceRoot":"","sources":["../../src/internal/release-verification.ts"],"names":[],"mappings":"AASA,UAAU,aAAa;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,aAAa,CAAC;CAC/G;AA4LD,wBAAgB,sBAAsB,CAAC,GAAG,SAAgB,EAAE,OAAO,GAAE,oBAAyB,GAAG,mBAAmB,CA+InH"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, mkdtempSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { spawnSync } from "node:child_process";
|
|
5
|
+
import { findWorkspaceRoot } from "@h9-foundry/agentforge-context-engine";
|
|
6
|
+
import { EXPECTED_PUBLIC_PACKAGES, TARGET_NPM_SCOPE } from "./release-preflight.js";
|
|
7
|
+
function defaultRunCommand(command, args, cwd, env) {
|
|
8
|
+
const result = spawnSync(command, args, {
|
|
9
|
+
cwd,
|
|
10
|
+
env,
|
|
11
|
+
encoding: "utf8"
|
|
12
|
+
});
|
|
13
|
+
return {
|
|
14
|
+
status: result.status ?? 1,
|
|
15
|
+
stdout: result.stdout ?? "",
|
|
16
|
+
stderr: result.stderr ?? (result.error instanceof Error ? result.error.message : "")
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function pushCheck(checks, id, label, status, detail) {
|
|
20
|
+
checks.push({ id, label, status, detail });
|
|
21
|
+
}
|
|
22
|
+
function summarizeCommandOutput(result) {
|
|
23
|
+
const output = `${result.stdout}\n${result.stderr}`.trim();
|
|
24
|
+
return output ? output.split("\n").slice(0, 4).join(" | ") : "Command completed.";
|
|
25
|
+
}
|
|
26
|
+
function getPublicPackageDirectories(root) {
|
|
27
|
+
return EXPECTED_PUBLIC_PACKAGES.map((packageName) => ({
|
|
28
|
+
packageName,
|
|
29
|
+
packageDir: join(root, "packages", packageName.split("/")[1].replace("agentforge-", ""))
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
function packPublicPackage(packageName, packageDir, tarballDir, env, runCommand) {
|
|
33
|
+
const checks = [];
|
|
34
|
+
const execute = runCommand ?? defaultRunCommand;
|
|
35
|
+
const result = execute("pnpm", ["pack", "--json", "--pack-destination", tarballDir], packageDir, env);
|
|
36
|
+
if (result.status !== 0) {
|
|
37
|
+
pushCheck(checks, `pack-${packageName}`, `pack ${packageName}`, "fail", `pnpm pack failed for ${packageName}: ${summarizeCommandOutput(result)}`);
|
|
38
|
+
return { checks };
|
|
39
|
+
}
|
|
40
|
+
let metadata;
|
|
41
|
+
try {
|
|
42
|
+
metadata = JSON.parse(result.stdout);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
pushCheck(checks, `pack-json-${packageName}`, `parse pack metadata for ${packageName}`, "fail", `pnpm pack did not return valid JSON for ${packageName}: ${summarizeCommandOutput(result)}`);
|
|
46
|
+
return { checks };
|
|
47
|
+
}
|
|
48
|
+
const packed = Array.isArray(metadata) ? metadata[0] : metadata;
|
|
49
|
+
if (!packed?.filename || !packed?.name || !packed?.version) {
|
|
50
|
+
pushCheck(checks, `pack-metadata-${packageName}`, `pack metadata for ${packageName}`, "fail", `pnpm pack did not include filename/name/version for ${packageName}.`);
|
|
51
|
+
return { checks };
|
|
52
|
+
}
|
|
53
|
+
const packedFiles = Array.isArray(packed.files) ? packed.files.map((file) => file.path ?? "") : [];
|
|
54
|
+
const hasPackageJson = packedFiles.includes("package.json");
|
|
55
|
+
const hasDistFile = packedFiles.some((file) => file.startsWith("dist/"));
|
|
56
|
+
pushCheck(checks, `pack-files-${packageName}`, `packed files for ${packageName}`, hasPackageJson && hasDistFile ? "pass" : "fail", hasPackageJson && hasDistFile
|
|
57
|
+
? `Packed tarball includes package.json and dist assets.`
|
|
58
|
+
: `Packed tarball is missing ${hasPackageJson ? "dist assets" : "package.json"} for ${packageName}.`);
|
|
59
|
+
return {
|
|
60
|
+
tarball: {
|
|
61
|
+
packageName,
|
|
62
|
+
version: packed.version,
|
|
63
|
+
tarballPath: packed.filename,
|
|
64
|
+
packageDir
|
|
65
|
+
},
|
|
66
|
+
checks
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function verifyInstalledPackageFiles(consumerProjectDir, tarballs, checks) {
|
|
70
|
+
for (const tarball of tarballs) {
|
|
71
|
+
const packageRoot = join(consumerProjectDir, "node_modules", ...tarball.packageName.split("/"));
|
|
72
|
+
const manifestPath = join(packageRoot, "package.json");
|
|
73
|
+
if (!existsSync(manifestPath)) {
|
|
74
|
+
pushCheck(checks, `installed-manifest-${tarball.packageName}`, `installed manifest for ${tarball.packageName}`, "fail", `Expected ${manifestPath} to exist after tarball install.`);
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const manifest = JSON.parse(readFileSync(manifestPath, "utf8"));
|
|
78
|
+
const dependencyVersions = Object.values(manifest.dependencies ?? {});
|
|
79
|
+
const hasWorkspaceProtocol = dependencyVersions.some((version) => version.startsWith("workspace:"));
|
|
80
|
+
const mainPath = typeof manifest.main === "string" ? join(packageRoot, manifest.main) : undefined;
|
|
81
|
+
const typesPath = typeof manifest.types === "string" ? join(packageRoot, manifest.types) : undefined;
|
|
82
|
+
pushCheck(checks, `manifest-deps-${tarball.packageName}`, `installed dependency metadata for ${tarball.packageName}`, hasWorkspaceProtocol ? "fail" : "pass", hasWorkspaceProtocol
|
|
83
|
+
? `Installed package.json for ${tarball.packageName} still contains workspace protocol dependencies.`
|
|
84
|
+
: `Installed package.json for ${tarball.packageName} does not expose workspace protocol dependencies.`);
|
|
85
|
+
pushCheck(checks, `manifest-main-${tarball.packageName}`, `installed entrypoints for ${tarball.packageName}`, mainPath && typesPath && existsSync(mainPath) && existsSync(typesPath) ? "pass" : "fail", mainPath && typesPath && existsSync(mainPath) && existsSync(typesPath)
|
|
86
|
+
? `Installed package entrypoints exist for ${tarball.packageName}.`
|
|
87
|
+
: `Installed package entrypoints are missing for ${tarball.packageName}.`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function writeImportProbe(consumerProjectDir) {
|
|
91
|
+
const probePath = join(consumerProjectDir, "verify-imports.mjs");
|
|
92
|
+
const probeContents = `const packages = ${JSON.stringify(EXPECTED_PUBLIC_PACKAGES, null, 2)};
|
|
93
|
+
|
|
94
|
+
for (const packageName of packages) {
|
|
95
|
+
const loaded = await import(packageName);
|
|
96
|
+
if (!loaded || typeof loaded !== "object") {
|
|
97
|
+
throw new Error(\`Failed to load \${packageName}\`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
console.log(JSON.stringify({ verified: packages }, null, 2));
|
|
102
|
+
`;
|
|
103
|
+
writeFileSync(probePath, probeContents, "utf8");
|
|
104
|
+
return probePath;
|
|
105
|
+
}
|
|
106
|
+
export function verifyReleaseArtifacts(cwd = process.cwd(), options = {}) {
|
|
107
|
+
const workspaceRoot = findWorkspaceRoot(cwd);
|
|
108
|
+
const env = { ...process.env, ...options.env };
|
|
109
|
+
const runCommand = options.runCommand ?? defaultRunCommand;
|
|
110
|
+
const tempDir = mkdtempSync(join(tmpdir(), "agentforge-release-verify-"));
|
|
111
|
+
const tarballDir = join(tempDir, "tarballs");
|
|
112
|
+
const consumerProjectDir = join(tempDir, "consumer");
|
|
113
|
+
const checks = [];
|
|
114
|
+
mkdirSync(tarballDir, { recursive: true });
|
|
115
|
+
mkdirSync(consumerProjectDir, { recursive: true });
|
|
116
|
+
writeFileSync(join(consumerProjectDir, "package.json"), JSON.stringify({
|
|
117
|
+
name: "agentforge-release-verify-consumer",
|
|
118
|
+
private: true,
|
|
119
|
+
type: "module"
|
|
120
|
+
}, null, 2), "utf8");
|
|
121
|
+
const tarballs = [];
|
|
122
|
+
const buildPackages = runCommand("pnpm", ["build:packages"], workspaceRoot, env);
|
|
123
|
+
pushCheck(checks, "build-packages", "build packages for verification", buildPackages.status === 0 ? "pass" : "fail", buildPackages.status === 0
|
|
124
|
+
? "Built package distributions before packing tarballs."
|
|
125
|
+
: `Failed to build packages before verification: ${summarizeCommandOutput(buildPackages)}`);
|
|
126
|
+
if (buildPackages.status !== 0) {
|
|
127
|
+
return {
|
|
128
|
+
workspaceRoot,
|
|
129
|
+
targetScope: TARGET_NPM_SCOPE,
|
|
130
|
+
tempDir,
|
|
131
|
+
consumerProjectDir,
|
|
132
|
+
tarballs,
|
|
133
|
+
checks,
|
|
134
|
+
ready: false
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
for (const packageInfo of getPublicPackageDirectories(workspaceRoot)) {
|
|
138
|
+
const packed = packPublicPackage(packageInfo.packageName, packageInfo.packageDir, tarballDir, env, runCommand);
|
|
139
|
+
checks.push(...packed.checks);
|
|
140
|
+
if (packed.tarball) {
|
|
141
|
+
tarballs.push(packed.tarball);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
const installTarballs = tarballs.map((tarball) => tarball.tarballPath);
|
|
145
|
+
if (installTarballs.length === EXPECTED_PUBLIC_PACKAGES.length) {
|
|
146
|
+
const install = runCommand("npm", ["install", "--no-package-lock", ...installTarballs], consumerProjectDir, env);
|
|
147
|
+
pushCheck(checks, "install-clean-room", "install packed public packages", install.status === 0 ? "pass" : "fail", install.status === 0
|
|
148
|
+
? `Installed ${installTarballs.length} tarballs into a clean temp project.`
|
|
149
|
+
: `Failed to install packed tarballs: ${summarizeCommandOutput(install)}`);
|
|
150
|
+
if (install.status === 0) {
|
|
151
|
+
verifyInstalledPackageFiles(consumerProjectDir, tarballs, checks);
|
|
152
|
+
const importProbe = writeImportProbe(consumerProjectDir);
|
|
153
|
+
const importResult = runCommand("node", [importProbe], consumerProjectDir, env);
|
|
154
|
+
pushCheck(checks, "esm-imports", "ESM imports from packed tarballs", importResult.status === 0 ? "pass" : "fail", importResult.status === 0
|
|
155
|
+
? "Imported every public package from a clean-room install."
|
|
156
|
+
: `Failed to import public packages from clean-room install: ${summarizeCommandOutput(importResult)}`);
|
|
157
|
+
const cliBinary = join(consumerProjectDir, "node_modules", ".bin", "agentforge");
|
|
158
|
+
const cliHelp = runCommand(cliBinary, ["--help"], consumerProjectDir, env);
|
|
159
|
+
pushCheck(checks, "cli-help", "installed CLI help", cliHelp.status === 0 ? "pass" : "fail", cliHelp.status === 0 ? "Installed CLI binary rendered --help successfully." : summarizeCommandOutput(cliHelp));
|
|
160
|
+
const cliGuide = runCommand(cliBinary, ["release", "guide"], consumerProjectDir, env);
|
|
161
|
+
pushCheck(checks, "cli-guide", "installed CLI release guide", cliGuide.status === 0 ? "pass" : "fail", cliGuide.status === 0 ? "Installed CLI rendered release guide successfully." : summarizeCommandOutput(cliGuide));
|
|
162
|
+
const cliCheck = runCommand(cliBinary, ["release", "check", "--json", "--skip-npm-auth", "--skip-local-commands"], workspaceRoot, {
|
|
163
|
+
...env,
|
|
164
|
+
AGENTFORGE_SKIP_NPM_AUTH: "1",
|
|
165
|
+
AGENTFORGE_SKIP_LOCAL_COMMANDS: "1"
|
|
166
|
+
});
|
|
167
|
+
pushCheck(checks, "cli-release-check", "installed CLI release check", cliCheck.status === 0 ? "pass" : "fail", cliCheck.status === 0
|
|
168
|
+
? "Installed CLI ran release check --json successfully against the workspace."
|
|
169
|
+
: `Installed CLI failed release check --json against the workspace: ${summarizeCommandOutput(cliCheck)}`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
pushCheck(checks, "install-clean-room", "install packed public packages", "fail", `Expected ${EXPECTED_PUBLIC_PACKAGES.length} tarballs but only packed ${tarballs.length}.`);
|
|
174
|
+
}
|
|
175
|
+
return {
|
|
176
|
+
workspaceRoot,
|
|
177
|
+
targetScope: TARGET_NPM_SCOPE,
|
|
178
|
+
tempDir,
|
|
179
|
+
consumerProjectDir,
|
|
180
|
+
tarballs,
|
|
181
|
+
checks,
|
|
182
|
+
ready: checks.every((check) => check.status === "pass")
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=release-verification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-verification.js","sourceRoot":"","sources":["../../src/internal/release-verification.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@h9-foundry/agentforge-cli",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"bin": {
|
|
9
|
+
"agentforge": "./dist/bin.js"
|
|
10
|
+
},
|
|
11
|
+
"main": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"default": "./dist/index.js"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"dist",
|
|
21
|
+
"!dist/**/*.test.*",
|
|
22
|
+
"!dist/**/*.spec.*"
|
|
23
|
+
],
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"commander": "^13.1.0",
|
|
26
|
+
"js-yaml": "^4.1.0",
|
|
27
|
+
"zod": "^3.24.2",
|
|
28
|
+
"@h9-foundry/agentforge-audit": "0.3.0",
|
|
29
|
+
"@h9-foundry/agentforge-context-engine": "0.3.0",
|
|
30
|
+
"@h9-foundry/agentforge-policy-engine": "0.3.0",
|
|
31
|
+
"@h9-foundry/agentforge-runtime": "0.3.0",
|
|
32
|
+
"@h9-foundry/agentforge-schemas": "0.3.0",
|
|
33
|
+
"@h9-foundry/agentforge-sdk": "0.3.0",
|
|
34
|
+
"@h9-foundry/agentforge-shared-types": "0.3.0"
|
|
35
|
+
},
|
|
36
|
+
"scripts": {
|
|
37
|
+
"build": "tsc -p tsconfig.json",
|
|
38
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
39
|
+
}
|
|
40
|
+
}
|