@linklabjs/core 0.1.1 → 0.1.3

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 (63) hide show
  1. package/package.json +1 -1
  2. package/dist/scenarios/test-metro-paris/config.json +0 -6
  3. package/dist/scenarios/test-metro-paris/graph.json +0 -16325
  4. package/dist/scenarios/test-metro-paris/queries.d.ts +0 -22
  5. package/dist/scenarios/test-metro-paris/queries.d.ts.map +0 -1
  6. package/dist/scenarios/test-metro-paris/queries.js +0 -128
  7. package/dist/scenarios/test-metro-paris/queries.js.map +0 -1
  8. package/dist/scenarios/test-metro-paris/stack.json +0 -1
  9. package/dist/scenarios/test-musicians/config.json +0 -10
  10. package/dist/scenarios/test-musicians/graph.json +0 -20
  11. package/dist/scenarios/test-musicians/stack.json +0 -1
  12. package/dist/scenarios/test-netflix/actions.d.ts +0 -14
  13. package/dist/scenarios/test-netflix/actions.d.ts.map +0 -1
  14. package/dist/scenarios/test-netflix/actions.js +0 -86
  15. package/dist/scenarios/test-netflix/actions.js.map +0 -1
  16. package/dist/scenarios/test-netflix/config.json +0 -6
  17. package/dist/scenarios/test-netflix/data/categories.json +0 -1
  18. package/dist/scenarios/test-netflix/data/companies.json +0 -1
  19. package/dist/scenarios/test-netflix/data/credits.json +0 -19797
  20. package/dist/scenarios/test-netflix/data/departments.json +0 -18
  21. package/dist/scenarios/test-netflix/data/jobs.json +0 -142
  22. package/dist/scenarios/test-netflix/data/movies.json +0 -3497
  23. package/dist/scenarios/test-netflix/data/people.json +0 -1
  24. package/dist/scenarios/test-netflix/data/synonyms.json +0 -7
  25. package/dist/scenarios/test-netflix/data/users.json +0 -70
  26. package/dist/scenarios/test-netflix/graph.json +0 -1017
  27. package/dist/scenarios/test-netflix/queries.d.ts +0 -29
  28. package/dist/scenarios/test-netflix/queries.d.ts.map +0 -1
  29. package/dist/scenarios/test-netflix/queries.js +0 -134
  30. package/dist/scenarios/test-netflix/queries.js.map +0 -1
  31. package/dist/scenarios/test-netflix/stack.json +0 -14
  32. package/dist/scripts/dictionary.json +0 -796
  33. package/dist/scripts/graph.json +0 -664
  34. package/dist/scripts/regenerate.d.ts +0 -23
  35. package/dist/scripts/regenerate.d.ts.map +0 -1
  36. package/dist/scripts/regenerate.js +0 -206
  37. package/dist/scripts/regenerate.js.map +0 -1
  38. package/src/scenarios/test-metro-paris/config.json +0 -6
  39. package/src/scenarios/test-metro-paris/graph.json +0 -16325
  40. package/src/scenarios/test-metro-paris/queries.ts +0 -152
  41. package/src/scenarios/test-metro-paris/stack.json +0 -1
  42. package/src/scenarios/test-musicians/config.json +0 -10
  43. package/src/scenarios/test-musicians/graph.json +0 -20
  44. package/src/scenarios/test-musicians/stack.json +0 -1
  45. package/src/scenarios/test-netflix/MIGRATION.md +0 -23
  46. package/src/scenarios/test-netflix/README.md +0 -138
  47. package/src/scenarios/test-netflix/actions.ts +0 -92
  48. package/src/scenarios/test-netflix/config.json +0 -6
  49. package/src/scenarios/test-netflix/data/categories.json +0 -1
  50. package/src/scenarios/test-netflix/data/companies.json +0 -1
  51. package/src/scenarios/test-netflix/data/credits.json +0 -19797
  52. package/src/scenarios/test-netflix/data/departments.json +0 -18
  53. package/src/scenarios/test-netflix/data/jobs.json +0 -142
  54. package/src/scenarios/test-netflix/data/movies.json +0 -3497
  55. package/src/scenarios/test-netflix/data/people.json +0 -1
  56. package/src/scenarios/test-netflix/data/synonyms.json +0 -8
  57. package/src/scenarios/test-netflix/data/users.json +0 -70
  58. package/src/scenarios/test-netflix/graph.json +0 -1017
  59. package/src/scenarios/test-netflix/queries.ts +0 -159
  60. package/src/scenarios/test-netflix/stack.json +0 -14
  61. package/src/scripts/dictionary.json +0 -796
  62. package/src/scripts/graph.json +0 -664
  63. package/src/scripts/regenerate.ts +0 -248
@@ -1,22 +0,0 @@
1
- /**
2
- * queries.ts — Requêtes métro Paris
3
- *
4
- * Remplace les config*.json éparpillés.
5
- * Chaque requête a un nom, une description, et des paramètres typés.
6
- *
7
- * Usage :
8
- * tsx cli/run-scenario.ts scenarios/test-metro-paris --query chatelet-opera
9
- * tsx cli/run-scenario.ts scenarios/test-metro-paris --query all
10
- */
11
- import type { PathQuery } from '../../types/index.js';
12
- export interface NamedQuery {
13
- name: string;
14
- description: string;
15
- query: PathQuery;
16
- }
17
- export declare const metroQueries: NamedQuery[];
18
- /**
19
- * Requête par défaut (utilisée sans --query)
20
- */
21
- export declare const defaultQuery: NamedQuery;
22
- //# sourceMappingURL=queries.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../src/scenarios/test-metro-paris/queries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAErD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,SAAS,CAAA;CACjB;AAED,eAAO,MAAM,YAAY,EAAE,UAAU,EA+HpC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,YAAuD,CAAA"}
@@ -1,128 +0,0 @@
1
- /**
2
- * queries.ts — Requêtes métro Paris
3
- *
4
- * Remplace les config*.json éparpillés.
5
- * Chaque requête a un nom, une description, et des paramètres typés.
6
- *
7
- * Usage :
8
- * tsx cli/run-scenario.ts scenarios/test-metro-paris --query chatelet-opera
9
- * tsx cli/run-scenario.ts scenarios/test-metro-paris --query all
10
- */
11
- export const metroQueries = [
12
- // ============================================================
13
- // TRAJETS SIMPLES — Une seule ligne, pas de correspondance
14
- // ============================================================
15
- {
16
- name: 'chatelet-opera',
17
- description: 'Châtelet → Opéra (Ligne 7, 2 stations, ~3 min)',
18
- query: {
19
- from: 'Station-chatelet',
20
- to: 'Station-opera',
21
- maxPaths: 3
22
- }
23
- },
24
- {
25
- name: 'ligne1-terminus',
26
- description: 'La Défense → Château de Vincennes (Ligne 1 complète, ~45 min)',
27
- query: {
28
- from: 'Station-la-defense-grande-arche',
29
- to: 'Station-chateau-de-vincennes',
30
- maxPaths: 1
31
- }
32
- },
33
- {
34
- name: 'ligne4-nord-sud',
35
- description: 'Porte de Clignancourt → Mairie de Montrouge (Ligne 4 complète)',
36
- query: {
37
- from: 'Station-porte-de-clignancourt',
38
- to: 'Station-mairie-de-montrouge',
39
- maxPaths: 1
40
- }
41
- },
42
- // ============================================================
43
- // TRAJETS AVEC CORRESPONDANCES — Teste le pathfinder
44
- // ============================================================
45
- {
46
- name: 'republique-bastille',
47
- description: 'République → Bastille (plusieurs chemins via L5, L8, L9)',
48
- query: {
49
- from: 'Station-republique',
50
- to: 'Station-bastille',
51
- maxPaths: 5
52
- }
53
- },
54
- {
55
- name: 'gare-du-nord-montparnasse',
56
- description: 'Gare du Nord → Montparnasse (correspondance obligatoire)',
57
- query: {
58
- from: 'Station-gare-du-nord',
59
- to: 'Station-montparnasse-bienvenue',
60
- maxPaths: 3
61
- }
62
- },
63
- {
64
- name: 'defense-nation',
65
- description: 'La Défense → Nation (traversée Est-Ouest, Ligne 1)',
66
- query: {
67
- from: 'Station-la-defense-grande-arche',
68
- to: 'Station-nation',
69
- maxPaths: 3
70
- }
71
- },
72
- // ============================================================
73
- // TRAJETS COMPLEXES — Hubs majeurs, longue distance
74
- // ============================================================
75
- {
76
- name: 'saint-denis-chatillon',
77
- description: 'Saint-Denis Université → Châtillon-Montrouge (Ligne 13 complète)',
78
- query: {
79
- from: 'Station-saint-denis-universite',
80
- to: 'Station-chatillon-montrouge',
81
- maxPaths: 2
82
- }
83
- },
84
- {
85
- name: 'vincennes-defense',
86
- description: 'Château de Vincennes → La Défense (traversée complète Ligne 1)',
87
- query: {
88
- from: 'Station-chateau-de-vincennes',
89
- to: 'Station-la-defense-grande-arche',
90
- maxPaths: 1
91
- }
92
- },
93
- {
94
- name: 'clignancourt-vincennes',
95
- description: 'Porte de Clignancourt → Château de Vincennes (diagonale NW→SE)',
96
- query: {
97
- from: 'Station-porte-de-clignancourt',
98
- to: 'Station-chateau-de-vincennes',
99
- maxPaths: 5
100
- }
101
- },
102
- // ============================================================
103
- // TOURISME — Stations emblématiques
104
- // ============================================================
105
- {
106
- name: 'louvre-tour-eiffel',
107
- description: 'Louvre-Rivoli → Trocadéro (musées)',
108
- query: {
109
- from: 'Station-louvre-rivoli',
110
- to: 'Station-trocadero',
111
- maxPaths: 3
112
- }
113
- },
114
- {
115
- name: 'notre-dame-sacre-coeur',
116
- description: 'Cité → Abbesses (Notre-Dame → Sacré-Cœur)',
117
- query: {
118
- from: 'Station-cite',
119
- to: 'Station-abbesses',
120
- maxPaths: 3
121
- }
122
- }
123
- ];
124
- /**
125
- * Requête par défaut (utilisée sans --query)
126
- */
127
- export const defaultQuery = metroQueries.find(q => q.name === 'chatelet-opera');
128
- //# sourceMappingURL=queries.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/scenarios/test-metro-paris/queries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,MAAM,CAAC,MAAM,YAAY,GAAiB;IAExC,+DAA+D;IAC/D,2DAA2D;IAC3D,+DAA+D;IAE/D;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,gDAAgD;QAC7D,KAAK,EAAE;YACL,IAAI,EAAE,kBAAkB;YACxB,EAAE,EAAE,eAAe;YACnB,QAAQ,EAAE,CAAC;SACZ;KACF;IAED;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,+DAA+D;QAC5E,KAAK,EAAE;YACL,IAAI,EAAE,iCAAiC;YACvC,EAAE,EAAE,8BAA8B;YAClC,QAAQ,EAAE,CAAC;SACZ;KACF;IAED;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,gEAAgE;QAC7E,KAAK,EAAE;YACL,IAAI,EAAE,+BAA+B;YACrC,EAAE,EAAE,6BAA6B;YACjC,QAAQ,EAAE,CAAC;SACZ;KACF;IAED,+DAA+D;IAC/D,qDAAqD;IACrD,+DAA+D;IAE/D;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,0DAA0D;QACvE,KAAK,EAAE;YACL,IAAI,EAAE,oBAAoB;YAC1B,EAAE,EAAE,kBAAkB;YACtB,QAAQ,EAAE,CAAC;SACZ;KACF;IAED;QACE,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,0DAA0D;QACvE,KAAK,EAAE;YACL,IAAI,EAAE,sBAAsB;YAC5B,EAAE,EAAE,gCAAgC;YACpC,QAAQ,EAAE,CAAC;SACZ;KACF;IAED;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,oDAAoD;QACjE,KAAK,EAAE;YACL,IAAI,EAAE,iCAAiC;YACvC,EAAE,EAAE,gBAAgB;YACpB,QAAQ,EAAE,CAAC;SACZ;KACF;IAED,+DAA+D;IAC/D,oDAAoD;IACpD,+DAA+D;IAE/D;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,kEAAkE;QAC/E,KAAK,EAAE;YACL,IAAI,EAAE,gCAAgC;YACtC,EAAE,EAAE,6BAA6B;YACjC,QAAQ,EAAE,CAAC;SACZ;KACF;IAED;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,gEAAgE;QAC7E,KAAK,EAAE;YACL,IAAI,EAAE,8BAA8B;YACpC,EAAE,EAAE,iCAAiC;YACrC,QAAQ,EAAE,CAAC;SACZ;KACF;IAED;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,gEAAgE;QAC7E,KAAK,EAAE;YACL,IAAI,EAAE,+BAA+B;YACrC,EAAE,EAAE,8BAA8B;YAClC,QAAQ,EAAE,CAAC;SACZ;KACF;IAED,+DAA+D;IAC/D,oCAAoC;IACpC,+DAA+D;IAE/D;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,oCAAoC;QACjD,KAAK,EAAE;YACL,IAAI,EAAE,uBAAuB;YAC7B,EAAE,EAAE,mBAAmB;YACvB,QAAQ,EAAE,CAAC;SACZ;KACF;IAED;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,2CAA2C;QACxD,KAAK,EAAE;YACL,IAAI,EAAE,cAAc;YACpB,EAAE,EAAE,kBAAkB;YACtB,QAAQ,EAAE,CAAC;SACZ;KACF;CACF,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAE,CAAA"}
@@ -1,10 +0,0 @@
1
- {
2
- "mode": "PATHFIND",
3
- "description": "Trouver la chaîne de sampling entre deux artistes",
4
- "pathQuery": {
5
- "from": "Artist-Will-Smith",
6
- "to": "Artist-Manu-Dibango",
7
- "maxPaths": 3,
8
- "maxHops": 8
9
- }
10
- }
@@ -1,20 +0,0 @@
1
- {
2
- "nodes": [
3
- { "id": "Artist-Manu-Dibango", "type": "entity" },
4
- { "id": "Artist-Michael-Jackson", "type": "entity" },
5
- { "id": "Artist-Will-Smith", "type": "entity" },
6
- { "id": "Track-Soul-Makossa", "type": "entity" },
7
- { "id": "Track-Wanna-Be-Startin", "type": "entity" },
8
- { "id": "Track-Gettin-Jiggy", "type": "entity" }
9
- ],
10
- "edges": [
11
- { "name": "created", "from": "Artist-Manu-Dibango", "to": "Track-Soul-Makossa", "via": "artist_tracks", "weight": 1 },
12
- { "name": "created", "from": "Artist-Michael-Jackson", "to": "Track-Wanna-Be-Startin", "via": "artist_tracks", "weight": 1 },
13
- { "name": "created", "from": "Artist-Will-Smith", "to": "Track-Gettin-Jiggy", "via": "artist_tracks", "weight": 1 },
14
- { "name": "samples", "from": "Track-Wanna-Be-Startin", "to": "Track-Soul-Makossa", "via": "track_samples", "weight": 3 },
15
- { "name": "samples", "from": "Track-Gettin-Jiggy", "to": "Track-Wanna-Be-Startin", "via": "track_samples", "weight": 3 },
16
- { "name": "credited_on", "from": "Track-Soul-Makossa", "to": "Artist-Manu-Dibango", "via": "artist_tracks", "weight": 1 },
17
- { "name": "credited_on", "from": "Track-Wanna-Be-Startin", "to": "Artist-Michael-Jackson", "via": "artist_tracks", "weight": 1 },
18
- { "name": "credited_on", "from": "Track-Gettin-Jiggy", "to": "Artist-Will-Smith", "via": "artist_tracks", "weight": 1 }
19
- ]
20
- }
@@ -1 +0,0 @@
1
- []
@@ -1,14 +0,0 @@
1
- /**
2
- * Actions du scénario Netflix
3
- *
4
- * Simule le parcours d'un utilisateur qui :
5
- * 1. Voit la liste des films d'un réalisateur (déjà en contexte)
6
- * 2. Sélectionne un film
7
- * 3. Navigue vers les acteurs
8
- * 4. Sélectionne un acteur
9
- * 5. Explore les options à partir de cet acteur
10
- */
11
- import type { ScheduleAction } from '../../types/index.js';
12
- declare const actions: ScheduleAction[];
13
- export default actions;
14
- //# sourceMappingURL=actions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../src/scenarios/test-netflix/actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAS,MAAM,sBAAsB,CAAA;AAEjE,QAAA,MAAM,OAAO,EAAE,cAAc,EA4E5B,CAAA;AAED,eAAe,OAAO,CAAA"}
@@ -1,86 +0,0 @@
1
- /**
2
- * Actions du scénario Netflix
3
- *
4
- * Simule le parcours d'un utilisateur qui :
5
- * 1. Voit la liste des films d'un réalisateur (déjà en contexte)
6
- * 2. Sélectionne un film
7
- * 3. Navigue vers les acteurs
8
- * 4. Sélectionne un acteur
9
- * 5. Explore les options à partir de cet acteur
10
- */
11
- const actions = [
12
- {
13
- name: 'selectMovie',
14
- weight: 10,
15
- // Movies est résolu (liste chargée) mais pas encore d'ID choisi
16
- when: (stack) => {
17
- const movies = stack.find(f => f.entity === 'Movies');
18
- return movies?.state === 'RESOLVED' && movies.id == null;
19
- },
20
- execute: async (stack) => {
21
- console.log(' 🎬 [selectMovie] L\'utilisateur choisit un film dans la liste...');
22
- const movies = stack.find(f => f.entity === 'Movies');
23
- if (movies) {
24
- movies.id = 10;
25
- console.log(' ✓ Film #10 sélectionné');
26
- }
27
- return stack;
28
- },
29
- cooldown: 0
30
- },
31
- {
32
- name: 'navigateToActors',
33
- weight: 8,
34
- // Un film est sélectionné, mais pas encore de frame Actors
35
- when: (stack) => {
36
- const movies = stack.find(f => f.entity === 'Movies');
37
- const actors = stack.find(f => f.entity === 'Actors');
38
- return !!movies && movies.id != null && !actors;
39
- },
40
- execute: async (stack) => {
41
- console.log(' 🎭 [navigateToActors] L\'utilisateur clique sur "Voir les acteurs"...');
42
- stack.push({ entity: 'Actors', state: 'UNRESOLVED' });
43
- console.log(' ✓ Frame Actors ajoutée à la stack');
44
- return stack;
45
- },
46
- cooldown: 0
47
- },
48
- {
49
- name: 'selectActor',
50
- weight: 5,
51
- // Actors existe, est résolu, mais pas encore d'ID choisi
52
- when: (stack) => {
53
- const actors = stack.find(f => f.entity === 'Actors');
54
- return !!actors && actors.state === 'RESOLVED' && actors.id == null;
55
- },
56
- execute: async (stack) => {
57
- console.log(' ⭐ [selectActor] L\'utilisateur sélectionne un acteur...');
58
- const actors = stack.find(f => f.entity === 'Actors');
59
- if (actors) {
60
- actors.id = 3;
61
- console.log(' ✓ Acteur #3 sélectionné');
62
- }
63
- return stack;
64
- },
65
- cooldown: 0
66
- },
67
- {
68
- name: 'exploreFromActor',
69
- weight: 3,
70
- terminal: true, // S'exécute une seule fois
71
- when: (stack) => {
72
- const actors = stack.find(f => f.entity === 'Actors');
73
- return !!actors && actors.id != null;
74
- },
75
- execute: async (stack) => {
76
- console.log(' 🔍 [exploreFromActor] Affichage des options d\'exploration :');
77
- console.log(' - Filmographie complète');
78
- console.log(' - Autres réalisateurs');
79
- console.log(' - Co-stars');
80
- return stack;
81
- },
82
- cooldown: 0
83
- }
84
- ];
85
- export default actions;
86
- //# sourceMappingURL=actions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/scenarios/test-netflix/actions.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- {
2
- "mode": "NAVIGATE",
3
- "description": "Scénario Netflix — navigation dans un graphe généré automatiquement par le pipeline. Démontre les vues sémantiques (actor, director, writer...) issues de credits.jobId → jobs.",
4
- "dataPath": "./data",
5
- "graphGeneratedBy": "JsonSchemaExtractor → SchemaAnalyzer → GraphBuilder → GraphAssembler → GraphOptimizer"
6
- }
@@ -1 +0,0 @@
1
- [{ "id": 18, "name": "Drame" }, { "id": 80, "name": "Crime" }, { "id": 36, "name": "Histoire" }, { "id": 10752, "name": "Guerre" }, { "id": 35, "name": "Comédie" }, { "id": 10749, "name": "Romance" }, { "id": 16, "name": "Animation" }, { "id": 10751, "name": "Familial" }, { "id": 14, "name": "Fantastique" }, { "id": 28, "name": "Action" }, { "id": 53, "name": "Thriller" }, { "id": 12, "name": "Aventure" }, { "id": 37, "name": "Western" }, { "id": 10402, "name": "Musique" }, { "id": 27, "name": "Horreur" }, { "id": 9648, "name": "Mystère" }, { "id": 878, "name": "Science-Fiction" }, { "id": 10770, "name": "Téléfilm" }]