@pome-sh/cli 0.33.0 → 0.33.1
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 +3 -3
- package/dist/build-info.json +3 -3
- package/dist/src/cli/main.js +19 -19
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@ prints it to the terminal and records it to the dashboard, and
|
|
|
11
11
|
|
|
12
12
|
**📚 Full documentation lives at [docs.pome.sh](https://docs.pome.sh).**
|
|
13
13
|
Run `pome --help` (or `pome help <command>`) for the CLI reference, and
|
|
14
|
-
`pome docs getting-started` to
|
|
14
|
+
`pome docs getting-started` to print the quickstart's URL.
|
|
15
15
|
|
|
16
16
|
## Install
|
|
17
17
|
|
|
@@ -40,7 +40,7 @@ local/OSS package release.
|
|
|
40
40
|
|
|
41
41
|
```bash
|
|
42
42
|
pome login # one-time; opens the dashboard to sign in
|
|
43
|
-
pome init # scaffolds tasks/, examples/agents/, runs/, pome.
|
|
43
|
+
pome init # scaffolds tasks/, examples/agents/, runs/, pome.json
|
|
44
44
|
pome register agent my-agent # scopes runs to this project
|
|
45
45
|
pome run tasks/01-bug-happy-path.md --agent "node examples/agents/scripted-triage-agent.ts"
|
|
46
46
|
pome inspect latest # trace/audit view of the last run
|
|
@@ -49,7 +49,7 @@ pome inspect latest # trace/audit view of the last run
|
|
|
49
49
|
To capture a trace without the cloud (self-host), then get a verdict later:
|
|
50
50
|
|
|
51
51
|
```bash
|
|
52
|
-
pome run --local tasks/01-bug-happy-path.md # captures a raw trace only
|
|
52
|
+
pome run --local tasks/01-bug-happy-path.md # captures a raw trace only, no verdict
|
|
53
53
|
pome eval runs/01-bug-happy-path/<run-id> # uploads it for a cloud verdict
|
|
54
54
|
```
|
|
55
55
|
|
package/dist/build-info.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"package": "pome-sh",
|
|
3
|
-
"version": "0.33.
|
|
4
|
-
"git_sha": "
|
|
5
|
-
"build_time": "2026-08-
|
|
3
|
+
"version": "0.33.1",
|
|
4
|
+
"git_sha": "15d61b80f3fb2ee0df893ca81c0c9e4d0afd0076",
|
|
5
|
+
"build_time": "2026-08-28T11:26:59.938Z"
|
|
6
6
|
}
|
package/dist/src/cli/main.js
CHANGED
|
@@ -4622,7 +4622,7 @@ var DEFAULT_AGENT_COMMAND = `node ${DEFAULT_AGENT_FILE}`;
|
|
|
4622
4622
|
var MANIFEST_SCHEMA_URL = "https://pome.sh/schemas/v1/pome.json";
|
|
4623
4623
|
var MAX_UNREADABLE_PATHS_SHOWN = 5;
|
|
4624
4624
|
function readPackageVersion() {
|
|
4625
|
-
if ("0.33.
|
|
4625
|
+
if ("0.33.1".length > 0) return "0.33.1";
|
|
4626
4626
|
try {
|
|
4627
4627
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
4628
4628
|
const candidates = [
|
|
@@ -4643,9 +4643,9 @@ function readPackageVersion() {
|
|
|
4643
4643
|
function createProgram() {
|
|
4644
4644
|
const program = new Command();
|
|
4645
4645
|
program.name("pome").description(
|
|
4646
|
-
"
|
|
4646
|
+
"Test AI agents against digital twins of real SaaS APIs. Runs are recorded to app.pome.sh. Start with `pome demo`."
|
|
4647
4647
|
).version(PACKAGE_VERSION).showHelpAfterError("(add --help for usage)");
|
|
4648
|
-
program.command("init").description("Create starter
|
|
4648
|
+
program.command("init").summary("Set up Pome in this project").description("Create pome.json, plus starter files in a new project").option(
|
|
4649
4649
|
"--sdk <name>",
|
|
4650
4650
|
"Scaffold for a specific agent SDK (claude | claude-managed). Adds the SDK-specific example file and pre-fills agent.framework so the dashboard badges runs correctly."
|
|
4651
4651
|
).option(
|
|
@@ -4720,7 +4720,7 @@ function createProgram() {
|
|
|
4720
4720
|
}
|
|
4721
4721
|
console.error(postInitMessage);
|
|
4722
4722
|
});
|
|
4723
|
-
program.command("login").description("Sign in with Clerk and store a hosted team API key (macOS Keychain or ~/.pome/credentials.json)").option(
|
|
4723
|
+
program.command("login").summary("Sign in and save an API key").description("Sign in with Clerk and store a hosted team API key (macOS Keychain or ~/.pome/credentials.json)").option(
|
|
4724
4724
|
"--api-url <url>",
|
|
4725
4725
|
"Control-plane base URL.",
|
|
4726
4726
|
process.env.POME_API_URL ?? DEFAULT_CONTROL_PLANE_URL
|
|
@@ -4737,14 +4737,14 @@ function createProgram() {
|
|
|
4737
4737
|
await loginWithClerk(options);
|
|
4738
4738
|
}
|
|
4739
4739
|
);
|
|
4740
|
-
program.command("logout").description("Remove locally stored hosted credentials (Keychain entry and/or ~/.pome/credentials.json)").action(async () => {
|
|
4740
|
+
program.command("logout").summary("Delete the saved API key").description("Remove locally stored hosted credentials (Keychain entry and/or ~/.pome/credentials.json)").action(async () => {
|
|
4741
4741
|
await clearLocalCredentials();
|
|
4742
4742
|
console.error("Removed local Pome credentials.");
|
|
4743
4743
|
console.error(
|
|
4744
4744
|
"Server-side keys are not auto-revoked \u2014 revoke API keys from the dashboard if this device was lost."
|
|
4745
4745
|
);
|
|
4746
4746
|
});
|
|
4747
|
-
program.command("docs").argument("[topic]", "Topic id (e.g. getting-started, github, cli) \u2014 prints the docs.pome.sh URL").option(
|
|
4747
|
+
program.command("docs").summary("Print a docs.pome.sh URL by topic").argument("[topic]", "Topic id (e.g. getting-started, github, cli) \u2014 prints the docs.pome.sh URL").option(
|
|
4748
4748
|
"--site <origin>",
|
|
4749
4749
|
"Override docs site origin (default https://docs.pome.sh)"
|
|
4750
4750
|
).option(
|
|
@@ -4756,7 +4756,7 @@ function createProgram() {
|
|
|
4756
4756
|
).action(async (topic, opts) => {
|
|
4757
4757
|
await runDocsCommand(topic, { site: opts.site, urlOnly: Boolean(opts.url) });
|
|
4758
4758
|
});
|
|
4759
|
-
program.command("tasks").argument(
|
|
4759
|
+
program.command("tasks").summary("List or copy the bundled tasks").argument(
|
|
4760
4760
|
"[twin]",
|
|
4761
4761
|
"Twin id (e.g. github). Omit to list available twins."
|
|
4762
4762
|
).option(
|
|
@@ -4781,7 +4781,7 @@ function createProgram() {
|
|
|
4781
4781
|
});
|
|
4782
4782
|
}
|
|
4783
4783
|
);
|
|
4784
|
-
const checks = program.command("checks").argument("[twin]", "Twin id (e.g. github). Omit to list twins that declare checks.").option("--json", "Emit the declaration as JSON (for skills and agents).", false).description(
|
|
4784
|
+
const checks = program.command("checks").summary("List, add, and lint a twin's checks").argument("[twin]", "Twin id (e.g. github). Omit to list twins that declare checks.").option("--json", "Emit the declaration as JSON (for skills and agents).", false).description(
|
|
4785
4785
|
"Browse the typed checks a twin declares \u2014 the closed set a [code] criterion is graded by"
|
|
4786
4786
|
).action(async (twin2, opts) => {
|
|
4787
4787
|
await runChecksCommand(twin2, { json: opts.json });
|
|
@@ -4807,7 +4807,7 @@ function createProgram() {
|
|
|
4807
4807
|
checks.command("lint").argument("<file...>", "Task markdown file(s) \u2014 shell globs work: tasks/*.md").description("Report [code] criteria that bind no declared check, so are never graded").action(async (files) => {
|
|
4808
4808
|
await runChecksLintCommand(files);
|
|
4809
4809
|
});
|
|
4810
|
-
program.command("compile-seeds").argument("[target]", "Task .md file or directory (defaults to ./tasks)").option("--force", "Recompile even if the sidecar's source hash matches", false).option(
|
|
4810
|
+
program.command("compile-seeds").summary("Compile a task's seed state to JSON").argument("[target]", "Task .md file or directory (defaults to ./tasks)").option("--force", "Recompile even if the sidecar's source hash matches", false).option(
|
|
4811
4811
|
"--hosted",
|
|
4812
4812
|
"Compile via the Pome control plane instead of calling Anthropic directly (uses your Pome API key; no ANTHROPIC_API_KEY needed)",
|
|
4813
4813
|
false
|
|
@@ -4825,7 +4825,7 @@ function createProgram() {
|
|
|
4825
4825
|
});
|
|
4826
4826
|
if (code !== 0) process.exitCode = code;
|
|
4827
4827
|
});
|
|
4828
|
-
const register = program.command("register").description(
|
|
4828
|
+
const register = program.command("register").summary("Register an agent with Pome").description(
|
|
4829
4829
|
"Register a cloud entity (agent, ...) and link this project to it"
|
|
4830
4830
|
);
|
|
4831
4831
|
register.command("agent").argument("<name>", 'Human-readable agent name (e.g. "triage-bot")').option(
|
|
@@ -4857,7 +4857,7 @@ function createProgram() {
|
|
|
4857
4857
|
}
|
|
4858
4858
|
}
|
|
4859
4859
|
);
|
|
4860
|
-
const session = program.command("sandbox").description(
|
|
4860
|
+
const session = program.command("sandbox").summary("Create, list, and stop sandboxes").description(
|
|
4861
4861
|
"Hosted sandboxes (same API as the dashboard Twins page \u2014 requires login)"
|
|
4862
4862
|
);
|
|
4863
4863
|
session.command("create").description("Create a hosted sandbox for one or more twins and print its connection info").option(
|
|
@@ -4972,7 +4972,7 @@ function createProgram() {
|
|
|
4972
4972
|
}
|
|
4973
4973
|
}
|
|
4974
4974
|
);
|
|
4975
|
-
program.command("run").argument(
|
|
4975
|
+
program.command("run").summary("Run a task and print the score").argument(
|
|
4976
4976
|
"[path]",
|
|
4977
4977
|
'Task markdown file or directory. Omit to run the demo task ("that was ours, run yours"): tasks/first-run-demo.md is dropped into your project on first use with runs: 5 pinned.'
|
|
4978
4978
|
).option("--agent <command>", "Agent command to run").option(
|
|
@@ -5183,7 +5183,7 @@ function createProgram() {
|
|
|
5183
5183
|
process.exitCode = worstExit;
|
|
5184
5184
|
}
|
|
5185
5185
|
);
|
|
5186
|
-
program.command("demo").description(
|
|
5186
|
+
program.command("demo").summary("Run a sample task, no account needed").description(
|
|
5187
5187
|
"Zero-auth first-run demo: boots a local GitHub twin, runs the bundled demo agent for 5 isolated trials (model calls via pome's anonymous demo gateway), and prints per-trial verdicts evaluated in Pome cloud. No signup, no API keys; ends with a no-login preview link."
|
|
5188
5188
|
).option(
|
|
5189
5189
|
"--api-url <url>",
|
|
@@ -5216,7 +5216,7 @@ function createProgram() {
|
|
|
5216
5216
|
const code = await runDemoAgentCommand();
|
|
5217
5217
|
if (code !== 0) process.exitCode = code;
|
|
5218
5218
|
});
|
|
5219
|
-
program.command("doctor").description(
|
|
5219
|
+
program.command("doctor").summary("Check the agent and twin wiring").description(
|
|
5220
5220
|
"Check the agent\u2194twin wiring: pome.json (or pome.yaml) present + valid, the local twin boots + serves, requests routed to the twin (not a hardcoded production host), egress floor active. On failure prints one named cause (file:line where knowable) + one concrete fix and exits non-zero."
|
|
5221
5221
|
).action(async () => {
|
|
5222
5222
|
const { runDoctorChecks } = await import('../../checks-CAP2CSEW.js');
|
|
@@ -5225,7 +5225,7 @@ function createProgram() {
|
|
|
5225
5225
|
for (const line of renderDoctorReport(report, { passNote: true })) console.error(line);
|
|
5226
5226
|
if (!report.ok) process.exitCode = 1;
|
|
5227
5227
|
});
|
|
5228
|
-
program.command("eval").argument(
|
|
5228
|
+
program.command("eval").summary("Score a trace recorded earlier").argument(
|
|
5229
5229
|
"[run-dir]",
|
|
5230
5230
|
"Existing run directory (runs/<task>/<run-id>). Omit to use <artifacts-dir>/latest.json."
|
|
5231
5231
|
).option(
|
|
@@ -5267,7 +5267,7 @@ function createProgram() {
|
|
|
5267
5267
|
for (const line of renderEvents(eventsResult.events)) console.log(line);
|
|
5268
5268
|
}
|
|
5269
5269
|
});
|
|
5270
|
-
program.command("fix-prompt").argument(
|
|
5270
|
+
program.command("fix-prompt").summary("Build a prompt for a failed run").argument(
|
|
5271
5271
|
"[target]",
|
|
5272
5272
|
"Artifacts root or a trial run dir (default: runs). Legacy form: a path to events.jsonl \u2014 then <task> is required."
|
|
5273
5273
|
).argument(
|
|
@@ -5383,7 +5383,7 @@ function createProgram() {
|
|
|
5383
5383
|
})
|
|
5384
5384
|
);
|
|
5385
5385
|
});
|
|
5386
|
-
const twin = program.command("twin").description("
|
|
5386
|
+
const twin = program.command("twin").summary("Run a twin on this machine").description("Start and reset a twin on this machine, print its status or a starter seed file");
|
|
5387
5387
|
twin.command("start").argument(
|
|
5388
5388
|
"[name]",
|
|
5389
5389
|
`Twin name (${TWIN_NAME_LIST.join(" | ")}). Optional when --seed names exactly one twin.`
|
|
@@ -5428,7 +5428,7 @@ function createProgram() {
|
|
|
5428
5428
|
}
|
|
5429
5429
|
console.log(await import('node:fs/promises').then((fs) => fs.readFile(".pome/twin-status.json", "utf8")));
|
|
5430
5430
|
});
|
|
5431
|
-
program.command("endpoints").argument("<name>", "Twin name").description("List
|
|
5431
|
+
program.command("endpoints").summary("List a twin's endpoints").argument("<name>", "Twin name").description("List the endpoints the github or gmail twin serves").action((name) => {
|
|
5432
5432
|
const endpoints = name === "github" ? SUPPORTED_GITHUB_ENDPOINTS : name === "gmail" ? SUPPORTED_GMAIL_ENDPOINTS : null;
|
|
5433
5433
|
if (!endpoints) {
|
|
5434
5434
|
throw new Error("Endpoint listing is available for: github, gmail.");
|
|
@@ -5437,7 +5437,7 @@ function createProgram() {
|
|
|
5437
5437
|
console.log(`${endpoint} semantic`);
|
|
5438
5438
|
}
|
|
5439
5439
|
});
|
|
5440
|
-
program.command("capture-server").description(
|
|
5440
|
+
program.command("capture-server").summary("Record the agent's model calls").description(
|
|
5441
5441
|
"Boot an HTTP CONNECT-tunnel proxy that appends one LlmCallEvent per tunnel to events.jsonl. Spawned by `pome run`; agent traffic flows via HTTPS_PROXY."
|
|
5442
5442
|
).option("--port <port>", "TCP port to listen on (0 = ephemeral).", "8910").option(
|
|
5443
5443
|
"--events-out <path>",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pome-sh/cli",
|
|
3
|
-
"version": "0.33.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.33.1",
|
|
4
|
+
"description": "Test AI agents against digital twins of real SaaS APIs. Records tool-call traces and scores them on pome.sh.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
7
7
|
"agents",
|