@tiangong-ai/cli 0.0.21 → 0.0.23

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 (36) hide show
  1. package/AGENTS.md +3 -2
  2. package/README.md +110 -10
  3. package/dist/cli.d.ts +1 -0
  4. package/dist/cli.js +25 -3
  5. package/dist/cli.js.map +1 -1
  6. package/dist/research/orchestration.js +117 -4
  7. package/dist/research/orchestration.js.map +1 -1
  8. package/dist/research/workspace/broker.js +38 -46
  9. package/dist/research/workspace/broker.js.map +1 -1
  10. package/dist/research/workspace/capabilities.d.ts +2 -0
  11. package/dist/research/workspace/capabilities.js +246 -7
  12. package/dist/research/workspace/capabilities.js.map +1 -1
  13. package/dist/research/workspace/constants.d.ts +2 -2
  14. package/dist/research/workspace/constants.js +6 -0
  15. package/dist/research/workspace/constants.js.map +1 -1
  16. package/dist/research/workspace/credentials.d.ts +19 -0
  17. package/dist/research/workspace/credentials.js +111 -0
  18. package/dist/research/workspace/credentials.js.map +1 -0
  19. package/dist/research/workspace/executor.d.ts +1 -0
  20. package/dist/research/workspace/executor.js +7 -3
  21. package/dist/research/workspace/executor.js.map +1 -1
  22. package/dist/research/workspace/external-skills.d.ts +458 -0
  23. package/dist/research/workspace/external-skills.js +1000 -0
  24. package/dist/research/workspace/external-skills.js.map +1 -0
  25. package/dist/research/workspace/preflight.d.ts +2 -0
  26. package/dist/research/workspace/preflight.js +11 -4
  27. package/dist/research/workspace/preflight.js.map +1 -1
  28. package/dist/research/workspace/runtime.js +63 -20
  29. package/dist/research/workspace/runtime.js.map +1 -1
  30. package/dist/research/workspace/storage.js +37 -2
  31. package/dist/research/workspace/storage.js.map +1 -1
  32. package/dist/research/workspace/types.d.ts +29 -0
  33. package/dist/research/workspace/workspace.d.ts +2 -0
  34. package/dist/research/workspace/workspace.js +98 -45
  35. package/dist/research/workspace/workspace.js.map +1 -1
  36. package/package.json +4 -4
@@ -1,11 +1,17 @@
1
1
  import { createHash } from "node:crypto";
2
- import { readFile, writeFile } from "node:fs/promises";
2
+ import { lstat, readFile, writeFile } from "node:fs/promises";
3
3
  import { basename, dirname, isAbsolute, join, relative, resolve } from "node:path";
4
4
  import { CliError } from "../../errors.js";
5
5
  import { ALLOWED_CAPABILITY_PERMISSIONS } from "./constants.js";
6
6
  import { canonicalJson, ensureDirectory, hashRegularTree, isObject, pathExists, readJsonFile, regularTreeFiles, workspacePaths, writeJsonAtomic, } from "./storage.js";
7
+ const MAX_CAPABILITY_FILES = 512;
8
+ const MAX_CAPABILITY_BYTES = 32 * 1024 * 1024;
9
+ const MAX_CAPABILITY_FILE_BYTES = 8 * 1024 * 1024;
7
10
  export async function loadCapabilityDeclarations(root) {
8
11
  const value = await readJsonFile(workspacePaths(root).capabilityDeclarations, "Research capability declarations");
12
+ return parseCapabilityDeclarations(value);
13
+ }
14
+ export function parseCapabilityDeclarations(value) {
9
15
  if (!isObject(value) || value.schemaVersion !== 1 || !Array.isArray(value.capabilities)) {
10
16
  throw new CliError("Research capability declarations have an unsupported shape.", {
11
17
  code: "RESEARCH_CAPABILITY_INVALID",
@@ -14,11 +20,16 @@ export async function loadCapabilityDeclarations(root) {
14
20
  }
15
21
  const capabilities = value.capabilities.map((item, index) => parseCapability(item, index));
16
22
  assertUnique(capabilities.map((item) => item.id), "capability ID");
17
- assertUnique(capabilities.flatMap((item) => item.credentials.map((credential) => credential.id)), "credential ID");
23
+ assertConsistentCredentials(capabilities);
18
24
  return { schemaVersion: 1, capabilities };
19
25
  }
20
26
  export async function lockCapabilities(root) {
21
27
  const declarations = await loadCapabilityDeclarations(root);
28
+ const lock = await buildCapabilityLock(declarations);
29
+ await writeJsonAtomic(workspacePaths(root).capabilityLock, lock, 0o444);
30
+ return lock;
31
+ }
32
+ export async function buildCapabilityLock(declarations) {
22
33
  const records = await Promise.all(declarations.capabilities.map(async (declaration) => lockCapability(declaration)));
23
34
  records.sort((left, right) => left.id.localeCompare(right.id));
24
35
  assertUnique(records.map((record) => record.skillName), "capability skill name");
@@ -27,7 +38,6 @@ export async function lockCapabilities(root) {
27
38
  generatedAt: new Date().toISOString(),
28
39
  capabilities: records,
29
40
  };
30
- await writeJsonAtomic(workspacePaths(root).capabilityLock, lock, 0o444);
31
41
  return lock;
32
42
  }
33
43
  export async function verifyCapabilities(root) {
@@ -74,8 +84,14 @@ export async function verifyCapabilities(root) {
74
84
  }
75
85
  export async function stageLockedCapabilities(root, destination) {
76
86
  const declarations = await loadCapabilityDeclarations(root);
77
- if (declarations.capabilities.length === 0)
87
+ await ensureDirectory(destination);
88
+ if (declarations.capabilities.length === 0) {
89
+ await writeJsonAtomic(join(destination, "manifest.json"), {
90
+ schemaVersion: 1,
91
+ capabilities: [],
92
+ });
78
93
  return [];
94
+ }
79
95
  const verification = await verifyCapabilities(root);
80
96
  if (verification.status !== "verified") {
81
97
  throw new CliError("Research capabilities must be locked and verified before execution.", {
@@ -91,6 +107,27 @@ export async function stageLockedCapabilities(root, destination) {
91
107
  await copyRegularTree(record.skillPath, target);
92
108
  staged.push(target);
93
109
  }
110
+ const byId = new Map(declarations.capabilities.map((capability) => [capability.id, capability]));
111
+ await writeJsonAtomic(join(destination, "manifest.json"), {
112
+ schemaVersion: 1,
113
+ capabilities: lock.capabilities.map((record) => {
114
+ const declaration = byId.get(record.id);
115
+ return {
116
+ id: record.id,
117
+ skillName: record.skillName,
118
+ path: `skills/${record.skillName}`,
119
+ treeSha256: record.treeSha256,
120
+ policySha256: record.policySha256,
121
+ catalogId: declaration.source?.catalogId ?? null,
122
+ requiredForDiscovery: declaration.requiredForDiscovery,
123
+ permissions: record.permissions,
124
+ allowedHosts: declaration.allowedHosts,
125
+ http: declaration.http,
126
+ coverage: declaration.coverage,
127
+ credentialIds: record.credentialIds,
128
+ };
129
+ }),
130
+ });
94
131
  return staged;
95
132
  }
96
133
  export async function declaredCredentialIds(root) {
@@ -119,14 +156,32 @@ async function lockCapability(declaration) {
119
156
  exitCode: 2,
120
157
  });
121
158
  }
159
+ const treeSha256 = await hashCapabilityTree(skillPath);
160
+ if (declaration.source && declaration.source.expectedTreeSha256 !== treeSha256) {
161
+ throw new CliError(`Capability source tree hash does not match installed bytes: ${skillPath}`, {
162
+ code: "RESEARCH_CAPABILITY_INVALID",
163
+ exitCode: 2,
164
+ });
165
+ }
166
+ if (declaration.source?.type === "local" &&
167
+ declaration.source.immutableRef !== `sha256:${treeSha256}`) {
168
+ throw new CliError(`Local capability source hash does not match installed bytes: ${skillPath}`, {
169
+ code: "RESEARCH_CAPABILITY_INVALID",
170
+ exitCode: 2,
171
+ });
172
+ }
122
173
  return {
123
174
  id: declaration.id,
124
175
  skillName,
125
176
  skillPath,
126
- treeSha256: await hashRegularTree(skillPath),
177
+ treeSha256,
127
178
  policySha256: policyHash(declaration),
179
+ source: declaration.source,
180
+ requiredForDiscovery: declaration.requiredForDiscovery,
128
181
  permissions: [...declaration.permissions].sort(),
129
182
  credentialIds: declaration.credentials.map((item) => item.id).sort(),
183
+ discoveryScopes: declaration.coverage?.discoveryScopes ?? [],
184
+ healthTargetSha256: declaration.healthCheck ? hashText(declaration.healthCheck.url) : null,
130
185
  };
131
186
  }
132
187
  function parseCapability(value, index) {
@@ -134,11 +189,14 @@ function parseCapability(value, index) {
134
189
  invalid(index, "must be an object");
135
190
  const id = value.id;
136
191
  const skillPath = value.skillPath;
192
+ const source = value.source;
193
+ const requiredForDiscovery = value.requiredForDiscovery ?? false;
137
194
  const permissions = value.permissions;
138
195
  const allowedHosts = value.allowedHosts ?? [];
139
196
  const http = value.http;
140
197
  const coverage = value.coverage;
141
198
  const credentials = value.credentials ?? [];
199
+ const healthCheck = value.healthCheck;
142
200
  if (typeof id !== "string" || !/^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)+$/.test(id)) {
143
201
  invalid(index, "id must be a namespaced logical identifier");
144
202
  }
@@ -158,6 +216,12 @@ function parseCapability(value, index) {
158
216
  ...new Set(allowedHosts.map((host) => normalizeAllowedHost(host, index))),
159
217
  ].sort();
160
218
  const brokeredNetwork = permissions.includes("brokered-network");
219
+ if (typeof requiredForDiscovery !== "boolean") {
220
+ invalid(index, "requiredForDiscovery must be a boolean");
221
+ }
222
+ if (requiredForDiscovery && !brokeredNetwork) {
223
+ invalid(index, "cannot require discovery without brokered-network");
224
+ }
161
225
  if (brokeredNetwork && parsedAllowedHosts.length === 0) {
162
226
  invalid(index, "must declare allowedHosts for brokered-network");
163
227
  }
@@ -195,14 +259,18 @@ function parseCapability(value, index) {
195
259
  };
196
260
  });
197
261
  assertUnique(parsedCredentials.map((item) => item.id), `credential ID in ${id}`);
262
+ const parsedHealthCheck = parseHealthCheck(healthCheck, index, brokeredNetwork, parsedAllowedHosts, parsedHttp, parsedCredentials.map((credential) => credential.id));
198
263
  return {
199
264
  id,
200
265
  skillPath,
266
+ source: parseSource(source, index),
267
+ requiredForDiscovery,
201
268
  permissions: [...new Set(permissions)],
202
269
  allowedHosts: parsedAllowedHosts,
203
270
  http: parsedHttp,
204
271
  coverage: parseCoverage(coverage, index),
205
272
  credentials: parsedCredentials,
273
+ healthCheck: parsedHealthCheck,
206
274
  };
207
275
  }
208
276
  function isCapabilityLock(value) {
@@ -216,15 +284,27 @@ function isCapabilityLock(value) {
216
284
  typeof record.skillPath === "string" &&
217
285
  typeof record.treeSha256 === "string" &&
218
286
  typeof record.policySha256 === "string" &&
287
+ (record.source === null || isObject(record.source)) &&
288
+ typeof record.requiredForDiscovery === "boolean" &&
219
289
  Array.isArray(record.permissions) &&
220
- Array.isArray(record.credentialIds)));
290
+ Array.isArray(record.credentialIds) &&
291
+ Array.isArray(record.discoveryScopes) &&
292
+ (record.healthTargetSha256 === null || typeof record.healthTargetSha256 === "string")));
221
293
  }
222
294
  function policyHash(declaration) {
223
295
  return hashText(canonicalJson({
296
+ source: declaration.source,
297
+ requiredForDiscovery: declaration.requiredForDiscovery,
224
298
  permissions: [...declaration.permissions].sort(),
225
299
  allowedHosts: [...declaration.allowedHosts].sort(),
226
300
  http: declaration.http,
227
301
  coverage: declaration.coverage,
302
+ healthCheck: declaration.healthCheck
303
+ ? {
304
+ ...declaration.healthCheck,
305
+ expectedContentTypes: [...declaration.healthCheck.expectedContentTypes].sort(),
306
+ }
307
+ : null,
228
308
  credentials: declaration.credentials
229
309
  .map((credential) => ({
230
310
  id: credential.id,
@@ -235,14 +315,118 @@ function policyHash(declaration) {
235
315
  .sort((left, right) => left.id.localeCompare(right.id)),
236
316
  }));
237
317
  }
318
+ function parseSource(value, index) {
319
+ if (value === undefined || value === null)
320
+ return null;
321
+ if (!isObject(value) ||
322
+ (value.type !== "git" && value.type !== "registry" && value.type !== "local") ||
323
+ typeof value.locator !== "string" ||
324
+ !value.locator.trim() ||
325
+ value.locator.length > 500 ||
326
+ /[\u0000-\u001f]/.test(value.locator) ||
327
+ /(^|[?&#;\s])(?:access[_-]?token|api[_-]?key|apikey|auth|authorization|cookie|credential|password|secret|session|sig|signature|token)=/i.test(value.locator) ||
328
+ typeof value.immutableRef !== "string" ||
329
+ !value.immutableRef.trim() ||
330
+ value.immutableRef.length > 128 ||
331
+ /[\u0000-\u0020]/.test(value.immutableRef) ||
332
+ typeof value.expectedTreeSha256 !== "string" ||
333
+ !/^[0-9a-f]{64}$/i.test(value.expectedTreeSha256) ||
334
+ typeof value.license !== "string" ||
335
+ !/^[A-Za-z0-9][A-Za-z0-9.+-]{0,127}$/.test(value.license) ||
336
+ !(value.catalogId === undefined ||
337
+ value.catalogId === null ||
338
+ (typeof value.catalogId === "string" &&
339
+ /^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)+$/.test(value.catalogId)))) {
340
+ invalid(index, "source declaration is malformed");
341
+ }
342
+ if (value.type === "git") {
343
+ let locator;
344
+ try {
345
+ locator = new URL(value.locator);
346
+ }
347
+ catch {
348
+ invalid(index, "git source locator must be an HTTPS URL");
349
+ }
350
+ if (locator.protocol !== "https:" || locator.username || locator.password) {
351
+ invalid(index, "git source locator must be credential-free HTTPS");
352
+ }
353
+ if (!/^[0-9a-f]{40}$/i.test(value.immutableRef)) {
354
+ invalid(index, "git source immutableRef must be a full 40-character commit SHA");
355
+ }
356
+ }
357
+ if (value.type === "registry" &&
358
+ !/^v?[0-9]+\.[0-9]+\.[0-9]+(?:[-+][A-Za-z0-9.-]+)?$/.test(value.immutableRef)) {
359
+ invalid(index, "registry source immutableRef must be an exact version");
360
+ }
361
+ if (value.type === "local" && !/^sha256:[0-9a-f]{64}$/i.test(value.immutableRef)) {
362
+ invalid(index, "local source immutableRef must be a SHA-256 content identity");
363
+ }
364
+ return {
365
+ type: value.type,
366
+ locator: value.locator.trim(),
367
+ immutableRef: value.type === "git" || value.type === "local"
368
+ ? value.immutableRef.trim().toLowerCase()
369
+ : value.immutableRef.trim(),
370
+ expectedTreeSha256: value.expectedTreeSha256.toLowerCase(),
371
+ license: value.license,
372
+ catalogId: value.catalogId ?? null,
373
+ };
374
+ }
375
+ function parseHealthCheck(value, index, brokeredNetwork, allowedHosts, http, credentialIds) {
376
+ if (value === undefined || value === null)
377
+ return null;
378
+ if (!brokeredNetwork ||
379
+ !http ||
380
+ !isObject(value) ||
381
+ typeof value.url !== "string" ||
382
+ !Array.isArray(value.expectedContentTypes) ||
383
+ value.expectedContentTypes.length === 0 ||
384
+ value.expectedContentTypes.some((item) => typeof item !== "string" || !/^[a-z0-9.+-]+\/[a-z0-9.+*-]+$/i.test(item)) ||
385
+ !(value.credentialId === undefined ||
386
+ value.credentialId === null ||
387
+ (typeof value.credentialId === "string" && credentialIds.includes(value.credentialId)))) {
388
+ invalid(index, "healthCheck declaration is malformed");
389
+ }
390
+ let target;
391
+ try {
392
+ target = new URL(value.url);
393
+ }
394
+ catch {
395
+ invalid(index, "healthCheck URL is invalid");
396
+ }
397
+ if (target.protocol !== "https:" ||
398
+ target.username ||
399
+ target.password ||
400
+ !allowedHosts.includes(target.host.toLowerCase())) {
401
+ invalid(index, "healthCheck URL must use an allowed credential-free HTTPS host");
402
+ }
403
+ const sensitiveParameter = [...target.searchParams.keys()].find((key) => /(^|[-_])(api[-_]?key|authorization|cookie|credential|password|secret|session|token)($|[-_])/i.test(key));
404
+ if (sensitiveParameter) {
405
+ invalid(index, "healthCheck URL cannot contain sensitive query parameters");
406
+ }
407
+ const expectedContentTypes = [
408
+ ...new Set(value.expectedContentTypes.map((item) => item.toLowerCase())),
409
+ ].sort();
410
+ if (expectedContentTypes.some((contentType) => !contentTypeAllowedByPolicy(contentType, http.allowedContentTypes))) {
411
+ invalid(index, "healthCheck content types must be allowed by the HTTP policy");
412
+ }
413
+ return {
414
+ url: target.toString(),
415
+ credentialId: value.credentialId ?? null,
416
+ expectedContentTypes,
417
+ };
418
+ }
238
419
  function parseCoverage(value, index) {
239
420
  if (value === undefined || value === null)
240
421
  return null;
422
+ const discoveryScopes = isObject(value) ? (value.discoveryScopes ?? []) : [];
241
423
  if (!isObject(value) ||
242
424
  !Array.isArray(value.dimensions) ||
243
425
  value.dimensions.some((item) => !validCoverageId(item)) ||
244
426
  !Array.isArray(value.sourceTypes) ||
245
427
  value.sourceTypes.some((item) => !validCoverageId(item)) ||
428
+ !Array.isArray(discoveryScopes) ||
429
+ discoveryScopes.some((item) => !validCoverageId(item) || item === "*") ||
246
430
  typeof value.fullText !== "boolean" ||
247
431
  typeof value.publicationDates !== "boolean") {
248
432
  invalid(index, "coverage declaration is malformed");
@@ -250,12 +434,22 @@ function parseCoverage(value, index) {
250
434
  return {
251
435
  dimensions: [...new Set(value.dimensions)].sort(),
252
436
  sourceTypes: [...new Set(value.sourceTypes)].sort(),
437
+ discoveryScopes: [...new Set(discoveryScopes)].sort(),
253
438
  fullText: value.fullText,
254
439
  publicationDates: value.publicationDates,
255
440
  };
256
441
  }
257
442
  function validCoverageId(value) {
258
- return typeof value === "string" && /^[a-z0-9][a-z0-9._:-]{0,127}$/.test(value);
443
+ return (value === "*" || (typeof value === "string" && /^[a-z0-9][a-z0-9._:-]{0,127}$/.test(value)));
444
+ }
445
+ function contentTypeAllowedByPolicy(value, allowed) {
446
+ return allowed.some((candidate) => {
447
+ if (candidate === value || candidate === "*/*")
448
+ return true;
449
+ if (candidate.endsWith("/*"))
450
+ return value.startsWith(candidate.slice(0, -1));
451
+ return false;
452
+ });
259
453
  }
260
454
  function parseHttpPolicy(value, index) {
261
455
  if (value === undefined || value === null) {
@@ -335,6 +529,33 @@ async function copyRegularTree(source, target) {
335
529
  await writeFile(destination, await readFile(path), { mode: 0o600 });
336
530
  }
337
531
  }
532
+ async function hashCapabilityTree(root) {
533
+ const files = await regularTreeFiles(root);
534
+ if (files.length > MAX_CAPABILITY_FILES) {
535
+ throw new CliError(`Capability tree contains too many files: ${root}`, {
536
+ code: "RESEARCH_CAPABILITY_INVALID",
537
+ exitCode: 2,
538
+ });
539
+ }
540
+ let totalBytes = 0;
541
+ for (const path of files) {
542
+ const bytes = (await lstat(path)).size;
543
+ if (bytes > MAX_CAPABILITY_FILE_BYTES) {
544
+ throw new CliError(`Capability tree contains an oversized file: ${path}`, {
545
+ code: "RESEARCH_CAPABILITY_INVALID",
546
+ exitCode: 2,
547
+ });
548
+ }
549
+ totalBytes += bytes;
550
+ if (totalBytes > MAX_CAPABILITY_BYTES) {
551
+ throw new CliError(`Capability tree exceeds the total size limit: ${root}`, {
552
+ code: "RESEARCH_CAPABILITY_INVALID",
553
+ exitCode: 2,
554
+ });
555
+ }
556
+ }
557
+ return hashRegularTree(root);
558
+ }
338
559
  function assertUnique(values, label) {
339
560
  const seen = new Set();
340
561
  for (const value of values) {
@@ -347,6 +568,24 @@ function assertUnique(values, label) {
347
568
  seen.add(value);
348
569
  }
349
570
  }
571
+ function assertConsistentCredentials(capabilities) {
572
+ const seen = new Map();
573
+ for (const credential of capabilities.flatMap((capability) => capability.credentials)) {
574
+ const identity = canonicalJson({
575
+ allowedHosts: credential.allowedHosts,
576
+ headerName: credential.headerName.toLowerCase(),
577
+ prefix: credential.prefix,
578
+ });
579
+ const previous = seen.get(credential.id);
580
+ if (previous !== undefined && previous !== identity) {
581
+ throw new CliError(`Credential ID has conflicting declarations: ${credential.id}`, {
582
+ code: "RESEARCH_CAPABILITY_INVALID",
583
+ exitCode: 2,
584
+ });
585
+ }
586
+ seen.set(credential.id, identity);
587
+ }
588
+ }
350
589
  function invalid(index, detail) {
351
590
  throw new CliError(`Capability declaration ${index} ${detail}.`, {
352
591
  code: "RESEARCH_CAPABILITY_INVALID",
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/research/workspace/capabilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/research/workspace/capabilities.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ export declare const RESEARCH_CONTROL_DIRECTORY = ".tiangong-research";
2
2
  export declare const RESEARCH_PROTOCOL_VERSION: 1;
3
3
  export declare const RESEARCH_PACKAGE_NAME: "@tiangong-ai/cli";
4
4
  export declare const ALLOWED_CAPABILITY_PERMISSIONS: Set<string>;
5
- export declare const WORKSPACE_OPERATIONS: readonly ["research.context.inspect", "research.workspace.doctor", "research.capability.lock", "research.capability.verify", "research.project.init", "research.project.preflight", "research.project.input.add", "research.project.retry", "research.project.fork", "research.schema.show", "research.status", "research.run"];
6
- export declare const UNMANAGED_OPERATIONS: readonly ["research.context.inspect", "research.workspace.init"];
5
+ export declare const WORKSPACE_OPERATIONS: readonly ["research.context.inspect", "research.workspace.doctor", "research.capability.catalog", "research.capability.configure", "research.capability.import", "research.capability.doctor", "research.capability.credential.set", "research.capability.lock", "research.capability.verify", "research.project.init", "research.project.preflight", "research.project.input.add", "research.project.retry", "research.project.fork", "research.schema.show", "research.status", "research.run"];
6
+ export declare const UNMANAGED_OPERATIONS: readonly ["research.context.inspect", "research.capability.catalog", "research.workspace.init"];
7
7
  export declare const INVALID_OPERATIONS: readonly ["research.context.inspect"];
8
8
  export declare function packageVersion(): string;
@@ -13,6 +13,11 @@ export const ALLOWED_CAPABILITY_PERMISSIONS = new Set([
13
13
  export const WORKSPACE_OPERATIONS = [
14
14
  "research.context.inspect",
15
15
  "research.workspace.doctor",
16
+ "research.capability.catalog",
17
+ "research.capability.configure",
18
+ "research.capability.import",
19
+ "research.capability.doctor",
20
+ "research.capability.credential.set",
16
21
  "research.capability.lock",
17
22
  "research.capability.verify",
18
23
  "research.project.init",
@@ -26,6 +31,7 @@ export const WORKSPACE_OPERATIONS = [
26
31
  ];
27
32
  export const UNMANAGED_OPERATIONS = [
28
33
  "research.context.inspect",
34
+ "research.capability.catalog",
29
35
  "research.workspace.init",
30
36
  ];
31
37
  export const INVALID_OPERATIONS = ["research.context.inspect"];
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/research/workspace/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,MAAM,0BAA0B,GAAG,oBAAoB,CAAC;AAC/D,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAU,CAAC;AACpD,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE,MAAM,CAAC,MAAM,8BAA8B,GAAG,IAAI,GAAG,CAAC;IACpD,cAAc;IACd,iBAAiB;IACjB,kBAAkB;IAClB,oBAAoB;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,0BAA0B;IAC1B,2BAA2B;IAC3B,0BAA0B;IAC1B,4BAA4B;IAC5B,uBAAuB;IACvB,4BAA4B;IAC5B,4BAA4B;IAC5B,wBAAwB;IACxB,uBAAuB;IACvB,sBAAsB;IACtB,iBAAiB;IACjB,cAAc;CACN,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,0BAA0B;IAC1B,yBAAyB;CACjB,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,0BAA0B,CAAU,CAAC;AAExE,MAAM,UAAU,cAAc;IAC5B,MAAM,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAA0B,CAAC;IACrF,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/research/workspace/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,MAAM,0BAA0B,GAAG,oBAAoB,CAAC;AAC/D,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAU,CAAC;AACpD,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAEjE,MAAM,CAAC,MAAM,8BAA8B,GAAG,IAAI,GAAG,CAAC;IACpD,cAAc;IACd,iBAAiB;IACjB,kBAAkB;IAClB,oBAAoB;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,0BAA0B;IAC1B,2BAA2B;IAC3B,6BAA6B;IAC7B,+BAA+B;IAC/B,4BAA4B;IAC5B,4BAA4B;IAC5B,oCAAoC;IACpC,0BAA0B;IAC1B,4BAA4B;IAC5B,uBAAuB;IACvB,4BAA4B;IAC5B,4BAA4B;IAC5B,wBAAwB;IACxB,uBAAuB;IACvB,sBAAsB;IACtB,iBAAiB;IACjB,cAAc;CACN,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,0BAA0B;IAC1B,6BAA6B;IAC7B,yBAAyB;CACjB,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,0BAA0B,CAAU,CAAC;AAExE,MAAM,UAAU,cAAc;IAC5B,MAAM,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAA0B,CAAC;IACrF,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { CapabilityDeclaration } from "./types.js";
2
+ export declare function loadCapabilityCredentialMap(root: string, capabilities: CapabilityDeclaration[]): Promise<Map<string, string>>;
3
+ export declare function inspectCapabilityCredentialEnvironment(root: string, capabilities: CapabilityDeclaration[]): Promise<{
4
+ detail: string;
5
+ configuredIds: string[];
6
+ missingIds: string[];
7
+ }>;
8
+ export declare function setCapabilityCredentialFromEnvironment(input: {
9
+ root: string;
10
+ capabilities: CapabilityDeclaration[];
11
+ credentialId: string;
12
+ environmentName: string;
13
+ environment: NodeJS.ProcessEnv;
14
+ }): Promise<{
15
+ credentialId: string;
16
+ sourceEnvironmentName: string;
17
+ configured: true;
18
+ configuredCredentialIds: string[];
19
+ }>;
@@ -0,0 +1,111 @@
1
+ import { lstat, readFile } from "node:fs/promises";
2
+ import { CliError } from "../../errors.js";
3
+ import { isObject, pathExists, workspacePaths, writeTextAtomic } from "./storage.js";
4
+ const CREDENTIAL_ENV_KEY = "TIANGONG_RESEARCH_CAPABILITY_CREDENTIALS_JSON";
5
+ const MAX_CREDENTIAL_ENV_BYTES = 64 * 1024;
6
+ export async function loadCapabilityCredentialMap(root, capabilities) {
7
+ const path = workspacePaths(root).env;
8
+ if (!(await pathExists(path)))
9
+ return new Map();
10
+ const info = await lstat(path).catch(() => {
11
+ throw credentialEnvironmentError("credential environment cannot be inspected");
12
+ });
13
+ if (!info.isFile() || info.isSymbolicLink()) {
14
+ throw credentialEnvironmentError("credential environment must be a regular non-symlink file");
15
+ }
16
+ if (info.size > MAX_CREDENTIAL_ENV_BYTES) {
17
+ throw credentialEnvironmentError("credential environment exceeds the maximum supported size");
18
+ }
19
+ if (process.platform !== "win32" && (info.mode & 0o077) !== 0) {
20
+ throw credentialEnvironmentError("credential environment must have owner-only permissions");
21
+ }
22
+ const declared = new Set(capabilities.flatMap((capability) => capability.credentials.map((credential) => credential.id)));
23
+ const configured = new Map();
24
+ let foundConfiguration = false;
25
+ const content = await readFile(path, "utf8").catch(() => {
26
+ throw credentialEnvironmentError("credential environment cannot be read");
27
+ });
28
+ for (const sourceLine of content.split(/\r?\n/)) {
29
+ const line = sourceLine.trim();
30
+ if (!line || line.startsWith("#"))
31
+ continue;
32
+ const equals = line.indexOf("=");
33
+ const key = equals > 0 ? line.slice(0, equals).trim() : "";
34
+ if (key !== CREDENTIAL_ENV_KEY) {
35
+ throw credentialEnvironmentError(`unsupported research environment key: ${key || "missing"}`);
36
+ }
37
+ if (foundConfiguration) {
38
+ throw credentialEnvironmentError("research credential configuration is duplicated");
39
+ }
40
+ foundConfiguration = true;
41
+ let value;
42
+ try {
43
+ value = JSON.parse(line.slice(equals + 1).trim() || "{}");
44
+ }
45
+ catch {
46
+ throw credentialEnvironmentError("capability credential JSON is invalid");
47
+ }
48
+ if (!isObject(value)) {
49
+ throw credentialEnvironmentError("capability credentials must be a JSON object");
50
+ }
51
+ for (const [credentialId, credentialValue] of Object.entries(value)) {
52
+ if (!declared.has(credentialId))
53
+ throw credentialEnvironmentError(`credential is not declared: ${credentialId}`);
54
+ if (typeof credentialValue !== "string" || Buffer.byteLength(credentialValue, "utf8") < 8) {
55
+ throw credentialEnvironmentError(`credential value is invalid: ${credentialId}`);
56
+ }
57
+ configured.set(credentialId, credentialValue);
58
+ }
59
+ }
60
+ return configured;
61
+ }
62
+ export async function inspectCapabilityCredentialEnvironment(root, capabilities) {
63
+ const declaredIds = [
64
+ ...new Set(capabilities.flatMap((capability) => capability.credentials.map((credential) => credential.id))),
65
+ ].sort();
66
+ const configured = await loadCapabilityCredentialMap(root, capabilities);
67
+ const configuredIds = [...configured.keys()].sort();
68
+ const missingIds = declaredIds.filter((credentialId) => !configured.has(credentialId));
69
+ const detail = declaredIds.length === 0
70
+ ? "not configured; no credentials declared"
71
+ : missingIds.length === 0
72
+ ? `${configuredIds.length} declared credential value(s) configured with owner-only permissions`
73
+ : `${missingIds.length}/${declaredIds.length} declared credential value(s) missing`;
74
+ return { detail, configuredIds, missingIds };
75
+ }
76
+ export async function setCapabilityCredentialFromEnvironment(input) {
77
+ if (!/^[A-Za-z_][A-Za-z0-9_]{0,127}$/.test(input.environmentName)) {
78
+ throw credentialConfigurationError("credential source environment name is invalid");
79
+ }
80
+ const declared = new Set(input.capabilities.flatMap((capability) => capability.credentials.map((credential) => credential.id)));
81
+ if (!declared.has(input.credentialId)) {
82
+ throw credentialConfigurationError(`credential is not declared: ${input.credentialId}`);
83
+ }
84
+ const value = input.environment[input.environmentName];
85
+ if (typeof value !== "string" || Buffer.byteLength(value, "utf8") < 8) {
86
+ throw credentialConfigurationError(`credential source environment variable is missing or too short: ${input.environmentName}`);
87
+ }
88
+ const configured = await loadCapabilityCredentialMap(input.root, input.capabilities);
89
+ configured.set(input.credentialId, value);
90
+ const serialized = Object.fromEntries([...configured.entries()].sort(([left], [right]) => left.localeCompare(right)));
91
+ await writeTextAtomic(workspacePaths(input.root).env, `${CREDENTIAL_ENV_KEY}=${JSON.stringify(serialized)}\n`, 0o600);
92
+ return {
93
+ credentialId: input.credentialId,
94
+ sourceEnvironmentName: input.environmentName,
95
+ configured: true,
96
+ configuredCredentialIds: [...configured.keys()].sort(),
97
+ };
98
+ }
99
+ function credentialConfigurationError(message) {
100
+ return new CliError(message, {
101
+ code: "RESEARCH_CAPABILITY_CREDENTIAL_INVALID",
102
+ exitCode: 3,
103
+ });
104
+ }
105
+ function credentialEnvironmentError(message) {
106
+ return new CliError(message, {
107
+ code: "RESEARCH_CAPABILITY_CREDENTIAL_ENV_INVALID",
108
+ exitCode: 3,
109
+ });
110
+ }
111
+ //# sourceMappingURL=credentials.js.map