@tiangong-ai/cli 0.0.22 → 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.
- package/AGENTS.md +2 -2
- package/README.md +101 -9
- package/dist/cli.js +15 -3
- package/dist/cli.js.map +1 -1
- package/dist/research/orchestration.js +117 -4
- package/dist/research/orchestration.js.map +1 -1
- package/dist/research/workspace/broker.js +38 -46
- package/dist/research/workspace/broker.js.map +1 -1
- package/dist/research/workspace/capabilities.d.ts +2 -0
- package/dist/research/workspace/capabilities.js +246 -7
- package/dist/research/workspace/capabilities.js.map +1 -1
- package/dist/research/workspace/constants.d.ts +2 -2
- package/dist/research/workspace/constants.js +6 -0
- package/dist/research/workspace/constants.js.map +1 -1
- package/dist/research/workspace/credentials.d.ts +19 -0
- package/dist/research/workspace/credentials.js +111 -0
- package/dist/research/workspace/credentials.js.map +1 -0
- package/dist/research/workspace/executor.d.ts +1 -0
- package/dist/research/workspace/executor.js +7 -3
- package/dist/research/workspace/executor.js.map +1 -1
- package/dist/research/workspace/external-skills.d.ts +458 -0
- package/dist/research/workspace/external-skills.js +1000 -0
- package/dist/research/workspace/external-skills.js.map +1 -0
- package/dist/research/workspace/preflight.d.ts +2 -0
- package/dist/research/workspace/preflight.js +11 -4
- package/dist/research/workspace/preflight.js.map +1 -1
- package/dist/research/workspace/runtime.js +63 -20
- package/dist/research/workspace/runtime.js.map +1 -1
- package/dist/research/workspace/storage.js +37 -2
- package/dist/research/workspace/storage.js.map +1 -1
- package/dist/research/workspace/types.d.ts +29 -0
- package/dist/research/workspace/workspace.d.ts +2 -0
- package/dist/research/workspace/workspace.js +98 -45
- package/dist/research/workspace/workspace.js.map +1 -1
- 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
|
-
|
|
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
|
-
|
|
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
|
|
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
|