@techdigger/humanode-agentlink-cli 0.3.2 → 0.3.3
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.
|
@@ -15,5 +15,5 @@ export interface AuthorizeLinkOverrides {
|
|
|
15
15
|
export interface AuthorizeLinkDeps {
|
|
16
16
|
createAgentLinkConsent: typeof createAgentLinkConsent;
|
|
17
17
|
}
|
|
18
|
-
export declare function parseAuthorizeLinkOptions(argv: string[], env: EnvSource, now: Date, overrides?: AuthorizeLinkOverrides): AuthorizeLinkOptions
|
|
18
|
+
export declare function parseAuthorizeLinkOptions(argv: string[], env: EnvSource, now: Date, overrides?: AuthorizeLinkOverrides): Promise<AuthorizeLinkOptions>;
|
|
19
19
|
export declare function runAuthorizeLink(options: AuthorizeLinkOptions, deps?: Partial<AuthorizeLinkDeps>): Promise<AgentLinkConsentOutput>;
|
|
@@ -1,13 +1,27 @@
|
|
|
1
|
+
import { isAddress } from 'viem';
|
|
1
2
|
import { createAgentLinkConsent } from '@techdigger/humanode-agentlink';
|
|
2
|
-
import { CliError, assertNoExtraPositionals, parseFlags, parseFutureDeadline, parseRequiredAddress, resolveNetwork, resolvePrivateKey, resolveRegistryAddress, resolveRpcUrl, } from '../lib/core.js';
|
|
3
|
-
export function parseAuthorizeLinkOptions(argv, env, now, overrides = {}) {
|
|
3
|
+
import { CliError, assertNoExtraPositionals, createConsolePrompter, defaultDeadline, parseFlags, parseFutureDeadline, parseRequiredAddress, resolveNetwork, resolvePrivateKey, resolveRegistryAddress, resolveRpcUrl, } from '../lib/core.js';
|
|
4
|
+
export async function parseAuthorizeLinkOptions(argv, env, now, overrides = {}) {
|
|
4
5
|
const parsed = parseFlags(argv);
|
|
5
6
|
assertNoExtraPositionals('authorize-link', parsed.positionals);
|
|
7
|
+
let ownerValue = parsed.values.owner;
|
|
8
|
+
if (!ownerValue) {
|
|
9
|
+
const prompter = createConsolePrompter();
|
|
10
|
+
try {
|
|
11
|
+
ownerValue = await prompter.text({ message: 'Owner wallet address (biomapped)' });
|
|
12
|
+
}
|
|
13
|
+
finally {
|
|
14
|
+
prompter.close();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
if (!isAddress(ownerValue)) {
|
|
18
|
+
throw new CliError(`Invalid --owner. Expected a checksummed or lowercase EVM address.`);
|
|
19
|
+
}
|
|
6
20
|
const network = resolveNetwork(parsed.values.network, env);
|
|
7
21
|
return {
|
|
8
|
-
owner:
|
|
22
|
+
owner: ownerValue,
|
|
9
23
|
registry: resolveRegistryAddress(parsed.values.registry, env, network),
|
|
10
|
-
deadline: parseFutureDeadline(parsed.values.deadline, now),
|
|
24
|
+
deadline: parsed.values.deadline ? parseFutureDeadline(parsed.values.deadline, now) : defaultDeadline(now, 1),
|
|
11
25
|
network,
|
|
12
26
|
privateKey: resolvePrivateKey(parsed.values['private-key'], env, overrides.privateKey),
|
|
13
27
|
rpcUrl: resolveRpcUrl(parsed.values['rpc-url'], env),
|
package/dist/commands/init.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { buildTemplateFiles } from '../templates.js';
|
|
3
|
-
import { CliError, PACKAGE_MANAGERS, TEMPLATE_NAMES, createConsolePrompter, ensureTargetDirectoryIsWritable, getPackageManagerInstallCommand, getPackageManagerRunCommand, installProjectDependencies, parseAddressOrPlaceholder, parseFlags, resolveHumanodePackageSpecs, resolveNetwork, resolvePackageManager, resolvePackageSource, resolveTemplateName, toPackageName, writeGeneratedFiles, } from '../lib/core.js';
|
|
3
|
+
import { CliError, NETWORKS, PACKAGE_MANAGERS, TEMPLATE_NAMES, createConsolePrompter, ensureTargetDirectoryIsWritable, getPackageManagerInstallCommand, getPackageManagerRunCommand, installProjectDependencies, parseAddressOrPlaceholder, parseFlags, resolveHumanodePackageSpecs, resolveNetwork, resolvePackageManager, resolvePackageSource, resolveTemplateName, toPackageName, writeGeneratedFiles, } from '../lib/core.js';
|
|
4
4
|
const DEFAULT_PROJECT_DIR = 'biomapper-agent';
|
|
5
|
-
const DEFAULT_REGISTRY = '0xYourRegistryDeployment';
|
|
6
5
|
export function parseInitOptions(argv, env) {
|
|
7
6
|
const parsed = parseFlags(argv);
|
|
8
7
|
if (parsed.positionals.length > 1) {
|
|
@@ -52,10 +51,11 @@ export async function runInit(options, depsInput = {}) {
|
|
|
52
51
|
],
|
|
53
52
|
defaultValue: resolveNetwork(undefined, env),
|
|
54
53
|
}));
|
|
55
|
-
const
|
|
54
|
+
const networkDefaultRegistry = NETWORKS[network].defaultRegistry;
|
|
55
|
+
const registry = await resolveInteractiveValue(options.registry, options.yes, () => env.BIOMAPPER_REGISTRY ?? networkDefaultRegistry, async () => parseAddressOrPlaceholder('registry', await getPrompter().text({
|
|
56
56
|
message: 'Biomapper registry address',
|
|
57
|
-
defaultValue: env.BIOMAPPER_REGISTRY ??
|
|
58
|
-
}),
|
|
57
|
+
defaultValue: env.BIOMAPPER_REGISTRY ?? networkDefaultRegistry,
|
|
58
|
+
}), networkDefaultRegistry));
|
|
59
59
|
const packageManager = await resolveInteractiveValue(options.packageManager, options.yes, () => 'npm', () => getPrompter().select({
|
|
60
60
|
message: 'Package manager',
|
|
61
61
|
options: PACKAGE_MANAGERS.map(value => ({ value, label: value })),
|
package/dist/commands/link.d.ts
CHANGED
|
@@ -33,6 +33,6 @@ export interface LinkDeps {
|
|
|
33
33
|
buildLinkUrl: (baseUrl: string, session: AgentLinkSession) => string;
|
|
34
34
|
openUrl: (url: string) => Promise<void>;
|
|
35
35
|
}
|
|
36
|
-
export declare function parseLinkOptions(argv: string[], env: EnvSource, now: Date, overrides?: LinkOptionOverrides): LinkOptions
|
|
36
|
+
export declare function parseLinkOptions(argv: string[], env: EnvSource, now: Date, overrides?: LinkOptionOverrides): Promise<LinkOptions>;
|
|
37
37
|
export declare function runLink(options: LinkOptions, deps?: Partial<LinkDeps>): Promise<LinkResult>;
|
|
38
38
|
export declare function formatLinkOutput(result: LinkResult, json?: boolean): string;
|
package/dist/commands/link.js
CHANGED
|
@@ -1,11 +1,25 @@
|
|
|
1
|
+
import { isAddress } from 'viem';
|
|
1
2
|
import { buildEmbeddedHostedLinkUrl, createAgentLinkConsent, createLinkSession, } from '@techdigger/humanode-agentlink';
|
|
2
|
-
import { CliError, NETWORKS, assertNoExtraPositionals, defaultDeadline, formatJson, parseFlags, parseFutureDeadline,
|
|
3
|
-
export function parseLinkOptions(argv, env, now, overrides = {}) {
|
|
3
|
+
import { CliError, NETWORKS, assertNoExtraPositionals, createConsolePrompter, defaultDeadline, formatJson, parseFlags, parseFutureDeadline, resolveLinkerUrl, resolveNetwork, resolvePrivateKey, resolveRegistryAddress, resolveRpcUrl, openUrlInBrowser, } from '../lib/core.js';
|
|
4
|
+
export async function parseLinkOptions(argv, env, now, overrides = {}) {
|
|
4
5
|
const parsed = parseFlags(argv);
|
|
5
6
|
assertNoExtraPositionals('link', parsed.positionals);
|
|
7
|
+
let ownerValue = parsed.values.owner;
|
|
8
|
+
if (!ownerValue) {
|
|
9
|
+
const prompter = createConsolePrompter();
|
|
10
|
+
try {
|
|
11
|
+
ownerValue = await prompter.text({ message: 'Owner wallet address (biomapped)' });
|
|
12
|
+
}
|
|
13
|
+
finally {
|
|
14
|
+
prompter.close();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
if (!isAddress(ownerValue)) {
|
|
18
|
+
throw new CliError(`Invalid --owner. Expected a checksummed or lowercase EVM address.`);
|
|
19
|
+
}
|
|
6
20
|
const network = resolveNetwork(parsed.values.network, env);
|
|
7
21
|
return {
|
|
8
|
-
owner:
|
|
22
|
+
owner: ownerValue,
|
|
9
23
|
registry: resolveRegistryAddress(parsed.values.registry, env, network),
|
|
10
24
|
network,
|
|
11
25
|
deadline: parsed.values.deadline ? parseFutureDeadline(parsed.values.deadline, now) : defaultDeadline(now),
|
package/dist/index.js
CHANGED
|
@@ -83,7 +83,7 @@ export async function runCli(argv = process.argv.slice(2), overrides = {}) {
|
|
|
83
83
|
return 0;
|
|
84
84
|
}
|
|
85
85
|
const authorizePrivateKey = await readPrivateKeyFromStdin(args, runtime);
|
|
86
|
-
writeLine(runtime.stdout, formatJson(await runAuthorizeLink(parseAuthorizeLinkOptions(args, runtime.env, runtime.now, {
|
|
86
|
+
writeLine(runtime.stdout, formatJson(await runAuthorizeLink(await parseAuthorizeLinkOptions(args, runtime.env, runtime.now, {
|
|
87
87
|
privateKey: authorizePrivateKey,
|
|
88
88
|
}), {
|
|
89
89
|
createAgentLinkConsent: runtime.createAgentLinkConsent,
|
|
@@ -136,7 +136,7 @@ export async function runCli(argv = process.argv.slice(2), overrides = {}) {
|
|
|
136
136
|
return 0;
|
|
137
137
|
}
|
|
138
138
|
const linkPrivateKey = await readPrivateKeyFromStdin(args, runtime);
|
|
139
|
-
const options = parseLinkOptions(args, runtime.env, runtime.now, {
|
|
139
|
+
const options = await parseLinkOptions(args, runtime.env, runtime.now, {
|
|
140
140
|
privateKey: linkPrivateKey,
|
|
141
141
|
});
|
|
142
142
|
const result = await runLink(options, {
|
package/dist/templates.js
CHANGED
|
@@ -7,16 +7,11 @@ const MCP_SDK_VERSION = '^1.12.1';
|
|
|
7
7
|
const DOTENV_VERSION = '^17.3.1';
|
|
8
8
|
const TSX_VERSION = '^4.19.4';
|
|
9
9
|
const TYPESCRIPT_VERSION = '^5.8.3';
|
|
10
|
-
function buildCommonEnv(input,
|
|
10
|
+
function buildCommonEnv(input, _includeOpenAI) {
|
|
11
11
|
const lines = [
|
|
12
|
-
`AGENT_PRIVATE_KEY=0xyouragentprivatekey`,
|
|
13
12
|
`BIOMAPPER_NETWORK=${input.network}`,
|
|
14
13
|
`BIOMAPPER_REGISTRY=${input.registry}`,
|
|
15
|
-
`BIOMAPPER_LINKER_URL=http://localhost:5173/`,
|
|
16
14
|
];
|
|
17
|
-
if (includeOpenAI) {
|
|
18
|
-
lines.unshift('OPENAI_API_KEY=your-openai-api-key', 'OPENAI_MODEL=gpt-4.1-mini');
|
|
19
|
-
}
|
|
20
15
|
return `${lines.join('\n')}\n`;
|
|
21
16
|
}
|
|
22
17
|
function buildGitIgnore() {
|