@letta-ai/letta-code 0.31.6 → 0.31.7

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.
@@ -75,12 +75,18 @@ export interface BackendCapabilities {
75
75
  localModelCatalog: boolean;
76
76
  localMemfs: boolean;
77
77
  }
78
+ export interface AgentSecret {
79
+ key: string;
80
+ value: string;
81
+ }
78
82
  export interface Backend {
79
83
  readonly capabilities: BackendCapabilities;
80
84
  retrieveAgent(agentId: string, options?: AgentRetrieveOptions): Promise<Awaited<ReturnType<APIClient["agents"]["retrieve"]>>>;
81
85
  listAgents(body?: AgentListBody): Promise<Awaited<ReturnType<APIClient["agents"]["list"]>>>;
82
86
  deleteAgent(agentId: string, options?: AgentDeleteOptions): Promise<Awaited<ReturnType<APIClient["agents"]["delete"]>>>;
83
87
  updateAgent(agentId: string, body: AgentUpdateBody, options?: AgentUpdateOptions): Promise<Awaited<ReturnType<APIClient["agents"]["update"]>>>;
88
+ /** Optional until every backend supports server-backed agent secrets. */
89
+ listAgentSecrets?(agentId: string): Promise<AgentSecret[]>;
84
90
  createAgent(body: AgentCreateBody, options?: AgentCreateOptions): Promise<Awaited<ReturnType<APIClient["agents"]["create"]>>>;
85
91
  retrieveConversation(conversationId: string, options?: ConversationRetrieveOptions): Promise<Awaited<ReturnType<APIClient["conversations"]["retrieve"]>>>;
86
92
  listConversations(body?: ConversationListBody): Promise<Awaited<ReturnType<APIClient["conversations"]["list"]>>>;
@@ -115,6 +121,7 @@ export declare class APIBackend implements Backend {
115
121
  constructor(deps?: APIBackendDeps);
116
122
  private getClient;
117
123
  retrieveAgent(agentId: string, options?: AgentRetrieveOptions): Promise<import("@letta-ai/letta-client/resources/index.mjs").AgentState>;
124
+ listAgentSecrets(agentId: string): Promise<AgentSecret[]>;
118
125
  listAgents(body?: AgentListBody): Promise<import("@letta-ai/letta-client/resources/index.mjs").AgentStatesArrayPage>;
119
126
  deleteAgent(agentId: string, options?: AgentDeleteOptions): Promise<unknown>;
120
127
  updateAgent(agentId: string, body: AgentUpdateBody, options?: AgentUpdateOptions): Promise<import("@letta-ai/letta-client/resources/index.mjs").AgentState>;
@@ -1 +1 @@
1
- {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../../src/backend/backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../../src/backend/backend.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,10 @@ type SecretsBackend = {
9
9
  capabilities: {
10
10
  serverSecrets: boolean;
11
11
  };
12
+ listAgentSecrets?: (agentId: string) => Promise<Array<{
13
+ key?: string;
14
+ value?: string;
15
+ }>>;
12
16
  retrieveAgent: (agentId: string, options?: {
13
17
  include?: string[];
14
18
  }) => Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"secrets-store.d.ts","sourceRoot":"","sources":["../../../src/utils/secrets-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH,KAAK,cAAc,GAAG;IACpB,YAAY,EAAE;QAAE,aAAa,EAAE,OAAO,CAAA;KAAE,CAAC;IACzC,aAAa,EAAE,CACb,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,KAC7B,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAC3E,WAAW,EAAE,CACX,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,KACtC,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7D,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD,CAAC;AAKF,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,cAAc,GAAG,IAAI,GAC7B,IAAI,CAEN;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,kBAAkB,GAAG,IAAI,GACjC,IAAI,CAEN;AA6SD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAA;CAAE,GACzE,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMpE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAE1D;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAUhD;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB,EACD,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CA6BnB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CA+BlB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAW/D"}
1
+ {"version":3,"file":"secrets-store.d.ts","sourceRoot":"","sources":["../../../src/utils/secrets-store.ts"],"names":[],"mappings":"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"}
package/letta.js CHANGED
@@ -5509,7 +5509,7 @@ var package_default;
5509
5509
  var init_package = __esm(() => {
5510
5510
  package_default = {
5511
5511
  name: "@letta-ai/letta-code",
5512
- version: "0.31.6",
5512
+ version: "0.31.7",
5513
5513
  description: "Letta Code is a CLI tool for interacting with stateful Letta agents from the terminal.",
5514
5514
  type: "module",
5515
5515
  packageManager: "bun@1.3.10",
@@ -84427,7 +84427,7 @@ function scheduleManagedSystemPromptUpdate({
84427
84427
  debugLog("startup", `Updated managed system prompt ${decision.prompt.preset}@${decision.prompt.version}: ${decision.reason}`);
84428
84428
  if (onUpdated) {
84429
84429
  const updatedAgent = await getBackend().retrieveAgent(agent.id, {
84430
- include: ["agent.secrets", "agent.tools", "agent.tags"]
84430
+ include: ["agent.tools", "agent.tags"]
84431
84431
  });
84432
84432
  onUpdated(updatedAgent);
84433
84433
  }
@@ -84687,7 +84687,7 @@ async function updateAgentLLMConfig(agentId, modelHandle, updateArgs, options) {
84687
84687
  ...maxTokens !== undefined && { max_tokens: maxTokens }
84688
84688
  });
84689
84689
  const finalAgent = await backend.retrieveAgent(agentId, {
84690
- include: ["agent.secrets", "agent.tools", "agent.tags"]
84690
+ include: ["agent.tools", "agent.tags"]
84691
84691
  });
84692
84692
  return finalAgent;
84693
84693
  }
@@ -84839,7 +84839,7 @@ async function updateAgentSystemPrompt(agentId, systemPromptId) {
84839
84839
  }
84840
84840
  }
84841
84841
  const agent = await backend.retrieveAgent(agentId, {
84842
- include: ["agent.secrets", "agent.tools", "agent.tags"]
84842
+ include: ["agent.tools", "agent.tags"]
84843
84843
  });
84844
84844
  return {
84845
84845
  success: true,
@@ -87711,12 +87711,12 @@ async function initSecretsFromServer(agentId, cachedAgent) {
87711
87711
  setCache(agentId, {});
87712
87712
  return;
87713
87713
  }
87714
- const agent = cachedAgent ?? await backend.retrieveAgent(agentId, {
87714
+ const agentSecrets = cachedAgent?.secrets ?? (backend.listAgentSecrets ? await backend.listAgentSecrets(agentId) : (await backend.retrieveAgent(agentId, {
87715
87715
  include: ["agent.secrets"]
87716
- });
87716
+ })).secrets);
87717
87717
  const secrets2 = {};
87718
- if (agent.secrets && Array.isArray(agent.secrets)) {
87719
- for (const env2 of agent.secrets) {
87718
+ if (Array.isArray(agentSecrets)) {
87719
+ for (const env2 of agentSecrets) {
87720
87720
  if (env2.key && env2.value) {
87721
87721
  secrets2[env2.key] = env2.value;
87722
87722
  }
@@ -135486,6 +135486,10 @@ class APIBackend {
135486
135486
  const client = await this.getClient();
135487
135487
  return client.agents.retrieve(agentId, options);
135488
135488
  }
135489
+ async listAgentSecrets(agentId) {
135490
+ const client = await this.getClient();
135491
+ return client.get(`/v1/agents/${encodeURIComponent(agentId)}/secrets`);
135492
+ }
135489
135493
  async listAgents(body) {
135490
135494
  const client = await this.getClient();
135491
135495
  return client.agents.list(body);
@@ -444702,7 +444706,7 @@ var init_mcp_client = __esm(() => {
444702
444706
  init_streamableHttp();
444703
444707
  DEFAULT_CLIENT_INFO = {
444704
444708
  name: "letta-code",
444705
- version: "0.31.6"
444709
+ version: "0.31.7"
444706
444710
  };
444707
444711
  });
444708
444712
 
@@ -446309,7 +446313,7 @@ In headless mode, use:
446309
446313
  debugLog("conversations", `retrieve(${specifiedConversationId}) [headless conv→agent lookup]`);
446310
446314
  const conversation = await backend3.retrieveConversation(specifiedConversationId);
446311
446315
  agent = await backend3.retrieveAgent(conversation.agent_id, {
446312
- include: ["agent.secrets", "agent.tools", "agent.tags"]
446316
+ include: ["agent.tools", "agent.tags"]
446313
446317
  });
446314
446318
  } catch (error5) {
446315
446319
  trackHeadlessBoundaryError("headless_conversation_lookup_failed", error5, "headless_startup_conversation_lookup");
@@ -446349,7 +446353,7 @@ In headless mode, use:
446349
446353
  if (!agent && specifiedAgentId) {
446350
446354
  try {
446351
446355
  agent = await backend3.retrieveAgent(specifiedAgentId, {
446352
- include: ["agent.secrets", "agent.tools", "agent.tags"]
446356
+ include: ["agent.tools", "agent.tags"]
446353
446357
  });
446354
446358
  } catch (_error) {
446355
446359
  if (specifiedAgentIdFromAmbientBackendSwitch) {
@@ -509015,7 +509019,7 @@ Error: ${message}`);
509015
509019
  } else {
509016
509020
  try {
509017
509021
  const agent2 = await backend3.retrieveAgent(agentIdArg, {
509018
- include: ["agent.secrets", "agent.tools", "agent.tags"]
509022
+ include: ["agent.tools", "agent.tags"]
509019
509023
  });
509020
509024
  setValidatedAgent(agent2);
509021
509025
  resolvedAgent = agent2;
@@ -509033,7 +509037,7 @@ Error: ${message}`);
509033
509037
  } else {
509034
509038
  try {
509035
509039
  const agent2 = await backend3.retrieveAgent(selectedGlobalAgentId, {
509036
- include: ["agent.secrets", "agent.tools", "agent.tags"]
509040
+ include: ["agent.tools", "agent.tags"]
509037
509041
  });
509038
509042
  setValidatedAgent(agent2);
509039
509043
  resolvedAgent = agent2;
@@ -511731,4 +511735,4 @@ function registerBunOAuthFlows() {
511731
511735
  registerBunOAuthFlows();
511732
511736
  await init_src5().then(() => exports_src2);
511733
511737
 
511734
- //# debugId=FC5C5F438D8A579464756E2164756E21
511738
+ //# debugId=DA5F1F664CBDFC6664756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letta-ai/letta-code",
3
- "version": "0.31.6",
3
+ "version": "0.31.7",
4
4
  "description": "Letta Code is a CLI tool for interacting with stateful Letta agents from the terminal.",
5
5
  "type": "module",
6
6
  "packageManager": "bun@1.3.10",
@@ -0,0 +1,97 @@
1
+ import { describe, expect, test } from "bun:test";
2
+ import {
3
+ enforceWatcherPrIdentity,
4
+ parseArgs,
5
+ type WatcherPullRequest,
6
+ } from "./verify-pr-identity.ts";
7
+
8
+ const marker = "Pi-ai-watch: 1.0.0...1.0.1";
9
+
10
+ function pullRequest(
11
+ overrides: Partial<WatcherPullRequest> = {},
12
+ ): WatcherPullRequest {
13
+ return {
14
+ author: { login: "amelia-letta" },
15
+ body: marker,
16
+ isDraft: true,
17
+ number: 123,
18
+ url: "https://github.com/letta-ai/letta-code/pull/123",
19
+ ...overrides,
20
+ };
21
+ }
22
+
23
+ function enforce(
24
+ pullRequests: WatcherPullRequest[],
25
+ closed: string[] = [],
26
+ ): WatcherPullRequest | null {
27
+ return enforceWatcherPrIdentity({
28
+ repo: "letta-ai/letta-code",
29
+ marker,
30
+ expectedLogin: "amelia-letta",
31
+ pullRequests,
32
+ closePullRequest: (candidate) => closed.push(candidate.url),
33
+ });
34
+ }
35
+
36
+ describe("enforceWatcherPrIdentity", () => {
37
+ test("returns the matching Amelia draft PR", () => {
38
+ expect(enforce([pullRequest()])?.number).toBe(123);
39
+ });
40
+
41
+ test("ignores unrelated open PRs", () => {
42
+ expect(enforce([pullRequest({ body: "unrelated" })])).toBeNull();
43
+ });
44
+
45
+ test("closes and rejects a PR from the wrong author", () => {
46
+ const closed: string[] = [];
47
+ expect(() =>
48
+ enforce([pullRequest({ author: { login: "carenthomas" } })], closed),
49
+ ).toThrow("author=carenthomas");
50
+ expect(closed).toEqual(["https://github.com/letta-ai/letta-code/pull/123"]);
51
+ });
52
+
53
+ test("closes and rejects a ready PR", () => {
54
+ const closed: string[] = [];
55
+ expect(() => enforce([pullRequest({ isDraft: false })], closed)).toThrow(
56
+ "draft=false",
57
+ );
58
+ expect(closed).toHaveLength(1);
59
+ });
60
+
61
+ test("rejects duplicate valid PRs", () => {
62
+ expect(() =>
63
+ enforce([
64
+ pullRequest(),
65
+ pullRequest({
66
+ number: 124,
67
+ url: "https://github.com/letta-ai/letta-code/pull/124",
68
+ }),
69
+ ]),
70
+ ).toThrow("Multiple open watcher PRs");
71
+ });
72
+ });
73
+
74
+ describe("parseArgs", () => {
75
+ test("requires every identity input", () => {
76
+ expect(() => parseArgs(["--repo", "letta-ai/letta-code"])).toThrow(
77
+ "--marker is required",
78
+ );
79
+ });
80
+
81
+ test("parses a complete invocation", () => {
82
+ expect(
83
+ parseArgs([
84
+ "--repo",
85
+ "letta-ai/letta-code",
86
+ "--marker",
87
+ marker,
88
+ "--expected-login",
89
+ "amelia-letta",
90
+ ]),
91
+ ).toEqual({
92
+ repo: "letta-ai/letta-code",
93
+ marker,
94
+ expectedLogin: "amelia-letta",
95
+ });
96
+ });
97
+ });
@@ -0,0 +1,119 @@
1
+ #!/usr/bin/env bun
2
+
3
+ import { spawnSync } from "node:child_process";
4
+
5
+ export interface WatcherPullRequest {
6
+ author: { login: string } | null;
7
+ body: string | null;
8
+ isDraft: boolean;
9
+ number: number;
10
+ url: string;
11
+ }
12
+
13
+ interface Args {
14
+ expectedLogin: string;
15
+ marker: string;
16
+ repo: string;
17
+ }
18
+
19
+ interface EnforceOptions extends Args {
20
+ closePullRequest: (pullRequest: WatcherPullRequest) => void;
21
+ pullRequests: WatcherPullRequest[];
22
+ }
23
+
24
+ export function enforceWatcherPrIdentity(
25
+ options: EnforceOptions,
26
+ ): WatcherPullRequest | null {
27
+ const matches = options.pullRequests.filter((pullRequest) =>
28
+ pullRequest.body?.includes(options.marker),
29
+ );
30
+ const invalid = matches.filter(
31
+ (pullRequest) =>
32
+ pullRequest.author?.login !== options.expectedLogin ||
33
+ !pullRequest.isDraft,
34
+ );
35
+
36
+ for (const pullRequest of invalid) options.closePullRequest(pullRequest);
37
+
38
+ if (invalid.length > 0) {
39
+ const details = invalid
40
+ .map(
41
+ (pullRequest) =>
42
+ `${pullRequest.url} (author=${pullRequest.author?.login ?? "unknown"}, draft=${pullRequest.isDraft})`,
43
+ )
44
+ .join(", ");
45
+ throw new Error(
46
+ `Closed watcher PRs that did not match author=${options.expectedLogin} and draft=true: ${details}`,
47
+ );
48
+ }
49
+ if (matches.length > 1) {
50
+ throw new Error(
51
+ `Multiple open watcher PRs contain marker ${JSON.stringify(options.marker)}`,
52
+ );
53
+ }
54
+ return matches[0] ?? null;
55
+ }
56
+
57
+ export function parseArgs(argv: string[]): Args {
58
+ let repo = "";
59
+ let marker = "";
60
+ let expectedLogin = "";
61
+ for (let index = 0; index < argv.length; index += 1) {
62
+ const argument = argv[index];
63
+ if (argument === "--repo") repo = argv[++index] ?? "";
64
+ else if (argument === "--marker") marker = argv[++index] ?? "";
65
+ else if (argument === "--expected-login") {
66
+ expectedLogin = argv[++index] ?? "";
67
+ } else {
68
+ throw new Error(`Unknown argument: ${argument}`);
69
+ }
70
+ }
71
+ if (!/^[^/]+\/[^/]+$/.test(repo)) throw new Error("--repo is required");
72
+ if (!marker) throw new Error("--marker is required");
73
+ if (!expectedLogin) throw new Error("--expected-login is required");
74
+ return { repo, marker, expectedLogin };
75
+ }
76
+
77
+ function runGh(args: string[]): string {
78
+ const result = spawnSync("gh", args, {
79
+ encoding: "utf8",
80
+ maxBuffer: 50 * 1024 * 1024,
81
+ stdio: ["ignore", "pipe", "pipe"],
82
+ });
83
+ if (result.status !== 0) {
84
+ throw new Error(`gh ${args.join(" ")} failed:\n${result.stderr}`);
85
+ }
86
+ return result.stdout;
87
+ }
88
+
89
+ function main(): void {
90
+ const args = parseArgs(process.argv.slice(2));
91
+ const pullRequests = JSON.parse(
92
+ runGh([
93
+ "pr",
94
+ "list",
95
+ "--repo",
96
+ args.repo,
97
+ "--state",
98
+ "open",
99
+ "--limit",
100
+ "1000",
101
+ "--json",
102
+ "author,body,isDraft,number,url",
103
+ ]),
104
+ ) as WatcherPullRequest[];
105
+ const verified = enforceWatcherPrIdentity({
106
+ ...args,
107
+ pullRequests,
108
+ closePullRequest: (pullRequest) => {
109
+ runGh(["pr", "close", pullRequest.url, "--repo", args.repo]);
110
+ },
111
+ });
112
+ console.log(
113
+ verified
114
+ ? `Verified Amelia draft PR: ${verified.url}`
115
+ : `No open PR contains marker ${JSON.stringify(args.marker)}`,
116
+ );
117
+ }
118
+
119
+ if (import.meta.main) main();
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env bun
2
2
  /** Validates a daily skill-review batch and updates the tracker once. */
3
3
 
4
- import { existsSync, readFileSync } from "node:fs";
4
+ import { readFileSync } from "node:fs";
5
5
  import { join } from "node:path";
6
6
  import {
7
7
  type BuiltinSkillWatchAnalysis,
@@ -9,6 +9,10 @@ import {
9
9
  DEFAULT_TARGET_REPO,
10
10
  } from "./analysis.ts";
11
11
  import { createIssueComment, editIssueBody } from "./github.ts";
12
+ import {
13
+ discoverReviewArtifacts,
14
+ formatFailureReceipt,
15
+ } from "./result-artifacts.ts";
12
16
  import {
13
17
  hasTerminalCandidate,
14
18
  parseTrackerState,
@@ -103,6 +107,7 @@ function main(): void {
103
107
  let state = parseTrackerState(original.body);
104
108
  let failed = false;
105
109
  const outcomes: ValidatedOutcome[] = [];
110
+ const artifacts = discoverReviewArtifacts(args.resultsDir as string);
106
111
 
107
112
  for (const candidate of manifest.candidates) {
108
113
  const analysisPath = join(
@@ -130,14 +135,14 @@ function main(): void {
130
135
  analysis.workflow_run_url = workflowRunUrl(pending.workflow_run_id);
131
136
  assertAnalysisIdentity(received, analysis);
132
137
 
133
- const resultPath = join(
134
- args.resultsDir as string,
135
- `builtin-skill-result-${received.skill}`,
136
- "result.json",
137
- );
138
+ const resultPath = artifacts.results.get(received.candidate_id);
138
139
  try {
139
- if (!existsSync(resultPath)) {
140
- throw new Error("Amelia result artifact is missing");
140
+ if (!resultPath) {
141
+ const receipt = artifacts.failures.get(received.candidate_id);
142
+ if (receipt) throw new Error(formatFailureReceipt(receipt));
143
+ throw new Error(
144
+ `Amelia result artifact is missing for ${received.candidate_id}`,
145
+ );
141
146
  }
142
147
  const result = readReviewResult(resultPath, analysis);
143
148
  if (result.pr_url) {
@@ -29,6 +29,27 @@ describe("review evidence", () => {
29
29
  expect(digestReviewEvidence(evidence)).toMatch(/^[a-f0-9]{64}$/);
30
30
  });
31
31
 
32
+ test("accepts RFC 3339 UTC timestamps without milliseconds", () => {
33
+ expect(() =>
34
+ parseReviewEvidence({
35
+ schema_version: 1,
36
+ candidate_id: "candidate",
37
+ skill: "creating-skills",
38
+ sources: [
39
+ {
40
+ locator: "src/skills/builtin/creating-skills/SKILL.md",
41
+ revision: "a".repeat(40),
42
+ content_digest: null,
43
+ retrieved_at: "2026-08-26T00:00:00Z",
44
+ excerpt: "current source",
45
+ claims: ["checked current source"],
46
+ },
47
+ ],
48
+ probes: [],
49
+ }),
50
+ ).not.toThrow();
51
+ });
52
+
32
53
  test("requires at least one source", () => {
33
54
  expect(() =>
34
55
  parseReviewEvidence({
@@ -38,7 +59,7 @@ describe("review evidence", () => {
38
59
  sources: [],
39
60
  probes: [],
40
61
  }),
41
- ).toThrow("sources are invalid");
62
+ ).toThrow("between 1 and 5 sources");
42
63
  });
43
64
 
44
65
  test("rejects malformed digests and timestamps", () => {
@@ -59,28 +80,51 @@ describe("review evidence", () => {
59
80
  ],
60
81
  probes: [],
61
82
  }),
62
- ).toThrow("sources are invalid");
83
+ ).toThrow("content_digest is invalid");
63
84
  });
64
85
 
65
- test("rejects evidence too large for the tracker", () => {
86
+ test("accepts production-sized evidence larger than the old tracker limit", () => {
87
+ const evidence = parseReviewEvidence({
88
+ schema_version: 1,
89
+ candidate_id: "candidate",
90
+ skill: "creating-skills",
91
+ sources: Array.from({ length: 5 }, (_, index) => ({
92
+ locator: `https://docs.letta.com/source-${index}`,
93
+ revision: "a".repeat(40),
94
+ content_digest: "b".repeat(64),
95
+ retrieved_at: "2026-08-26T00:00:00.000Z",
96
+ excerpt: "q".repeat(300),
97
+ claims: Array.from({ length: 5 }, () => "z".repeat(300)),
98
+ })),
99
+ probes: [],
100
+ });
101
+
102
+ expect(Buffer.byteLength(JSON.stringify(evidence), "utf8")).toBeGreaterThan(
103
+ 650,
104
+ );
105
+ });
106
+
107
+ test("still rejects evidence larger than an issue comment can safely hold", () => {
66
108
  expect(() =>
67
109
  parseReviewEvidence({
68
110
  schema_version: 1,
69
111
  candidate_id: "candidate",
70
112
  skill: "creating-skills",
71
- sources: [
72
- {
73
- locator: "x".repeat(500),
74
- revision: "y".repeat(300),
75
- content_digest: null,
76
- retrieved_at: "2026-08-26T00:00:00.000Z",
77
- excerpt: "q".repeat(300),
78
- claims: ["z".repeat(500)],
79
- },
80
- ],
81
- probes: [],
113
+ sources: Array.from({ length: 5 }, (_, index) => ({
114
+ locator: `https://docs.letta.com/${"x".repeat(450)}-${index}`,
115
+ revision: "y".repeat(300),
116
+ content_digest: null,
117
+ retrieved_at: "2026-08-26T00:00:00.000Z",
118
+ excerpt: "q".repeat(300),
119
+ claims: Array.from({ length: 5 }, () => "z".repeat(500)),
120
+ })),
121
+ probes: Array.from({ length: 5 }, () => ({
122
+ command: "c".repeat(500),
123
+ result_digest: "d".repeat(64),
124
+ summary: "s".repeat(500),
125
+ })),
82
126
  }),
83
- ).toThrow("exceeds 650 bytes");
127
+ ).toThrow("exceeds 16384 bytes");
84
128
  });
85
129
 
86
130
  test("requires a revision or digest and rejects unknown fields", () => {
@@ -100,7 +144,7 @@ describe("review evidence", () => {
100
144
  sources: [source],
101
145
  probes: [],
102
146
  }),
103
- ).toThrow("sources are invalid");
147
+ ).toThrow("requires a revision or content_digest");
104
148
  expect(() =>
105
149
  parseReviewEvidence({
106
150
  schema_version: 1,
@@ -109,6 +153,6 @@ describe("review evidence", () => {
109
153
  sources: [{ ...source, content_digest: "a".repeat(64), secret: "no" }],
110
154
  probes: [],
111
155
  }),
112
- ).toThrow("sources are invalid");
156
+ ).toThrow("unknown or missing fields");
113
157
  });
114
158
  });