@tiangong-ai/cli 0.0.22 → 0.0.24

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 (53) hide show
  1. package/AGENTS.md +3 -2
  2. package/README.md +114 -13
  3. package/dist/cli.js +15 -3
  4. package/dist/cli.js.map +1 -1
  5. package/dist/io.d.ts +3 -0
  6. package/dist/io.js.map +1 -1
  7. package/dist/main.js +1 -0
  8. package/dist/main.js.map +1 -1
  9. package/dist/research/orchestration.js +124 -4
  10. package/dist/research/orchestration.js.map +1 -1
  11. package/dist/research/setup-command.d.ts +3 -0
  12. package/dist/research/setup-command.js +487 -0
  13. package/dist/research/setup-command.js.map +1 -0
  14. package/dist/research/workspace/broker.js +77 -50
  15. package/dist/research/workspace/broker.js.map +1 -1
  16. package/dist/research/workspace/capabilities.d.ts +2 -0
  17. package/dist/research/workspace/capabilities.js +310 -7
  18. package/dist/research/workspace/capabilities.js.map +1 -1
  19. package/dist/research/workspace/constants.d.ts +3 -2
  20. package/dist/research/workspace/constants.js +25 -0
  21. package/dist/research/workspace/constants.js.map +1 -1
  22. package/dist/research/workspace/context.js +26 -1
  23. package/dist/research/workspace/context.js.map +1 -1
  24. package/dist/research/workspace/credentials.d.ts +19 -0
  25. package/dist/research/workspace/credentials.js +111 -0
  26. package/dist/research/workspace/credentials.js.map +1 -0
  27. package/dist/research/workspace/executor.d.ts +1 -0
  28. package/dist/research/workspace/executor.js +7 -3
  29. package/dist/research/workspace/executor.js.map +1 -1
  30. package/dist/research/workspace/external-skills.d.ts +477 -0
  31. package/dist/research/workspace/external-skills.js +1141 -0
  32. package/dist/research/workspace/external-skills.js.map +1 -0
  33. package/dist/research/workspace/preflight.d.ts +2 -0
  34. package/dist/research/workspace/preflight.js +11 -4
  35. package/dist/research/workspace/preflight.js.map +1 -1
  36. package/dist/research/workspace/runtime.js +63 -20
  37. package/dist/research/workspace/runtime.js.map +1 -1
  38. package/dist/research/workspace/setup-catalog.d.ts +161 -0
  39. package/dist/research/workspace/setup-catalog.js +601 -0
  40. package/dist/research/workspace/setup-catalog.js.map +1 -0
  41. package/dist/research/workspace/setup-wizard.d.ts +24 -0
  42. package/dist/research/workspace/setup-wizard.js +465 -0
  43. package/dist/research/workspace/setup-wizard.js.map +1 -0
  44. package/dist/research/workspace/setup.d.ts +463 -0
  45. package/dist/research/workspace/setup.js +3000 -0
  46. package/dist/research/workspace/setup.js.map +1 -0
  47. package/dist/research/workspace/storage.js +44 -2
  48. package/dist/research/workspace/storage.js.map +1 -1
  49. package/dist/research/workspace/types.d.ts +42 -1
  50. package/dist/research/workspace/workspace.d.ts +2 -0
  51. package/dist/research/workspace/workspace.js +154 -52
  52. package/dist/research/workspace/workspace.js.map +1 -1
  53. package/package.json +4 -4
@@ -0,0 +1,601 @@
1
+ import { lstat } from "node:fs/promises";
2
+ import { homedir } from "node:os";
3
+ import { isAbsolute, join, resolve } from "node:path";
4
+ import { CliError } from "../../errors.js";
5
+ import { EXTERNAL_SKILLS_CLI_VERSION } from "./external-skills.js";
6
+ import { sanitizeResearchText } from "./sanitization.js";
7
+ import { hashRegularTree, pathExists } from "./storage.js";
8
+ const BRAVE_COMMIT = "3e088af66eb61f1c207c22b2be0278ca8744d1d1";
9
+ const TIANGONG_SKILLS_COMMIT = "c371dbc464dc51ac1d8b0d0d59b318942418cc7b";
10
+ const ANTHROPIC_SKILLS_COMMIT = "f17010c9bb483898c1d9c9f42dde2b3a98889434";
11
+ const PPT_MASTER_COMMIT = "4343bd8bfc91e79dfb9680681a378476cc38a280";
12
+ export const RESEARCH_SETUP_INSTALLER = {
13
+ package: "skills",
14
+ version: EXTERNAL_SKILLS_CLI_VERSION,
15
+ npmIntegrity: "sha512-cHiLjwZEawWFvudIqeeMZlvZayTLbRouydMbblyrdiyH7ZLbqUrSrEEr+Tg+X265iztRlVMsyOYRwpD5JxBsvg==",
16
+ npmShasum: "ec0a7897ba2ef06e01f3b41007886f3a92cf4d05",
17
+ gitHead: "a4d243c3d4f86cdf9385dd1b6a0733f6937e70b5",
18
+ runtimeInstall: false,
19
+ };
20
+ export const RESEARCH_SETUP_SOURCES = [
21
+ {
22
+ id: "brave-search-skills",
23
+ repository: "brave/brave-search-skills",
24
+ locator: "https://github.com/brave/brave-search-skills.git",
25
+ immutableRef: BRAVE_COMMIT,
26
+ bundled: false,
27
+ userInitiatedOnly: true,
28
+ },
29
+ {
30
+ id: "tiangong-ai-skills",
31
+ repository: "tiangong-ai/skills",
32
+ locator: "https://github.com/tiangong-ai/skills.git",
33
+ immutableRef: TIANGONG_SKILLS_COMMIT,
34
+ bundled: false,
35
+ userInitiatedOnly: true,
36
+ },
37
+ {
38
+ id: "anthropic-skills",
39
+ repository: "anthropics/skills",
40
+ locator: "https://github.com/anthropics/skills.git",
41
+ immutableRef: ANTHROPIC_SKILLS_COMMIT,
42
+ bundled: false,
43
+ userInitiatedOnly: true,
44
+ },
45
+ {
46
+ id: "ppt-master",
47
+ repository: "hugohe3/ppt-master",
48
+ locator: "https://github.com/hugohe3/ppt-master.git",
49
+ immutableRef: PPT_MASTER_COMMIT,
50
+ bundled: false,
51
+ userInitiatedOnly: true,
52
+ },
53
+ ];
54
+ const MIT_BRAVE = {
55
+ id: "brave-search-skills:MIT",
56
+ label: "MIT",
57
+ url: `https://github.com/brave/brave-search-skills/blob/${BRAVE_COMMIT}/LICENSE`,
58
+ notice: "Brave Search Skills are separately sourced under the MIT license.",
59
+ requiresExplicitAcceptance: true,
60
+ };
61
+ const MIT_TIANGONG = {
62
+ id: "tiangong-ai-skills:MIT",
63
+ label: "MIT",
64
+ url: `https://github.com/tiangong-ai/skills/blob/${TIANGONG_SKILLS_COMMIT}/LICENSE`,
65
+ notice: "Tiangong Skills are separately sourced under the MIT license.",
66
+ requiresExplicitAcceptance: true,
67
+ };
68
+ const ANTHROPIC_EXAMPLE = {
69
+ id: "anthropic-skills:doc-coauthoring:NOASSERTION",
70
+ label: "NOASSERTION",
71
+ url: `https://github.com/anthropics/skills/blob/${ANTHROPIC_SKILLS_COMMIT}/README.md`,
72
+ notice: "The pinned doc-coauthoring tree has no per-Skill license file. The upstream README describes many examples as Apache-2.0, but this catalog does not infer a license; review the pinned source before choosing it.",
73
+ requiresExplicitAcceptance: true,
74
+ };
75
+ const ANTHROPIC_DOCUMENT_TERMS = {
76
+ id: "anthropic-skills:document-terms",
77
+ label: "Anthropic source-available document Skill terms",
78
+ url: `https://github.com/anthropics/skills/blob/${ANTHROPIC_SKILLS_COMMIT}/skills/docx/LICENSE.txt`,
79
+ notice: "The upstream document Skills are source-available, not open source, and contain additional restrictions. They are never bundled or selected automatically.",
80
+ requiresExplicitAcceptance: true,
81
+ };
82
+ const MIT_PPT_MASTER = {
83
+ id: "ppt-master:MIT",
84
+ label: "MIT",
85
+ url: `https://github.com/hugohe3/ppt-master/blob/${PPT_MASTER_COMMIT}/skills/ppt-master/LICENSE`,
86
+ notice: "PPT Master is separately sourced under the MIT license.",
87
+ requiresExplicitAcceptance: true,
88
+ };
89
+ const PYTHON_310 = {
90
+ id: "python-3.10",
91
+ kind: "command",
92
+ requirement: "python3 >= 3.10",
93
+ requiredFor: "Python Skill scripts",
94
+ automaticInstall: false,
95
+ minimumAction: "Install a compatible Python runtime outside this CLI, then rerun setup doctor.",
96
+ };
97
+ const PYPDF_LOCK = {
98
+ id: "academic-paper-download:pypdf",
99
+ kind: "python-package",
100
+ requirement: "pypdf==6.14.2 from requirements.txt",
101
+ requiredFor: "academic-paper-download structural PDF validation",
102
+ automaticInstall: false,
103
+ minimumAction: "Create an isolated Python environment and install the Skill's pinned requirements.txt; do not install CloakBrowser unless that optional handoff is explicitly selected later.",
104
+ };
105
+ const PPT_MASTER_LOCK_REQUIRED = {
106
+ id: "ppt-master:python-lock",
107
+ kind: "manual",
108
+ requirement: "A user-reviewed exact Python lock derived from upstream requirements.txt",
109
+ requiredFor: "PPT Master helper scripts",
110
+ automaticInstall: false,
111
+ minimumAction: "Review and pin the upstream >= constraints in an isolated environment before enabling PPT Master helpers; setup will not resolve or install floating Python dependencies.",
112
+ };
113
+ export const RESEARCH_SETUP_SKILLS = [
114
+ {
115
+ id: "brave.web-search",
116
+ skillName: "web-search",
117
+ sourceId: "brave-search-skills",
118
+ sourceRelativePath: "web-search",
119
+ expectedTreeSha256: "0432f4eb084766046a2feeb146f0b3917850d138eb4182c23fc000a058fbe123",
120
+ tier: "baseline",
121
+ role: "evidence-capability",
122
+ purpose: "Broad public-internet evidence discovery.",
123
+ recommendedFor: ["production-research"],
124
+ defaultSelected: true,
125
+ credentialIds: ["brave.search.api-key"],
126
+ settingIds: [],
127
+ dependencies: [],
128
+ license: MIT_BRAVE,
129
+ conflictGroup: null,
130
+ capabilityKind: "brave-public-internet",
131
+ bundled: false,
132
+ userInitiatedOnly: true,
133
+ },
134
+ {
135
+ id: "brave.news-search",
136
+ skillName: "news-search",
137
+ sourceId: "brave-search-skills",
138
+ sourceRelativePath: "news-search",
139
+ expectedTreeSha256: "80f8dcb7c78209cce5315e507f0aba21e3f654f42f6a414c177de644bcd07773",
140
+ tier: "baseline",
141
+ role: "evidence-capability",
142
+ purpose: "Date-sensitive public news discovery.",
143
+ recommendedFor: ["production-research"],
144
+ defaultSelected: true,
145
+ credentialIds: ["brave.search.api-key"],
146
+ settingIds: [],
147
+ dependencies: [],
148
+ license: MIT_BRAVE,
149
+ conflictGroup: null,
150
+ capabilityKind: "brave-public-internet",
151
+ bundled: false,
152
+ userInitiatedOnly: true,
153
+ },
154
+ {
155
+ id: "brave.llm-context",
156
+ skillName: "llm-context",
157
+ sourceId: "brave-search-skills",
158
+ sourceRelativePath: "llm-context",
159
+ expectedTreeSha256: "5abba551d0498a80eba4e64207f483974f5a312cda5b263c1cc2b7f99d81c4a3",
160
+ tier: "enhanced",
161
+ role: "evidence-capability",
162
+ purpose: "Plan-dependent bounded extracted web context.",
163
+ recommendedFor: ["full-text-web-grounding"],
164
+ defaultSelected: false,
165
+ credentialIds: ["brave.search.api-key"],
166
+ settingIds: [],
167
+ dependencies: [],
168
+ license: MIT_BRAVE,
169
+ conflictGroup: null,
170
+ capabilityKind: "brave-public-internet",
171
+ bundled: false,
172
+ userInitiatedOnly: true,
173
+ },
174
+ {
175
+ id: "brave.images-search",
176
+ skillName: "images-search",
177
+ sourceId: "brave-search-skills",
178
+ sourceRelativePath: "images-search",
179
+ expectedTreeSha256: "467a9afae0e959b482cb6b2236a57a327959b28985871f88c202dc70b10a7c84",
180
+ tier: "conditional",
181
+ role: "evidence-capability",
182
+ purpose: "Image-source discovery when visual evidence is material.",
183
+ recommendedFor: ["visual-evidence"],
184
+ defaultSelected: false,
185
+ credentialIds: ["brave.search.api-key"],
186
+ settingIds: [],
187
+ dependencies: [],
188
+ license: MIT_BRAVE,
189
+ conflictGroup: null,
190
+ capabilityKind: "brave-public-internet",
191
+ bundled: false,
192
+ userInitiatedOnly: true,
193
+ },
194
+ {
195
+ id: "brave.videos-search",
196
+ skillName: "videos-search",
197
+ sourceId: "brave-search-skills",
198
+ sourceRelativePath: "videos-search",
199
+ expectedTreeSha256: "ff3a2e2291efc27f3f09847b7e0b20e77d229f6a44a1a64e562964c820eb9719",
200
+ tier: "conditional",
201
+ role: "evidence-capability",
202
+ purpose: "Video-source discovery when audiovisual evidence is material.",
203
+ recommendedFor: ["audiovisual-evidence"],
204
+ defaultSelected: false,
205
+ credentialIds: ["brave.search.api-key"],
206
+ settingIds: [],
207
+ dependencies: [],
208
+ license: MIT_BRAVE,
209
+ conflictGroup: null,
210
+ capabilityKind: "brave-public-internet",
211
+ bundled: false,
212
+ userInitiatedOnly: true,
213
+ },
214
+ {
215
+ id: "tiangong.kb-sci-search",
216
+ skillName: "tiangong-kb-sci-search",
217
+ sourceId: "tiangong-ai-skills",
218
+ sourceRelativePath: "tiangong-kb-sci-search",
219
+ expectedTreeSha256: "835e2fa1ce94e035ca64dedf08ca734e409285e563545f334c196b39f4d4170f",
220
+ tier: "enhanced",
221
+ role: "evidence-capability",
222
+ purpose: "Owner-authorized Tiangong SCI database discovery through a bounded JSON POST broker.",
223
+ recommendedFor: ["academic-research", "owner-whitelisted-database"],
224
+ defaultSelected: false,
225
+ credentialIds: ["tiangong.sci.api-key"],
226
+ settingIds: ["tiangong.sci.endpoint", "tiangong.sci.region"],
227
+ dependencies: [],
228
+ license: MIT_TIANGONG,
229
+ conflictGroup: null,
230
+ capabilityKind: "tiangong-sci",
231
+ bundled: false,
232
+ userInitiatedOnly: true,
233
+ },
234
+ {
235
+ id: "tiangong.document-granular-decompose",
236
+ skillName: "document-granular-decompose",
237
+ sourceId: "tiangong-ai-skills",
238
+ sourceRelativePath: "document-granular-decompose",
239
+ expectedTreeSha256: "d02b7d8eea7c29c2fac20601d9d44f1ed00183f2180d0392b30631b6068e14ff",
240
+ tier: "enhanced",
241
+ role: "input-preprocessor",
242
+ purpose: "Hash-bound local-document preprocessing before immutable input admission.",
243
+ recommendedFor: ["pdf", "office-documents", "scanned-documents"],
244
+ defaultSelected: false,
245
+ credentialIds: ["tiangong.unstructure.auth-token"],
246
+ settingIds: [
247
+ "tiangong.unstructure.base-url",
248
+ "tiangong.unstructure.provider",
249
+ "tiangong.unstructure.model",
250
+ ],
251
+ dependencies: [PYTHON_310],
252
+ license: MIT_TIANGONG,
253
+ conflictGroup: null,
254
+ capabilityKind: null,
255
+ bundled: false,
256
+ userInitiatedOnly: true,
257
+ },
258
+ {
259
+ id: "tiangong.academic-paper-download",
260
+ skillName: "academic-paper-download",
261
+ sourceId: "tiangong-ai-skills",
262
+ sourceRelativePath: "academic-paper-download",
263
+ expectedTreeSha256: "f863ab2c53ceee3403a71fc7db8e60fab17499ca62aea3e5ba32dffe3689329f",
264
+ tier: "enhanced",
265
+ role: "acquisition-adapter",
266
+ purpose: "Deterministic OA paper acquisition with verified PDF provenance; browser handoff remains explicit and user-authorized.",
267
+ recommendedFor: ["academic-research", "full-text-papers"],
268
+ defaultSelected: false,
269
+ credentialIds: ["semantic-scholar.api-key"],
270
+ settingIds: ["unpaywall.contact-email"],
271
+ dependencies: [PYTHON_310, PYPDF_LOCK],
272
+ license: MIT_TIANGONG,
273
+ conflictGroup: null,
274
+ capabilityKind: null,
275
+ bundled: false,
276
+ userInitiatedOnly: true,
277
+ },
278
+ {
279
+ id: "anthropic.doc-coauthoring",
280
+ skillName: "doc-coauthoring",
281
+ sourceId: "anthropic-skills",
282
+ sourceRelativePath: "skills/doc-coauthoring",
283
+ expectedTreeSha256: "ac77dcfcbc3363ea52f96fdb9874aa651a06406ac2496b9e7cc93c1e543b8cb6",
284
+ tier: "authoring",
285
+ role: "post-closure-authoring",
286
+ purpose: "Optional structured co-authoring after research closure.",
287
+ recommendedFor: ["reports", "proposals", "specifications"],
288
+ defaultSelected: false,
289
+ credentialIds: [],
290
+ settingIds: [],
291
+ dependencies: [],
292
+ license: ANTHROPIC_EXAMPLE,
293
+ conflictGroup: null,
294
+ capabilityKind: null,
295
+ bundled: false,
296
+ userInitiatedOnly: true,
297
+ },
298
+ ...[
299
+ ["docx", "6141692f73af101fa316a1c1626a455876bd3b70c8ee84136eedff35d73bac1b"],
300
+ ["pdf", "8d433d894adfa21cb6e3679ec2591324d700c68cf1c3d6fcea75618817a792b0"],
301
+ ["pptx", "c098dad12f4aecd650186c543fad4b5be83feea04321804e82ca2dd063bd5754"],
302
+ ["xlsx", "1508b6d8e64bd71d0f3f2c0ad8a1fb4bb3d932c9071e31c92a2f4a2cee4db157"],
303
+ ].map(([skillName, expectedTreeSha256]) => ({
304
+ id: `anthropic.${skillName}`,
305
+ skillName: skillName,
306
+ sourceId: "anthropic-skills",
307
+ sourceRelativePath: `skills/${skillName}`,
308
+ expectedTreeSha256: expectedTreeSha256,
309
+ tier: "authoring",
310
+ role: "post-closure-authoring",
311
+ purpose: `Optional ${skillName} artifact work after mechanical research closure.`,
312
+ recommendedFor: [`${skillName}-artifacts`],
313
+ defaultSelected: false,
314
+ credentialIds: [],
315
+ settingIds: [],
316
+ dependencies: [],
317
+ license: ANTHROPIC_DOCUMENT_TERMS,
318
+ conflictGroup: skillName === "pptx" ? "presentation-authoring" : null,
319
+ capabilityKind: null,
320
+ bundled: false,
321
+ userInitiatedOnly: true,
322
+ })),
323
+ {
324
+ id: "hugohe3.ppt-master",
325
+ skillName: "ppt-master",
326
+ sourceId: "ppt-master",
327
+ sourceRelativePath: "skills/ppt-master",
328
+ expectedTreeSha256: "a430995ca9f5e53402dbf8e8b66b27c13e5abeec7e1af4727696213bc4df5732",
329
+ tier: "authoring",
330
+ role: "post-closure-authoring",
331
+ purpose: "Optional presentation authoring after research closure.",
332
+ recommendedFor: ["presentation-artifacts"],
333
+ defaultSelected: false,
334
+ credentialIds: [],
335
+ settingIds: [],
336
+ dependencies: [PYTHON_310, PPT_MASTER_LOCK_REQUIRED],
337
+ license: MIT_PPT_MASTER,
338
+ conflictGroup: "presentation-authoring",
339
+ capabilityKind: null,
340
+ bundled: false,
341
+ userInitiatedOnly: true,
342
+ },
343
+ ];
344
+ export const RESEARCH_SETUP_CREDENTIALS = [
345
+ {
346
+ id: "brave.search.api-key",
347
+ provider: "Brave Search API",
348
+ requiredBy: RESEARCH_SETUP_SKILLS.filter((skill) => skill.sourceId === "brave-search-skills").map((skill) => skill.id),
349
+ required: true,
350
+ storage: "broker",
351
+ adapterEnvironmentName: null,
352
+ obtainAt: "https://api.search.brave.com/app/keys",
353
+ minimumUtf8Bytes: 8,
354
+ liveCheck: "capability",
355
+ },
356
+ {
357
+ id: "tiangong.sci.api-key",
358
+ provider: "Tiangong SCI Search",
359
+ requiredBy: ["tiangong.kb-sci-search"],
360
+ required: true,
361
+ storage: "broker",
362
+ adapterEnvironmentName: null,
363
+ obtainAt: "Ask the owner of the selected Tiangong SCI deployment.",
364
+ minimumUtf8Bytes: 8,
365
+ liveCheck: "capability",
366
+ },
367
+ {
368
+ id: "tiangong.unstructure.auth-token",
369
+ provider: "Tiangong Unstructure",
370
+ requiredBy: ["tiangong.document-granular-decompose"],
371
+ required: true,
372
+ storage: "adapter",
373
+ adapterEnvironmentName: "UNSTRUCTURED_AUTH_TOKEN",
374
+ obtainAt: "Ask the owner of the selected Unstructure deployment.",
375
+ minimumUtf8Bytes: 8,
376
+ liveCheck: "unstructure",
377
+ },
378
+ {
379
+ id: "semantic-scholar.api-key",
380
+ provider: "Semantic Scholar Academic Graph API",
381
+ requiredBy: ["tiangong.academic-paper-download"],
382
+ required: false,
383
+ storage: "adapter",
384
+ adapterEnvironmentName: "SEMANTIC_SCHOLAR_API_KEY",
385
+ obtainAt: "https://www.semanticscholar.org/product/api",
386
+ minimumUtf8Bytes: 8,
387
+ liveCheck: "semantic-scholar",
388
+ },
389
+ ];
390
+ export const RESEARCH_SETUP_SETTINGS = [
391
+ {
392
+ id: "tiangong.sci.endpoint",
393
+ label: "Tiangong SCI exact endpoint",
394
+ requiredBy: ["tiangong.kb-sci-search"],
395
+ required: true,
396
+ secret: false,
397
+ defaultValue: "https://qyyqlnwqwgvzxnccnbgm.supabase.co/functions/v1/sci_search",
398
+ validation: "https-url",
399
+ },
400
+ {
401
+ id: "tiangong.sci.region",
402
+ label: "Tiangong SCI region header",
403
+ requiredBy: ["tiangong.kb-sci-search"],
404
+ required: false,
405
+ secret: false,
406
+ defaultValue: "us-east-1",
407
+ validation: "identifier",
408
+ },
409
+ {
410
+ id: "tiangong.unstructure.base-url",
411
+ label: "Tiangong Unstructure HTTPS base URL",
412
+ requiredBy: ["tiangong.document-granular-decompose"],
413
+ required: true,
414
+ secret: false,
415
+ defaultValue: null,
416
+ validation: "https-url",
417
+ },
418
+ {
419
+ id: "tiangong.unstructure.provider",
420
+ label: "Optional Unstructure provider",
421
+ requiredBy: ["tiangong.document-granular-decompose"],
422
+ required: false,
423
+ secret: false,
424
+ defaultValue: null,
425
+ validation: "identifier",
426
+ },
427
+ {
428
+ id: "tiangong.unstructure.model",
429
+ label: "Optional Unstructure model",
430
+ requiredBy: ["tiangong.document-granular-decompose"],
431
+ required: false,
432
+ secret: false,
433
+ defaultValue: null,
434
+ validation: "identifier",
435
+ },
436
+ {
437
+ id: "unpaywall.contact-email",
438
+ label: "Unpaywall contact email",
439
+ requiredBy: ["tiangong.academic-paper-download"],
440
+ required: false,
441
+ secret: false,
442
+ defaultValue: null,
443
+ validation: "email",
444
+ },
445
+ ];
446
+ export function setupSource(sourceId) {
447
+ const source = RESEARCH_SETUP_SOURCES.find((candidate) => candidate.id === sourceId);
448
+ if (!source)
449
+ throw setupCatalogError(`Unknown setup source: ${sourceId}`);
450
+ return source;
451
+ }
452
+ export function setupSkill(skillIdOrName) {
453
+ const skill = RESEARCH_SETUP_SKILLS.find((candidate) => candidate.id === skillIdOrName || candidate.skillName === skillIdOrName);
454
+ if (!skill)
455
+ throw setupCatalogError(`Unknown recommended Skill: ${skillIdOrName}`);
456
+ return skill;
457
+ }
458
+ export function resolveSetupSkills(values) {
459
+ const resolved = values.map(setupSkill);
460
+ const ids = resolved.map((skill) => skill.id);
461
+ if (new Set(ids).size !== ids.length)
462
+ throw setupCatalogError("Selected Skills are duplicated.");
463
+ const conflicts = new Map();
464
+ for (const skill of resolved) {
465
+ if (!skill.conflictGroup)
466
+ continue;
467
+ const members = conflicts.get(skill.conflictGroup) ?? [];
468
+ members.push(skill.id);
469
+ conflicts.set(skill.conflictGroup, members);
470
+ }
471
+ const selectedConflict = [...conflicts.entries()].find(([, members]) => members.length > 1);
472
+ if (selectedConflict) {
473
+ throw new CliError(`Conflicting setup Skills were selected: ${selectedConflict[1].join(", ")}`, {
474
+ code: "RESEARCH_SETUP_CONFLICT",
475
+ exitCode: 2,
476
+ details: {
477
+ step: "selection",
478
+ reason: `Only one Skill may be selected from ${selectedConflict[0]}.`,
479
+ minimumAction: "Choose one presentation authoring Skill, or create separate explicit plans.",
480
+ retryCommand: "tiangong-ai research setup plan --help",
481
+ },
482
+ });
483
+ }
484
+ return resolved.sort((left, right) => left.id.localeCompare(right.id));
485
+ }
486
+ export function setupTargetRoot(input) {
487
+ if (input.scope === "project") {
488
+ return input.agent === "codex"
489
+ ? join(resolve(input.workspace), ".agents", "skills")
490
+ : join(resolve(input.workspace), ".claude", "skills");
491
+ }
492
+ if (input.agent === "codex") {
493
+ const configuredHome = input.environment?.HOME?.trim();
494
+ const home = configuredHome && isAbsolute(configuredHome) ? resolve(configuredHome) : homedir();
495
+ return join(home, ".agents", "skills");
496
+ }
497
+ const configured = input.environment?.CLAUDE_CONFIG_DIR?.trim();
498
+ return join(configured && isAbsolute(configured) ? resolve(configured) : join(homedir(), ".claude"), "skills");
499
+ }
500
+ export async function inspectResearchSetupCatalog(input) {
501
+ const workspace = resolve(input.selectedPath);
502
+ const scope = input.scope ?? "project";
503
+ const agents = input.agents?.length ? [...new Set(input.agents)] : ["codex"];
504
+ const entries = [];
505
+ for (const skill of RESEARCH_SETUP_SKILLS) {
506
+ const installations = [];
507
+ for (const agent of agents) {
508
+ const root = setupTargetRoot({
509
+ workspace,
510
+ scope,
511
+ agent,
512
+ ...(input.environment === undefined ? {} : { environment: input.environment }),
513
+ });
514
+ const path = join(root, skill.skillName);
515
+ installations.push({ agent, root, path, ...(await inspectInstalledSkill(path, skill)) });
516
+ }
517
+ entries.push({ ...skill, source: setupSource(skill.sourceId), installations });
518
+ }
519
+ return {
520
+ schemaVersion: 1,
521
+ catalog: "tiangong-research-setup-ecosystem",
522
+ policy: {
523
+ bundledSkills: false,
524
+ userInitiatedOnly: true,
525
+ runtimeInstall: false,
526
+ defaultScope: "project",
527
+ defaultInstallMode: "copy",
528
+ floatingUpdates: false,
529
+ automaticSystemPackageInstall: false,
530
+ automaticPythonPackageInstall: false,
531
+ },
532
+ installer: RESEARCH_SETUP_INSTALLER,
533
+ workspace,
534
+ scope,
535
+ agents,
536
+ sources: RESEARCH_SETUP_SOURCES,
537
+ entries,
538
+ credentials: RESEARCH_SETUP_CREDENTIALS,
539
+ settings: RESEARCH_SETUP_SETTINGS,
540
+ conflictGroups: [
541
+ {
542
+ id: "presentation-authoring",
543
+ maximumSelected: 1,
544
+ skillIds: RESEARCH_SETUP_SKILLS.filter((skill) => skill.conflictGroup === "presentation-authoring").map((skill) => skill.id),
545
+ },
546
+ ],
547
+ roles: {
548
+ evidenceCapabilities: RESEARCH_SETUP_SKILLS.filter((skill) => skill.role === "evidence-capability").map((skill) => skill.id),
549
+ inputPreprocessors: RESEARCH_SETUP_SKILLS.filter((skill) => skill.role === "input-preprocessor").map((skill) => skill.id),
550
+ acquisitionAdapters: RESEARCH_SETUP_SKILLS.filter((skill) => skill.role === "acquisition-adapter").map((skill) => skill.id),
551
+ postClosureAuthoring: RESEARCH_SETUP_SKILLS.filter((skill) => skill.role === "post-closure-authoring").map((skill) => skill.id),
552
+ },
553
+ };
554
+ }
555
+ async function inspectInstalledSkill(path, skill) {
556
+ if (!(await pathExists(path))) {
557
+ return { status: "missing", observedTreeSha256: null, detail: "Skill is not installed." };
558
+ }
559
+ try {
560
+ const info = await lstat(path);
561
+ if (!info.isDirectory() || info.isSymbolicLink()) {
562
+ return {
563
+ status: "blocked",
564
+ observedTreeSha256: null,
565
+ detail: "Install destination must be a regular non-symlink directory.",
566
+ };
567
+ }
568
+ const observedTreeSha256 = await hashRegularTree(path);
569
+ return observedTreeSha256 === skill.expectedTreeSha256
570
+ ? {
571
+ status: "installed",
572
+ observedTreeSha256,
573
+ detail: "Installed bytes match the reviewed tree hash.",
574
+ }
575
+ : {
576
+ status: "drifted",
577
+ observedTreeSha256,
578
+ detail: "Installed bytes do not match the reviewed tree hash.",
579
+ };
580
+ }
581
+ catch (error) {
582
+ return {
583
+ status: "blocked",
584
+ observedTreeSha256: null,
585
+ detail: sanitizeResearchText(error instanceof Error ? error.message : String(error)),
586
+ };
587
+ }
588
+ }
589
+ function setupCatalogError(message) {
590
+ return new CliError(message, {
591
+ code: "RESEARCH_SETUP_SELECTION_INVALID",
592
+ exitCode: 2,
593
+ details: {
594
+ step: "selection",
595
+ reason: message,
596
+ minimumAction: "Choose IDs reported by research setup catalog.",
597
+ retryCommand: "tiangong-ai research setup catalog --json",
598
+ },
599
+ });
600
+ }
601
+ //# sourceMappingURL=setup-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-catalog.js","sourceRoot":"","sources":["../../../src/research/workspace/setup-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { CliIO } from "../../io.js";
2
+ export interface ResearchSetupWizardPrompt {
3
+ note(message: string): void;
4
+ input(message: string, defaultValue?: string): Promise<string>;
5
+ confirm(message: string, defaultValue: boolean): Promise<boolean>;
6
+ select<T extends string>(message: string, choices: ReadonlyArray<{
7
+ value: T;
8
+ label: string;
9
+ }>, defaultValue: T): Promise<T>;
10
+ multiSelect<T extends string>(message: string, choices: ReadonlyArray<{
11
+ value: T;
12
+ label: string;
13
+ }>, defaultValues: readonly T[]): Promise<T[]>;
14
+ close(): void;
15
+ }
16
+ export declare function runResearchSetupWizard(argv: string[], io: CliIO): Promise<number>;
17
+ export declare function executeResearchSetupWizard(input: {
18
+ workspace?: string;
19
+ environment: NodeJS.ProcessEnv;
20
+ prompt: ResearchSetupWizardPrompt;
21
+ }): Promise<{
22
+ exitCode: number;
23
+ value: unknown;
24
+ }>;