@miadi/ncp-story-studio 0.1.0
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 +21 -0
- package/PHASES.md +160 -0
- package/README.md +140 -0
- package/assets/PROVENANCE.json +5 -0
- package/assets/examples/PROVENANCE.json +26 -0
- package/assets/examples/anora.json +228 -0
- package/assets/examples/example-story.json +112 -0
- package/assets/examples/the-shawshank-redemption.json +2068 -0
- package/assets/examples/weaver_of_words__the_catalyst_of_change_251101.json +1132 -0
- package/assets/ncp-schema.json +794 -0
- package/assets/terminology.json +2919 -0
- package/dist/agents/adapter.d.ts +60 -0
- package/dist/agents/adapter.d.ts.map +1 -0
- package/dist/agents/adapter.js +69 -0
- package/dist/agents/adapter.js.map +1 -0
- package/dist/agents/context.d.ts +19 -0
- package/dist/agents/context.d.ts.map +1 -0
- package/dist/agents/context.js +49 -0
- package/dist/agents/context.js.map +1 -0
- package/dist/agents/index.d.ts +5 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +7 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/links.d.ts +41 -0
- package/dist/agents/links.d.ts.map +1 -0
- package/dist/agents/links.js +76 -0
- package/dist/agents/links.js.map +1 -0
- package/dist/agents/personas.d.ts +16 -0
- package/dist/agents/personas.d.ts.map +1 -0
- package/dist/agents/personas.js +34 -0
- package/dist/agents/personas.js.map +1 -0
- package/dist/fixtures/index.d.ts +27 -0
- package/dist/fixtures/index.d.ts.map +1 -0
- package/dist/fixtures/index.js +69 -0
- package/dist/fixtures/index.js.map +1 -0
- package/dist/graph/index.d.ts +60 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +97 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/react/index.d.ts +2 -0
- package/dist/graph/react/index.d.ts.map +1 -0
- package/dist/graph/react/index.js +5 -0
- package/dist/graph/react/index.js.map +1 -0
- package/dist/graph/react/story-graph.d.ts +17 -0
- package/dist/graph/react/story-graph.d.ts.map +1 -0
- package/dist/graph/react/story-graph.js +26 -0
- package/dist/graph/react/story-graph.js.map +1 -0
- package/dist/graph/tones.d.ts +36 -0
- package/dist/graph/tones.d.ts.map +1 -0
- package/dist/graph/tones.js +38 -0
- package/dist/graph/tones.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/schema/constants.d.ts +3 -0
- package/dist/schema/constants.d.ts.map +1 -0
- package/dist/schema/constants.js +3 -0
- package/dist/schema/constants.js.map +1 -0
- package/dist/schema/extensions.d.ts +14 -0
- package/dist/schema/extensions.d.ts.map +1 -0
- package/dist/schema/extensions.js +61 -0
- package/dist/schema/extensions.js.map +1 -0
- package/dist/schema/generated-terms.d.ts +7 -0
- package/dist/schema/generated-terms.d.ts.map +1 -0
- package/dist/schema/generated-terms.js +518 -0
- package/dist/schema/generated-terms.js.map +1 -0
- package/dist/schema/generated.d.ts +64 -0
- package/dist/schema/generated.d.ts.map +1 -0
- package/dist/schema/generated.js +497 -0
- package/dist/schema/generated.js.map +1 -0
- package/dist/schema/index.d.ts +48 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +92 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/normalize.d.ts +20 -0
- package/dist/schema/normalize.d.ts.map +1 -0
- package/dist/schema/normalize.js +88 -0
- package/dist/schema/normalize.js.map +1 -0
- package/dist/schema/read.d.ts +31 -0
- package/dist/schema/read.d.ts.map +1 -0
- package/dist/schema/read.js +640 -0
- package/dist/schema/read.js.map +1 -0
- package/dist/schema/terms.d.ts +11 -0
- package/dist/schema/terms.d.ts.map +1 -0
- package/dist/schema/terms.js +80 -0
- package/dist/schema/terms.js.map +1 -0
- package/dist/schema/types.d.ts +140 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/types.js +2 -0
- package/dist/schema/types.js.map +1 -0
- package/dist/schema/validate.d.ts +54 -0
- package/dist/schema/validate.d.ts.map +1 -0
- package/dist/schema/validate.js +490 -0
- package/dist/schema/validate.js.map +1 -0
- package/dist/store/index.d.ts +76 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +96 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/json.d.ts +35 -0
- package/dist/store/json.d.ts.map +1 -0
- package/dist/store/json.js +192 -0
- package/dist/store/json.js.map +1 -0
- package/dist/store/mutations.d.ts +45 -0
- package/dist/store/mutations.d.ts.map +1 -0
- package/dist/store/mutations.js +181 -0
- package/dist/store/mutations.js.map +1 -0
- package/dist/store/neon.d.ts +42 -0
- package/dist/store/neon.d.ts.map +1 -0
- package/dist/store/neon.js +167 -0
- package/dist/store/neon.js.map +1 -0
- package/dist/terminology/generated.d.ts +3 -0
- package/dist/terminology/generated.d.ts.map +1 -0
- package/dist/terminology/generated.js +2923 -0
- package/dist/terminology/generated.js.map +1 -0
- package/dist/terminology/index.d.ts +20 -0
- package/dist/terminology/index.d.ts.map +1 -0
- package/dist/terminology/index.js +71 -0
- package/dist/terminology/index.js.map +1 -0
- package/dist/terminology/types.d.ts +25 -0
- package/dist/terminology/types.d.ts.map +1 -0
- package/dist/terminology/types.js +2 -0
- package/dist/terminology/types.js.map +1 -0
- package/package.json +117 -0
- package/rispecs/README.rise.md +5 -0
- package/rispecs/RISPEC.md +9 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// Real NCP files in the wild are not all shaped the same way. The canonical
|
|
2
|
+
// examples ship in three layouts, and older exports omit whole collections.
|
|
3
|
+
// Normalizing them is fine; doing it silently is not, so every adaptation is
|
|
4
|
+
// reported as a note the caller can show.
|
|
5
|
+
import { NCP_SCHEMA_VERSION } from './constants.js';
|
|
6
|
+
const EMPTY_SUBTEXT = {
|
|
7
|
+
perspectives: [],
|
|
8
|
+
players: [],
|
|
9
|
+
dynamics: [],
|
|
10
|
+
storypoints: [],
|
|
11
|
+
storybeats: [],
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Accepts:
|
|
15
|
+
* - `{ schema_version, story }` — canonical, passed through
|
|
16
|
+
* - `{ story, narratives }` — the layout `anora.json` and `the-shawshank-redemption.json` use
|
|
17
|
+
* - `{ story }` without a schema version
|
|
18
|
+
* - a bare story object
|
|
19
|
+
*/
|
|
20
|
+
export function normalizeNcpInput(input, options) {
|
|
21
|
+
const notes = [];
|
|
22
|
+
if (typeof input !== 'object' || input === null) {
|
|
23
|
+
throw new TypeError('an NCP document must be an object');
|
|
24
|
+
}
|
|
25
|
+
const raw = input;
|
|
26
|
+
let storyRaw;
|
|
27
|
+
if (typeof raw['story'] === 'object' && raw['story'] !== null) {
|
|
28
|
+
storyRaw = { ...raw['story'] };
|
|
29
|
+
}
|
|
30
|
+
else if (Array.isArray(raw['narratives'])) {
|
|
31
|
+
storyRaw = { ...raw };
|
|
32
|
+
notes.push({ path: '$', action: 'treated the top-level object as the story' });
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
throw new TypeError('no `story` object and no `narratives` array: this is not an NCP document');
|
|
36
|
+
}
|
|
37
|
+
if (!Array.isArray(storyRaw['narratives']) && Array.isArray(raw['narratives'])) {
|
|
38
|
+
storyRaw['narratives'] = raw['narratives'];
|
|
39
|
+
notes.push({ path: '$.narratives', action: 'moved top-level `narratives` under `story`' });
|
|
40
|
+
}
|
|
41
|
+
if (!Array.isArray(storyRaw['narratives'])) {
|
|
42
|
+
storyRaw['narratives'] = [];
|
|
43
|
+
notes.push({ path: '$.story.narratives', action: 'added an empty `narratives` array' });
|
|
44
|
+
}
|
|
45
|
+
const narratives = storyRaw['narratives'].map((narrativeRaw, index) => normalizeNarrative(narrativeRaw, `$.story.narratives[${index}]`, notes));
|
|
46
|
+
const schemaVersion = typeof raw['schema_version'] === 'string' ? raw['schema_version'] : (options?.schemaVersion ?? NCP_SCHEMA_VERSION);
|
|
47
|
+
if (typeof raw['schema_version'] !== 'string') {
|
|
48
|
+
notes.push({ path: '$.schema_version', action: `assumed \`${schemaVersion}\`` });
|
|
49
|
+
}
|
|
50
|
+
const story = { ...storyRaw, narratives };
|
|
51
|
+
return { document: { schema_version: schemaVersion, story }, notes };
|
|
52
|
+
}
|
|
53
|
+
function normalizeNarrative(input, path, notes) {
|
|
54
|
+
if (typeof input !== 'object' || input === null) {
|
|
55
|
+
throw new TypeError(`${path} is not a narrative object`);
|
|
56
|
+
}
|
|
57
|
+
const raw = { ...input };
|
|
58
|
+
const subtextRaw = (typeof raw['subtext'] === 'object' && raw['subtext'] !== null ? raw['subtext'] : {});
|
|
59
|
+
if (typeof raw['subtext'] !== 'object' || raw['subtext'] === null) {
|
|
60
|
+
notes.push({ path: `${path}.subtext`, action: 'added an empty `subtext`' });
|
|
61
|
+
}
|
|
62
|
+
const subtext = {};
|
|
63
|
+
for (const key of Object.keys(EMPTY_SUBTEXT)) {
|
|
64
|
+
if (Array.isArray(subtextRaw[key])) {
|
|
65
|
+
subtext[key] = subtextRaw[key];
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
subtext[key] = [];
|
|
69
|
+
notes.push({ path: `${path}.subtext.${key}`, action: 'added an empty array' });
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const storytellingRaw = (typeof raw['storytelling'] === 'object' && raw['storytelling'] !== null ? raw['storytelling'] : {});
|
|
73
|
+
if (typeof raw['storytelling'] !== 'object' || raw['storytelling'] === null) {
|
|
74
|
+
notes.push({ path: `${path}.storytelling`, action: 'added an empty `storytelling`' });
|
|
75
|
+
}
|
|
76
|
+
const storytelling = {};
|
|
77
|
+
for (const key of ['overviews', 'moments']) {
|
|
78
|
+
if (Array.isArray(storytellingRaw[key])) {
|
|
79
|
+
storytelling[key] = storytellingRaw[key];
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
storytelling[key] = [];
|
|
83
|
+
notes.push({ path: `${path}.storytelling.${key}`, action: 'added an empty array' });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return { ...raw, subtext, storytelling };
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/schema/normalize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type NormalizeNote } from './normalize.js';
|
|
2
|
+
import type { NcpDocument, Story } from './types.js';
|
|
3
|
+
export type NcpDialect = 'canonical' | 'subtxt-export' | 'miadi-design' | 'unknown';
|
|
4
|
+
export interface ReadOptions {
|
|
5
|
+
/** Skip detection and read as this dialect. */
|
|
6
|
+
assume?: NcpDialect;
|
|
7
|
+
/** Fields the source does not carry, supplied by the caller. */
|
|
8
|
+
storyOverrides?: Partial<Pick<Story, 'title' | 'genre' | 'logline' | 'created_at'>>;
|
|
9
|
+
/** Fallback id when the source has none. */
|
|
10
|
+
fallbackId?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ReadResult {
|
|
13
|
+
document: NcpDocument;
|
|
14
|
+
dialect: NcpDialect;
|
|
15
|
+
notes: NormalizeNote[];
|
|
16
|
+
}
|
|
17
|
+
/** Which dialect an input is written in. */
|
|
18
|
+
export declare function detectDialect(input: unknown): NcpDialect;
|
|
19
|
+
/** Read any recognized dialect and return canonical NCP. */
|
|
20
|
+
export declare function readNcp(input: unknown, options?: ReadOptions): ReadResult;
|
|
21
|
+
/**
|
|
22
|
+
* A canonical-layout document can still carry Dramatica display labels where
|
|
23
|
+
* the schema declares identifiers — `example-story.json` does. This maps them
|
|
24
|
+
* and declares whatever it cannot map, so a consumer never has to guess whether
|
|
25
|
+
* `"Success"` and `"success"` are the same value.
|
|
26
|
+
*/
|
|
27
|
+
export declare function canonicalizeTerms(document: NcpDocument): {
|
|
28
|
+
document: NcpDocument;
|
|
29
|
+
notes: NormalizeNote[];
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/schema/read.ts"],"names":[],"mappings":"AAWA,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAStE,OAAO,KAAK,EAIV,WAAW,EAIX,KAAK,EAGN,MAAM,YAAY,CAAA;AAEnB,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,eAAe,GAAG,cAAc,GAAG,SAAS,CAAA;AAEnF,MAAM,WAAW,WAAW;IAC1B,+CAA+C;IAC/C,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,gEAAgE;IAChE,cAAc,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC,CAAC,CAAA;IACnF,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,WAAW,CAAA;IACrB,OAAO,EAAE,UAAU,CAAA;IACnB,KAAK,EAAE,aAAa,EAAE,CAAA;CACvB;AA+BD,4CAA4C;AAC5C,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAwBxD;AAED,4DAA4D;AAC5D,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,CAmBzE;AA0eD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,aAAa,EAAE,CAAA;CAAE,CAwF1G"}
|