@longtable/cli 0.1.60 → 0.1.62

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/dist/cli.js CHANGED
@@ -153,7 +153,7 @@ function usage() {
153
153
  " longtable access status [--json]",
154
154
  " longtable access doctor [--doi <doi>] [--publisher auto|elsevier|springer_nature|wiley|taylor_francis|all] [--json]",
155
155
  " longtable access probe --doi <doi> [--publisher auto|elsevier|springer_nature|wiley|taylor_francis] [--json]",
156
- " longtable search --query <text> [--intent literature|theory|measurement|citation|metadata|venue] [--field <text>] [--source all|crossref,arxiv,openalex,semantic_scholar,pubmed,eric,doaj,unpaywall] [--must <term[,term]>] [--exclude <term[,term]>] [--limit <n>] [--allow-partial] [--publisher-access] [--record] [--cwd <path>] [--json]",
156
+ " longtable search --query <text> [--intent literature|theory|measurement|citation|metadata|venue] [--field <text>] [--source all|crossref,arxiv,openalex,semantic_scholar,pubmed,eric,doaj] [--must <term[,term]>] [--exclude <term[,term]>] [--limit <n>] [--allow-partial] [--publisher-access] [--record] [--cwd <path>] [--json]",
157
157
  " longtable scholar-research doctor [--json]",
158
158
  " longtable scholar-research scaffold [--cwd <path>] [--run-id <id>] [--json]",
159
159
  " longtable scholar-research smoke-fixture [--json]",
@@ -3336,7 +3336,7 @@ async function runInteractiveAccessSetup(args) {
3336
3336
  return buildAccessReadinessProfile({ readiness, routes: [] });
3337
3337
  }
3338
3338
  const routeSelections = await promptMultiChoice("Select every scholarly access route that is available or intended. Secrets are never stored.", [
3339
- { id: "metadata", label: "Open metadata", description: "Crossref, OpenAlex, Semantic Scholar, PubMed, ERIC, DOAJ, Unpaywall." },
3339
+ { id: "metadata", label: "Open metadata", description: "Crossref, OpenAlex, Semantic Scholar, PubMed, ERIC, DOAJ." },
3340
3340
  { id: "oa_full_text", label: "OA full text", description: "Use open-access PDF/full-text when legally available." },
3341
3341
  { id: "institutional", label: "Institutional access", description: "VPN, library proxy, or browser SSO handled by the researcher." },
3342
3342
  { id: "publisher_tdm", label: "Publisher API/TDM", description: "Use configured publisher API/TDM environment variables." },
@@ -22,6 +22,7 @@ export declare function parseRoleFlag(value?: string): CanonicalPersona[];
22
22
  export declare function parseInvocationDirective(prompt: string): LongTableInvocationDirective;
23
23
  export declare function routePersonas(prompt: string, explicitRoleFlag?: string): PersonaRoutingResult;
24
24
  export declare function renderDisclosure(roles: CanonicalPersona[], language: OutputLanguage): string | null;
25
+ export declare function renderRoleGuidance(roles: readonly CanonicalPersona[]): string | null;
25
26
  export declare function buildPersonaGuidance(options: {
26
27
  mode: InteractionMode;
27
28
  prompt: string;
@@ -124,6 +124,18 @@ export function renderDisclosure(roles, language) {
124
124
  ? `LongTable consulted: ${labels.join(", ")}`
125
125
  : `LongTable consulted: ${labels.join(", ")}`;
126
126
  }
127
+ export function renderRoleGuidance(roles) {
128
+ if (roles.length === 0) {
129
+ return null;
130
+ }
131
+ return [
132
+ "Role guidance:",
133
+ ...roles.map((role) => {
134
+ const definition = getPersonaDefinition(role);
135
+ return `- ${definition.label}: ${definition.shortDescription}`;
136
+ })
137
+ ].join("\n");
138
+ }
127
139
  export function buildPersonaGuidance(options) {
128
140
  const directive = parseInvocationDirective(options.prompt);
129
141
  const effectivePrompt = directive.cleanedPrompt;
@@ -137,6 +149,10 @@ export function buildPersonaGuidance(options) {
137
149
  if (disclosure) {
138
150
  lines.push(disclosure);
139
151
  }
152
+ const roleGuidance = renderRoleGuidance(routing.consultedRoles);
153
+ if (roleGuidance) {
154
+ lines.push(roleGuidance);
155
+ }
140
156
  if (routing.ambiguousSignal === "editor_or_reviewer") {
141
157
  lines.push(routing.outputLanguage === "ko"
142
158
  ? "Ambiguity note: 편집자 관점인지 리뷰어 관점인지 애매합니다. 먼저 둘 중 무엇을 우선할지 짧게 확인하세요."
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@longtable/cli",
3
- "version": "0.1.60",
3
+ "version": "0.1.62",
4
4
  "private": false,
5
5
  "description": "Researcher-facing LongTable CLI",
6
6
  "type": "module",
@@ -29,13 +29,13 @@
29
29
  },
30
30
  "dependencies": {
31
31
  "@clack/prompts": "^1.2.0",
32
- "@longtable/checkpoints": "0.1.60",
33
- "@longtable/core": "0.1.60",
34
- "@longtable/memory": "0.1.60",
35
- "@longtable/provider-claude": "0.1.60",
36
- "@longtable/provider-codex": "0.1.60",
37
- "@longtable/scholar-research": "0.1.60",
38
- "@longtable/setup": "0.1.60"
32
+ "@longtable/checkpoints": "0.1.62",
33
+ "@longtable/core": "0.1.62",
34
+ "@longtable/memory": "0.1.62",
35
+ "@longtable/provider-claude": "0.1.62",
36
+ "@longtable/provider-codex": "0.1.62",
37
+ "@longtable/scholar-research": "0.1.62",
38
+ "@longtable/setup": "0.1.62"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@types/node": "^22.10.1",