@tiangong-ai/cli 0.0.30 → 0.0.32

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 (38) hide show
  1. package/AGENTS.md +2 -2
  2. package/README.md +127 -97
  3. package/dist/edge-search.js +57 -16
  4. package/dist/edge-search.js.map +1 -1
  5. package/dist/http.js +17 -1
  6. package/dist/http.js.map +1 -1
  7. package/dist/research/orchestration.js +153 -4
  8. package/dist/research/orchestration.js.map +1 -1
  9. package/dist/research/workspace/broker.d.ts +5 -0
  10. package/dist/research/workspace/broker.js +130 -19
  11. package/dist/research/workspace/broker.js.map +1 -1
  12. package/dist/research/workspace/companion-readiness.d.ts +11 -0
  13. package/dist/research/workspace/companion-readiness.js +75 -0
  14. package/dist/research/workspace/companion-readiness.js.map +1 -0
  15. package/dist/research/workspace/external-skills.d.ts +95 -0
  16. package/dist/research/workspace/external-skills.js +79 -25
  17. package/dist/research/workspace/external-skills.js.map +1 -1
  18. package/dist/research/workspace/preflight.d.ts +22 -0
  19. package/dist/research/workspace/preflight.js +54 -5
  20. package/dist/research/workspace/preflight.js.map +1 -1
  21. package/dist/research/workspace/projects.js +27 -0
  22. package/dist/research/workspace/projects.js.map +1 -1
  23. package/dist/research/workspace/runtime.d.ts +68 -2
  24. package/dist/research/workspace/runtime.js +652 -14
  25. package/dist/research/workspace/runtime.js.map +1 -1
  26. package/dist/research/workspace/setup-catalog.d.ts +20 -2
  27. package/dist/research/workspace/setup-catalog.js +202 -5
  28. package/dist/research/workspace/setup-catalog.js.map +1 -1
  29. package/dist/research/workspace/setup-wizard.js +35 -13
  30. package/dist/research/workspace/setup-wizard.js.map +1 -1
  31. package/dist/research/workspace/setup.d.ts +30 -5
  32. package/dist/research/workspace/setup.js +500 -114
  33. package/dist/research/workspace/setup.js.map +1 -1
  34. package/dist/research/workspace/types.d.ts +9 -0
  35. package/dist/research/workspace/workspace.d.ts +2 -0
  36. package/dist/research/workspace/workspace.js +83 -20
  37. package/dist/research/workspace/workspace.js.map +1 -1
  38. package/package.json +2 -1
@@ -1,5 +1,5 @@
1
- import { readFile } from "node:fs/promises";
2
- import { isAbsolute } from "node:path";
1
+ import { lstat, readFile } from "node:fs/promises";
2
+ import { isAbsolute, resolve } from "node:path";
3
3
  import { CliError } from "../errors.js";
4
4
  import { stringifyJson, write } from "../io.js";
5
5
  import { parseStrictArgs, strictBoolean, strictString } from "../strict-args.js";
@@ -9,10 +9,11 @@ import { inspectResearchContext } from "./workspace/context.js";
9
9
  import { setCapabilityCredentialFromEnvironment } from "./workspace/credentials.js";
10
10
  import { configureExternalSkillProfile, doctorExternalCapabilities, EXTERNAL_SKILL_CONTEXT_PROFILE, EXTERNAL_SKILL_MEDIA_PROFILE, EXTERNAL_SKILL_PROFILE, importExternalCapability, inspectExternalSkillCatalog, } from "./workspace/external-skills.js";
11
11
  import { appendJournalEvent } from "./workspace/journal.js";
12
+ import { fetchNativeCandidateSource } from "./workspace/broker.js";
12
13
  import { readAndVerifyProjectInputPlan } from "./workspace/input-plan.js";
13
14
  import { addProjectInput, initializeProject, forkProject, listProjects, loadProject, nextReadyPackage, normalizeEvidenceRequirements, refreshProject, retryProjectPackage, } from "./workspace/projects.js";
14
15
  import { evaluateProjectPreflight } from "./workspace/preflight.js";
15
- import { runResearchWorkspace } from "./workspace/runtime.js";
16
+ import { abortNativeResearchStage, prepareNativeResearchStage, runResearchWorkspace, submitNativeResearchStage, } from "./workspace/runtime.js";
16
17
  import { schemaForStage } from "./workspace/schemas.js";
17
18
  import { sha256Text, workspacePaths } from "./workspace/storage.js";
18
19
  import { doctorResearchWorkspace, initializeResearchWorkspace, requireResearchWorkspace, withWorkspaceLock, } from "./workspace/workspace.js";
@@ -56,6 +57,10 @@ export function researchOrchestrationHelp() {
56
57
  tiangong-ai research project input add <project-id> --path <absolute-file> [--role primary|reference|replication] [--workspace <path>] [--json]
57
58
  tiangong-ai research project retry <project-id> [--package <package-id>] [--workspace <path>] [--json]
58
59
  tiangong-ai research project fork <source-project-id> --to <target-project-id> [--resume-through discover|analyze|synthesize] [--workspace <path>] [--json]
60
+ tiangong-ai research project stage prepare <project-id> --stage discover|analyze|synthesize --host-agent codex|claude [--workspace <path>] [--json]
61
+ tiangong-ai research project stage submit <project-id> --session <id> --output <absolute-json> [--confirm-model <id>] [--workspace <path>] [--json]
62
+ tiangong-ai research project stage abort <project-id> --session <id> [--workspace <path>] [--json]
63
+ tiangong-ai research project evidence fetch <project-id> --request <absolute-json> [--workspace <path>] [--json]
59
64
  tiangong-ai research schema show <discover|analyze|synthesize|review|doctor> [--json]
60
65
  tiangong-ai research status [--project <project-id>] [--workspace <absolute-path>] [--json]
61
66
  tiangong-ai research run [--project <project-id>] [--max-parallel <1-8>] [--max-cycles <1-100>] [--dry-run] [--progress-jsonl] [--workspace <absolute-path>] [--json]
@@ -276,6 +281,90 @@ async function runProject(argv, io) {
276
281
  const [action, ...rest] = argv;
277
282
  if (!action || action === "--help" || action === "-h")
278
283
  return writeHelp(io);
284
+ if (action === "stage") {
285
+ const [stageAction, ...stageRest] = rest;
286
+ if (stageAction === "prepare") {
287
+ const args = parseStrictArgs(stageRest, { ...WORKSPACE_OPTIONS, stage: "string", "host-agent": "string" }, "research project stage prepare");
288
+ if (strictBoolean(args, "help"))
289
+ return writeHelp(io);
290
+ const projectId = onePositional(args.positionals, "research project stage prepare");
291
+ const stage = nativeProducerStage(strictString(args, "stage"));
292
+ const hostAgent = nativeHostAgent(strictString(args, "host-agent"));
293
+ const root = await workspaceFromArgs(args);
294
+ const result = await prepareNativeResearchStage({ root, projectId, stage, hostAgent });
295
+ writeJson(io, result, args);
296
+ return 0;
297
+ }
298
+ if (stageAction === "submit") {
299
+ const args = parseStrictArgs(stageRest, {
300
+ ...WORKSPACE_OPTIONS,
301
+ session: "string",
302
+ output: "string",
303
+ "confirm-model": "string",
304
+ }, "research project stage submit");
305
+ if (strictBoolean(args, "help"))
306
+ return writeHelp(io);
307
+ const projectId = onePositional(args.positionals, "research project stage submit");
308
+ const sessionId = strictString(args, "session");
309
+ const outputPath = strictString(args, "output");
310
+ if (!sessionId || !outputPath) {
311
+ throw new CliError("stage submit requires --session and --output.", {
312
+ code: "RESEARCH_NATIVE_STAGE_OUTPUT_INVALID",
313
+ exitCode: 2,
314
+ });
315
+ }
316
+ const root = await workspaceFromArgs(args);
317
+ const result = await submitNativeResearchStage({
318
+ root,
319
+ projectId,
320
+ sessionId,
321
+ outputPath,
322
+ confirmedModel: strictString(args, "confirm-model") ?? null,
323
+ });
324
+ writeJson(io, result, args);
325
+ return 0;
326
+ }
327
+ if (stageAction === "abort") {
328
+ const args = parseStrictArgs(stageRest, { ...WORKSPACE_OPTIONS, session: "string" }, "research project stage abort");
329
+ if (strictBoolean(args, "help"))
330
+ return writeHelp(io);
331
+ const projectId = onePositional(args.positionals, "research project stage abort");
332
+ const sessionId = strictString(args, "session");
333
+ if (!sessionId) {
334
+ throw new CliError("stage abort requires --session.", {
335
+ code: "RESEARCH_NATIVE_STAGE_SESSION_REQUIRED",
336
+ exitCode: 2,
337
+ });
338
+ }
339
+ const root = await workspaceFromArgs(args);
340
+ const result = await abortNativeResearchStage({ root, projectId, sessionId });
341
+ writeJson(io, result, args);
342
+ return 0;
343
+ }
344
+ throw unknownAction("research project stage", stageAction ?? "");
345
+ }
346
+ if (action === "evidence") {
347
+ const [evidenceAction, ...evidenceRest] = rest;
348
+ if (evidenceAction !== "fetch") {
349
+ throw unknownAction("research project evidence", evidenceAction ?? "");
350
+ }
351
+ const args = parseStrictArgs(evidenceRest, { ...WORKSPACE_OPTIONS, request: "string" }, "research project evidence fetch");
352
+ if (strictBoolean(args, "help"))
353
+ return writeHelp(io);
354
+ const projectId = onePositional(args.positionals, "research project evidence fetch");
355
+ const requestPath = strictString(args, "request");
356
+ if (!requestPath) {
357
+ throw new CliError("evidence fetch requires --request.", {
358
+ code: "RESEARCH_BROKER_REQUEST_INVALID",
359
+ exitCode: 2,
360
+ });
361
+ }
362
+ const request = await readNativeEvidenceRequest(requestPath);
363
+ const root = await workspaceFromArgs(args);
364
+ const result = await withWorkspaceLock(root, "research.native-evidence.fetch", () => fetchNativeCandidateSource({ root, projectId, request }));
365
+ writeJson(io, result, args);
366
+ return 0;
367
+ }
279
368
  if (action === "init") {
280
369
  const args = parseStrictArgs(rest, {
281
370
  ...WORKSPACE_OPTIONS,
@@ -455,6 +544,12 @@ async function readEvidenceRequirements(path) {
455
544
  Array.isArray(value) ||
456
545
  !Array.isArray(value.dimensions) ||
457
546
  !Array.isArray(value.sourceTypes) ||
547
+ (value.requiredCapabilityIds !== undefined &&
548
+ !Array.isArray(value.requiredCapabilityIds)) ||
549
+ (value.requiredCompanionIds !== undefined &&
550
+ !Array.isArray(value.requiredCompanionIds)) ||
551
+ (value.requiredDiscoveryScopes !== undefined &&
552
+ !Array.isArray(value.requiredDiscoveryScopes)) ||
458
553
  typeof value.minSources !== "number" ||
459
554
  typeof value.minFullTextSources !== "number" ||
460
555
  typeof value.minDatedSources !== "number" ||
@@ -467,7 +562,12 @@ async function readEvidenceRequirements(path) {
467
562
  exitCode: 2,
468
563
  });
469
564
  }
470
- return normalizeEvidenceRequirements(value);
565
+ return normalizeEvidenceRequirements({
566
+ ...value,
567
+ requiredCapabilityIds: value.requiredCapabilityIds ?? [],
568
+ requiredCompanionIds: value.requiredCompanionIds ?? [],
569
+ requiredDiscoveryScopes: value.requiredDiscoveryScopes ?? [],
570
+ });
471
571
  }
472
572
  function researchMode(value) {
473
573
  if (!value || value === "smoke-test")
@@ -489,6 +589,55 @@ function resumeStage(value) {
489
589
  exitCode: 2,
490
590
  });
491
591
  }
592
+ function nativeProducerStage(value) {
593
+ if (value === "discover" || value === "analyze" || value === "synthesize")
594
+ return value;
595
+ throw new CliError("--stage must be discover, analyze, or synthesize.", {
596
+ code: "RESEARCH_NATIVE_STAGE_INVALID",
597
+ exitCode: 2,
598
+ });
599
+ }
600
+ function nativeHostAgent(value) {
601
+ if (value === "codex" || value === "claude")
602
+ return value;
603
+ throw new CliError("--host-agent must be codex or claude.", {
604
+ code: "RESEARCH_NATIVE_HOST_INVALID",
605
+ exitCode: 2,
606
+ });
607
+ }
608
+ async function readNativeEvidenceRequest(path) {
609
+ if (!isAbsolute(path)) {
610
+ throw new CliError("--request must be an absolute JSON file path.", {
611
+ code: "RESEARCH_BROKER_REQUEST_INVALID",
612
+ exitCode: 2,
613
+ });
614
+ }
615
+ const selected = resolve(path);
616
+ const info = await lstat(selected).catch(() => undefined);
617
+ if (!info?.isFile() || info.isSymbolicLink() || info.size > 1024 * 1024) {
618
+ throw new CliError("--request must be a bounded regular non-symlink JSON file.", {
619
+ code: "RESEARCH_BROKER_REQUEST_INVALID",
620
+ exitCode: 2,
621
+ });
622
+ }
623
+ let value;
624
+ try {
625
+ value = JSON.parse(await readFile(selected, "utf8"));
626
+ }
627
+ catch {
628
+ throw new CliError("--request contains invalid JSON.", {
629
+ code: "RESEARCH_BROKER_REQUEST_INVALID",
630
+ exitCode: 2,
631
+ });
632
+ }
633
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
634
+ throw new CliError("--request must contain one JSON object.", {
635
+ code: "RESEARCH_BROKER_REQUEST_INVALID",
636
+ exitCode: 2,
637
+ });
638
+ }
639
+ return value;
640
+ }
492
641
  async function workspaceFromArgs(args) {
493
642
  return requireResearchWorkspace(strictString(args, "workspace") ?? process.cwd());
494
643
  }
@@ -1 +1 @@
1
- {"version":3,"file":"orchestration.js","sourceRoot":"","sources":["../../src/research/orchestration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestration.js","sourceRoot":"","sources":["../../src/research/orchestration.ts"],"names":[],"mappings":"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"}
@@ -7,4 +7,9 @@ export interface CapabilityBroker {
7
7
  };
8
8
  stop(): Promise<void>;
9
9
  }
10
+ export declare function fetchNativeCandidateSource(input: {
11
+ root: string;
12
+ projectId: string;
13
+ request: Record<string, unknown>;
14
+ }): Promise<Record<string, unknown>>;
10
15
  export declare function startCapabilityBroker(root: string, projectId: string, capsuleProject: string): Promise<CapabilityBroker | undefined>;
@@ -6,7 +6,8 @@ import { CliError } from "../../errors.js";
6
6
  import { loadCapabilityDeclarations, verifyCapabilities } from "./capabilities.js";
7
7
  import { loadCapabilityCredentialMap } from "./credentials.js";
8
8
  import { loadBrokerEvidenceCache, persistBrokerEvidence, storeBrokerEvidenceCache, } from "./evidence.js";
9
- import { appendJournalEvent } from "./journal.js";
9
+ import { appendJournalEvent, readJournal } from "./journal.js";
10
+ import { loadProject } from "./projects.js";
10
11
  import { sanitizeResearchRecord, sanitizeResearchText } from "./sanitization.js";
11
12
  import { canonicalJson, ensureDirectory, isObject, resolveContained, sha256Text, workspacePaths, } from "./storage.js";
12
13
  import { loadWorkspaceConfig } from "./workspace.js";
@@ -16,6 +17,61 @@ const BROKER_CONTEXT_BYTES_PER_TOKEN = 3;
16
17
  const MAX_RATE_LIMIT_RETRIES = 1;
17
18
  const MAX_INLINE_RETRY_DELAY_SECONDS = 5;
18
19
  const DEFAULT_RATE_LIMIT_RETRY_SECONDS = 1;
20
+ export async function fetchNativeCandidateSource(input) {
21
+ const project = await loadProject(input.root, input.projectId);
22
+ const discover = project.packages.find((workPackage) => workPackage.stage === "discover");
23
+ if (discover?.status !== "running" || discover.executor !== "producer") {
24
+ throw new CliError("Native evidence fetch is allowed only during an active discover stage.", {
25
+ code: "RESEARCH_NATIVE_STAGE_REQUIRED",
26
+ exitCode: 3,
27
+ });
28
+ }
29
+ const declarations = await loadCapabilityDeclarations(input.root);
30
+ const capabilities = declarations.capabilities.filter((capability) => capability.permissions.includes("brokered-network"));
31
+ const verification = await verifyCapabilities(input.root);
32
+ if (verification.status !== "verified") {
33
+ throw new CliError("Native evidence fetch requires verified capability locks.", {
34
+ code: "RESEARCH_CAPABILITY_DRIFT",
35
+ exitCode: 3,
36
+ details: verification,
37
+ });
38
+ }
39
+ const config = await loadWorkspaceConfig(input.root);
40
+ const priorCalls = (await readJournal(workspacePaths(input.root).journal)).filter((event) => event.scope === input.projectId && event.type === "capability.fetch.attempted").length;
41
+ if (priorCalls >= config.budget.maxBrokerCalls) {
42
+ await appendJournalEvent(workspacePaths(input.root).journal, "capability.fetch.rejected", input.projectId, {
43
+ projectId: input.projectId,
44
+ code: "RESEARCH_BROKER_CALL_LIMIT_EXCEEDED",
45
+ maxCalls: config.budget.maxBrokerCalls,
46
+ startedCalls: priorCalls,
47
+ });
48
+ throw new CliError("The bounded broker call budget is exhausted.", {
49
+ code: "RESEARCH_BROKER_CALL_LIMIT_EXCEEDED",
50
+ exitCode: 3,
51
+ details: { maxCalls: config.budget.maxBrokerCalls, startedCalls: priorCalls },
52
+ });
53
+ }
54
+ const credentialMap = await loadCapabilityCredentialMap(input.root, declarations.capabilities);
55
+ const receipt = await fetchCandidateSource({
56
+ root: input.root,
57
+ projectId: input.projectId,
58
+ capsuleProject: null,
59
+ capabilities,
60
+ credentialMap,
61
+ workspaceResponseBytes: config.budget.maxBrokerResponseBytes,
62
+ workspaceContextTokens: config.budget.maxBrokerContextTokens,
63
+ workspaceMaxItems: config.budget.maxBrokerItems,
64
+ arguments: input.request,
65
+ });
66
+ return {
67
+ ...receipt,
68
+ brokerBudget: {
69
+ maxCalls: config.budget.maxBrokerCalls,
70
+ startedCalls: priorCalls + 1,
71
+ remainingCalls: Math.max(0, config.budget.maxBrokerCalls - priorCalls - 1),
72
+ },
73
+ };
74
+ }
19
75
  export async function startCapabilityBroker(root, projectId, capsuleProject) {
20
76
  const declarations = await loadCapabilityDeclarations(root);
21
77
  const networkCapabilities = declarations.capabilities.filter((capability) => capability.permissions.includes("brokered-network"));
@@ -239,32 +295,46 @@ async function fetchCandidateSource(input) {
239
295
  throw new Error('cache_mode must be "prefer" or "bypass"');
240
296
  }
241
297
  const capability = input.capabilities.find((candidate) => candidate.id === capabilityId);
242
- if (!capability)
243
- throw new Error(`capability is not admitted for brokered network: ${capabilityId}`);
244
- const target = validateHttpsUrl(rawUrl);
245
- if (!capability.http)
246
- throw new Error(`capability has no broker HTTP policy: ${capabilityId}`);
247
- assertEndpointScope(target, capability.http.endpoint);
248
- const encodedRequestBody = validateBrokerRequestBody(capability.http.method, requestBody, capability.http.maxRequestBytes);
298
+ if (!capability) {
299
+ throw brokerDiagnosticError("CAPABILITY_NOT_DECLARED", "The requested evidence capability is not present in the locked manifest.", false, "Have the workspace owner select or import the exact reviewed capability, configure it, rebuild the capability lock, and pass doctor before retrying.", { capabilityId });
300
+ }
301
+ if (!capability.http) {
302
+ throw brokerDiagnosticError("CAPABILITY_NOT_DECLARED", "The requested capability has no locked broker HTTP policy.", false, "Replace the capability declaration with a reviewed brokered-network capability and rebuild the lock.", { capabilityId });
303
+ }
304
+ let target;
305
+ let encodedRequestBody;
306
+ try {
307
+ target = validateHttpsUrl(rawUrl);
308
+ assertEndpointScope(target, capability.http.endpoint);
309
+ encodedRequestBody = validateBrokerRequestBody(capability.http.method, requestBody, capability.http.maxRequestBytes);
310
+ }
311
+ catch {
312
+ throw brokerDiagnosticError("BROKER_CREDENTIAL_INJECTION_REJECTED", "The broker rejected the request before credential injection because it does not match the locked endpoint or method policy.", false, "Use only the exact locked capability ID, endpoint, HTTP method, and non-secret request shape.", { capabilityId });
313
+ }
249
314
  const credential = credentialId
250
315
  ? capability.credentials.find((candidate) => candidate.id === credentialId)
251
316
  : capability.credentials.length === 1
252
317
  ? capability.credentials[0]
253
318
  : undefined;
254
319
  if (credentialId && !credential) {
255
- throw new Error(`credential is not declared by capability ${capabilityId}: ${credentialId}`);
320
+ throw brokerDiagnosticError("BROKER_CREDENTIAL_INJECTION_REJECTED", "The requested logical credential is not declared by the locked capability.", false, "Use the logical credential ID declared by the capability manifest; never pass credential values through tool arguments.", { capabilityId, credentialId });
256
321
  }
257
322
  if (!credentialId && capability.credentials.length > 1) {
258
- throw new Error(`credential_id is required by capability ${capabilityId}`);
323
+ throw brokerDiagnosticError("BROKER_CREDENTIAL_INJECTION_REJECTED", "The capability declares multiple logical credentials and requires an explicit credential ID.", false, "Select one logical credential ID from the locked capability declaration without including its value.", { capabilityId });
259
324
  }
260
325
  const effectiveCredentialId = credential?.id ?? null;
261
326
  const cacheMode = requestedCacheMode ?? (credential ? "bypass" : "prefer");
262
327
  if (credential && cacheMode === "prefer") {
263
- throw new Error("credentialed broker requests require cache_mode=bypass");
328
+ throw brokerDiagnosticError("BROKER_CREDENTIAL_INJECTION_REJECTED", "Credentialed broker requests cannot use the shared response cache.", false, "Retry the locked capability request with cache_mode=bypass.", { capabilityId, credentialId: credential.id });
329
+ }
330
+ try {
331
+ assertAllowedHost(target, capability.allowedHosts, "capability");
332
+ if (credential)
333
+ assertAllowedHost(target, credential.allowedHosts, "credential");
334
+ }
335
+ catch {
336
+ throw brokerDiagnosticError("BROKER_CREDENTIAL_INJECTION_REJECTED", "The broker refused credential injection because the target host is outside the locked policy.", false, "Use the exact credential-free HTTPS endpoint and host declared by the locked capability.", { capabilityId, credentialId: credential?.id ?? null });
264
337
  }
265
- assertAllowedHost(target, capability.allowedHosts, "capability");
266
- if (credential)
267
- assertAllowedHost(target, credential.allowedHosts, "credential");
268
338
  const attemptId = randomUUID();
269
339
  const maxItems = Math.min(requestedMaxItems ?? capability.http.maxItems, capability.http.maxItems, input.workspaceMaxItems);
270
340
  const cacheKeySha256 = sha256Text(canonicalJson({
@@ -307,7 +377,9 @@ async function fetchCandidateSource(input) {
307
377
  retrievedAt: cached.retrievedAt,
308
378
  cacheHit: true,
309
379
  }, raw, context.bytes);
310
- await stageContextObject(input.capsuleProject, receipt.contextLocator, context.bytes);
380
+ if (input.capsuleProject) {
381
+ await stageContextObject(input.capsuleProject, receipt.contextLocator, context.bytes);
382
+ }
311
383
  await appendCompletedReceipt(input.root, input.projectId, receipt, cacheKeySha256);
312
384
  return brokerToolResult(receipt, context.bytes, cached.contentType);
313
385
  }
@@ -318,8 +390,9 @@ async function fetchCandidateSource(input) {
318
390
  headers.set("Content-Type", "application/json");
319
391
  if (credential) {
320
392
  const value = input.credentialMap.get(credential.id);
321
- if (!value)
322
- throw new Error(`credential value is not configured: ${credential.id}`);
393
+ if (!value) {
394
+ throw brokerDiagnosticError("BROKER_CREDENTIAL_NOT_CONFIGURED", "The locked capability's logical credential is not configured in the broker store.", false, "Use research setup credential set with hidden input, stdin, or an owner environment variable, then rerun capability doctor.", { capabilityId, credentialId: credential.id });
395
+ }
323
396
  headers.set(credential.headerName, `${credential.prefix}${value}`);
324
397
  }
325
398
  const responseLimit = Math.min(capability.http.maxResponseBytes, input.workspaceResponseBytes);
@@ -366,10 +439,24 @@ async function fetchCandidateSource(input) {
366
439
  if (!response.ok) {
367
440
  const retryAfterSeconds = parseRetryAfter(response.headers.get("retry-after"));
368
441
  const excerpt = safeResponseExcerpt(bytes, contentType, [...input.credentialMap.values()]);
442
+ if (response.status === 401 || response.status === 403) {
443
+ throw brokerDiagnosticError("PROVIDER_AUTHENTICATION_FAILED", "The provider rejected the broker-injected logical credential or entitlement.", true, "Verify the configured logical credential and provider entitlement, then rerun capability doctor before retrying research.", {
444
+ capabilityId,
445
+ credentialId: effectiveCredentialId,
446
+ status: response.status,
447
+ requestId: safeResponseId(response.headers),
448
+ });
449
+ }
369
450
  throw new CliError(`HTTPS source returned status ${response.status}.`, {
370
451
  code: "RESEARCH_BROKER_HTTP_ERROR",
371
452
  exitCode: 3,
372
453
  details: {
454
+ executionMode: "broker",
455
+ credentialScope: "broker",
456
+ networkAttempted: true,
457
+ minimumAction: response.status === 429
458
+ ? "Honor Retry-After or the provider quota reset, then retry through the same locked broker capability."
459
+ : "Resolve the provider response or capability contract, then retry through the same locked broker capability.",
373
460
  status: response.status,
374
461
  retryAfterSeconds,
375
462
  responseExcerpt: excerpt,
@@ -402,7 +489,9 @@ async function fetchCandidateSource(input) {
402
489
  retrievedAt: new Date().toISOString(),
403
490
  cacheHit: false,
404
491
  }, bytes, context.bytes);
405
- await stageContextObject(input.capsuleProject, receipt.contextLocator, context.bytes);
492
+ if (input.capsuleProject) {
493
+ await stageContextObject(input.capsuleProject, receipt.contextLocator, context.bytes);
494
+ }
406
495
  if (!credential)
407
496
  await storeBrokerEvidenceCache(input.root, cacheKeySha256, receipt);
408
497
  await appendCompletedReceipt(input.root, input.projectId, receipt, cacheKeySha256);
@@ -786,7 +875,23 @@ function parseRetryAfter(value) {
786
875
  const date = Date.parse(value);
787
876
  return Number.isFinite(date) ? Math.max(0, Math.ceil((date - Date.now()) / 1000)) : null;
788
877
  }
878
+ function brokerDiagnosticError(code, message, networkAttempted, minimumAction, extra = {}) {
879
+ return new CliError(message, {
880
+ code,
881
+ exitCode: 3,
882
+ details: {
883
+ executionMode: "broker",
884
+ credentialScope: "broker",
885
+ networkAttempted,
886
+ minimumAction,
887
+ ...extra,
888
+ },
889
+ });
890
+ }
789
891
  function brokerFailureKind(error) {
892
+ if (error instanceof CliError && error.code === "PROVIDER_AUTHENTICATION_FAILED") {
893
+ return "deterministic";
894
+ }
790
895
  if (error instanceof CliError && error.code === "RESEARCH_BROKER_HTTP_ERROR") {
791
896
  const status = isObject(error.details) ? error.details.status : undefined;
792
897
  if (status === 429)
@@ -799,7 +904,13 @@ function brokerFailureKind(error) {
799
904
  }
800
905
  function validateHttpsUrl(value) {
801
906
  const url = new URL(value);
802
- if (url.protocol !== "https:" || url.username || url.password || !url.hostname) {
907
+ const sensitive = /^(access_token|api[_-]?key|apikey|auth|authorization|cookie|key|password|secret|session|sig|signature|token)$/i;
908
+ if (url.protocol !== "https:" ||
909
+ url.username ||
910
+ url.password ||
911
+ url.hash ||
912
+ !url.hostname ||
913
+ [...url.searchParams.keys()].some((key) => sensitive.test(key))) {
803
914
  throw new Error("broker URL must be credential-free HTTPS");
804
915
  }
805
916
  return url;