@llamaventures/cli 1.3.0 → 1.3.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/AGENT_BRIEFING.md +0 -1
- package/README.md +2 -3
- package/bin/llama-mcp.mjs +9 -9
- package/bin/llama.mjs +5 -5
- package/lib/external.mjs +5 -8
- package/package.json +2 -2
package/AGENT_BRIEFING.md
CHANGED
|
@@ -139,7 +139,6 @@ Tools available:
|
|
|
139
139
|
- `timeline` / `post`
|
|
140
140
|
- `mentions_list`
|
|
141
141
|
- `pitch_start` / `pitch_send_message` / `pitch_upload_file` / `pitch_status` / `pitch_finalize` — public intake (no Llama token needed; for founders / EAs / external agents)
|
|
142
|
-
- `llama_api` — escape hatch for any endpoint not yet wrapped (path must start `/api/`)
|
|
143
142
|
|
|
144
143
|
You can also fetch this exact briefing as an MCP prompt named `agent_briefing`.
|
|
145
144
|
|
package/README.md
CHANGED
|
@@ -342,9 +342,8 @@ llama pitch upload ./deck.pdf
|
|
|
342
342
|
llama pitch # interactive REPL
|
|
343
343
|
```
|
|
344
344
|
|
|
345
|
-
Server-enforced
|
|
346
|
-
|
|
347
|
-
1 M tokens/session.
|
|
345
|
+
Server-enforced rate limits apply (per-IP, per-email, per-session). If you
|
|
346
|
+
hit a limit, the CLI surfaces the server's response message.
|
|
348
347
|
|
|
349
348
|
This is genuine **agent-to-agent**: your AI helps you tell the story, our
|
|
350
349
|
intake agent extracts the structured fields and produces the verdict.
|
package/bin/llama-mcp.mjs
CHANGED
|
@@ -364,9 +364,8 @@ server.registerTool(
|
|
|
364
364
|
// founder's agent talks to ours, structured intake gets captured, and a
|
|
365
365
|
// 12-dimension verdict is returned.
|
|
366
366
|
//
|
|
367
|
-
// Anti-abuse
|
|
368
|
-
//
|
|
369
|
-
// surface those rejections as text back to the agent.
|
|
367
|
+
// Anti-abuse rate limits are server-enforced. The MCP tools surface
|
|
368
|
+
// any server-side rejections as text back to the agent.
|
|
370
369
|
|
|
371
370
|
function asTextResult(text, isError = false) {
|
|
372
371
|
return {
|
|
@@ -383,8 +382,8 @@ server.registerTool(
|
|
|
383
382
|
"when a founder (the user) wants to pitch their company to Llama. " +
|
|
384
383
|
"Requires their name + email. Returns a session_id; the conversation " +
|
|
385
384
|
"is then maintained via pitch_send_message until the agent finalizes. " +
|
|
386
|
-
"
|
|
387
|
-
"
|
|
385
|
+
"Server-enforced rate limits apply (per-IP, per-email, per-session). " +
|
|
386
|
+
"No Llama Command token needed.",
|
|
388
387
|
inputSchema: {
|
|
389
388
|
name: z.string().describe("the founder's full name (max 100 chars)"),
|
|
390
389
|
email: z.string().describe("the founder's email (deliverable, not a disposable domain)"),
|
|
@@ -447,8 +446,9 @@ server.registerTool(
|
|
|
447
446
|
description:
|
|
448
447
|
"Attach a file (deck, one-pager, deck PDF, screenshot, etc.) to the " +
|
|
449
448
|
"active pitch session. Server allows pdf / pptx / ppt / docx / doc / " +
|
|
450
|
-
"xlsx / xls / png / jpg / webp / heic / heif / txt / md,
|
|
451
|
-
"
|
|
449
|
+
"xlsx / xls / png / jpg / webp / heic / heif / txt / md, with " +
|
|
450
|
+
"server-enforced size and per-session count limits. " +
|
|
451
|
+
"Returns a drive_file_id; the intake agent will " +
|
|
452
452
|
"pick the file up via list_uploaded_files / read_uploaded_file on its " +
|
|
453
453
|
"next turn (so call pitch_send_message with a one-line note like " +
|
|
454
454
|
"'I just uploaded our pitch deck' so the agent knows to look).",
|
|
@@ -493,7 +493,7 @@ server.registerTool(
|
|
|
493
493
|
"server-side intake agent to finalize — the agent decides that on its " +
|
|
494
494
|
"own once the pitch is sufficient. Use this for cleanup after a session " +
|
|
495
495
|
"ends, or to abandon a session early. The server-side session will " +
|
|
496
|
-
"naturally expire after
|
|
496
|
+
"naturally expire after the server's idle timeout.",
|
|
497
497
|
inputSchema: {},
|
|
498
498
|
},
|
|
499
499
|
async () => {
|
|
@@ -505,7 +505,7 @@ server.registerTool(
|
|
|
505
505
|
{
|
|
506
506
|
cleared: before.active,
|
|
507
507
|
previous_session: before.active ? before : null,
|
|
508
|
-
note: "Local pitch session state cleared. Server-side session may still be active
|
|
508
|
+
note: "Local pitch session state cleared. Server-side session may still be active until its idle timeout.",
|
|
509
509
|
},
|
|
510
510
|
null,
|
|
511
511
|
2
|
package/bin/llama.mjs
CHANGED
|
@@ -242,7 +242,7 @@ Skill corrections (persona-owner pushback — read by persona-watcher):
|
|
|
242
242
|
llama skill-correction add <skill-slug> "<correction text>" [--deal <uuid>] [--block <blockId>]
|
|
243
243
|
llama skill-correction delete <id>
|
|
244
244
|
Server enforces persona owner OR system admin on POST/DELETE; GET is open.
|
|
245
|
-
External personas (owner_email=null
|
|
245
|
+
External personas (owner_email=null) are admin-only for write.
|
|
246
246
|
|
|
247
247
|
Mentions / Inbox:
|
|
248
248
|
llama mentions # default: my unresolved cues
|
|
@@ -318,9 +318,9 @@ Inspect / clean up:
|
|
|
318
318
|
llama pitch status # session id, idle minutes, finalized?
|
|
319
319
|
llama pitch end # clear local session state
|
|
320
320
|
|
|
321
|
-
Caps
|
|
322
|
-
|
|
323
|
-
|
|
321
|
+
Caps:
|
|
322
|
+
Server-enforced per-IP / per-email / per-session rate limits apply.
|
|
323
|
+
The CLI surfaces server messages if a limit is hit.
|
|
324
324
|
|
|
325
325
|
Environment:
|
|
326
326
|
LLAMA_API_URL override base URL (dev: http://localhost:3000)
|
|
@@ -411,7 +411,7 @@ Environment:
|
|
|
411
411
|
cleared: !!had,
|
|
412
412
|
session_file: EXTERNAL_SESSION_FILE,
|
|
413
413
|
note: had
|
|
414
|
-
? "Local session state cleared. Server-side session may still be active until idle timeout
|
|
414
|
+
? "Local session state cleared. Server-side session may still be active until idle timeout."
|
|
415
415
|
: "No local session was active.",
|
|
416
416
|
});
|
|
417
417
|
return;
|
package/lib/external.mjs
CHANGED
|
@@ -18,14 +18,11 @@ import { getBaseUrl } from "./client.mjs";
|
|
|
18
18
|
const SESSION_DIR = path.join(os.homedir(), ".llama");
|
|
19
19
|
const SESSION_FILE = path.join(SESSION_DIR, "external-session.json");
|
|
20
20
|
|
|
21
|
-
// Server-side proof-of-work prefix.
|
|
22
|
-
//
|
|
23
|
-
// commodity hardware (~50–500ms in node).
|
|
21
|
+
// Server-side proof-of-work prefix. Server-validated; tune in tandem
|
|
22
|
+
// with the server policy if changed.
|
|
24
23
|
const POW_DIFFICULTY_PREFIX = "0000";
|
|
25
24
|
|
|
26
|
-
//
|
|
27
|
-
// backdate by 4s when computing PoW so the request lands inside the
|
|
28
|
-
// validity window without waiting.
|
|
25
|
+
// Backdate offset for the rendered-at timestamp passed to the server.
|
|
29
26
|
const POW_BACKDATE_MS = 4_000;
|
|
30
27
|
|
|
31
28
|
// ============================================================
|
|
@@ -360,13 +357,13 @@ export async function uploadExternalFile(filePath) {
|
|
|
360
357
|
|
|
361
358
|
if (!res.ok) {
|
|
362
359
|
if (res.status === 413) {
|
|
363
|
-
throw new Error("File too large
|
|
360
|
+
throw new Error("File too large.");
|
|
364
361
|
}
|
|
365
362
|
if (res.status === 415) {
|
|
366
363
|
throw new Error(`MIME type "${mimetype}" not in server allowlist.`);
|
|
367
364
|
}
|
|
368
365
|
if (res.status === 429) {
|
|
369
|
-
throw new Error("Upload cap reached
|
|
366
|
+
throw new Error("Upload cap reached.");
|
|
370
367
|
}
|
|
371
368
|
if (res.status === 401 || res.status === 403) {
|
|
372
369
|
throw new Error(
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@llamaventures/cli",
|
|
3
|
-
"version": "1.3.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.3.1",
|
|
4
|
+
"description": "CLI + MCP server for the Llama Ventures investment workbench (command.llamaventures.vc).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"llama": "bin/llama.mjs",
|