@miadi/ncp-story-studio 0.1.1 → 0.2.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/README.md +19 -1
- package/assets/examples/miadi/archive-keeper.json +316 -0
- package/assets/examples/miadi/bridge-walker.json +335 -0
- package/assets/examples/miadi/catalyst-beat-enrichment.json +821 -0
- package/assets/examples/miadi/catalyst-of-change.json +1976 -0
- package/assets/examples/miadi/echoes-of-the-past.json +214 -0
- package/assets/examples/miadi/keeper-initiation.json +307 -0
- package/assets/examples/miadi/tushell-orchestra.json +592 -0
- package/dist/agents/adapter.d.ts +8 -3
- package/dist/agents/adapter.d.ts.map +1 -1
- package/dist/agents/adapter.js +10 -9
- package/dist/agents/adapter.js.map +1 -1
- package/dist/agents/context.d.ts +6 -1
- package/dist/agents/context.d.ts.map +1 -1
- package/dist/agents/context.js +1 -1
- package/dist/agents/context.js.map +1 -1
- package/dist/agents/personas.d.ts +12 -3
- package/dist/agents/personas.d.ts.map +1 -1
- package/dist/agents/personas.js +10 -2
- package/dist/agents/personas.js.map +1 -1
- package/dist/fixtures/catalog.d.ts +17 -0
- package/dist/fixtures/catalog.d.ts.map +1 -0
- package/dist/fixtures/catalog.js +80 -0
- package/dist/fixtures/catalog.js.map +1 -0
- package/dist/fixtures/index.d.ts +11 -16
- package/dist/fixtures/index.d.ts.map +1 -1
- package/dist/fixtures/index.js +24 -47
- package/dist/fixtures/index.js.map +1 -1
- package/dist/graph/index.d.ts +10 -0
- package/dist/graph/index.d.ts.map +1 -1
- package/dist/graph/index.js +13 -0
- package/dist/graph/index.js.map +1 -1
- package/dist/graph/react/story-graph.js +2 -2
- package/dist/graph/react/story-graph.js.map +1 -1
- package/dist/graph/tones.d.ts +13 -0
- package/dist/graph/tones.d.ts.map +1 -1
- package/dist/graph/tones.js +10 -0
- package/dist/graph/tones.js.map +1 -1
- package/dist/schema/normalize.js +23 -1
- package/dist/schema/normalize.js.map +1 -1
- package/package.json +5 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/agents/adapter.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,gFAAgF;AAChF,+CAA+C;AAC/C,OAAO,EAAE,mBAAmB,EAA8B,MAAM,cAAc,CAAA;AAC9E,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAuC,MAAM,YAAY,CAAA;AAC3G,OAAO,EAAE,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/agents/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/context.d.ts
CHANGED
|
@@ -4,7 +4,12 @@ export declare const CONTEXT_END = "[NCP LATTICE DATA END]";
|
|
|
4
4
|
export interface LatticeContextOptions {
|
|
5
5
|
/** `full` sends the document; `digest` sends an index of it. Default `full`. */
|
|
6
6
|
mode?: 'full' | 'digest';
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Switch to a digest automatically above this many characters. Default
|
|
9
|
+
* 400000 — the studio's own seed story is ~80k, and sending a digest of the
|
|
10
|
+
* story an agent is being asked about is the wrong default when the models
|
|
11
|
+
* reading it carry a million tokens of context.
|
|
12
|
+
*/
|
|
8
13
|
digestAbove?: number;
|
|
9
14
|
}
|
|
10
15
|
export interface LatticeContext {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/agents/context.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE/C,eAAO,MAAM,aAAa,6BAA6B,CAAA;AACvD,eAAO,MAAM,WAAW,2BAA2B,CAAA;AAEnD,MAAM,WAAW,qBAAqB;IACpC,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;IACxB
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/agents/context.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE/C,eAAO,MAAM,aAAa,6BAA6B,CAAA;AACvD,eAAO,MAAM,WAAW,2BAA2B,CAAA;AAEnD,MAAM,WAAW,qBAAqB;IACpC,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;IACxB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAuChD;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,cAAc,CAQjG"}
|
package/dist/agents/context.js
CHANGED
|
@@ -39,7 +39,7 @@ export function storyDigest(story) {
|
|
|
39
39
|
/** Wrap the story for the model in the markers the studio has always used. */
|
|
40
40
|
export function buildLatticeContext(story, options) {
|
|
41
41
|
const requested = options?.mode ?? 'full';
|
|
42
|
-
const digestAbove = options?.digestAbove ??
|
|
42
|
+
const digestAbove = options?.digestAbove ?? 400000;
|
|
43
43
|
const full = JSON.stringify(story, null, 2);
|
|
44
44
|
const mode = requested === 'digest' || full.length > digestAbove ? 'digest' : 'full';
|
|
45
45
|
const body = mode === 'full' ? full : storyDigest(story);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/agents/context.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,mDAAmD;AACnD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAGpE,MAAM,CAAC,MAAM,aAAa,GAAG,0BAA0B,CAAA;AACvD,MAAM,CAAC,MAAM,WAAW,GAAG,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/agents/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
/** The three the studio ships with. A story may register more. */
|
|
2
|
+
export type BuiltInPersonaId = 'mia' | 'miette' | 'ava8';
|
|
3
|
+
/** Any registered reading position: the built-ins, or one a story brings. */
|
|
4
|
+
export type PersonaId = BuiltInPersonaId | (string & {});
|
|
2
5
|
export interface Persona {
|
|
3
6
|
id: PersonaId;
|
|
4
7
|
glyph: string;
|
|
@@ -10,7 +13,13 @@ export interface Persona {
|
|
|
10
13
|
/** Accent color for this persona's messages. */
|
|
11
14
|
color: string;
|
|
12
15
|
}
|
|
13
|
-
export declare const PERSONAS: Record<
|
|
16
|
+
export declare const PERSONAS: Record<BuiltInPersonaId, Persona>;
|
|
14
17
|
export declare const DEFAULT_PERSONA_ORDER: PersonaId[];
|
|
15
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Resolve a persona from the built-ins plus whatever a caller registered for
|
|
20
|
+
* this turn. A story can bring its own reading positions — the prototype gave
|
|
21
|
+
* Tushell a wise owl — without this package deciding who they are.
|
|
22
|
+
*/
|
|
23
|
+
export declare function persona(id: PersonaId, extra?: readonly Persona[]): Persona | undefined;
|
|
24
|
+
export declare function personaRoster(ids: readonly PersonaId[], extra?: readonly Persona[]): Persona[];
|
|
16
25
|
//# sourceMappingURL=personas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"personas.d.ts","sourceRoot":"","sources":["../../src/agents/personas.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"personas.d.ts","sourceRoot":"","sources":["../../src/agents/personas.ts"],"names":[],"mappings":"AAEA,kEAAkE;AAClE,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;AAExD,6EAA6E;AAC7E,MAAM,MAAM,SAAS,GAAG,gBAAgB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAExD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,SAAS,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAA;CACd;AAED,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,gBAAgB,EAAE,OAAO,CA4BtD,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,SAAS,EAA8B,CAAA;AAE3E;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,GAAE,SAAS,OAAO,EAAO,GAAG,OAAO,GAAG,SAAS,CAE1F;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,EAAE,KAAK,GAAE,SAAS,OAAO,EAAO,GAAG,OAAO,EAAE,CAElG"}
|
package/dist/agents/personas.js
CHANGED
|
@@ -28,7 +28,15 @@ export const PERSONAS = {
|
|
|
28
28
|
},
|
|
29
29
|
};
|
|
30
30
|
export const DEFAULT_PERSONA_ORDER = ['mia', 'miette', 'ava8'];
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Resolve a persona from the built-ins plus whatever a caller registered for
|
|
33
|
+
* this turn. A story can bring its own reading positions — the prototype gave
|
|
34
|
+
* Tushell a wise owl — without this package deciding who they are.
|
|
35
|
+
*/
|
|
36
|
+
export function persona(id, extra = []) {
|
|
37
|
+
return PERSONAS[id] ?? extra.find((candidate) => candidate.id === id);
|
|
38
|
+
}
|
|
39
|
+
export function personaRoster(ids, extra = []) {
|
|
40
|
+
return ids.map((id) => persona(id, extra)).filter((candidate) => candidate !== undefined);
|
|
33
41
|
}
|
|
34
42
|
//# sourceMappingURL=personas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"personas.js","sourceRoot":"","sources":["../../src/agents/personas.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"personas.js","sourceRoot":"","sources":["../../src/agents/personas.ts"],"names":[],"mappings":"AAoBA,MAAM,CAAC,MAAM,QAAQ,GAAsC;IACzD,GAAG,EAAE;QACH,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,+CAA+C;QACrD,KAAK,EAAE,qFAAqF;QAC5F,KAAK,EAAE,sFAAsF;QAC7F,KAAK,EAAE,SAAS;KACjB;IACD,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,yCAAyC;QAC/C,KAAK,EAAE,wEAAwE;QAC/E,KAAK,EAAE,0FAA0F;QACjG,KAAK,EAAE,SAAS;KACjB;IACD,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,kDAAkD;QACxD,KAAK,EAAE,sFAAsF;QAC7F,KAAK,EAAE,8EAA8E;QACrF,KAAK,EAAE,SAAS;KACjB;CACF,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;AAE3E;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,EAAa,EAAE,QAA4B,EAAE;IACnE,OAAQ,QAAgD,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;AAChH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAyB,EAAE,QAA4B,EAAE;IACrF,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAwB,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,CAAA;AACjH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface FixtureEntry {
|
|
2
|
+
id: string;
|
|
3
|
+
title: string;
|
|
4
|
+
/** Path under `assets/examples/`. */
|
|
5
|
+
file: string;
|
|
6
|
+
/** Where the document came from. */
|
|
7
|
+
source: string;
|
|
8
|
+
/** What the fixture is useful for. */
|
|
9
|
+
note: string;
|
|
10
|
+
/** `miadi` — the studio's own teaching stories; `ncp` — the protocol's examples. */
|
|
11
|
+
family: 'miadi' | 'ncp';
|
|
12
|
+
}
|
|
13
|
+
export declare const FIXTURES: readonly FixtureEntry[];
|
|
14
|
+
export declare function fixture(id: string): FixtureEntry | undefined;
|
|
15
|
+
/** Where the documents live inside the installed package. */
|
|
16
|
+
export declare const FIXTURE_ASSET_PATH = "assets/examples";
|
|
17
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/fixtures/catalog.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,oFAAoF;IACpF,MAAM,EAAE,OAAO,GAAG,KAAK,CAAA;CACxB;AAED,eAAO,MAAM,QAAQ,EAAE,SAAS,YAAY,EAyElC,CAAA;AAEV,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAE5D;AAED,6DAA6D;AAC7D,eAAO,MAAM,kBAAkB,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export const FIXTURES = [
|
|
2
|
+
{
|
|
3
|
+
id: 'catalyst-of-change',
|
|
4
|
+
title: 'Chapter 4: The Catalyst of Change',
|
|
5
|
+
file: 'miadi/catalyst-of-change.json',
|
|
6
|
+
source: 'ncp-story-studio prototype + holisticagnostic-narrative-context-protocol/examples (MIT)',
|
|
7
|
+
note: 'The seed narrative: a story about learning to write with soul, inside a tool for writing with soul. 5 perspectives, 6 players, 13 storypoints, 90 beats all toned, 23 moments.',
|
|
8
|
+
family: 'miadi',
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
id: 'echoes-of-the-past',
|
|
12
|
+
title: 'Echoes of the Past',
|
|
13
|
+
file: 'miadi/echoes-of-the-past.json',
|
|
14
|
+
source: 'ncp-story-studio prototype',
|
|
15
|
+
note: 'The smallest complete lattice: 2 perspectives, 4 storypoints, 4 toned beats. The one to read first.',
|
|
16
|
+
family: 'miadi',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: 'tushell-orchestra',
|
|
20
|
+
title: 'Tushell and the Orchestra of Agents',
|
|
21
|
+
file: 'miadi/tushell-orchestra.json',
|
|
22
|
+
source: 'ncp-story-studio prototype',
|
|
23
|
+
note: 'Eight players and five conflicting currents: what a story looks like when the subject is orchestration.',
|
|
24
|
+
family: 'miadi',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: 'keeper-initiation',
|
|
28
|
+
title: 'The Keeper Chronicles: The Initiation',
|
|
29
|
+
file: 'miadi/keeper-initiation.json',
|
|
30
|
+
source: 'ncp-story-studio prototype',
|
|
31
|
+
note: 'A threshold story — tool becoming keeper. 7 toned beats.',
|
|
32
|
+
family: 'miadi',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: 'bridge-walker',
|
|
36
|
+
title: 'The Bridge Walker: Spiral of Integration',
|
|
37
|
+
file: 'miadi/bridge-walker.json',
|
|
38
|
+
source: 'ncp-story-studio prototype',
|
|
39
|
+
note: 'Holding technical precision, ceremony and narrative at once. 9 toned beats.',
|
|
40
|
+
family: 'miadi',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: 'archive-keeper',
|
|
44
|
+
title: 'The Archive Keeper: Solstice Distillation',
|
|
45
|
+
file: 'miadi/archive-keeper.json',
|
|
46
|
+
source: 'ncp-story-studio prototype',
|
|
47
|
+
note: 'Wisdom seeded into the next loop. 8 toned beats.',
|
|
48
|
+
family: 'miadi',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
id: 'example-story',
|
|
52
|
+
title: 'Minimal example story',
|
|
53
|
+
file: 'example-story.json',
|
|
54
|
+
source: 'holisticagnostic-narrative-context-protocol/examples (MIT)',
|
|
55
|
+
note: 'One of each element, in the canonical `{schema_version, story}` layout.',
|
|
56
|
+
family: 'ncp',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
id: 'shawshank-redemption',
|
|
60
|
+
title: 'The Shawshank Redemption',
|
|
61
|
+
file: 'the-shawshank-redemption.json',
|
|
62
|
+
source: 'holisticagnostic-narrative-context-protocol/examples (MIT)',
|
|
63
|
+
note: 'A full storyform: 8 players, 47 storypoints, 97 beats, in the subtxt-export dialect. It does not validate clean: the export numbers some signposts and events twice inside one series, which the validator reports.',
|
|
64
|
+
family: 'ncp',
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
id: 'anora',
|
|
68
|
+
title: 'Anora',
|
|
69
|
+
file: 'anora.json',
|
|
70
|
+
source: 'holisticagnostic-narrative-context-protocol/examples (MIT)',
|
|
71
|
+
note: 'Storypoints without beats, in the subtxt-export dialect: what a partially structured story looks like.',
|
|
72
|
+
family: 'ncp',
|
|
73
|
+
},
|
|
74
|
+
];
|
|
75
|
+
export function fixture(id) {
|
|
76
|
+
return FIXTURES.find((entry) => entry.id === id);
|
|
77
|
+
}
|
|
78
|
+
/** Where the documents live inside the installed package. */
|
|
79
|
+
export const FIXTURE_ASSET_PATH = 'assets/examples';
|
|
80
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/fixtures/catalog.ts"],"names":[],"mappings":"AAkBA,MAAM,CAAC,MAAM,QAAQ,GAA4B;IAC/C;QACE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,mCAAmC;QAC1C,IAAI,EAAE,+BAA+B;QACrC,MAAM,EAAE,yFAAyF;QACjG,IAAI,EAAE,gLAAgL;QACtL,MAAM,EAAE,OAAO;KAChB;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,oBAAoB;QAC3B,IAAI,EAAE,+BAA+B;QACrC,MAAM,EAAE,4BAA4B;QACpC,IAAI,EAAE,qGAAqG;QAC3G,MAAM,EAAE,OAAO;KAChB;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,qCAAqC;QAC5C,IAAI,EAAE,8BAA8B;QACpC,MAAM,EAAE,4BAA4B;QACpC,IAAI,EAAE,yGAAyG;QAC/G,MAAM,EAAE,OAAO;KAChB;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,uCAAuC;QAC9C,IAAI,EAAE,8BAA8B;QACpC,MAAM,EAAE,4BAA4B;QACpC,IAAI,EAAE,0DAA0D;QAChE,MAAM,EAAE,OAAO;KAChB;IACD;QACE,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,0CAA0C;QACjD,IAAI,EAAE,0BAA0B;QAChC,MAAM,EAAE,4BAA4B;QACpC,IAAI,EAAE,6EAA6E;QACnF,MAAM,EAAE,OAAO;KAChB;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,2CAA2C;QAClD,IAAI,EAAE,2BAA2B;QACjC,MAAM,EAAE,4BAA4B;QACpC,IAAI,EAAE,kDAAkD;QACxD,MAAM,EAAE,OAAO;KAChB;IACD;QACE,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,uBAAuB;QAC9B,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE,4DAA4D;QACpE,IAAI,EAAE,yEAAyE;QAC/E,MAAM,EAAE,KAAK;KACd;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,0BAA0B;QACjC,IAAI,EAAE,+BAA+B;QACrC,MAAM,EAAE,4DAA4D;QACpE,IAAI,EAAE,qNAAqN;QAC3N,MAAM,EAAE,KAAK;KACd;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,4DAA4D;QACpE,IAAI,EAAE,wGAAwG;QAC9G,MAAM,EAAE,KAAK;KACd;CACO,CAAA;AAEV,MAAM,UAAU,OAAO,CAAC,EAAU;IAChC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;AAClD,CAAC;AAED,6DAA6D;AAC7D,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAAiB,CAAA"}
|
package/dist/fixtures/index.d.ts
CHANGED
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
import { type NcpDialect, type NcpDocument, type NormalizeNote } from '../schema/index.js';
|
|
2
2
|
import { MemoryStoryStore, type StoryProject } from '../store/index.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
title: string;
|
|
6
|
-
file: string;
|
|
7
|
-
/** Where the document came from. */
|
|
8
|
-
source: string;
|
|
9
|
-
/** What the fixture is useful for. */
|
|
10
|
-
note: string;
|
|
11
|
-
}
|
|
12
|
-
export declare const FIXTURES: readonly FixtureEntry[];
|
|
13
|
-
export declare function fixture(id: string): FixtureEntry | undefined;
|
|
3
|
+
import { type FixtureEntry } from './catalog.js';
|
|
4
|
+
export * from './catalog.js';
|
|
14
5
|
export interface LoadedFixture {
|
|
15
6
|
entry: FixtureEntry;
|
|
16
7
|
document: NcpDocument;
|
|
@@ -19,9 +10,13 @@ export interface LoadedFixture {
|
|
|
19
10
|
/** What reading it had to adapt. */
|
|
20
11
|
notes: NormalizeNote[];
|
|
21
12
|
}
|
|
22
|
-
export
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
export declare function
|
|
13
|
+
export interface LoadOptions {
|
|
14
|
+
/** Directory holding the documents. Defaults to the installed package's own. */
|
|
15
|
+
dir?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function loadFixture(id: string, options?: LoadOptions): Promise<LoadedFixture>;
|
|
18
|
+
export declare function loadAllFixtures(options?: LoadOptions): Promise<LoadedFixture[]>;
|
|
19
|
+
export declare function fixtureProject(id: string, options?: LoadOptions): Promise<StoryProject>;
|
|
20
|
+
/** A read-only store holding every bundled story, for a first run with no data. */
|
|
21
|
+
export declare function fixtureStore(options?: LoadOptions): Promise<MemoryStoryStore>;
|
|
27
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fixtures/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fixtures/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAW,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACnG,OAAO,EAAE,gBAAgB,EAAc,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACnF,OAAO,EAAyC,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAEvF,cAAc,cAAc,CAAA;AAE5B,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,YAAY,CAAA;IACnB,QAAQ,EAAE,WAAW,CAAA;IACrB,oDAAoD;IACpD,OAAO,EAAE,UAAU,CAAA;IACnB,oCAAoC;IACpC,KAAK,EAAE,aAAa,EAAE,CAAA;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAMD,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAM3F;AAED,wBAAsB,eAAe,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAErF;AAED,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAa7F;AAED,mFAAmF;AACnF,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAGnF"}
|
package/dist/fixtures/index.js
CHANGED
|
@@ -1,69 +1,46 @@
|
|
|
1
|
-
// `@miadi/ncp-story-studio/fixtures` — the
|
|
2
|
-
//
|
|
3
|
-
//
|
|
1
|
+
// `@miadi/ncp-story-studio/fixtures` — the bundled documents, read from disk.
|
|
2
|
+
//
|
|
3
|
+
// Node only. A bundler (Next, webpack) cannot resolve the asset directory from
|
|
4
|
+
// inside a bundle, so a web consumer imports `./catalog` for the list and reads
|
|
5
|
+
// the files itself, or receives them from a route handler.
|
|
4
6
|
import { readFile } from 'node:fs/promises';
|
|
7
|
+
import { join } from 'node:path';
|
|
5
8
|
import { fileURLToPath } from 'node:url';
|
|
6
9
|
import { readNcp } from '../schema/index.js';
|
|
7
10
|
import { MemoryStoryStore, newProject } from '../store/index.js';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
file: 'weaver_of_words__the_catalyst_of_change_251101.json',
|
|
13
|
-
source: 'holisticagnostic-narrative-context-protocol/examples (MIT)',
|
|
14
|
-
note: 'The seed narrative, written in the miadi-design dialect: 5 perspectives, 6 players, 13 storypoints, 90 beats, 23 moments.',
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
id: 'example-story',
|
|
18
|
-
title: 'Minimal example story',
|
|
19
|
-
file: 'example-story.json',
|
|
20
|
-
source: 'holisticagnostic-narrative-context-protocol/examples (MIT)',
|
|
21
|
-
note: 'One of each element, in the canonical `{schema_version, story}` layout.',
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
id: 'shawshank-redemption',
|
|
25
|
-
title: 'The Shawshank Redemption',
|
|
26
|
-
file: 'the-shawshank-redemption.json',
|
|
27
|
-
source: 'holisticagnostic-narrative-context-protocol/examples (MIT)',
|
|
28
|
-
note: 'A full storyform: 8 players, 47 storypoints, 97 beats, in the subtxt-export dialect. It does not validate clean: the export numbers some signposts and events twice inside one series, which the validator reports.',
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
id: 'anora',
|
|
32
|
-
title: 'Anora',
|
|
33
|
-
file: 'anora.json',
|
|
34
|
-
source: 'holisticagnostic-narrative-context-protocol/examples (MIT)',
|
|
35
|
-
note: 'Storypoints without beats, in the subtxt-export dialect: what a partially structured story looks like.',
|
|
36
|
-
},
|
|
37
|
-
];
|
|
38
|
-
const ASSET_DIR = new URL('../../assets/examples/', import.meta.url);
|
|
39
|
-
export function fixture(id) {
|
|
40
|
-
return FIXTURES.find((entry) => entry.id === id);
|
|
11
|
+
import { FIXTURES, FIXTURE_ASSET_PATH, fixture } from './catalog.js';
|
|
12
|
+
export * from './catalog.js';
|
|
13
|
+
function defaultDir() {
|
|
14
|
+
return fileURLToPath(new URL('../../' + FIXTURE_ASSET_PATH + '/', import.meta.url));
|
|
41
15
|
}
|
|
42
|
-
export async function loadFixture(id) {
|
|
16
|
+
export async function loadFixture(id, options) {
|
|
43
17
|
const entry = fixture(id);
|
|
44
18
|
if (!entry)
|
|
45
19
|
throw new Error(`no fixture \`${id}\`. Known: ${FIXTURES.map((f) => f.id).join(', ')}`);
|
|
46
|
-
const
|
|
47
|
-
const raw = await readFile(path, 'utf8');
|
|
20
|
+
const raw = await readFile(join(options?.dir ?? defaultDir(), entry.file), 'utf8');
|
|
48
21
|
const { document, dialect, notes } = readNcp(JSON.parse(raw), { fallbackId: entry.id });
|
|
49
22
|
return { entry, document, dialect, notes };
|
|
50
23
|
}
|
|
51
|
-
export async function loadAllFixtures() {
|
|
52
|
-
return Promise.all(FIXTURES.map((entry) => loadFixture(entry.id)));
|
|
24
|
+
export async function loadAllFixtures(options) {
|
|
25
|
+
return Promise.all(FIXTURES.map((entry) => loadFixture(entry.id, options)));
|
|
53
26
|
}
|
|
54
|
-
export async function fixtureProject(id) {
|
|
55
|
-
const loaded = await loadFixture(id);
|
|
27
|
+
export async function fixtureProject(id, options) {
|
|
28
|
+
const loaded = await loadFixture(id, options);
|
|
56
29
|
return {
|
|
57
30
|
...newProject(loaded.document, {
|
|
58
31
|
projectId: loaded.entry.id,
|
|
59
|
-
meta: {
|
|
32
|
+
meta: {
|
|
33
|
+
source: loaded.entry.source,
|
|
34
|
+
tags: ['fixture', `family:${loaded.entry.family}`, `dialect:${loaded.dialect}`],
|
|
35
|
+
note: loaded.entry.note,
|
|
36
|
+
},
|
|
60
37
|
}),
|
|
61
38
|
read_only: true,
|
|
62
39
|
};
|
|
63
40
|
}
|
|
64
|
-
/** A read-only store holding every bundled
|
|
65
|
-
export async function fixtureStore() {
|
|
66
|
-
const projects = await Promise.all(FIXTURES.map((entry) => fixtureProject(entry.id)));
|
|
41
|
+
/** A read-only store holding every bundled story, for a first run with no data. */
|
|
42
|
+
export async function fixtureStore(options) {
|
|
43
|
+
const projects = await Promise.all(FIXTURES.map((entry) => fixtureProject(entry.id, options)));
|
|
67
44
|
return new MemoryStoryStore(projects);
|
|
68
45
|
}
|
|
69
46
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fixtures/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fixtures/index.ts"],"names":[],"mappings":"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"}
|
package/dist/graph/index.d.ts
CHANGED
|
@@ -26,6 +26,16 @@ export interface GraphNode {
|
|
|
26
26
|
narrativeFunction: string;
|
|
27
27
|
title: string;
|
|
28
28
|
summary?: string;
|
|
29
|
+
/** What this beat illustrates, when the source says. */
|
|
30
|
+
illustration?: string;
|
|
31
|
+
/** The tone triad in words, for a reader who cannot see the colours. */
|
|
32
|
+
tones?: {
|
|
33
|
+
abstraction: string;
|
|
34
|
+
spatial: string;
|
|
35
|
+
temporal: string;
|
|
36
|
+
};
|
|
37
|
+
/** One line naming the beat, its series and its tones. */
|
|
38
|
+
description: string;
|
|
29
39
|
x: number;
|
|
30
40
|
y: number;
|
|
31
41
|
radius: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhE,cAAc,YAAY,CAAA;AAE1B,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,MAAM,EAAE,MAAM,CAAA;IACd,mEAAmE;IACnE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,UAAU,EAAE,cAAc,CAAA;IAC1B,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAA;CACvC;AAqBD,8DAA8D;AAC9D,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhE,cAAc,YAAY,CAAA;AAE1B,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,wEAAwE;IACxE,KAAK,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;IAClE,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAA;IACnB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,MAAM,EAAE,MAAM,CAAA;IACd,mEAAmE;IACnE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,UAAU,EAAE,cAAc,CAAA;IAC1B,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAA;CACvC;AAqBD,8DAA8D;AAC9D,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW,CAyD/F;AAED,oFAAoF;AACpF,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAyB3G"}
|
package/dist/graph/index.js
CHANGED
|
@@ -31,6 +31,9 @@ export function layoutNarrative(narrative, options) {
|
|
|
31
31
|
const r1 = resolved.nodeRadius;
|
|
32
32
|
const r2 = r1 + resolved.ringGap;
|
|
33
33
|
const r3 = r2 + resolved.ringGap;
|
|
34
|
+
const toneWords = beat.tones
|
|
35
|
+
? `${beat.tones.abstraction} / ${beat.tones.spatial} / ${beat.tones.temporal}`
|
|
36
|
+
: 'no tones';
|
|
34
37
|
return {
|
|
35
38
|
id: beat.id,
|
|
36
39
|
sequence: beat.sequence,
|
|
@@ -38,6 +41,15 @@ export function layoutNarrative(narrative, options) {
|
|
|
38
41
|
narrativeFunction: beat.custom_narrative_function ?? beat.narrative_function,
|
|
39
42
|
title: beatTitle(beat),
|
|
40
43
|
summary: beat.summary,
|
|
44
|
+
illustration: beat.illustration,
|
|
45
|
+
tones: beat.tones,
|
|
46
|
+
description: [
|
|
47
|
+
`${beat.appreciation} ${beat.sequence} — ${beatTitle(beat)}`,
|
|
48
|
+
beat.summary,
|
|
49
|
+
`tones: ${toneWords}`,
|
|
50
|
+
]
|
|
51
|
+
.filter((line) => typeof line === 'string' && line.length > 0)
|
|
52
|
+
.join('\n'),
|
|
41
53
|
x,
|
|
42
54
|
y,
|
|
43
55
|
radius: r1,
|
|
@@ -79,6 +91,7 @@ export function layoutToSvg(layout, options) {
|
|
|
79
91
|
parts.push(`<circle cx="${node.x}" cy="${node.y}" r="${r3}" fill="none" stroke="${node.ringColors.temporal}" stroke-opacity="0.7" stroke-width="2"/>`);
|
|
80
92
|
parts.push(`<circle cx="${node.x}" cy="${node.y}" r="${r2}" fill="none" stroke="${node.ringColors.spatial}" stroke-opacity="0.8" stroke-width="2"/>`);
|
|
81
93
|
parts.push(`<circle cx="${node.x}" cy="${node.y}" r="${r1}" fill="${node.ringColors.abstraction}" fill-opacity="0.18" stroke="${node.ringColors.abstraction}" stroke-width="2"/>`);
|
|
94
|
+
parts.push(`<title>${escapeXml(node.description)}</title>`);
|
|
82
95
|
parts.push(`<text x="${node.x}" y="${node.y + 5}" text-anchor="middle" font-family="monospace" font-size="14" fill="#e2e8f0">${node.sequence}</text>`);
|
|
83
96
|
if (showLabels) {
|
|
84
97
|
parts.push(`<text x="${node.x}" y="${node.y + r3 + 22}" text-anchor="middle" font-family="sans-serif" font-size="13" fill="#94a3b8">${escapeXml(node.title)}</text>`);
|
package/dist/graph/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,mEAAmE;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EAAE,cAAc,EAAuB,MAAM,YAAY,CAAA;AAEhE,cAAc,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,13 +14,13 @@ export function StoryGraph({ narrative, focusedBeatId, onBeatClick, options, lab
|
|
|
14
14
|
function BeatNode({ node, focused, labels, onClick }) {
|
|
15
15
|
const interactive = typeof onClick === 'function';
|
|
16
16
|
const [r1, r2, r3] = node.ringRadii;
|
|
17
|
-
return (_jsxs("g", { "data-ncp-beat": node.id, "data-ncp-beat-focused": focused ? 'true' : undefined, transform: `translate(${node.x} ${node.y})`, style: interactive ? { cursor: 'pointer' } : undefined, role: interactive ? 'button' : undefined, tabIndex: interactive ? 0 : undefined, "aria-label":
|
|
17
|
+
return (_jsxs("g", { "data-ncp-beat": node.id, "data-ncp-beat-focused": focused ? 'true' : undefined, transform: `translate(${node.x} ${node.y})`, style: interactive ? { cursor: 'pointer' } : undefined, role: interactive ? 'button' : undefined, tabIndex: interactive ? 0 : undefined, "aria-label": node.description, onClick: interactive ? () => onClick?.(node.id) : undefined, onKeyDown: interactive
|
|
18
18
|
? (event) => {
|
|
19
19
|
if (event.key === 'Enter' || event.key === ' ') {
|
|
20
20
|
event.preventDefault();
|
|
21
21
|
onClick?.(node.id);
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
: undefined, children: [focused ? _jsx("circle", { r: r3 + 10, fill: "none", stroke: "#ffd700", strokeWidth: 2, strokeDasharray: "4 4" }) : null, _jsx("circle", { r: r3, fill: "none", stroke: node.ringColors.temporal, strokeOpacity: 0.7, strokeWidth: 2 }), _jsx("circle", { r: r2, fill: "none", stroke: node.ringColors.spatial, strokeOpacity: 0.85, strokeWidth: 2 }), _jsx("circle", { r: r1, fill: node.ringColors.abstraction, fillOpacity: node.hasTones ? 0.2 : 0.06, stroke: node.ringColors.abstraction, strokeWidth: 2 }), _jsx("text", { textAnchor: "middle", y: 5, fontFamily: "ui-monospace, monospace", fontSize: 14, fill: "currentColor", children: node.sequence }), labels ? (_jsx("text", { textAnchor: "middle", y: r3 + 22, fontSize: 13, fill: "currentColor", fillOpacity: 0.65, children: node.title })) : null] }));
|
|
24
|
+
: undefined, children: [_jsx("title", { children: node.description }), focused ? _jsx("circle", { r: r3 + 10, fill: "none", stroke: "#ffd700", strokeWidth: 2, strokeDasharray: "4 4" }) : null, _jsx("circle", { r: r3, fill: "none", stroke: node.ringColors.temporal, strokeOpacity: 0.7, strokeWidth: 2 }), _jsx("circle", { r: r2, fill: "none", stroke: node.ringColors.spatial, strokeOpacity: 0.85, strokeWidth: 2 }), _jsx("circle", { r: r1, fill: node.ringColors.abstraction, fillOpacity: node.hasTones ? 0.2 : 0.06, stroke: node.ringColors.abstraction, strokeWidth: 2 }), _jsx("text", { textAnchor: "middle", y: 5, fontFamily: "ui-monospace, monospace", fontSize: 14, fill: "currentColor", children: node.sequence }), labels ? (_jsx("text", { textAnchor: "middle", y: r3 + 22, fontSize: 13, fill: "currentColor", fillOpacity: 0.65, children: node.title })) : null] }));
|
|
25
25
|
}
|
|
26
26
|
//# sourceMappingURL=story-graph.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"story-graph.js","sourceRoot":"","sources":["../../../src/graph/react/story-graph.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,6EAA6E;AAC7E,4CAA4C;AAC5C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,eAAe,EAA6D,MAAM,aAAa,CAAA;AAgBxG,MAAM,UAAU,UAAU,CAAC,EACzB,SAAS,EACT,aAAa,EACb,WAAW,EACX,OAAO,EACP,MAAM,GAAG,IAAI,EACb,SAAS,EACT,YAAY,GAAG,uCAAuC,GACtC;IAChB,MAAM,MAAM,GAAgB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;IAE1G,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CACL,cAAK,SAAS,EAAE,SAAS,oBAAiB,OAAO,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,YAC3F,YAAY,GACT,CACP,CAAA;IACH,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAE,SAAS,oBAAiB,QAAQ,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,YAClG,eACE,OAAO,EAAE,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAC/C,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EACrB,IAAI,EAAC,KAAK,gBACE,qBAAqB,SAAS,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,aAEhF,oCAAwB,OAAO,YAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC1B,eAEE,CAAC,EAAE,IAAI,CAAC,IAAI,EACZ,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,aAAa,EAAE,IAAI,EACnB,WAAW,EAAE,CAAC,IALT,IAAI,CAAC,EAAE,CAMZ,CACH,CAAC,GACA,EACJ,oCAAwB,OAAO,YAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC1B,KAAC,QAAQ,IAEP,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC,EAAE,EAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,WAAW,IAJf,IAAI,CAAC,EAAE,CAKZ,CACH,CAAC,GACA,IACA,GACF,CACP,CAAA;AACH,CAAC;AASD,SAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAiB;IACjE,MAAM,WAAW,GAAG,OAAO,OAAO,KAAK,UAAU,CAAA;IACjD,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAA;IACnC,OAAO,CACL,8BACiB,IAAI,CAAC,EAAE,2BACC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACnD,SAAS,EAAE,aAAa,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,EAC3C,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,EACtD,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EACxC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,gBACzB,
|
|
1
|
+
{"version":3,"file":"story-graph.js","sourceRoot":"","sources":["../../../src/graph/react/story-graph.tsx"],"names":[],"mappings":"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"}
|
package/dist/graph/tones.d.ts
CHANGED
|
@@ -33,4 +33,17 @@ export declare function toneRingColors(tones: {
|
|
|
33
33
|
spatial?: string;
|
|
34
34
|
temporal?: string;
|
|
35
35
|
} | undefined): ToneRingColors;
|
|
36
|
+
export interface ToneLegendEntry {
|
|
37
|
+
axis: 'abstraction' | 'spatial' | 'temporal';
|
|
38
|
+
/** Which ring carries this axis, innermost first. */
|
|
39
|
+
ring: 1 | 2 | 3;
|
|
40
|
+
value: string;
|
|
41
|
+
color: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* What each ring and colour means, so a reader is not left guessing. The order
|
|
45
|
+
* matches the ring order the layout produces: abstraction is the filled centre,
|
|
46
|
+
* spatial the middle ring, temporal the outer one.
|
|
47
|
+
*/
|
|
48
|
+
export declare const TONE_LEGEND: ToneLegendEntry[];
|
|
36
49
|
//# sourceMappingURL=tones.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tones.d.ts","sourceRoot":"","sources":["../../src/graph/tones.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAExF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;CAmBd,CAAA;AAEV,eAAO,MAAM,aAAa,YAAY,CAAA;AAEtC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAEpF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAE5E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAE9E;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GAAG,SAAS,GAAG,cAAc,CAM7B"}
|
|
1
|
+
{"version":3,"file":"tones.d.ts","sourceRoot":"","sources":["../../src/graph/tones.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAExF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;CAmBd,CAAA;AAEV,eAAO,MAAM,aAAa,YAAY,CAAA;AAEtC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAEpF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAE5E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAE9E;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GAAG,SAAS,GAAG,cAAc,CAM7B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,aAAa,GAAG,SAAS,GAAG,UAAU,CAAA;IAC5C,qDAAqD;IACrD,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,eAAe,EAQxC,CAAA"}
|
package/dist/graph/tones.js
CHANGED
|
@@ -35,4 +35,14 @@ export function toneRingColors(tones) {
|
|
|
35
35
|
temporal: temporalColor(tones?.temporal),
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* What each ring and colour means, so a reader is not left guessing. The order
|
|
40
|
+
* matches the ring order the layout produces: abstraction is the filled centre,
|
|
41
|
+
* spatial the middle ring, temporal the outer one.
|
|
42
|
+
*/
|
|
43
|
+
export const TONE_LEGEND = [
|
|
44
|
+
['abstraction', 1],
|
|
45
|
+
['spatial', 2],
|
|
46
|
+
['temporal', 3],
|
|
47
|
+
].flatMap(([axis, ring]) => Object.entries(TONE_COLORS[axis]).map(([value, color]) => ({ axis, ring, value, color })));
|
|
38
48
|
//# sourceMappingURL=tones.js.map
|
package/dist/graph/tones.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tones.js","sourceRoot":"","sources":["../../src/graph/tones.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,WAAW,EAAE;QACX,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,SAAS;QACjB,aAAa,EAAE,SAAS;QACxB,OAAO,EAAE,SAAS;KACnB;IACD,OAAO,EAAE;QACP,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,SAAS;QACrB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;KACjB;IACD,QAAQ,EAAE;QACR,UAAU,EAAE,SAAS;QACrB,eAAe,EAAE,SAAS;QAC1B,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,SAAS;KACzB;CACO,CAAA;AAEV,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAA;AAEtC,MAAM,UAAU,gBAAgB,CAAC,KAA2C;IAC1E,OAAO,WAAW,CAAC,WAAW,CAAC,KAAwB,CAAC,IAAI,aAAa,CAAA;AAC3E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAuC;IAClE,OAAO,WAAW,CAAC,OAAO,CAAC,KAAoB,CAAC,IAAI,aAAa,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAwC;IACpE,OAAO,WAAW,CAAC,QAAQ,CAAC,KAAqB,CAAC,IAAI,aAAa,CAAA;AACrE,CAAC;AAQD,MAAM,UAAU,cAAc,CAAC,KAIlB;IACX,OAAO;QACL,WAAW,EAAE,gBAAgB,CAAC,KAAK,EAAE,WAAW,CAAC;QACjD,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;QACrC,QAAQ,EAAE,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC;KACzC,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"tones.js","sourceRoot":"","sources":["../../src/graph/tones.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,WAAW,EAAE;QACX,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,SAAS;QACjB,aAAa,EAAE,SAAS;QACxB,OAAO,EAAE,SAAS;KACnB;IACD,OAAO,EAAE;QACP,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,SAAS;QACrB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;KACjB;IACD,QAAQ,EAAE;QACR,UAAU,EAAE,SAAS;QACrB,eAAe,EAAE,SAAS;QAC1B,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,SAAS;KACzB;CACO,CAAA;AAEV,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAA;AAEtC,MAAM,UAAU,gBAAgB,CAAC,KAA2C;IAC1E,OAAO,WAAW,CAAC,WAAW,CAAC,KAAwB,CAAC,IAAI,aAAa,CAAA;AAC3E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAuC;IAClE,OAAO,WAAW,CAAC,OAAO,CAAC,KAAoB,CAAC,IAAI,aAAa,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAwC;IACpE,OAAO,WAAW,CAAC,QAAQ,CAAC,KAAqB,CAAC,IAAI,aAAa,CAAA;AACrE,CAAC;AAQD,MAAM,UAAU,cAAc,CAAC,KAIlB;IACX,OAAO;QACL,WAAW,EAAE,gBAAgB,CAAC,KAAK,EAAE,WAAW,CAAC;QACjD,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;QACrC,QAAQ,EAAE,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC;KACzC,CAAA;AACH,CAAC;AAUD;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GACtB;IACE,CAAC,aAAa,EAAE,CAAC,CAAC;IAClB,CAAC,SAAS,EAAE,CAAC,CAAC;IACd,CAAC,UAAU,EAAE,CAAC,CAAC;CAElB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CACzB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAoB,CAAC,CAC7G,CAAA"}
|
package/dist/schema/normalize.js
CHANGED
|
@@ -50,6 +50,23 @@ export function normalizeNcpInput(input, options) {
|
|
|
50
50
|
const story = { ...storyRaw, narratives };
|
|
51
51
|
return { document: { schema_version: schemaVersion, story }, notes };
|
|
52
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* The prototype's own documents name the structural point of view `pov`; the
|
|
55
|
+
* canonical schema calls it `author_structural_pov`. Carrying `pov` through
|
|
56
|
+
* untouched loses it silently — the validator has no rule about a stray field —
|
|
57
|
+
* so it is renamed here and reported.
|
|
58
|
+
*/
|
|
59
|
+
function renamePov(raw, path, notes) {
|
|
60
|
+
if (typeof raw['pov'] !== 'string')
|
|
61
|
+
return raw;
|
|
62
|
+
const { pov, ...rest } = raw;
|
|
63
|
+
if (typeof rest['author_structural_pov'] === 'string') {
|
|
64
|
+
notes.push({ path: `${path}.pov`, action: 'dropped: `author_structural_pov` is already set' });
|
|
65
|
+
return rest;
|
|
66
|
+
}
|
|
67
|
+
notes.push({ path: `${path}.pov`, action: 'read as `author_structural_pov`' });
|
|
68
|
+
return { ...rest, author_structural_pov: pov };
|
|
69
|
+
}
|
|
53
70
|
function normalizeNarrative(input, path, notes) {
|
|
54
71
|
if (typeof input !== 'object' || input === null) {
|
|
55
72
|
throw new TypeError(`${path} is not a narrative object`);
|
|
@@ -62,7 +79,12 @@ function normalizeNarrative(input, path, notes) {
|
|
|
62
79
|
const subtext = {};
|
|
63
80
|
for (const key of Object.keys(EMPTY_SUBTEXT)) {
|
|
64
81
|
if (Array.isArray(subtextRaw[key])) {
|
|
65
|
-
subtext[key] =
|
|
82
|
+
subtext[key] =
|
|
83
|
+
key === 'perspectives'
|
|
84
|
+
? subtextRaw[key].map((candidate, index) => typeof candidate === 'object' && candidate !== null
|
|
85
|
+
? renamePov(candidate, `${path}.subtext.perspectives[${index}]`, notes)
|
|
86
|
+
: candidate)
|
|
87
|
+
: subtextRaw[key];
|
|
66
88
|
}
|
|
67
89
|
else {
|
|
68
90
|
subtext[key] = [];
|