@audiofool/moondog 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.
Files changed (109) hide show
  1. package/README.md +125 -0
  2. package/assets/brand/moondog-lunar-record/moondog-logo-1x1.png +0 -0
  3. package/contracts/v1/capability-policy.schema.json +572 -0
  4. package/contracts/v1/definitions.schema.json +365 -0
  5. package/contracts/v1/library-track-observation.schema.json +138 -0
  6. package/contracts/v1/listening-event.schema.json +111 -0
  7. package/contracts/v1/profile-evidence.schema.json +237 -0
  8. package/contracts/v1/taste-event.schema.json +258 -0
  9. package/contracts/v1/tool-invocation.schema.json +318 -0
  10. package/contracts/v1/tool-receipt.schema.json +1066 -0
  11. package/contracts/v1/track-ref.schema.json +275 -0
  12. package/contracts/v2/profile-evidence.schema.json +284 -0
  13. package/package.json +105 -0
  14. package/scripts/contract-lib.mjs +361 -0
  15. package/scripts/contract-semantics.mjs +2630 -0
  16. package/scripts/demo-studio.mjs +58 -0
  17. package/scripts/moondog +52 -0
  18. package/scripts/moondog.mjs +954 -0
  19. package/src/core/apple-data-migration.mjs +50 -0
  20. package/src/core/apple-library-source-status.mjs +220 -0
  21. package/src/core/apple-projection-domain-services.mjs +2356 -0
  22. package/src/core/capability-catalog.mjs +577 -0
  23. package/src/core/listening-profile-domain-services.mjs +1010 -0
  24. package/src/core/lyric-library.mjs +121 -0
  25. package/src/core/lyric-profile.mjs +50 -0
  26. package/src/core/lyric-service.mjs +41 -0
  27. package/src/core/moondog-application.mjs +1827 -0
  28. package/src/core/state-directory.mjs +19 -0
  29. package/src/core/synthetic-domain-services.mjs +1485 -0
  30. package/src/core/uuid-v5.mjs +42 -0
  31. package/src/demo/fictional-spotify-history.mjs +400 -0
  32. package/src/demo/moondog-demo.mjs +355 -0
  33. package/src/demo/moondog-interactive-tasteprint-demo.mjs +293 -0
  34. package/src/demo/moondog-tasteprint-demo.mjs +631 -0
  35. package/src/importers/apple-music-library/import-batch.mjs +290 -0
  36. package/src/importers/apple-music-library/index.mjs +76 -0
  37. package/src/importers/apple-music-library/normalize.mjs +1126 -0
  38. package/src/importers/apple-music-library/parse-plist.mjs +357 -0
  39. package/src/importers/apple-music-library/projection-records.mjs +557 -0
  40. package/src/importers/apple-music-library/read-batch.mjs +276 -0
  41. package/src/importers/apple-music-library/sqlite-projection.mjs +1307 -0
  42. package/src/importers/apple-music-library/stable-ids.mjs +19 -0
  43. package/src/importers/apple-music-library/track-snapshot.schema.json +136 -0
  44. package/src/integrations/apple-music/catalog.mjs +770 -0
  45. package/src/integrations/cross-catalog-artist-identity.mjs +222 -0
  46. package/src/integrations/listenbrainz/history-file.mjs +560 -0
  47. package/src/integrations/lyrics/lrclib.mjs +55 -0
  48. package/src/integrations/open-music-similarity/artist-radio.mjs +806 -0
  49. package/src/integrations/public-playlists.mjs +104 -0
  50. package/src/integrations/spotify/account-data-history.mjs +545 -0
  51. package/src/integrations/spotify/account-data-profile.mjs +918 -0
  52. package/src/integrations/spotify/authentication.mjs +791 -0
  53. package/src/integrations/spotify/catalog-resolver.mjs +657 -0
  54. package/src/integrations/spotify/connection.mjs +125 -0
  55. package/src/integrations/spotify/credential-store.mjs +26 -0
  56. package/src/integrations/spotify/extended-streaming-history.mjs +525 -0
  57. package/src/integrations/spotify/history-archive.mjs +59 -0
  58. package/src/integrations/spotify/index.mjs +80 -0
  59. package/src/integrations/spotify/recent-activity.mjs +198 -0
  60. package/src/integrations/spotify/resolution-cache.mjs +260 -0
  61. package/src/integrations/spotify/service.mjs +713 -0
  62. package/src/integrations/spotify/settings.mjs +89 -0
  63. package/src/integrations/spotify/web-api-client.mjs +761 -0
  64. package/src/integrations/web/codex-web.mjs +263 -0
  65. package/src/integrations/youtube-music/takeout.mjs +143 -0
  66. package/src/memory/local-memory-store.mjs +1705 -0
  67. package/src/memory/reflection-worker.mjs +87 -0
  68. package/src/profile/apple-library-import.mjs +28 -0
  69. package/src/profile/history-import.mjs +163 -0
  70. package/src/profile/listener-corrections.mjs +217 -0
  71. package/src/profile/listening-history-store.mjs +2055 -0
  72. package/src/profile/listening-profile-projection.mjs +2520 -0
  73. package/src/profile/local-music-data.mjs +812 -0
  74. package/src/profile/music-import-bundle.mjs +91 -0
  75. package/src/profile/music-providers.mjs +25 -0
  76. package/src/profile/spotify-archive-catalog-hints.mjs +210 -0
  77. package/src/profile/spotify-archive-taste.mjs +482 -0
  78. package/src/runtime/pi/agent-runtime.mjs +6444 -0
  79. package/src/runtime/pi/authentication.mjs +104 -0
  80. package/src/runtime/pi/configured-runtime.mjs +98 -0
  81. package/src/runtime/pi/memory-agent-runtime.mjs +337 -0
  82. package/src/runtime/pi/model-catalog.mjs +62 -0
  83. package/src/runtime/pi/model-transport.mjs +117 -0
  84. package/src/runtime/pi/persistent-credential-store.mjs +670 -0
  85. package/src/runtime/pi/provider-registry.mjs +74 -0
  86. package/src/runtime/pi/runtime-settings.mjs +81 -0
  87. package/src/surfaces/cli/auth-command.mjs +355 -0
  88. package/src/surfaces/cli/brand-components.mjs +390 -0
  89. package/src/surfaces/cli/brand-theme.mjs +231 -0
  90. package/src/surfaces/cli/catalog-command.mjs +509 -0
  91. package/src/surfaces/cli/command-completions.mjs +113 -0
  92. package/src/surfaces/cli/data-command.mjs +214 -0
  93. package/src/surfaces/cli/format-output.mjs +750 -0
  94. package/src/surfaces/cli/history-import-view.mjs +445 -0
  95. package/src/surfaces/cli/import-guides.mjs +9 -0
  96. package/src/surfaces/cli/listenbrainz-command.mjs +129 -0
  97. package/src/surfaces/cli/listening-menu.mjs +171 -0
  98. package/src/surfaces/cli/profile-command.mjs +290 -0
  99. package/src/surfaces/cli/spotify-command.mjs +849 -0
  100. package/src/surfaces/cli/taste-profile-model.mjs +306 -0
  101. package/src/surfaces/cli/taste-profile-view.mjs +272 -0
  102. package/src/surfaces/cli/terminal-art.mjs +295 -0
  103. package/src/surfaces/cli/tui.mjs +1714 -0
  104. package/src/surfaces/cli/web-command.mjs +52 -0
  105. package/src/surfaces/html/tasteprint-artifact.mjs +96 -0
  106. package/src/surfaces/html/tasteprint.mjs +3575 -0
  107. package/src/surfaces/web/showcase.mjs +272 -0
  108. package/src/surfaces/web/studio-page.mjs +4148 -0
  109. package/src/surfaces/web/studio.mjs +2288 -0
@@ -0,0 +1,275 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "urn:moondog:contract:track-ref:1",
4
+ "title": "Moondog TrackRef v1",
5
+ "type": "object",
6
+ "properties": {
7
+ "schema_version": {
8
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/schema_version"
9
+ },
10
+ "track_ref_id": {
11
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/uuid"
12
+ },
13
+ "revision": {
14
+ "type": "integer",
15
+ "minimum": 1
16
+ },
17
+ "identity_status": {
18
+ "enum": [
19
+ "provisional",
20
+ "resolved",
21
+ "ambiguous",
22
+ "merged"
23
+ ]
24
+ },
25
+ "display_label": {
26
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/non_empty_string"
27
+ },
28
+ "title": {
29
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/non_empty_string"
30
+ },
31
+ "artist_credits": {
32
+ "type": "array",
33
+ "items": {
34
+ "type": "object",
35
+ "properties": {
36
+ "name": {
37
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/non_empty_string"
38
+ },
39
+ "artist_ref_id": {
40
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/uuid"
41
+ },
42
+ "role": {
43
+ "enum": [
44
+ "primary",
45
+ "featured",
46
+ "remixer",
47
+ "composer",
48
+ "performer",
49
+ "unknown"
50
+ ]
51
+ },
52
+ "external_refs": {
53
+ "type": "array",
54
+ "items": {
55
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/external_ref"
56
+ },
57
+ "uniqueItems": true
58
+ }
59
+ },
60
+ "required": [
61
+ "name",
62
+ "role"
63
+ ],
64
+ "additionalProperties": false
65
+ }
66
+ },
67
+ "release": {
68
+ "type": "object",
69
+ "properties": {
70
+ "title": {
71
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/non_empty_string"
72
+ },
73
+ "release_ref_id": {
74
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/uuid"
75
+ },
76
+ "release_date": {
77
+ "oneOf": [
78
+ {
79
+ "type": "string",
80
+ "format": "date"
81
+ },
82
+ {
83
+ "type": "string",
84
+ "pattern": "^[0-9]{4}-(?:0[1-9]|1[0-2])$"
85
+ },
86
+ {
87
+ "type": "string",
88
+ "pattern": "^[0-9]{4}$"
89
+ }
90
+ ]
91
+ }
92
+ },
93
+ "required": [
94
+ "title"
95
+ ],
96
+ "additionalProperties": false
97
+ },
98
+ "duration_ms": {
99
+ "type": "integer",
100
+ "minimum": 0
101
+ },
102
+ "isrc": {
103
+ "type": "string",
104
+ "pattern": "^[A-Z]{2}[A-Z0-9]{3}[0-9]{7}$"
105
+ },
106
+ "external_refs": {
107
+ "type": "array",
108
+ "items": {
109
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/external_ref"
110
+ },
111
+ "uniqueItems": true
112
+ },
113
+ "candidate_track_ref_ids": {
114
+ "type": "array",
115
+ "minItems": 2,
116
+ "items": {
117
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/uuid"
118
+ },
119
+ "uniqueItems": true
120
+ },
121
+ "supersedes": {
122
+ "type": "object",
123
+ "properties": {
124
+ "track_ref_id": {
125
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/uuid"
126
+ },
127
+ "revision": {
128
+ "type": "integer",
129
+ "minimum": 1
130
+ }
131
+ },
132
+ "required": [
133
+ "track_ref_id",
134
+ "revision"
135
+ ],
136
+ "additionalProperties": false
137
+ },
138
+ "merged_into": {
139
+ "type": "object",
140
+ "properties": {
141
+ "track_ref_id": {
142
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/uuid"
143
+ },
144
+ "revision": {
145
+ "type": "integer",
146
+ "minimum": 1
147
+ }
148
+ },
149
+ "required": [
150
+ "track_ref_id",
151
+ "revision"
152
+ ],
153
+ "additionalProperties": false
154
+ },
155
+ "created_at": {
156
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/utc_timestamp"
157
+ },
158
+ "resolved_at": {
159
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/utc_timestamp"
160
+ },
161
+ "extensions": {
162
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/extensions"
163
+ }
164
+ },
165
+ "required": [
166
+ "schema_version",
167
+ "track_ref_id",
168
+ "revision",
169
+ "identity_status",
170
+ "display_label",
171
+ "external_refs",
172
+ "created_at"
173
+ ],
174
+ "allOf": [
175
+ {
176
+ "if": {
177
+ "properties": {
178
+ "identity_status": {
179
+ "const": "resolved"
180
+ }
181
+ },
182
+ "required": [
183
+ "identity_status"
184
+ ]
185
+ },
186
+ "then": {
187
+ "required": [
188
+ "title",
189
+ "artist_credits",
190
+ "resolved_at"
191
+ ],
192
+ "properties": {
193
+ "artist_credits": {
194
+ "type": "array",
195
+ "minItems": 1
196
+ }
197
+ }
198
+ }
199
+ },
200
+ {
201
+ "if": {
202
+ "properties": {
203
+ "identity_status": {
204
+ "const": "ambiguous"
205
+ }
206
+ },
207
+ "required": [
208
+ "identity_status"
209
+ ]
210
+ },
211
+ "then": {
212
+ "required": [
213
+ "candidate_track_ref_ids"
214
+ ]
215
+ },
216
+ "else": {
217
+ "not": {
218
+ "required": [
219
+ "candidate_track_ref_ids"
220
+ ]
221
+ }
222
+ }
223
+ },
224
+ {
225
+ "if": {
226
+ "properties": {
227
+ "identity_status": {
228
+ "const": "merged"
229
+ }
230
+ },
231
+ "required": [
232
+ "identity_status"
233
+ ]
234
+ },
235
+ "then": {
236
+ "required": [
237
+ "merged_into"
238
+ ]
239
+ },
240
+ "else": {
241
+ "not": {
242
+ "required": [
243
+ "merged_into"
244
+ ]
245
+ }
246
+ }
247
+ },
248
+ {
249
+ "if": {
250
+ "properties": {
251
+ "revision": {
252
+ "type": "integer",
253
+ "minimum": 2
254
+ }
255
+ },
256
+ "required": [
257
+ "revision"
258
+ ]
259
+ },
260
+ "then": {
261
+ "required": [
262
+ "supersedes"
263
+ ]
264
+ },
265
+ "else": {
266
+ "not": {
267
+ "required": [
268
+ "supersedes"
269
+ ]
270
+ }
271
+ }
272
+ }
273
+ ],
274
+ "additionalProperties": false
275
+ }
@@ -0,0 +1,284 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "urn:moondog:contract:profile-evidence:2",
4
+ "title": "Moondog ProfileEvidence v2",
5
+ "type": "object",
6
+ "properties": {
7
+ "schema_version": {
8
+ "type": "integer",
9
+ "const": 2
10
+ },
11
+ "profile_evidence_id": {
12
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/uuid"
13
+ },
14
+ "subject_id": {
15
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/uuid"
16
+ },
17
+ "claim": {
18
+ "type": "object",
19
+ "properties": {
20
+ "dimension": {
21
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/namespaced_key"
22
+ },
23
+ "value": {
24
+ "oneOf": [
25
+ {
26
+ "type": "object",
27
+ "properties": {
28
+ "value_type": {
29
+ "const": "entity"
30
+ },
31
+ "entity_ref": {
32
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/entity_ref"
33
+ }
34
+ },
35
+ "required": [
36
+ "value_type",
37
+ "entity_ref"
38
+ ],
39
+ "additionalProperties": false
40
+ },
41
+ {
42
+ "type": "object",
43
+ "properties": {
44
+ "value_type": {
45
+ "const": "string"
46
+ },
47
+ "string_value": {
48
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/non_empty_string"
49
+ }
50
+ },
51
+ "required": [
52
+ "value_type",
53
+ "string_value"
54
+ ],
55
+ "additionalProperties": false
56
+ },
57
+ {
58
+ "type": "object",
59
+ "properties": {
60
+ "value_type": {
61
+ "const": "number"
62
+ },
63
+ "number_value": {
64
+ "type": "number"
65
+ }
66
+ },
67
+ "required": [
68
+ "value_type",
69
+ "number_value"
70
+ ],
71
+ "additionalProperties": false
72
+ },
73
+ {
74
+ "type": "object",
75
+ "properties": {
76
+ "value_type": {
77
+ "const": "boolean"
78
+ },
79
+ "boolean_value": {
80
+ "type": "boolean"
81
+ }
82
+ },
83
+ "required": [
84
+ "value_type",
85
+ "boolean_value"
86
+ ],
87
+ "additionalProperties": false
88
+ }
89
+ ]
90
+ }
91
+ },
92
+ "required": [
93
+ "dimension",
94
+ "value"
95
+ ],
96
+ "additionalProperties": false
97
+ },
98
+ "direction": {
99
+ "enum": [
100
+ "supports",
101
+ "contradicts"
102
+ ]
103
+ },
104
+ "strength": {
105
+ "type": "number",
106
+ "minimum": 0,
107
+ "maximum": 1
108
+ },
109
+ "confidence": {
110
+ "type": "number",
111
+ "minimum": 0,
112
+ "maximum": 1
113
+ },
114
+ "basis_refs": {
115
+ "type": "array",
116
+ "minItems": 1,
117
+ "items": {
118
+ "type": "object",
119
+ "properties": {
120
+ "record_type": {
121
+ "enum": [
122
+ "library_track_observation",
123
+ "listening_event",
124
+ "taste_event"
125
+ ]
126
+ },
127
+ "record_id": {
128
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/uuid"
129
+ }
130
+ },
131
+ "required": [
132
+ "record_type",
133
+ "record_id"
134
+ ],
135
+ "additionalProperties": false
136
+ },
137
+ "uniqueItems": true
138
+ },
139
+ "derivation": {
140
+ "type": "object",
141
+ "properties": {
142
+ "kind": {
143
+ "enum": [
144
+ "direct",
145
+ "rule",
146
+ "aggregate",
147
+ "model"
148
+ ]
149
+ },
150
+ "name": {
151
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/non_empty_string"
152
+ },
153
+ "version": {
154
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/non_empty_string"
155
+ },
156
+ "parameters_digest": {
157
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/sha256"
158
+ }
159
+ },
160
+ "required": [
161
+ "kind",
162
+ "name",
163
+ "version"
164
+ ],
165
+ "additionalProperties": false
166
+ },
167
+ "evidence_window": {
168
+ "type": "object",
169
+ "properties": {
170
+ "start_at": {
171
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/utc_timestamp"
172
+ },
173
+ "end_at": {
174
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/utc_timestamp"
175
+ }
176
+ },
177
+ "required": [
178
+ "start_at",
179
+ "end_at"
180
+ ],
181
+ "additionalProperties": false
182
+ },
183
+ "created_at": {
184
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/utc_timestamp"
185
+ },
186
+ "expires_at": {
187
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/utc_timestamp"
188
+ },
189
+ "supersedes_profile_evidence_id": {
190
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/uuid"
191
+ },
192
+ "extensions": {
193
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/extensions"
194
+ }
195
+ },
196
+ "required": [
197
+ "schema_version",
198
+ "profile_evidence_id",
199
+ "subject_id",
200
+ "claim",
201
+ "direction",
202
+ "strength",
203
+ "confidence",
204
+ "basis_refs",
205
+ "derivation",
206
+ "created_at"
207
+ ],
208
+ "allOf": [
209
+ {
210
+ "if": {
211
+ "properties": {
212
+ "derivation": {
213
+ "type": "object",
214
+ "properties": {
215
+ "kind": {
216
+ "enum": [
217
+ "aggregate",
218
+ "model"
219
+ ]
220
+ }
221
+ },
222
+ "required": [
223
+ "kind"
224
+ ]
225
+ }
226
+ },
227
+ "required": [
228
+ "derivation"
229
+ ]
230
+ },
231
+ "then": {
232
+ "required": [
233
+ "evidence_window"
234
+ ]
235
+ }
236
+ },
237
+ {
238
+ "if": {
239
+ "properties": {
240
+ "basis_refs": {
241
+ "type": "array",
242
+ "contains": {
243
+ "type": "object",
244
+ "properties": {
245
+ "record_type": {
246
+ "const": "library_track_observation"
247
+ }
248
+ },
249
+ "required": [
250
+ "record_type"
251
+ ]
252
+ }
253
+ }
254
+ },
255
+ "required": [
256
+ "basis_refs"
257
+ ]
258
+ },
259
+ "then": {
260
+ "properties": {
261
+ "derivation": {
262
+ "type": "object",
263
+ "properties": {
264
+ "kind": {
265
+ "enum": [
266
+ "rule",
267
+ "aggregate"
268
+ ]
269
+ },
270
+ "parameters_digest": {
271
+ "$ref": "urn:moondog:contract:definitions:1#/$defs/sha256"
272
+ }
273
+ },
274
+ "required": [
275
+ "kind",
276
+ "parameters_digest"
277
+ ]
278
+ }
279
+ }
280
+ }
281
+ }
282
+ ],
283
+ "additionalProperties": false
284
+ }
package/package.json ADDED
@@ -0,0 +1,105 @@
1
+ {
2
+ "name": "@audiofool/moondog",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "description": "Local-first personal AI music agent.",
6
+ "keywords": [
7
+ "ai-agent",
8
+ "listenbrainz",
9
+ "local-first",
10
+ "music",
11
+ "music-discovery",
12
+ "personal-ai",
13
+ "spotify",
14
+ "taste-profile"
15
+ ],
16
+ "bin": {
17
+ "moondog": "scripts/moondog"
18
+ },
19
+ "files": [
20
+ "assets/brand/moondog-lunar-record/moondog-logo-1x1.png",
21
+ "contracts/v1",
22
+ "contracts/v2",
23
+ "scripts/contract-lib.mjs",
24
+ "scripts/contract-semantics.mjs",
25
+ "scripts/moondog",
26
+ "scripts/moondog.mjs",
27
+ "scripts/demo-studio.mjs",
28
+ "src/core",
29
+ "src/demo/moondog-interactive-tasteprint-demo.mjs",
30
+ "src/demo/moondog-demo.mjs",
31
+ "src/demo/fictional-spotify-history.mjs",
32
+ "src/demo/moondog-tasteprint-demo.mjs",
33
+ "src/importers",
34
+ "src/integrations",
35
+ "src/memory",
36
+ "src/profile",
37
+ "src/runtime",
38
+ "src/surfaces"
39
+ ],
40
+ "engines": {
41
+ "node": ">=22.19.0"
42
+ },
43
+ "os": [
44
+ "darwin",
45
+ "linux"
46
+ ],
47
+ "packageManager": "npm@11.16.0",
48
+ "scripts": {
49
+ "start": "node --disable-warning=ExperimentalWarning scripts/moondog.mjs",
50
+ "moondog": "node --disable-warning=ExperimentalWarning scripts/moondog.mjs",
51
+ "studio": "node --disable-warning=ExperimentalWarning scripts/moondog.mjs studio",
52
+ "demo:studio": "node --disable-warning=ExperimentalWarning scripts/demo-studio.mjs",
53
+ "generate:demo-history": "node --disable-warning=ExperimentalWarning scripts/moondog.mjs demo-history",
54
+ "showcase": "node --disable-warning=ExperimentalWarning scripts/showcase.mjs",
55
+ "export:showcase": "node --disable-warning=ExperimentalWarning scripts/export-showcase.mjs",
56
+ "demo": "node --disable-warning=ExperimentalWarning scripts/moondog.mjs demo --offline",
57
+ "generate:tasteprint-demo": "node --disable-warning=ExperimentalWarning scripts/generate-tasteprint-demo.mjs",
58
+ "generate:studio-tour": "node --disable-warning=ExperimentalWarning scripts/capture-studio-tour.mjs",
59
+ "generate:demo-screens": "node --disable-warning=ExperimentalWarning scripts/capture-demo-screens.mjs",
60
+ "verify:showcase": "node --disable-warning=ExperimentalWarning scripts/verify-showcase.mjs",
61
+ "verify:showcase-export": "node --test tests/core/showcase-export.test.mjs",
62
+ "verify:demo-history": "node --test tests/runtime/moondog-demo-history.test.mjs",
63
+ "verify:demo": "node --disable-warning=ExperimentalWarning scripts/verify-public-demo.mjs",
64
+ "verify:demo-media": "node --disable-warning=ExperimentalWarning scripts/verify-demo-media.mjs",
65
+ "verify:community": "node --disable-warning=ExperimentalWarning scripts/verify-community.mjs",
66
+ "verify:package": "node --disable-warning=ExperimentalWarning scripts/verify-package.mjs",
67
+ "verify:release-tree": "node --disable-warning=ExperimentalWarning scripts/verify-release-tree.mjs",
68
+ "verify:clean-source": "node --disable-warning=ExperimentalWarning scripts/verify-clean-source.mjs",
69
+ "verify:clean-linux": "node --disable-warning=ExperimentalWarning scripts/verify-clean-source.mjs --linux-container",
70
+ "export:public-source": "node --disable-warning=ExperimentalWarning scripts/export-public-source.mjs",
71
+ "verify": "npm run verify:release-tree && npm run verify:showcase && npm run verify:showcase-export && npm run verify:demo-history && npm run verify:demo && npm run verify:demo-media && npm run verify:community && npm run verify:package && npm run validate:contracts && npm test",
72
+ "doctor": "node --disable-warning=ExperimentalWarning scripts/moondog.mjs doctor",
73
+ "inspect:apple-library": "node scripts/import-apple-music-library.mjs inspect",
74
+ "import:apple-library": "node scripts/import-apple-music-library.mjs import",
75
+ "rebuild:apple-projection": "node --disable-warning=ExperimentalWarning scripts/rebuild-apple-music-projection.mjs",
76
+ "eval:discovery": "node --disable-warning=ExperimentalWarning scripts/evaluate-discovery.mjs",
77
+ "eval:review": "node --disable-warning=ExperimentalWarning scripts/review-discovery.mjs",
78
+ "eval:usability": "node --disable-warning=ExperimentalWarning scripts/evaluate-usability.mjs",
79
+ "validate:contracts": "node scripts/validate-contracts.mjs",
80
+ "test": "node --test tests/contracts/*.test.mjs tests/core/*.test.mjs tests/importers/*.test.mjs tests/runtime/*.test.mjs"
81
+ },
82
+ "dependencies": {
83
+ "@earendil-works/pi-agent-core": "0.84.3",
84
+ "@earendil-works/pi-ai": "0.84.3",
85
+ "@earendil-works/pi-tui": "0.84.3",
86
+ "ajv": "8.20.0",
87
+ "ajv-formats": "3.0.1",
88
+ "plist": "5.0.0"
89
+ },
90
+ "devDependencies": {
91
+ "yaml": "2.9.0"
92
+ },
93
+ "repository": {
94
+ "type": "git",
95
+ "url": "git+https://github.com/Audiofool934/moondog.git"
96
+ },
97
+ "bugs": {
98
+ "url": "https://github.com/Audiofool934/moondog/issues"
99
+ },
100
+ "homepage": "https://github.com/Audiofool934/moondog#readme",
101
+ "publishConfig": {
102
+ "access": "public",
103
+ "registry": "https://registry.npmjs.org/"
104
+ }
105
+ }