@intent-engine/cli 0.1.26 → 0.1.28

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.
Files changed (116) hide show
  1. package/assets/viperjs-judge.sha256 +1 -0
  2. package/assets/viperjs-judge.wasm +0 -0
  3. package/dist/src/admin-commands.d.ts +2 -1
  4. package/dist/src/admin-commands.js +47 -2
  5. package/dist/src/admin-commands.js.map +1 -1
  6. package/dist/src/agent/create.js +3 -1
  7. package/dist/src/agent/create.js.map +1 -1
  8. package/dist/src/agent/mandate-agent.js +3 -1
  9. package/dist/src/agent/mandate-agent.js.map +1 -1
  10. package/dist/src/agent/mcp.js +3 -0
  11. package/dist/src/agent/mcp.js.map +1 -1
  12. package/dist/src/agent/problems.d.ts +15 -0
  13. package/dist/src/agent/problems.js +15 -0
  14. package/dist/src/agent/problems.js.map +1 -1
  15. package/dist/src/agent/profile.d.ts +4 -0
  16. package/dist/src/agent/profile.js +129 -0
  17. package/dist/src/agent/profile.js.map +1 -0
  18. package/dist/src/agent/registry.js +6 -0
  19. package/dist/src/agent/registry.js.map +1 -1
  20. package/dist/src/agent/reputation.d.ts +4 -0
  21. package/dist/src/agent/reputation.js +127 -0
  22. package/dist/src/agent/reputation.js.map +1 -0
  23. package/dist/src/agent/sales.d.ts +1 -1
  24. package/dist/src/agent/sales.js +4 -4
  25. package/dist/src/agent/sales.js.map +1 -1
  26. package/dist/src/agent/signed-prepare.js +2 -5
  27. package/dist/src/agent/signed-prepare.js.map +1 -1
  28. package/dist/src/agent/signed-relay.d.ts +1 -1
  29. package/dist/src/agent/signed-relay.js +2 -1
  30. package/dist/src/agent/signed-relay.js.map +1 -1
  31. package/dist/src/agent/signed-submit.js +2 -2
  32. package/dist/src/agent/signed-submit.js.map +1 -1
  33. package/dist/src/agent/wallet/committee.d.ts +4 -0
  34. package/dist/src/agent/wallet/committee.js +155 -0
  35. package/dist/src/agent/wallet/committee.js.map +1 -0
  36. package/dist/src/agent/wallet/releases.js +12 -3
  37. package/dist/src/agent/wallet/releases.js.map +1 -1
  38. package/dist/src/agent/wallet.d.ts +1 -0
  39. package/dist/src/agent/wallet.js +10 -0
  40. package/dist/src/agent/wallet.js.map +1 -1
  41. package/dist/src/agent/work-claims.d.ts +3 -0
  42. package/dist/src/agent/work-claims.js +138 -0
  43. package/dist/src/agent/work-claims.js.map +1 -0
  44. package/dist/src/arg-options.d.ts +501 -3
  45. package/dist/src/arg-options.js +76 -3
  46. package/dist/src/arg-options.js.map +1 -1
  47. package/dist/src/arg-usage.d.ts +2 -2
  48. package/dist/src/arg-usage.js +13 -4
  49. package/dist/src/arg-usage.js.map +1 -1
  50. package/dist/src/arg-values.d.ts +1 -1
  51. package/dist/src/arg-values.js +10 -6
  52. package/dist/src/arg-values.js.map +1 -1
  53. package/dist/src/args.d.ts +1 -6
  54. package/dist/src/args.js +51 -68
  55. package/dist/src/args.js.map +1 -1
  56. package/dist/src/artifact.d.ts +14 -1
  57. package/dist/src/artifact.js +57 -16
  58. package/dist/src/artifact.js.map +1 -1
  59. package/dist/src/check-process.d.ts +7 -0
  60. package/dist/src/check-process.js +78 -0
  61. package/dist/src/check-process.js.map +1 -1
  62. package/dist/src/claim-commands.d.ts +12 -0
  63. package/dist/src/claim-commands.js +170 -0
  64. package/dist/src/claim-commands.js.map +1 -0
  65. package/dist/src/clusters.d.ts +6 -0
  66. package/dist/src/clusters.js +15 -0
  67. package/dist/src/clusters.js.map +1 -0
  68. package/dist/src/command-types.d.ts +101 -4
  69. package/dist/src/commands.js +27 -1
  70. package/dist/src/commands.js.map +1 -1
  71. package/dist/src/committee-commands.d.ts +31 -0
  72. package/dist/src/committee-commands.js +167 -0
  73. package/dist/src/committee-commands.js.map +1 -0
  74. package/dist/src/host-judge.d.ts +11 -0
  75. package/dist/src/host-judge.js +120 -0
  76. package/dist/src/host-judge.js.map +1 -0
  77. package/dist/src/job-args.d.ts +4 -0
  78. package/dist/src/job-args.js +67 -0
  79. package/dist/src/job-args.js.map +1 -0
  80. package/dist/src/job-commands.js +3 -1
  81. package/dist/src/job-commands.js.map +1 -1
  82. package/dist/src/judge.d.ts +17 -1
  83. package/dist/src/judge.js +81 -19
  84. package/dist/src/judge.js.map +1 -1
  85. package/dist/src/main.d.ts +1 -0
  86. package/dist/src/main.js +11 -0
  87. package/dist/src/main.js.map +1 -1
  88. package/dist/src/monitor-args.d.ts +11 -0
  89. package/dist/src/monitor-args.js +58 -0
  90. package/dist/src/monitor-args.js.map +1 -0
  91. package/dist/src/monitor-fills.d.ts +13 -0
  92. package/dist/src/monitor-fills.js +56 -0
  93. package/dist/src/monitor-fills.js.map +1 -0
  94. package/dist/src/monitor.d.ts +60 -0
  95. package/dist/src/monitor.js +295 -0
  96. package/dist/src/monitor.js.map +1 -0
  97. package/dist/src/release-simulation.d.ts +18 -0
  98. package/dist/src/release-simulation.js +45 -0
  99. package/dist/src/release-simulation.js.map +1 -0
  100. package/dist/src/reputation-commands.d.ts +8 -0
  101. package/dist/src/reputation-commands.js +20 -0
  102. package/dist/src/reputation-commands.js.map +1 -0
  103. package/dist/src/sandbox.d.ts +46 -0
  104. package/dist/src/sandbox.js +142 -0
  105. package/dist/src/sandbox.js.map +1 -0
  106. package/dist/src/solve-commands.js +12 -8
  107. package/dist/src/solve-commands.js.map +1 -1
  108. package/dist/src/trust-args.d.ts +12 -0
  109. package/dist/src/trust-args.js +177 -0
  110. package/dist/src/trust-args.js.map +1 -0
  111. package/dist/src/version.d.ts +1 -1
  112. package/dist/src/version.js +1 -1
  113. package/dist/src/viper.d.ts +66 -0
  114. package/dist/src/viper.js +282 -0
  115. package/dist/src/viper.js.map +1 -0
  116. package/package.json +9 -7
@@ -0,0 +1,142 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { chmod, readdir, stat } from "node:fs/promises";
3
+ import { join, posix, relative, sep } from "node:path";
4
+ import { UsageError } from "./arg-values.js";
5
+ import { CHECK_ENV, docker, ENV_ARTIFACT_PATH, ENV_ARTIFACT_SHA256, ENV_SPEC_PATH } from "./check-process.js";
6
+ import { JudgeRefused } from "./judge-errors.js";
7
+ export const SANDBOX_IMAGE = "node:22-bookworm-slim@sha256:c3de60bf2f9dd0ac6370e6117950ff62d6e339527e7472301c9c78a017978392";
8
+ export const SANDBOX_MEMORY = "1g";
9
+ export const SANDBOX_CPUS = "1";
10
+ export const SANDBOX_PIDS = 256;
11
+ export const SANDBOX_TMP = "256m";
12
+ export const SANDBOX_USER = "65534:65534";
13
+ export const SANDBOX_ROOT = "/judge";
14
+ export const SANDBOX_HOME = "/tmp";
15
+ export const SANDBOX_KINDS = ["docker", "viper", "none"];
16
+ export const SANDBOX_NEEDED = "--sandbox must be docker, viper or none";
17
+ export const VIPER_TAKES_NO_RUN = "--sandbox viper judges the cases in the spec's judge-cases block, so it takes no --run and no --check";
18
+ export const IMAGE_NEEDS_DIGEST = "--sandbox-image must name an image by its digest, as <name>@sha256:<64 hex>; a reference without a digest is refused";
19
+ export const MEMORY_FORMAT = "--sandbox-memory must be a whole number of megabytes or gigabytes, such as 512m or 2g";
20
+ export const CPUS_FORMAT = "--sandbox-cpus must be a number of CPUs above 0, such as 1 or 1.5";
21
+ export const DOCKER_ENV = ["DOCKER_HOST", "DOCKER_CONTEXT", "DOCKER_CONFIG", "DOCKER_CERT_PATH", "DOCKER_TLS_VERIFY", "XDG_RUNTIME_DIR"];
22
+ const DIGESTED = /^[a-z0-9][a-z0-9._/:-]*@sha256:[0-9a-f]{64}$/;
23
+ const MEMORY = /^[1-9]\d{0,5}[mg]$/;
24
+ const CPUS = /^\d{1,3}(\.\d{1,2})?$/;
25
+ const SANDBOX_ONLY = ["sandbox-image", "sandbox-memory", "sandbox-cpus"];
26
+ const READABLE = 0o444;
27
+ const SEARCHABLE = 0o755;
28
+ export const sandboxOnly = (option) => `--${option} applies only with --sandbox docker`;
29
+ export function sandboxOf(values) {
30
+ const kind = values.sandbox ?? "docker";
31
+ if (!SANDBOX_KINDS.includes(kind)) {
32
+ throw new UsageError(SANDBOX_NEEDED);
33
+ }
34
+ if (kind === "none" || kind === "viper") {
35
+ const given = SANDBOX_ONLY.find((option) => values[option] !== undefined);
36
+ if (given !== undefined) {
37
+ throw new UsageError(sandboxOnly(given));
38
+ }
39
+ if (kind === "viper" && (values.run !== undefined || values.check !== undefined)) {
40
+ throw new UsageError(VIPER_TAKES_NO_RUN);
41
+ }
42
+ return { kind };
43
+ }
44
+ const image = values["sandbox-image"] ?? SANDBOX_IMAGE;
45
+ if (!DIGESTED.test(image)) {
46
+ throw new UsageError(IMAGE_NEEDS_DIGEST);
47
+ }
48
+ const memory = values["sandbox-memory"] ?? SANDBOX_MEMORY;
49
+ if (!MEMORY.test(memory)) {
50
+ throw new UsageError(MEMORY_FORMAT);
51
+ }
52
+ const cpus = values["sandbox-cpus"] ?? SANDBOX_CPUS;
53
+ if (!CPUS.test(cpus) || Number(cpus) <= 0) {
54
+ throw new UsageError(CPUS_FORMAT);
55
+ }
56
+ return { kind: "docker", image, memory, cpus };
57
+ }
58
+ export function dockerEnv(base) {
59
+ const env = {};
60
+ for (const key of [...CHECK_ENV, ...DOCKER_ENV]) {
61
+ const value = base[key];
62
+ if (value !== undefined) {
63
+ env[key] = value;
64
+ }
65
+ }
66
+ return env;
67
+ }
68
+ const DOCKER_INSTALL = ["https:", "", "docs.docker.com", "engine", "install", ""].join("/");
69
+ export const dockerMissing = (reason) => `docker is not available (${reason || "no answer"}), so the check cannot run in its sandbox and nothing was run or paid; install Docker from ${DOCKER_INSTALL} and start it, or pass --sandbox none to run the check with your own rights, files, keys and network`;
70
+ export const imageMissing = (image, reason) => `docker could not pull ${image} (${reason || "no answer"}); nothing was run or paid`;
71
+ export const NO_SANDBOX = "warning: --sandbox none ran the check with your own rights: it could read your files and keys and use your network";
72
+ export async function sandboxReady(sandbox, env) {
73
+ if (sandbox.kind !== "docker") {
74
+ return;
75
+ }
76
+ const server = await docker(["version", "--format", "{{.Server.Version}}"], env);
77
+ if (server.status !== 0) {
78
+ throw new JudgeRefused(dockerMissing(server.out));
79
+ }
80
+ if ((await docker(["image", "inspect", "--format", "{{.Id}}", sandbox.image], env)).status === 0) {
81
+ return;
82
+ }
83
+ const pulled = await docker(["pull", sandbox.image], env, true);
84
+ if (pulled.status !== 0) {
85
+ throw new JudgeRefused(imageMissing(sandbox.image, pulled.out));
86
+ }
87
+ }
88
+ export const containerName = () => `judge-${randomBytes(8).toString("hex")}`;
89
+ export const insideOf = (root, host) => posix.join(SANDBOX_ROOT, ...relative(root, host).split(sep));
90
+ export function containerArgs(sandbox, copy, sha256, run) {
91
+ const shared = ["work", "spec", ...(copy.check === undefined ? [] : ["check"])];
92
+ return [
93
+ "--network",
94
+ "none",
95
+ "--read-only",
96
+ "--cap-drop",
97
+ "ALL",
98
+ "--security-opt",
99
+ "no-new-privileges",
100
+ "--user",
101
+ SANDBOX_USER,
102
+ "--pids-limit",
103
+ String(SANDBOX_PIDS),
104
+ "--memory",
105
+ sandbox.memory,
106
+ "--memory-swap",
107
+ sandbox.memory,
108
+ "--cpus",
109
+ sandbox.cpus,
110
+ "--tmpfs",
111
+ `/tmp:rw,exec,nosuid,nodev,size=${SANDBOX_TMP}`,
112
+ ...shared.flatMap((dir) => ["--mount", `type=bind,source=${join(copy.root, dir)},target=${posix.join(SANDBOX_ROOT, dir)},readonly`]),
113
+ "--workdir",
114
+ SANDBOX_ROOT,
115
+ "--env",
116
+ `HOME=${SANDBOX_HOME}`,
117
+ "--env",
118
+ `${ENV_SPEC_PATH}=${insideOf(copy.root, copy.spec)}`,
119
+ "--env",
120
+ `${ENV_ARTIFACT_PATH}=${insideOf(copy.root, copy.path)}`,
121
+ "--env",
122
+ `${ENV_ARTIFACT_SHA256}=${sha256}`,
123
+ "--entrypoint",
124
+ "/bin/sh",
125
+ sandbox.image,
126
+ "-c",
127
+ run,
128
+ ];
129
+ }
130
+ export async function shareable(path) {
131
+ for (const entry of await readdir(path, { withFileTypes: true })) {
132
+ const full = join(path, entry.name);
133
+ if (entry.isDirectory()) {
134
+ await chmod(full, SEARCHABLE);
135
+ await shareable(full);
136
+ }
137
+ else {
138
+ await chmod(full, ((await stat(full)).mode & 0o777) | READABLE);
139
+ }
140
+ }
141
+ }
142
+ //# sourceMappingURL=sandbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/sandbox.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { getIntentDecoder, IntentStatus } from "@intent-engine/core";
2
- import { decodeLookupTable, issuePricer, backoff, jitoBundles, jupiterPricer, remembering, tick, tipAccount, } from "@intent-engine/solver";
2
+ import { decodeLookupTable, landings, issuePricer, backoff, jitoBundles, jupiterPricer, remembering, tick, tipAccount, } from "@intent-engine/solver";
3
3
  import { chainTime, createdAccount, loadConfig, tokenAmountOf, tokenProgramOf, } from "@intent-engine/client";
4
4
  import { priceOf, withPriority } from "./compute.js";
5
5
  const SOLVER_ROUTE_ACCOUNTS = 40;
@@ -43,6 +43,7 @@ export async function watchSolve(command, interval, runtime, emit) {
43
43
  backoff: held,
44
44
  send: command.jito === undefined ? async (wire) => ({ signature: await transport.submitWire(wire), confirmed: false }) : options.send,
45
45
  };
46
+ const failedOnChain = async (signature) => command.jito === undefined && (await transport.transactionOf?.(signature))?.failed === true;
46
47
  const changes = runtime.intentChanges(command.url);
47
48
  const inFlight = new Map();
48
49
  const failing = new Map();
@@ -64,18 +65,21 @@ export async function watchSolve(command, interval, runtime, emit) {
64
65
  emit({ at: now, scan: "changed", unreadable: decoded.unreadable });
65
66
  }
66
67
  const listed = decoded.intents;
67
- for (const [intent, until] of inFlight) {
68
- if (until <= now) {
69
- inFlight.delete(intent);
68
+ const lost = await landings(inFlight, now, listed, failedOnChain, held);
69
+ if (full) {
70
+ for (const [intent, flight] of inFlight) {
71
+ if (flight.until <= now) {
72
+ inFlight.delete(intent);
73
+ }
70
74
  }
71
75
  }
72
76
  const due = listed.filter(({ address }) => !inFlight.has(address));
73
77
  const { filled, sent, failed } = await tick({ ...live, chain: { ...chain, intents: async () => due } });
74
- for (const { intent } of sent) {
75
- inFlight.set(intent, now + IN_FLIGHT_SECONDS);
78
+ for (const { intent, signature } of sent) {
79
+ inFlight.set(intent, { until: now + IN_FLIGHT_SECONDS, signature });
76
80
  }
77
- if (filled.length + sent.length + failed.length > 0) {
78
- emit({ at: now, scan: full ? "full" : "changed", ms: Math.round(performance.now() - began), filled, sent, failed });
81
+ if (filled.length + sent.length + failed.length + lost.length > 0) {
82
+ emit({ at: now, scan: full ? "full" : "changed", ms: Math.round(performance.now() - began), filled, sent, failed: [...lost, ...failed] });
79
83
  acted += filled.length + sent.length;
80
84
  }
81
85
  for (const [intent, at] of failing) {
@@ -1 +1 @@
1
- {"version":3,"file":"solve-commands.js","sourceRoot":"","sources":["../../src/solve-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solve-commands.js","sourceRoot":"","sources":["../../src/solve-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { OPTIONS, type Values } from "./arg-options.js";
2
+ import type { Command, Remote } from "./command-types.js";
3
+ export declare const COMMITTEE_SUBS = "committee needs create, show, vote or release";
4
+ export declare function committeeOf(sub: string | undefined, remote: Remote, values: Values): Command;
5
+ export declare function reputationOf(sub: string | undefined, remote: Remote, values: Values): Command;
6
+ export declare function feedbackOf(sub: string | undefined, remote: Remote, values: Values): Command;
7
+ export declare const CLAIMS_SUBS = "claims needs show, open, take, drop or settle";
8
+ export declare const PROFILE_SUBS = "profile needs show, set or close";
9
+ export declare const STAKE_FORMAT: string;
10
+ export declare const PROFILE_RULE = "a profile needs --skills of 1 to 8 distinct tags, each 1 to 16 of a-z, 0-9 and - not starting or ending with -, an --endpoint of https:// and at most 128 printable characters without spaces or \\, and --doc-url only together with --doc-sha256";
11
+ export declare function optionsFor(argv: readonly string[]): typeof OPTIONS;
12
+ export declare function trustOf(verb: string, sub: string | undefined, remote: Remote, values: Values): Command;
@@ -0,0 +1,177 @@
1
+ import { parseArgs } from "node:util";
2
+ import { checkProfile, IntentCoreError, MAX_CLAIM_SECS, MAX_CLAIM_STAKE, MAX_COMMITTEE_MEMBERS, MAX_FEEDBACK_SCORE, parseAmount, TOKEN_AMOUNT_PATTERN, } from "@intent-engine/core";
3
+ import { OPTIONS, PROFILE_OPTIONS } from "./arg-options.js";
4
+ import { addressList, key, noSub, parseAddress, parseBounded, required, sha256Of, u64, UsageError } from "./arg-values.js";
5
+ import { maxPagesOf } from "./command-builders.js";
6
+ export const COMMITTEE_SUBS = "committee needs create, show, vote or release";
7
+ function votesOf(values) {
8
+ const votes = values.vote ?? [];
9
+ if (votes.length === 0) {
10
+ throw new UsageError("committee release needs at least one --vote <file>");
11
+ }
12
+ return votes;
13
+ }
14
+ function membersOf(values) {
15
+ const members = addressList(required(values, "members"), "members");
16
+ if (members.length > MAX_COMMITTEE_MEMBERS) {
17
+ throw new UsageError(`--members takes at most ${MAX_COMMITTEE_MEMBERS} addresses`);
18
+ }
19
+ return members;
20
+ }
21
+ export function committeeOf(sub, remote, values) {
22
+ switch (sub) {
23
+ case "create": {
24
+ const members = membersOf(values);
25
+ return {
26
+ name: "committee-create",
27
+ ...remote,
28
+ keypair: required(values, "keypair"),
29
+ yes: values.yes === true,
30
+ members,
31
+ threshold: parseBounded(required(values, "threshold"), "threshold", members.length, 1),
32
+ feeWallet: key(values, "fee-wallet"),
33
+ };
34
+ }
35
+ case "show":
36
+ return { name: "committee-show", ...remote, committee: key(values, "committee") };
37
+ case "vote":
38
+ return {
39
+ name: "committee-vote",
40
+ ...remote,
41
+ keypair: required(values, "keypair"),
42
+ yes: values.yes === true,
43
+ owner: key(values, "owner"),
44
+ nonce: u64(values, "nonce"),
45
+ payTo: key(values, "pay-to"),
46
+ result: u64(values, "result"),
47
+ out: values.out,
48
+ };
49
+ case "release":
50
+ return {
51
+ name: "committee-release",
52
+ ...remote,
53
+ keypair: required(values, "keypair"),
54
+ yes: values.yes === true,
55
+ votes: votesOf(values),
56
+ sha256: values.sha256 === undefined ? undefined : sha256Of(values.sha256),
57
+ };
58
+ default:
59
+ throw new UsageError(COMMITTEE_SUBS);
60
+ }
61
+ }
62
+ export function reputationOf(sub, remote, values) {
63
+ noSub(sub);
64
+ return { name: "reputation", ...remote, worker: key(values, "worker"), maxPages: maxPagesOf(values) };
65
+ }
66
+ export function feedbackOf(sub, remote, values) {
67
+ noSub(sub);
68
+ return {
69
+ name: "feedback",
70
+ ...remote,
71
+ keypair: required(values, "keypair"),
72
+ yes: values.yes === true,
73
+ intent: key(values, "intent"),
74
+ score: parseBounded(required(values, "score"), "score", MAX_FEEDBACK_SCORE),
75
+ note: values.note === undefined ? undefined : sha256Of(values.note, "--note must be the note's sha256 as 64 hex digits"),
76
+ };
77
+ }
78
+ export const CLAIMS_SUBS = "claims needs show, open, take, drop or settle";
79
+ export const PROFILE_SUBS = "profile needs show, set or close";
80
+ export const STAKE_FORMAT = `--stake is SOL from 0 to ${MAX_CLAIM_STAKE / 1000000000n} with at most 9 decimals, such as 0.01`;
81
+ export const PROFILE_RULE = "a profile needs --skills of 1 to 8 distinct tags, each 1 to 16 of a-z, 0-9 and - not starting or ending with -, an --endpoint of https:// and at most 128 printable characters without spaces or \\, and --doc-url only together with --doc-sha256";
82
+ export function optionsFor(argv) {
83
+ const [verb] = parseArgs({ args: [...argv], options: OPTIONS, allowPositionals: true, strict: false }).positionals;
84
+ return (verb === "profile" ? PROFILE_OPTIONS : OPTIONS);
85
+ }
86
+ function stakeOf(values) {
87
+ const text = required(values, "stake");
88
+ let lamports;
89
+ try {
90
+ lamports = TOKEN_AMOUNT_PATTERN.test(text) ? parseAmount(text, 9) : -1n;
91
+ }
92
+ catch {
93
+ lamports = -1n;
94
+ }
95
+ if (lamports < 0n || lamports > MAX_CLAIM_STAKE) {
96
+ throw new UsageError(STAKE_FORMAT);
97
+ }
98
+ return lamports;
99
+ }
100
+ function claimsOf(sub, remote, values) {
101
+ const nonce = u64(values, "nonce");
102
+ switch (sub) {
103
+ case "show":
104
+ return { name: "claims-show", ...remote, owner: key(values, "owner"), nonce };
105
+ case "open":
106
+ return {
107
+ name: "claims-open",
108
+ ...remote,
109
+ keypair: required(values, "keypair"),
110
+ yes: values.yes === true,
111
+ nonce,
112
+ maxSecs: parseBounded(required(values, "max-secs"), "max-secs", MAX_CLAIM_SECS, 1),
113
+ stake: stakeOf(values),
114
+ };
115
+ case "take":
116
+ return {
117
+ name: "claims-take",
118
+ ...remote,
119
+ keypair: required(values, "keypair"),
120
+ yes: values.yes === true,
121
+ owner: key(values, "owner"),
122
+ nonce,
123
+ secs: parseBounded(required(values, "secs"), "secs", MAX_CLAIM_SECS, 1),
124
+ };
125
+ default:
126
+ return { name: sub === "drop" ? "claims-drop" : "claims-settle", ...remote, keypair: required(values, "keypair"), yes: values.yes === true, owner: key(values, "owner"), nonce };
127
+ }
128
+ }
129
+ function profileInput(values) {
130
+ const docUrl = values["doc-url"];
131
+ const docSha256 = values["doc-sha256"];
132
+ const input = {
133
+ skills: required(values, "skills").split(",").map((s) => s.trim()),
134
+ endpoint: required(values, "endpoint"),
135
+ ...(docUrl === undefined ? {} : { docUrl }),
136
+ ...(docSha256 === undefined ? {} : { docSha256 }),
137
+ };
138
+ try {
139
+ return checkProfile(input);
140
+ }
141
+ catch (error) {
142
+ throw error instanceof IntentCoreError ? new UsageError(PROFILE_RULE) : error;
143
+ }
144
+ }
145
+ function profileOf(sub, remote, values) {
146
+ switch (sub) {
147
+ case "show":
148
+ if (typeof values.wallet !== "string") {
149
+ throw new UsageError("missing --wallet");
150
+ }
151
+ return { name: "profile-show", ...remote, wallet: parseAddress(values.wallet, "wallet") };
152
+ case "set":
153
+ return { name: "profile-set", ...remote, keypair: required(values, "keypair"), yes: values.yes === true, profile: profileInput(values) };
154
+ case "close":
155
+ return { name: "profile-close", ...remote, keypair: required(values, "keypair"), yes: values.yes === true };
156
+ default:
157
+ throw new UsageError(PROFILE_SUBS);
158
+ }
159
+ }
160
+ export function trustOf(verb, sub, remote, values) {
161
+ switch (verb) {
162
+ case "committee":
163
+ return committeeOf(sub, remote, values);
164
+ case "reputation":
165
+ return reputationOf(sub, remote, values);
166
+ case "feedback":
167
+ return feedbackOf(sub, remote, values);
168
+ case "claims":
169
+ if (sub === undefined || !["show", "open", "take", "drop", "settle"].includes(sub)) {
170
+ throw new UsageError(CLAIMS_SUBS);
171
+ }
172
+ return claimsOf(sub, remote, values);
173
+ default:
174
+ return profileOf(sub, remote, values);
175
+ }
176
+ }
177
+ //# sourceMappingURL=trust-args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-args.js","sourceRoot":"","sources":["../../src/trust-args.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export declare const VERSION = "0.1.26";
1
+ export declare const VERSION = "0.1.28";
@@ -1,2 +1,2 @@
1
- export const VERSION = "0.1.26";
1
+ export const VERSION = "0.1.28";
2
2
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,66 @@
1
+ export declare const VIPER_WASM_SHA256 = "c039ca2a8d2eb26701ccd704e4b0d26bef9cefa13a90a951d51d776867de7c7d";
2
+ export declare const VIPER_ENGINE_COMMIT = "d2bccdb8f77f78bddf07fad22ec76bfedbfbbf0f";
3
+ export declare const CASES_FENCE = "judge-cases";
4
+ export declare const DEFAULT_STEPS = 10000000;
5
+ export declare const DEFAULT_HEAP: number;
6
+ export declare const MAX_STEPS = 1000000000;
7
+ export declare const MAX_HEAP: number;
8
+ export declare const MAX_CASES = 10000;
9
+ export declare const MAX_ARGUMENTS = 64;
10
+ export declare const OUTPUT_BYTES: number;
11
+ export declare const DIAGNOSTIC_BYTES: number;
12
+ export declare const REPORTED_FAILURES = 20;
13
+ export declare const CLOCK_FROM: number;
14
+ export declare const CLOCK_TO: number;
15
+ export declare const SEED_LIMIT: number;
16
+ export type Primitive = null | boolean | number | string;
17
+ export type Case = {
18
+ args: Primitive[];
19
+ expected: Primitive;
20
+ };
21
+ export type Cases = {
22
+ steps: number;
23
+ heap: number;
24
+ seed: number | undefined;
25
+ clock: number | undefined;
26
+ cases: Case[];
27
+ };
28
+ export type Run = {
29
+ seed: number;
30
+ clock: number;
31
+ };
32
+ export type CaseVerdict = "pass" | "wrong" | "not-primitive" | "threw" | "stopped" | "no-module" | "engine" | "crashed";
33
+ export type CaseResult = {
34
+ verdict: CaseVerdict;
35
+ detail?: Primitive;
36
+ };
37
+ export type Failure = {
38
+ case: number;
39
+ verdict: CaseVerdict;
40
+ detail?: Primitive;
41
+ };
42
+ export type Judged = {
43
+ total: number;
44
+ passed: number;
45
+ failures: Failure[];
46
+ seed: number;
47
+ clock: number;
48
+ };
49
+ export declare const casesMissing: (count: number) => string;
50
+ export declare function casesOf(spec: Uint8Array): Cases;
51
+ export declare const runOf: (cases: Cases) => Run;
52
+ export declare function encodeInput(source: string, cases: Cases, run: Run): Buffer;
53
+ export declare function decodeOutput(bytes: Buffer, expected: number): CaseResult[];
54
+ export declare function summarize(results: CaseResult[], run: Run): Judged;
55
+ export declare function wasmPath(): string;
56
+ export declare function pinnedWasm(path?: string): Promise<Buffer>;
57
+ export declare const RUNNER = "\nconst chunks = [];\nfor await (const chunk of process.stdin) chunks.push(chunk);\nconst all = Buffer.concat(chunks);\nconst length = all.readUInt32LE(0);\nconst module = await WebAssembly.compile(all.subarray(4, 4 + length));\nif (WebAssembly.Module.imports(module).length !== 0) process.exit(3);\nconst { exports } = await WebAssembly.instantiate(module, {});\nconst input = all.subarray(4 + length);\nconst at = exports.input(input.length);\nnew Uint8Array(exports.memory.buffer, at, input.length).set(input);\nconst produced = exports.run();\nprocess.stdout.write(Buffer.from(new Uint8Array(exports.memory.buffer, exports.output(), produced)));\n";
58
+ export declare const permissionFlag: () => string;
59
+ export type Ran = {
60
+ output: Buffer;
61
+ exitCode: number | null;
62
+ timedOut: boolean;
63
+ diagnostic: string;
64
+ };
65
+ export declare function runViper(wasm: Buffer, input: Buffer, timeoutSeconds: number): Promise<Ran>;
66
+ export declare function judgeViper(wasm: Buffer, source: Uint8Array, cases: Cases, timeoutSeconds: number): Promise<Judged>;