@astra-spec/sdk 0.0.1
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/LICENSE +28 -0
- package/README.md +117 -0
- package/dist/helpers.d.ts +26 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +165 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/schema/index.d.ts +35 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +85 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/types.d.ts +122 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/validation/index.d.ts +4 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +4 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/narrative.d.ts +23 -0
- package/dist/validation/narrative.d.ts.map +1 -0
- package/dist/validation/narrative.js +337 -0
- package/dist/validation/narrative.js.map +1 -0
- package/dist/validation/schema.d.ts +16 -0
- package/dist/validation/schema.d.ts.map +1 -0
- package/dist/validation/schema.js +82 -0
- package/dist/validation/schema.js.map +1 -0
- package/dist/validation/semantic.d.ts +18 -0
- package/dist/validation/semantic.d.ts.map +1 -0
- package/dist/validation/semantic.js +751 -0
- package/dist/validation/semantic.js.map +1 -0
- package/package.json +60 -0
- package/src/helpers.ts +171 -0
- package/src/index.ts +69 -0
- package/src/schema/index.ts +113 -0
- package/src/types.ts +139 -0
- package/src/validation/index.ts +26 -0
- package/src/validation/narrative.ts +389 -0
- package/src/validation/schema.ts +132 -0
- package/src/validation/semantic.ts +1129 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../src/validation/semantic.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@astra-spec/sdk",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "TypeScript SDK for ASTRA (Agentic Schema for Transparent Research Analysis): parse, validate, and inspect ASTRA analysis specifications.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "BSD-3-Clause",
|
|
7
|
+
"publishConfig": {
|
|
8
|
+
"access": "public"
|
|
9
|
+
},
|
|
10
|
+
"main": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"import": "./dist/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./schema": {
|
|
18
|
+
"types": "./dist/schema/index.d.ts",
|
|
19
|
+
"import": "./dist/schema/index.js"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist",
|
|
24
|
+
"src"
|
|
25
|
+
],
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "tsc -p tsconfig.build.json",
|
|
28
|
+
"test": "vitest run",
|
|
29
|
+
"test:watch": "vitest",
|
|
30
|
+
"typecheck": "tsc --noEmit",
|
|
31
|
+
"clean": "rm -rf dist"
|
|
32
|
+
},
|
|
33
|
+
"engines": {
|
|
34
|
+
"node": ">=18"
|
|
35
|
+
},
|
|
36
|
+
"keywords": [
|
|
37
|
+
"astra",
|
|
38
|
+
"research",
|
|
39
|
+
"reproducibility",
|
|
40
|
+
"schema",
|
|
41
|
+
"validation",
|
|
42
|
+
"linkml",
|
|
43
|
+
"scientific-computing"
|
|
44
|
+
],
|
|
45
|
+
"homepage": "https://astra-spec.org/",
|
|
46
|
+
"repository": {
|
|
47
|
+
"type": "git",
|
|
48
|
+
"url": "https://github.com/LightconeResearch/astra-typescript"
|
|
49
|
+
},
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"ajv": "^8.17.1",
|
|
52
|
+
"ajv-formats": "^3.0.1",
|
|
53
|
+
"yaml": "^2.6.1"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@types/node": "^22.10.0",
|
|
57
|
+
"typescript": "^5.7.2",
|
|
58
|
+
"vitest": "^2.1.8"
|
|
59
|
+
}
|
|
60
|
+
}
|
package/src/helpers.ts
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
// Dict-based helpers that operate on parsed YAML data structures. Mirrors
|
|
2
|
+
// the Python `astra.helpers` module so semantic validation can resolve
|
|
3
|
+
// `from:` paths, `when:` conditions, and tree lookups without requiring a
|
|
4
|
+
// strongly-typed model.
|
|
5
|
+
|
|
6
|
+
import { readFileSync } from "node:fs";
|
|
7
|
+
import { dirname, isAbsolute, resolve as resolvePath } from "node:path";
|
|
8
|
+
import { parse as parseYaml } from "yaml";
|
|
9
|
+
|
|
10
|
+
import type { Analysis, Decision, Input, Output, Universe } from "./types.js";
|
|
11
|
+
|
|
12
|
+
/** Parse a YAML string into an unknown record. */
|
|
13
|
+
export function parseYamlString(text: string): Record<string, unknown> {
|
|
14
|
+
const data = parseYaml(text);
|
|
15
|
+
if (data == null || typeof data !== "object" || Array.isArray(data)) {
|
|
16
|
+
throw new Error("YAML root must be a mapping/object");
|
|
17
|
+
}
|
|
18
|
+
return data as Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** Read a YAML file from disk as a parsed object. */
|
|
22
|
+
export function loadYaml(filePath: string): Record<string, unknown> {
|
|
23
|
+
const text = readFileSync(filePath, "utf8");
|
|
24
|
+
return parseYamlString(text);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** Evaluate a `when` clause (string | string[] | undefined) against a
|
|
28
|
+
* flat decision selection. AND across entries; `~` prefix negates. */
|
|
29
|
+
export function isConditionMet(
|
|
30
|
+
when: string | string[] | undefined | null,
|
|
31
|
+
selections: Record<string, string>,
|
|
32
|
+
): boolean {
|
|
33
|
+
if (when == null) return true;
|
|
34
|
+
const conditions = typeof when === "string" ? [when] : when;
|
|
35
|
+
for (const cond of conditions) {
|
|
36
|
+
const negate = cond.startsWith("~");
|
|
37
|
+
const ref = negate ? cond.slice(1) : cond;
|
|
38
|
+
const dot = ref.indexOf(".");
|
|
39
|
+
if (dot < 0) return false;
|
|
40
|
+
const decisionId = ref.slice(0, dot);
|
|
41
|
+
const optionId = ref.slice(dot + 1);
|
|
42
|
+
const selected = selections[decisionId];
|
|
43
|
+
let match = selected === optionId;
|
|
44
|
+
if (negate) match = !match;
|
|
45
|
+
if (!match) return false;
|
|
46
|
+
}
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** Locally-defined decisions on a node (skips `from:` aliases). */
|
|
51
|
+
export function collectNodeDecisions(
|
|
52
|
+
node: Record<string, unknown>,
|
|
53
|
+
): Record<string, Decision> {
|
|
54
|
+
const out: Record<string, Decision> = {};
|
|
55
|
+
const decisions = (node.decisions ?? {}) as Record<string, Decision>;
|
|
56
|
+
for (const [id, decision] of Object.entries(decisions)) {
|
|
57
|
+
if (decision && typeof decision === "object" && (decision as Decision).from) continue;
|
|
58
|
+
out[id] = decision;
|
|
59
|
+
}
|
|
60
|
+
return out;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export function getInputIds(node: Record<string, unknown>): Set<string> {
|
|
64
|
+
const inputs = (node.inputs ?? []) as Input[];
|
|
65
|
+
const out = new Set<string>();
|
|
66
|
+
for (const inp of inputs) if (inp?.id) out.add(inp.id);
|
|
67
|
+
return out;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export function getOutputIds(node: Record<string, unknown>): Set<string> {
|
|
71
|
+
const outputs = (node.outputs ?? []) as Output[];
|
|
72
|
+
const out = new Set<string>();
|
|
73
|
+
for (const o of outputs) if (o?.id) out.add(o.id);
|
|
74
|
+
return out;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** Walk `analyses.*.path` references and inline external `astra.yaml`
|
|
78
|
+
* files. Returns a new object only if at least one path was resolved. */
|
|
79
|
+
export function resolveAnalysisTree(
|
|
80
|
+
data: Record<string, unknown>,
|
|
81
|
+
basePath: string,
|
|
82
|
+
): Record<string, unknown> {
|
|
83
|
+
const analyses = data.analyses;
|
|
84
|
+
if (!analyses || typeof analyses !== "object") return data;
|
|
85
|
+
|
|
86
|
+
const resolved: Record<string, unknown> = {};
|
|
87
|
+
let changed = false;
|
|
88
|
+
for (const [id, raw] of Object.entries(analyses)) {
|
|
89
|
+
if (!raw || typeof raw !== "object") {
|
|
90
|
+
resolved[id] = raw;
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
const node = raw as Record<string, unknown>;
|
|
94
|
+
const subPath = node.path;
|
|
95
|
+
if (typeof subPath === "string" && subPath) {
|
|
96
|
+
const absDir = isAbsolute(subPath) ? subPath : resolvePath(basePath, subPath);
|
|
97
|
+
const yamlPath = resolvePath(absDir, "astra.yaml");
|
|
98
|
+
try {
|
|
99
|
+
const subData = loadYaml(yamlPath);
|
|
100
|
+
subData.path = subPath;
|
|
101
|
+
resolved[id] = resolveAnalysisTree(subData, absDir);
|
|
102
|
+
changed = true;
|
|
103
|
+
} catch {
|
|
104
|
+
// If the file doesn't exist, leave the stub in place — a
|
|
105
|
+
// higher-layer warning surfaces the problem.
|
|
106
|
+
resolved[id] = node;
|
|
107
|
+
}
|
|
108
|
+
} else {
|
|
109
|
+
const sub = resolveAnalysisTree(node, basePath);
|
|
110
|
+
resolved[id] = sub;
|
|
111
|
+
if (sub !== node) changed = true;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (!changed) return data;
|
|
116
|
+
return { ...data, analyses: resolved };
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/** Inject mapping keys as `id` fields on each value, mirroring the
|
|
120
|
+
* Python-side preprocessing. ASTRA YAML is keyed-dict, but the JSON
|
|
121
|
+
* Schema requires `id` to be set. Mutates the supplied data in place. */
|
|
122
|
+
export function injectAnalysisIdsInPlace(data: Record<string, unknown>): void {
|
|
123
|
+
for (const field of ["decisions", "analyses", "prior_insights", "findings"]) {
|
|
124
|
+
const mapping = data[field];
|
|
125
|
+
if (!mapping || typeof mapping !== "object" || Array.isArray(mapping)) continue;
|
|
126
|
+
for (const [key, value] of Object.entries(mapping as Record<string, unknown>)) {
|
|
127
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) continue;
|
|
128
|
+
const obj = value as Record<string, unknown>;
|
|
129
|
+
if (obj.id === undefined) obj.id = key;
|
|
130
|
+
if (field === "decisions") {
|
|
131
|
+
const opts = obj.options;
|
|
132
|
+
if (opts && typeof opts === "object" && !Array.isArray(opts)) {
|
|
133
|
+
for (const [okey, ovalue] of Object.entries(opts as Record<string, unknown>)) {
|
|
134
|
+
if (ovalue && typeof ovalue === "object" && !Array.isArray(ovalue)) {
|
|
135
|
+
const o = ovalue as Record<string, unknown>;
|
|
136
|
+
if (o.id === undefined) o.id = okey;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (field === "analyses") {
|
|
142
|
+
injectAnalysisIdsInPlace(obj);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export function injectUniverseIdsInPlace(node: Record<string, unknown>): void {
|
|
149
|
+
const analyses = node.analyses;
|
|
150
|
+
if (!analyses || typeof analyses !== "object" || Array.isArray(analyses)) return;
|
|
151
|
+
for (const [key, value] of Object.entries(analyses as Record<string, unknown>)) {
|
|
152
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
153
|
+
const obj = value as Record<string, unknown>;
|
|
154
|
+
if (obj.id === undefined) obj.id = key;
|
|
155
|
+
injectUniverseIdsInPlace(obj);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/** Deep clone via JSON round-trip. ASTRA documents are pure data — no
|
|
161
|
+
* cycles, no functions — so this is sufficient and avoids a dep. */
|
|
162
|
+
export function deepClone<T>(value: T): T {
|
|
163
|
+
return JSON.parse(JSON.stringify(value)) as T;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export function dirOf(filePath: string): string {
|
|
167
|
+
return dirname(filePath);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// Re-export type utility for consumers that want strongly-typed outputs.
|
|
171
|
+
export type { Analysis, Universe };
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// Public API for @astra-spec/sdk. The package focuses on parsing and
|
|
2
|
+
// validating ASTRA analyses; downstream tools layer their own UX on top.
|
|
3
|
+
|
|
4
|
+
export type {
|
|
5
|
+
Analysis,
|
|
6
|
+
Decision,
|
|
7
|
+
Evidence,
|
|
8
|
+
FragmentSelector,
|
|
9
|
+
Input,
|
|
10
|
+
InputType,
|
|
11
|
+
Insight,
|
|
12
|
+
Narrative,
|
|
13
|
+
Option,
|
|
14
|
+
Output,
|
|
15
|
+
OutputType,
|
|
16
|
+
Recipe,
|
|
17
|
+
Resources,
|
|
18
|
+
TextQuoteSelector,
|
|
19
|
+
Universe,
|
|
20
|
+
UniverseNode,
|
|
21
|
+
} from "./types.js";
|
|
22
|
+
|
|
23
|
+
export {
|
|
24
|
+
loadYaml,
|
|
25
|
+
parseYamlString,
|
|
26
|
+
isConditionMet,
|
|
27
|
+
collectNodeDecisions,
|
|
28
|
+
resolveAnalysisTree,
|
|
29
|
+
injectAnalysisIdsInPlace,
|
|
30
|
+
injectUniverseIdsInPlace,
|
|
31
|
+
getInputIds,
|
|
32
|
+
getOutputIds,
|
|
33
|
+
} from "./helpers.js";
|
|
34
|
+
|
|
35
|
+
export {
|
|
36
|
+
// Structural (JSON Schema)
|
|
37
|
+
validateAnalysisData,
|
|
38
|
+
validateUniverseData,
|
|
39
|
+
validateAnalysisFile,
|
|
40
|
+
validateUniverseFile,
|
|
41
|
+
isValidAnalysis,
|
|
42
|
+
isValidUniverse,
|
|
43
|
+
|
|
44
|
+
// Semantic
|
|
45
|
+
SemanticError,
|
|
46
|
+
validateAnalysis,
|
|
47
|
+
validateUniverse,
|
|
48
|
+
semanticValidateAnalysisFile,
|
|
49
|
+
semanticValidateUniverseFile,
|
|
50
|
+
|
|
51
|
+
// Narrative
|
|
52
|
+
NarrativeWarning,
|
|
53
|
+
validateNarrativeAnchors,
|
|
54
|
+
validateNarrativeAnchorsFile,
|
|
55
|
+
checkNarrativeCoverage,
|
|
56
|
+
checkNarrativeCoverageFile,
|
|
57
|
+
validateNarrativeSections,
|
|
58
|
+
validateNarrativeSectionsFile,
|
|
59
|
+
} from "./validation/index.js";
|
|
60
|
+
|
|
61
|
+
export {
|
|
62
|
+
type JsonSchema,
|
|
63
|
+
type SchemaLoadOptions,
|
|
64
|
+
ASTRA_SPEC_HOST,
|
|
65
|
+
astraSchemaUrl,
|
|
66
|
+
loadAstraSchema,
|
|
67
|
+
setAstraSchema,
|
|
68
|
+
clearAstraSchemaCache,
|
|
69
|
+
} from "./schema/index.js";
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
// Schema loader. The package no longer bundles the JSON Schema —
|
|
2
|
+
// instead we fetch the frozen, versioned artifact from astra-spec.org
|
|
3
|
+
// (cached in memory, with an optional on-disk cache for repeat runs).
|
|
4
|
+
|
|
5
|
+
import { createHash } from "node:crypto";
|
|
6
|
+
import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
7
|
+
import { tmpdir } from "node:os";
|
|
8
|
+
import { join } from "node:path";
|
|
9
|
+
import { fileURLToPath } from "node:url";
|
|
10
|
+
|
|
11
|
+
export type JsonSchema = Record<string, unknown>;
|
|
12
|
+
|
|
13
|
+
export interface SchemaLoadOptions {
|
|
14
|
+
/** Version segment in the URL path. Defaults to "latest". */
|
|
15
|
+
version?: string;
|
|
16
|
+
/** Explicit URL override. Wins over `version`. Supports `https://` and `file://`. */
|
|
17
|
+
url?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Directory used as the on-disk cache. Set to `null` (or `false`) to
|
|
20
|
+
* disable disk caching entirely. Defaults to `<tmpdir>/astra-schema-cache`.
|
|
21
|
+
*/
|
|
22
|
+
cacheDir?: string | null | false;
|
|
23
|
+
/** Bypass both in-memory and on-disk caches and fetch fresh. */
|
|
24
|
+
force?: boolean;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const _memoryCache = new Map<string, JsonSchema>();
|
|
28
|
+
|
|
29
|
+
export const ASTRA_SPEC_HOST = "https://astra-spec.org";
|
|
30
|
+
|
|
31
|
+
/** Build the canonical schema URL for a given version. */
|
|
32
|
+
export function astraSchemaUrl(version = "latest"): string {
|
|
33
|
+
return `${ASTRA_SPEC_HOST}/${version}/schema/astra.schema.json`;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function defaultCacheDir(): string {
|
|
37
|
+
return join(tmpdir(), "astra-schema-cache");
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function cacheFileFor(url: string, dir: string): string {
|
|
41
|
+
const hash = createHash("sha256").update(url).digest("hex").slice(0, 16);
|
|
42
|
+
return join(dir, `${hash}.json`);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
async function readUrl(url: string): Promise<JsonSchema> {
|
|
46
|
+
if (url.startsWith("file://")) {
|
|
47
|
+
const text = readFileSync(fileURLToPath(url), "utf8");
|
|
48
|
+
return JSON.parse(text) as JsonSchema;
|
|
49
|
+
}
|
|
50
|
+
const res = await fetch(url);
|
|
51
|
+
if (!res.ok) {
|
|
52
|
+
throw new Error(`Failed to fetch ASTRA schema from ${url}: HTTP ${res.status}`);
|
|
53
|
+
}
|
|
54
|
+
return (await res.json()) as JsonSchema;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Load the ASTRA JSON Schema. Default source is
|
|
59
|
+
* `https://astra-spec.org/latest/schema/astra.schema.json`.
|
|
60
|
+
*
|
|
61
|
+
* Subsequent calls with the same URL hit an in-memory cache. With disk
|
|
62
|
+
* caching enabled (the default), the schema is also persisted under
|
|
63
|
+
* `<tmpdir>/astra-schema-cache` so future processes don't have to refetch.
|
|
64
|
+
*/
|
|
65
|
+
export async function loadAstraSchema(opts: SchemaLoadOptions = {}): Promise<JsonSchema> {
|
|
66
|
+
const url = opts.url ?? astraSchemaUrl(opts.version ?? "latest");
|
|
67
|
+
|
|
68
|
+
if (!opts.force) {
|
|
69
|
+
const cached = _memoryCache.get(url);
|
|
70
|
+
if (cached) return cached;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const useDisk = opts.cacheDir !== null && opts.cacheDir !== false;
|
|
74
|
+
const cacheDir = typeof opts.cacheDir === "string" ? opts.cacheDir : defaultCacheDir();
|
|
75
|
+
const cachePath = useDisk ? cacheFileFor(url, cacheDir) : null;
|
|
76
|
+
|
|
77
|
+
if (cachePath && !opts.force) {
|
|
78
|
+
try {
|
|
79
|
+
const text = readFileSync(cachePath, "utf8");
|
|
80
|
+
const schema = JSON.parse(text) as JsonSchema;
|
|
81
|
+
_memoryCache.set(url, schema);
|
|
82
|
+
return schema;
|
|
83
|
+
} catch {
|
|
84
|
+
// Fall through to network fetch.
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const schema = await readUrl(url);
|
|
89
|
+
_memoryCache.set(url, schema);
|
|
90
|
+
|
|
91
|
+
if (cachePath) {
|
|
92
|
+
try {
|
|
93
|
+
mkdirSync(cacheDir, { recursive: true });
|
|
94
|
+
writeFileSync(cachePath, JSON.stringify(schema));
|
|
95
|
+
} catch {
|
|
96
|
+
// Best-effort cache; ignore write failures.
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return schema;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/** Install a pre-loaded schema in the in-memory cache. Useful for tests
|
|
104
|
+
* and for environments where the consumer prefers to manage fetching. */
|
|
105
|
+
export function setAstraSchema(schema: JsonSchema, opts: { url?: string; version?: string } = {}): void {
|
|
106
|
+
const url = opts.url ?? astraSchemaUrl(opts.version ?? "latest");
|
|
107
|
+
_memoryCache.set(url, schema);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/** Drop all cached schemas from memory. */
|
|
111
|
+
export function clearAstraSchemaCache(): void {
|
|
112
|
+
_memoryCache.clear();
|
|
113
|
+
}
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
// Hand-curated TypeScript types matching the LinkML schema published at
|
|
2
|
+
// https://astra-spec.org/. The shapes are deliberately permissive (string
|
|
3
|
+
// IDs, optional fields) — strict structural checks happen in `validation`.
|
|
4
|
+
|
|
5
|
+
export type InputType = "data" | "analysis";
|
|
6
|
+
export type OutputType = "metric" | "figure" | "table" | "data" | "report";
|
|
7
|
+
|
|
8
|
+
export interface TextQuoteSelector {
|
|
9
|
+
exact: string;
|
|
10
|
+
prefix?: string;
|
|
11
|
+
suffix?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface FragmentSelector {
|
|
15
|
+
value?: string;
|
|
16
|
+
page?: number;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface Evidence {
|
|
20
|
+
id: string;
|
|
21
|
+
doi?: string;
|
|
22
|
+
artifact?: string;
|
|
23
|
+
version?: number;
|
|
24
|
+
snapshot?: string;
|
|
25
|
+
source_commit?: string;
|
|
26
|
+
quote?: TextQuoteSelector;
|
|
27
|
+
location?: FragmentSelector;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface Insight {
|
|
31
|
+
id: string;
|
|
32
|
+
label?: string;
|
|
33
|
+
claim: string;
|
|
34
|
+
created_at: string;
|
|
35
|
+
evidence: Evidence[];
|
|
36
|
+
derived?: boolean;
|
|
37
|
+
scope?: string;
|
|
38
|
+
tags?: string[];
|
|
39
|
+
notes?: string;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface Resources {
|
|
43
|
+
cpus?: number;
|
|
44
|
+
memory?: string;
|
|
45
|
+
time_limit?: string;
|
|
46
|
+
disk?: string;
|
|
47
|
+
gpus?: number;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface Recipe {
|
|
51
|
+
command?: string;
|
|
52
|
+
resources?: Resources;
|
|
53
|
+
container?: string;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export interface Input {
|
|
57
|
+
id: string;
|
|
58
|
+
label?: string;
|
|
59
|
+
type?: InputType;
|
|
60
|
+
description?: string;
|
|
61
|
+
source?: string;
|
|
62
|
+
ref?: string;
|
|
63
|
+
ref_version?: string;
|
|
64
|
+
use_outputs?: string[];
|
|
65
|
+
from?: string;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface Output {
|
|
69
|
+
id: string;
|
|
70
|
+
label?: string;
|
|
71
|
+
type?: OutputType;
|
|
72
|
+
description?: string;
|
|
73
|
+
inputs?: string[];
|
|
74
|
+
decisions?: string[];
|
|
75
|
+
recipe?: Recipe;
|
|
76
|
+
from?: string;
|
|
77
|
+
when?: string[];
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export interface Option {
|
|
81
|
+
id?: string;
|
|
82
|
+
label: string;
|
|
83
|
+
description?: string;
|
|
84
|
+
insights?: string[];
|
|
85
|
+
incompatible_with?: string[];
|
|
86
|
+
requires?: string[];
|
|
87
|
+
excluded?: boolean;
|
|
88
|
+
excluded_reason?: string;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export interface Decision {
|
|
92
|
+
id?: string;
|
|
93
|
+
label?: string;
|
|
94
|
+
rationale?: string;
|
|
95
|
+
tags?: string[];
|
|
96
|
+
default?: string;
|
|
97
|
+
options?: Record<string, Option>;
|
|
98
|
+
from?: string;
|
|
99
|
+
when?: string[];
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export interface Narrative {
|
|
103
|
+
summary?: string;
|
|
104
|
+
findings?: string;
|
|
105
|
+
methods?: string;
|
|
106
|
+
inputs?: string;
|
|
107
|
+
outputs?: string;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export interface Analysis {
|
|
111
|
+
id?: string;
|
|
112
|
+
version?: string;
|
|
113
|
+
name?: string;
|
|
114
|
+
narrative?: Narrative;
|
|
115
|
+
authors?: string[];
|
|
116
|
+
tags?: string[];
|
|
117
|
+
inputs?: Input[];
|
|
118
|
+
outputs?: Output[];
|
|
119
|
+
decisions?: Record<string, Decision>;
|
|
120
|
+
prior_insights?: Record<string, Insight>;
|
|
121
|
+
findings?: Record<string, Insight>;
|
|
122
|
+
container?: string;
|
|
123
|
+
path?: string;
|
|
124
|
+
analyses?: Record<string, Analysis>;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export interface UniverseNode {
|
|
128
|
+
id?: string;
|
|
129
|
+
universe?: string;
|
|
130
|
+
decisions?: Record<string, string>;
|
|
131
|
+
analyses?: Record<string, UniverseNode>;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export interface Universe {
|
|
135
|
+
id: string;
|
|
136
|
+
description?: string;
|
|
137
|
+
decisions?: Record<string, string>;
|
|
138
|
+
analyses?: Record<string, UniverseNode>;
|
|
139
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export {
|
|
2
|
+
validateAnalysisData,
|
|
3
|
+
validateUniverseData,
|
|
4
|
+
validateAnalysisFile,
|
|
5
|
+
validateUniverseFile,
|
|
6
|
+
isValidAnalysis,
|
|
7
|
+
isValidUniverse,
|
|
8
|
+
} from "./schema.js";
|
|
9
|
+
|
|
10
|
+
export {
|
|
11
|
+
SemanticError,
|
|
12
|
+
validateAnalysis,
|
|
13
|
+
validateUniverse,
|
|
14
|
+
validateAnalysisFile as semanticValidateAnalysisFile,
|
|
15
|
+
validateUniverseFile as semanticValidateUniverseFile,
|
|
16
|
+
} from "./semantic.js";
|
|
17
|
+
|
|
18
|
+
export {
|
|
19
|
+
NarrativeWarning,
|
|
20
|
+
validateNarrativeAnchors,
|
|
21
|
+
validateNarrativeAnchorsFile,
|
|
22
|
+
checkNarrativeCoverage,
|
|
23
|
+
checkNarrativeCoverageFile,
|
|
24
|
+
validateNarrativeSections,
|
|
25
|
+
validateNarrativeSectionsFile,
|
|
26
|
+
} from "./narrative.js";
|