@mindflight/mindbrain-personal-studio 0.6.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/.env.example +50 -0
- package/README.md +134 -0
- package/bin/mindbrain-studio.mjs +20 -0
- package/build/client/_app/immutable/assets/2.BXRKVU9n.css +1 -0
- package/build/client/_app/immutable/assets/2.BXRKVU9n.css.br +0 -0
- package/build/client/_app/immutable/assets/2.BXRKVU9n.css.gz +0 -0
- package/build/client/_app/immutable/chunks/-OSExkSk.js +2 -0
- package/build/client/_app/immutable/chunks/-OSExkSk.js.br +0 -0
- package/build/client/_app/immutable/chunks/-OSExkSk.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BIHI7g3E.js +1 -0
- package/build/client/_app/immutable/chunks/BIHI7g3E.js.br +2 -0
- package/build/client/_app/immutable/chunks/BIHI7g3E.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BJB7pSge.js +1 -0
- package/build/client/_app/immutable/chunks/BJB7pSge.js.br +0 -0
- package/build/client/_app/immutable/chunks/BJB7pSge.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BNUkRZqg.js +1 -0
- package/build/client/_app/immutable/chunks/BNUkRZqg.js.br +0 -0
- package/build/client/_app/immutable/chunks/BNUkRZqg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BP2JbIUZ.js +1 -0
- package/build/client/_app/immutable/chunks/BP2JbIUZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/BP2JbIUZ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BVrgUHq-.js +1 -0
- package/build/client/_app/immutable/chunks/BVrgUHq-.js.br +0 -0
- package/build/client/_app/immutable/chunks/BVrgUHq-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BmeSanva.js +1 -0
- package/build/client/_app/immutable/chunks/BmeSanva.js.br +0 -0
- package/build/client/_app/immutable/chunks/BmeSanva.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BnkCgNCx.js +1 -0
- package/build/client/_app/immutable/chunks/BnkCgNCx.js.br +0 -0
- package/build/client/_app/immutable/chunks/BnkCgNCx.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C5KYKPa8.js +311 -0
- package/build/client/_app/immutable/chunks/C5KYKPa8.js.br +0 -0
- package/build/client/_app/immutable/chunks/C5KYKPa8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CBDzfqXr.js +1 -0
- package/build/client/_app/immutable/chunks/CBDzfqXr.js.br +0 -0
- package/build/client/_app/immutable/chunks/CBDzfqXr.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cp9dXlPT.js +1 -0
- package/build/client/_app/immutable/chunks/Cp9dXlPT.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cp9dXlPT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D0daF8Eh.js +2 -0
- package/build/client/_app/immutable/chunks/D0daF8Eh.js.br +0 -0
- package/build/client/_app/immutable/chunks/D0daF8Eh.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D4SoBmS0.js +1 -0
- package/build/client/_app/immutable/chunks/D4SoBmS0.js.br +0 -0
- package/build/client/_app/immutable/chunks/D4SoBmS0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DpVrWha3.js +1 -0
- package/build/client/_app/immutable/chunks/DpVrWha3.js.br +0 -0
- package/build/client/_app/immutable/chunks/DpVrWha3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DyXQogav.js +1 -0
- package/build/client/_app/immutable/chunks/DyXQogav.js.br +0 -0
- package/build/client/_app/immutable/chunks/DyXQogav.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Gs0cNFYG.js +1 -0
- package/build/client/_app/immutable/chunks/Gs0cNFYG.js.br +0 -0
- package/build/client/_app/immutable/chunks/Gs0cNFYG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/NXeHtWpC.js +1 -0
- package/build/client/_app/immutable/chunks/NXeHtWpC.js.br +0 -0
- package/build/client/_app/immutable/chunks/NXeHtWpC.js.gz +0 -0
- package/build/client/_app/immutable/chunks/i0D5dc1Y.js +1 -0
- package/build/client/_app/immutable/chunks/i0D5dc1Y.js.br +0 -0
- package/build/client/_app/immutable/chunks/i0D5dc1Y.js.gz +0 -0
- package/build/client/_app/immutable/chunks/nnWk1BBo.js +1 -0
- package/build/client/_app/immutable/chunks/nnWk1BBo.js.br +0 -0
- package/build/client/_app/immutable/chunks/nnWk1BBo.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CVz6aYsT.js +2 -0
- package/build/client/_app/immutable/entry/app.CVz6aYsT.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CVz6aYsT.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.Bt5tVOz8.js +1 -0
- package/build/client/_app/immutable/entry/start.Bt5tVOz8.js.br +2 -0
- package/build/client/_app/immutable/entry/start.Bt5tVOz8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.C2sXq0eH.js +1 -0
- package/build/client/_app/immutable/nodes/0.C2sXq0eH.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.C2sXq0eH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.BBtxY46Q.js +1 -0
- package/build/client/_app/immutable/nodes/1.BBtxY46Q.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.BBtxY46Q.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.D0pSa9ko.js +9 -0
- package/build/client/_app/immutable/nodes/2.D0pSa9ko.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.D0pSa9ko.js.gz +0 -0
- package/build/client/_app/version.json +1 -0
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/client/robots.txt +3 -0
- package/build/client/robots.txt.br +0 -0
- package/build/client/robots.txt.gz +0 -0
- package/build/env.js +70 -0
- package/build/env.js.map +1 -0
- package/build/handler.js +26 -0
- package/build/handler.js.map +1 -0
- package/build/index.js +149 -0
- package/build/index.js.map +1 -0
- package/build/server/chunks/chunks/edgeLinkModes.js-CfRqrZtd.js +50 -0
- package/build/server/chunks/chunks/edgeLinkModes.js-CfRqrZtd.js.map +1 -0
- package/build/server/chunks/chunks/environment.js-Bf8x1V_n.js +16 -0
- package/build/server/chunks/chunks/environment.js-Bf8x1V_n.js.map +1 -0
- package/build/server/chunks/chunks/exports.js-DFR3riS9.js +217 -0
- package/build/server/chunks/chunks/exports.js-DFR3riS9.js.map +1 -0
- package/build/server/chunks/chunks/false.js-CRHihH2U.js +4 -0
- package/build/server/chunks/chunks/false.js-CRHihH2U.js.map +1 -0
- package/build/server/chunks/chunks/graphRepository.js-D2DARfVY.js +280 -0
- package/build/server/chunks/chunks/graphRepository.js-D2DARfVY.js.map +1 -0
- package/build/server/chunks/chunks/internal.js-D8EA_he2.js +119 -0
- package/build/server/chunks/chunks/internal.js-D8EA_he2.js.map +1 -0
- package/build/server/chunks/chunks/mindbrainClient.js-BFAJqRSL.js +108 -0
- package/build/server/chunks/chunks/mindbrainClient.js-BFAJqRSL.js.map +1 -0
- package/build/server/chunks/chunks/ontologyInspect.js-Dm3l7KgF.js +13 -0
- package/build/server/chunks/chunks/ontologyInspect.js-Dm3l7KgF.js.map +1 -0
- package/build/server/chunks/chunks/render-context.js-CTu5Wkzp.js +475 -0
- package/build/server/chunks/chunks/render-context.js-CTu5Wkzp.js.map +1 -0
- package/build/server/chunks/chunks/renderer.js-DsOhU1UZ.js +1243 -0
- package/build/server/chunks/chunks/renderer.js-DsOhU1UZ.js.map +1 -0
- package/build/server/chunks/chunks/root.js-DCnlE3XY.js +2815 -0
- package/build/server/chunks/chunks/root.js-DCnlE3XY.js.map +1 -0
- package/build/server/chunks/chunks/shared-server.js-DaWdgxVh.js +11 -0
- package/build/server/chunks/chunks/shared-server.js-DaWdgxVh.js.map +1 -0
- package/build/server/chunks/chunks/shared.js-DuDDTJVi.js +1338 -0
- package/build/server/chunks/chunks/shared.js-DuDDTJVi.js.map +1 -0
- package/build/server/chunks/chunks/utils.js-DGYJFmnf.js +39 -0
- package/build/server/chunks/chunks/utils.js-DGYJFmnf.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/brain/_...path_/_server.ts.js-MgPpKBks.js +82 -0
- package/build/server/chunks/entries/endpoints/api/brain/_...path_/_server.ts.js-MgPpKBks.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/brain/health/_server.ts.js-DnJQNmWV.js +19 -0
- package/build/server/chunks/entries/endpoints/api/brain/health/_server.ts.js-DnJQNmWV.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/graph/_server.ts.js-Bxo7qHVz.js +37 -0
- package/build/server/chunks/entries/endpoints/api/graph/_server.ts.js-Bxo7qHVz.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/graph/count/_server.ts.js-BajaLnqp.js +37 -0
- package/build/server/chunks/entries/endpoints/api/graph/count/_server.ts.js-BajaLnqp.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/graph/ontologies/_server.ts.js-BFq2mbbX.js +146 -0
- package/build/server/chunks/entries/endpoints/api/graph/ontologies/_server.ts.js-BFq2mbbX.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/graph/schema-registry/_server.ts.js-Dyfsc-VA.js +154 -0
- package/build/server/chunks/entries/endpoints/api/graph/schema-registry/_server.ts.js-Dyfsc-VA.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/projections/catalog/_server.ts.js-Ds1RymA0.js +351 -0
- package/build/server/chunks/entries/endpoints/api/projections/catalog/_server.ts.js-Ds1RymA0.js.map +1 -0
- package/build/server/chunks/entries/fallbacks/error.svelte.js-B7V4yZjo.js +51 -0
- package/build/server/chunks/entries/fallbacks/error.svelte.js-B7V4yZjo.js.map +1 -0
- package/build/server/chunks/entries/pages/_layout.svelte.js-CoC9BAeH.js +15 -0
- package/build/server/chunks/entries/pages/_layout.svelte.js-CoC9BAeH.js.map +1 -0
- package/build/server/chunks/entries/pages/_page.svelte.js-DMEbD3K6.js +891 -0
- package/build/server/chunks/entries/pages/_page.svelte.js-DMEbD3K6.js.map +1 -0
- package/build/server/chunks/handler-BjXBCd1c.js +1698 -0
- package/build/server/chunks/handler-BjXBCd1c.js.map +1 -0
- package/build/server/chunks/index.js-BJYcV8V7.js +4183 -0
- package/build/server/chunks/index.js-BJYcV8V7.js.map +1 -0
- package/build/server/chunks/manifest.js-Ddaot0P4.js +91 -0
- package/build/server/chunks/manifest.js-Ddaot0P4.js.map +1 -0
- package/build/server/chunks/nodes/0.js-87v83UX9.js +9 -0
- package/build/server/chunks/nodes/0.js-87v83UX9.js.map +1 -0
- package/build/server/chunks/nodes/1.js-BRigw_9J.js +9 -0
- package/build/server/chunks/nodes/1.js-BRigw_9J.js.map +1 -0
- package/build/server/chunks/nodes/2.js-D9-B_qyX.js +9 -0
- package/build/server/chunks/nodes/2.js-D9-B_qyX.js.map +1 -0
- package/build/shims.js +33 -0
- package/build/shims.js.map +1 -0
- package/fixtures/minimal-graph.sqlite +0 -0
- package/package.json +81 -0
- package/scripts/backend-sqlite.mjs +190 -0
- package/scripts/build-serenity-v6-concept-review-pack.mjs +493 -0
- package/scripts/build-serenity-v6-review-pack.mjs +479 -0
- package/scripts/create-serenity-production-v6.mjs +627 -0
- package/scripts/dev-sqlite.mjs +86 -0
- package/scripts/export-serenity-v6-backup.mjs +178 -0
- package/scripts/import-serenity-v6-user-decisions.mjs +543 -0
- package/scripts/lib/sqlite-runtime.mjs +197 -0
- package/scripts/materialize-serenity-v6-snapshots.mjs +675 -0
- package/scripts/publish-npm.mjs +134 -0
- package/scripts/seed-immeuble-projections.mjs +169 -0
- package/scripts/studio-sqlite.mjs +74 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
const manifest = (() => {
|
|
2
|
+
function __memo(fn) {
|
|
3
|
+
let value;
|
|
4
|
+
return () => value ??= (value = fn());
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
return {
|
|
8
|
+
appDir: "_app",
|
|
9
|
+
appPath: "_app",
|
|
10
|
+
assets: new Set(["robots.txt"]),
|
|
11
|
+
mimeTypes: {".txt":"text/plain"},
|
|
12
|
+
_: {
|
|
13
|
+
client: {start:"_app/immutable/entry/start.Bt5tVOz8.js",app:"_app/immutable/entry/app.CVz6aYsT.js",imports:["_app/immutable/entry/start.Bt5tVOz8.js","_app/immutable/chunks/BmeSanva.js","_app/immutable/chunks/BnkCgNCx.js","_app/immutable/chunks/BNUkRZqg.js","_app/immutable/entry/app.CVz6aYsT.js","_app/immutable/chunks/nnWk1BBo.js","_app/immutable/chunks/BnkCgNCx.js","_app/immutable/chunks/D4SoBmS0.js","_app/immutable/chunks/D0daF8Eh.js","_app/immutable/chunks/NXeHtWpC.js","_app/immutable/chunks/BNUkRZqg.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
|
|
14
|
+
nodes: [
|
|
15
|
+
__memo(() => import('./nodes/0.js-87v83UX9.js')),
|
|
16
|
+
__memo(() => import('./nodes/1.js-BRigw_9J.js')),
|
|
17
|
+
__memo(() => import('./nodes/2.js-D9-B_qyX.js'))
|
|
18
|
+
],
|
|
19
|
+
remotes: {
|
|
20
|
+
|
|
21
|
+
},
|
|
22
|
+
routes: [
|
|
23
|
+
{
|
|
24
|
+
id: "/",
|
|
25
|
+
pattern: /^\/$/,
|
|
26
|
+
params: [],
|
|
27
|
+
page: { layouts: [0,], errors: [1,], leaf: 2 },
|
|
28
|
+
endpoint: null
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
id: "/api/brain/health",
|
|
32
|
+
pattern: /^\/api\/brain\/health\/?$/,
|
|
33
|
+
params: [],
|
|
34
|
+
page: null,
|
|
35
|
+
endpoint: __memo(() => import('./entries/endpoints/api/brain/health/_server.ts.js-DnJQNmWV.js'))
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: "/api/brain/[...path]",
|
|
39
|
+
pattern: /^\/api\/brain(?:\/([^]*))?\/?$/,
|
|
40
|
+
params: [{"name":"path","optional":false,"rest":true,"chained":true}],
|
|
41
|
+
page: null,
|
|
42
|
+
endpoint: __memo(() => import('./entries/endpoints/api/brain/_...path_/_server.ts.js-MgPpKBks.js'))
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
id: "/api/graph",
|
|
46
|
+
pattern: /^\/api\/graph\/?$/,
|
|
47
|
+
params: [],
|
|
48
|
+
page: null,
|
|
49
|
+
endpoint: __memo(() => import('./entries/endpoints/api/graph/_server.ts.js-Bxo7qHVz.js'))
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: "/api/graph/count",
|
|
53
|
+
pattern: /^\/api\/graph\/count\/?$/,
|
|
54
|
+
params: [],
|
|
55
|
+
page: null,
|
|
56
|
+
endpoint: __memo(() => import('./entries/endpoints/api/graph/count/_server.ts.js-BajaLnqp.js'))
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
id: "/api/graph/ontologies",
|
|
60
|
+
pattern: /^\/api\/graph\/ontologies\/?$/,
|
|
61
|
+
params: [],
|
|
62
|
+
page: null,
|
|
63
|
+
endpoint: __memo(() => import('./entries/endpoints/api/graph/ontologies/_server.ts.js-BFq2mbbX.js'))
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
id: "/api/graph/schema-registry",
|
|
67
|
+
pattern: /^\/api\/graph\/schema-registry\/?$/,
|
|
68
|
+
params: [],
|
|
69
|
+
page: null,
|
|
70
|
+
endpoint: __memo(() => import('./entries/endpoints/api/graph/schema-registry/_server.ts.js-Dyfsc-VA.js'))
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
id: "/api/projections/catalog",
|
|
74
|
+
pattern: /^\/api\/projections\/catalog\/?$/,
|
|
75
|
+
params: [],
|
|
76
|
+
page: null,
|
|
77
|
+
endpoint: __memo(() => import('./entries/endpoints/api/projections/catalog/_server.ts.js-Ds1RymA0.js'))
|
|
78
|
+
}
|
|
79
|
+
],
|
|
80
|
+
prerendered_routes: new Set([]),
|
|
81
|
+
matchers: async () => {
|
|
82
|
+
|
|
83
|
+
return { };
|
|
84
|
+
},
|
|
85
|
+
server_assets: {}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
})();
|
|
89
|
+
|
|
90
|
+
export { manifest as m };
|
|
91
|
+
//# sourceMappingURL=manifest.js-Ddaot0P4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js-Ddaot0P4.js","sources":["../../../.svelte-kit/output/server/manifest.js"],"sourcesContent":["export const manifest = (() => {\nfunction __memo(fn) {\n\tlet value;\n\treturn () => value ??= (value = fn());\n}\n\nreturn {\n\tappDir: \"_app\",\n\tappPath: \"_app\",\n\tassets: new Set([\"robots.txt\"]),\n\tmimeTypes: {\".txt\":\"text/plain\"},\n\t_: {\n\t\tclient: {start:\"_app/immutable/entry/start.Bt5tVOz8.js\",app:\"_app/immutable/entry/app.CVz6aYsT.js\",imports:[\"_app/immutable/entry/start.Bt5tVOz8.js\",\"_app/immutable/chunks/BmeSanva.js\",\"_app/immutable/chunks/BnkCgNCx.js\",\"_app/immutable/chunks/BNUkRZqg.js\",\"_app/immutable/entry/app.CVz6aYsT.js\",\"_app/immutable/chunks/nnWk1BBo.js\",\"_app/immutable/chunks/BnkCgNCx.js\",\"_app/immutable/chunks/D4SoBmS0.js\",\"_app/immutable/chunks/D0daF8Eh.js\",\"_app/immutable/chunks/NXeHtWpC.js\",\"_app/immutable/chunks/BNUkRZqg.js\"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},\n\t\tnodes: [\n\t\t\t__memo(() => import('./nodes/0.js')),\n\t\t\t__memo(() => import('./nodes/1.js')),\n\t\t\t__memo(() => import('./nodes/2.js'))\n\t\t],\n\t\tremotes: {\n\t\t\t\n\t\t},\n\t\troutes: [\n\t\t\t{\n\t\t\t\tid: \"/\",\n\t\t\t\tpattern: /^\\/$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 2 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/brain/health\",\n\t\t\t\tpattern: /^\\/api\\/brain\\/health\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/brain/health/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/brain/[...path]\",\n\t\t\t\tpattern: /^\\/api\\/brain(?:\\/([^]*))?\\/?$/,\n\t\t\t\tparams: [{\"name\":\"path\",\"optional\":false,\"rest\":true,\"chained\":true}],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/brain/_...path_/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/graph\",\n\t\t\t\tpattern: /^\\/api\\/graph\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/graph/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/graph/count\",\n\t\t\t\tpattern: /^\\/api\\/graph\\/count\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/graph/count/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/graph/ontologies\",\n\t\t\t\tpattern: /^\\/api\\/graph\\/ontologies\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/graph/ontologies/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/graph/schema-registry\",\n\t\t\t\tpattern: /^\\/api\\/graph\\/schema-registry\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/graph/schema-registry/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/projections/catalog\",\n\t\t\t\tpattern: /^\\/api\\/projections\\/catalog\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/projections/catalog/_server.ts.js'))\n\t\t\t}\n\t\t],\n\t\tprerendered_routes: new Set([]),\n\t\tmatchers: async () => {\n\t\t\t\n\t\t\treturn { };\n\t\t},\n\t\tserver_assets: {}\n\t}\n}\n})();\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const index = 0;
|
|
2
|
+
let component_cache;
|
|
3
|
+
const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js-CoC9BAeH.js')).default;
|
|
4
|
+
const imports = ["_app/immutable/nodes/0.C2sXq0eH.js","_app/immutable/chunks/NXeHtWpC.js","_app/immutable/chunks/BnkCgNCx.js","_app/immutable/chunks/DpVrWha3.js","_app/immutable/chunks/D4SoBmS0.js"];
|
|
5
|
+
const stylesheets = [];
|
|
6
|
+
const fonts = [];
|
|
7
|
+
|
|
8
|
+
export { component, fonts, imports, index, stylesheets };
|
|
9
|
+
//# sourceMappingURL=0.js-87v83UX9.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0.js-87v83UX9.js","sources":["../../../../.svelte-kit/output/server/nodes/0.js"],"sourcesContent":["\n\nexport const index = 0;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/0.C2sXq0eH.js\",\"_app/immutable/chunks/NXeHtWpC.js\",\"_app/immutable/chunks/BnkCgNCx.js\",\"_app/immutable/chunks/DpVrWha3.js\",\"_app/immutable/chunks/D4SoBmS0.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,gDAAoC,CAAC,EAAE;AAClG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAChM,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const index = 1;
|
|
2
|
+
let component_cache;
|
|
3
|
+
const component = async () => component_cache ??= (await import('../entries/fallbacks/error.svelte.js-B7V4yZjo.js')).default;
|
|
4
|
+
const imports = ["_app/immutable/nodes/1.BBtxY46Q.js","_app/immutable/chunks/NXeHtWpC.js","_app/immutable/chunks/BnkCgNCx.js","_app/immutable/chunks/D0daF8Eh.js","_app/immutable/chunks/BmeSanva.js","_app/immutable/chunks/BNUkRZqg.js"];
|
|
5
|
+
const stylesheets = [];
|
|
6
|
+
const fonts = [];
|
|
7
|
+
|
|
8
|
+
export { component, fonts, imports, index, stylesheets };
|
|
9
|
+
//# sourceMappingURL=1.js-BRigw_9J.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1.js-BRigw_9J.js","sources":["../../../../.svelte-kit/output/server/nodes/1.js"],"sourcesContent":["\n\nexport const index = 1;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/fallbacks/error.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/1.BBtxY46Q.js\",\"_app/immutable/chunks/NXeHtWpC.js\",\"_app/immutable/chunks/BnkCgNCx.js\",\"_app/immutable/chunks/D0daF8Eh.js\",\"_app/immutable/chunks/BmeSanva.js\",\"_app/immutable/chunks/BNUkRZqg.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,kDAAsC,CAAC,EAAE;AACpG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACpO,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const index = 2;
|
|
2
|
+
let component_cache;
|
|
3
|
+
const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js-DMEbD3K6.js')).default;
|
|
4
|
+
const imports = ["_app/immutable/nodes/2.D0pSa9ko.js","_app/immutable/chunks/NXeHtWpC.js","_app/immutable/chunks/BnkCgNCx.js","_app/immutable/chunks/BNUkRZqg.js","_app/immutable/chunks/D0daF8Eh.js","_app/immutable/chunks/nnWk1BBo.js","_app/immutable/chunks/D4SoBmS0.js","_app/immutable/chunks/DpVrWha3.js"];
|
|
5
|
+
const stylesheets = ["_app/immutable/assets/2.BXRKVU9n.css"];
|
|
6
|
+
const fonts = [];
|
|
7
|
+
|
|
8
|
+
export { component, fonts, imports, index, stylesheets };
|
|
9
|
+
//# sourceMappingURL=2.js-D9-B_qyX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"2.js-D9-B_qyX.js","sources":["../../../../.svelte-kit/output/server/nodes/2.js"],"sourcesContent":["\n\nexport const index = 2;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/2.D0pSa9ko.js\",\"_app/immutable/chunks/NXeHtWpC.js\",\"_app/immutable/chunks/BnkCgNCx.js\",\"_app/immutable/chunks/BNUkRZqg.js\",\"_app/immutable/chunks/D0daF8Eh.js\",\"_app/immutable/chunks/nnWk1BBo.js\",\"_app/immutable/chunks/D4SoBmS0.js\",\"_app/immutable/chunks/DpVrWha3.js\"];\nexport const stylesheets = [\"_app/immutable/assets/2.BXRKVU9n.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,8CAAkC,CAAC,EAAE;AAChG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC5S,MAAC,WAAW,GAAG,CAAC,sCAAsC;AACtD,MAAC,KAAK,GAAG;;;;"}
|
package/build/shims.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import buffer from 'node:buffer';
|
|
2
|
+
import { webcrypto } from 'node:crypto';
|
|
3
|
+
|
|
4
|
+
// `buffer.File` was added in Node 18.13.0 while the `File` global was added in Node 20.0.0
|
|
5
|
+
const File = /** @type {import('node:buffer') & { File?: File}} */ (buffer).File;
|
|
6
|
+
|
|
7
|
+
/** @type {Record<string, any>} */
|
|
8
|
+
const globals = {
|
|
9
|
+
crypto: webcrypto,
|
|
10
|
+
File
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
// exported for dev/preview and node environments
|
|
14
|
+
/**
|
|
15
|
+
* Make various web APIs available as globals:
|
|
16
|
+
* - `crypto`
|
|
17
|
+
* - `File`
|
|
18
|
+
*/
|
|
19
|
+
function installPolyfills() {
|
|
20
|
+
for (const name in globals) {
|
|
21
|
+
if (name in globalThis) continue;
|
|
22
|
+
|
|
23
|
+
Object.defineProperty(globalThis, name, {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
configurable: true,
|
|
26
|
+
writable: true,
|
|
27
|
+
value: globals[name]
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
installPolyfills();
|
|
33
|
+
//# sourceMappingURL=shims.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shims.js","sources":["../node_modules/.pnpm/@sveltejs+kit@2.56.1_@sveltejs+vite-plugin-svelte@6.2.4_svelte@5.55.1_vite@7.3.1_@types_b6128aca79733c4841488f96218eb217/node_modules/@sveltejs/kit/src/exports/node/polyfills.js","../.svelte-kit/adapter-node/entries/shims.js"],"sourcesContent":["import buffer from 'node:buffer';\nimport { webcrypto as crypto } from 'node:crypto';\n\n// `buffer.File` was added in Node 18.13.0 while the `File` global was added in Node 20.0.0\nconst File = /** @type {import('node:buffer') & { File?: File}} */ (buffer).File;\n\n/** @type {Record<string, any>} */\nconst globals = {\n\tcrypto,\n\tFile\n};\n\n// exported for dev/preview and node environments\n/**\n * Make various web APIs available as globals:\n * - `crypto`\n * - `File`\n */\nexport function installPolyfills() {\n\tfor (const name in globals) {\n\t\tif (name in globalThis) continue;\n\n\t\tObject.defineProperty(globalThis, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\twritable: true,\n\t\t\tvalue: globals[name]\n\t\t});\n\t}\n}\n","import { installPolyfills } from '@sveltejs/kit/node/polyfills';\n\ninstallPolyfills();\n"],"names":["crypto"],"mappings":";;;AAGA;AACA,MAAM,IAAI,yDAAyD,CAAC,MAAM,EAAE,IAAI;;AAEhF;AACA,MAAM,OAAO,GAAG;AAChB,SAACA,SAAM;AACP,CAAC;AACD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gBAAgB,GAAG;AACnC,CAAC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;AAC7B,EAAE,IAAI,IAAI,IAAI,UAAU,EAAE;;AAE1B,EAAE,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE;AAC1C,GAAG,UAAU,EAAE,IAAI;AACnB,GAAG,YAAY,EAAE,IAAI;AACrB,GAAG,QAAQ,EAAE,IAAI;AACjB,GAAG,KAAK,EAAE,OAAO,CAAC,IAAI;AACtB,GAAG,CAAC;AACJ,CAAC;AACD;;AC3BA,gBAAgB,EAAE","x_google_ignoreList":[0]}
|
|
Binary file
|
package/package.json
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mindflight/mindbrain-personal-studio",
|
|
3
|
+
"version": "0.6.1",
|
|
4
|
+
"description": "Local GhostCrab MindBrain Studio for SQLite-backed workspaces.",
|
|
5
|
+
"license": "UNLICENSED",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"ghostcrab-studio": "bin/mindbrain-studio.mjs",
|
|
9
|
+
"mindbrain-studio": "bin/mindbrain-studio.mjs"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"bin",
|
|
13
|
+
"build",
|
|
14
|
+
"fixtures/minimal-graph.sqlite",
|
|
15
|
+
"scripts/*.mjs",
|
|
16
|
+
"scripts/lib",
|
|
17
|
+
"README.md",
|
|
18
|
+
".env.example"
|
|
19
|
+
],
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "git+https://github.com/mindflight-orchestrator/mindbrain-personal-studio.git"
|
|
23
|
+
},
|
|
24
|
+
"homepage": "https://github.com/mindflight-orchestrator/mindbrain-personal-studio#readme",
|
|
25
|
+
"bugs": {
|
|
26
|
+
"url": "https://github.com/mindflight-orchestrator/mindbrain-personal-studio/issues"
|
|
27
|
+
},
|
|
28
|
+
"keywords": [
|
|
29
|
+
"ghostcrab",
|
|
30
|
+
"mindbrain",
|
|
31
|
+
"studio",
|
|
32
|
+
"sqlite",
|
|
33
|
+
"graph"
|
|
34
|
+
],
|
|
35
|
+
"publishConfig": {
|
|
36
|
+
"access": "public"
|
|
37
|
+
},
|
|
38
|
+
"packageManager": "pnpm@10.28.1",
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=20.0.0"
|
|
41
|
+
},
|
|
42
|
+
"scripts": {
|
|
43
|
+
"backend": "node scripts/backend-sqlite.mjs",
|
|
44
|
+
"dev": "node scripts/dev-sqlite.mjs",
|
|
45
|
+
"studio": "node scripts/studio-sqlite.mjs --dev",
|
|
46
|
+
"start": "node scripts/studio-sqlite.mjs --serve",
|
|
47
|
+
"load:demo": "bash scripts/load-immeuble-demo.sh",
|
|
48
|
+
"dev:fixture": "DATA_SOURCE=sqlite-demo GHOSTCRAB_SQLITE_PATH=fixtures/minimal-graph.sqlite vite dev",
|
|
49
|
+
"backend:immeuble": "node -e \"console.warn('deprecated: use pnpm backend');\" && node scripts/backend-sqlite.mjs",
|
|
50
|
+
"dev:immeuble": "node -e \"console.warn('deprecated: use pnpm dev');\" && node scripts/dev-sqlite.mjs",
|
|
51
|
+
"backend:sqlite": "node -e \"console.warn('deprecated: use pnpm backend');\" && node scripts/backend-sqlite.mjs",
|
|
52
|
+
"dev:sqlite": "node -e \"console.warn('deprecated: use pnpm dev');\" && node scripts/dev-sqlite.mjs",
|
|
53
|
+
"studio:sqlite": "node -e \"console.warn('deprecated: use pnpm studio');\" && node scripts/studio-sqlite.mjs",
|
|
54
|
+
"load:immeuble": "pnpm load:demo",
|
|
55
|
+
"seed:immeuble-projections": "bash scripts/seed-immeuble-projections.sh",
|
|
56
|
+
"build": "vite build",
|
|
57
|
+
"pack:local": "pnpm run build && mkdir -p dist-pack && npm pack --pack-destination dist-pack",
|
|
58
|
+
"publish:npm": "node scripts/publish-npm.mjs",
|
|
59
|
+
"preview": "vite preview",
|
|
60
|
+
"prepare": "svelte-kit sync || true",
|
|
61
|
+
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json"
|
|
62
|
+
},
|
|
63
|
+
"devDependencies": {
|
|
64
|
+
"@sveltejs/adapter-node": "^5.5.7",
|
|
65
|
+
"@sveltejs/kit": "^2.50.2",
|
|
66
|
+
"@sveltejs/vite-plugin-svelte": "^6.2.4",
|
|
67
|
+
"@types/node": "^24.10.1",
|
|
68
|
+
"svelte": "^5.54.0",
|
|
69
|
+
"svelte-check": "^4.4.2",
|
|
70
|
+
"typescript": "^5.9.3",
|
|
71
|
+
"vite": "^7.3.1"
|
|
72
|
+
},
|
|
73
|
+
"dependencies": {
|
|
74
|
+
"@keenmate/svelte-treeview": "5.0.0-rc07",
|
|
75
|
+
"graphology": "^0.26.0",
|
|
76
|
+
"graphology-layout": "^0.6.1",
|
|
77
|
+
"graphology-layout-forceatlas2": "^0.10.1",
|
|
78
|
+
"graphology-types": "^0.24.8",
|
|
79
|
+
"sigma": "^3.0.2"
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { spawn } from "node:child_process";
|
|
3
|
+
import { constants, existsSync, mkdirSync, openSync, writeFileSync } from "node:fs";
|
|
4
|
+
import { homedir } from "node:os";
|
|
5
|
+
import { dirname, resolve } from "node:path";
|
|
6
|
+
import {
|
|
7
|
+
baseUrlForPort,
|
|
8
|
+
findFreePort,
|
|
9
|
+
healthOk,
|
|
10
|
+
loadDotEnv,
|
|
11
|
+
parseAddr,
|
|
12
|
+
readRuntimeJson,
|
|
13
|
+
resolveStudioDataTarget,
|
|
14
|
+
runtimeIsUsable,
|
|
15
|
+
runtimePathsForSqlite,
|
|
16
|
+
stripPnpmSeparator,
|
|
17
|
+
studioRootFromScript
|
|
18
|
+
} from "./lib/sqlite-runtime.mjs";
|
|
19
|
+
|
|
20
|
+
function parseFlags(args) {
|
|
21
|
+
const rest = stripPnpmSeparator(args);
|
|
22
|
+
const detach = rest.includes("--detach");
|
|
23
|
+
const filtered = rest.filter((arg) => arg !== "--detach");
|
|
24
|
+
return { detach, filtered };
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function platformPackageSuffix() {
|
|
28
|
+
const platform = process.platform;
|
|
29
|
+
const arch = process.arch;
|
|
30
|
+
if (!["darwin", "linux", "win32"].includes(platform)) return null;
|
|
31
|
+
if (!["x64", "arm64"].includes(arch)) return null;
|
|
32
|
+
return `${platform}-${arch}`;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function resolveBackendBin(ghostcrabRoot) {
|
|
36
|
+
const suffix = platformPackageSuffix();
|
|
37
|
+
const executable = process.platform === "win32" ? "ghostcrab-backend.exe" : "ghostcrab-backend";
|
|
38
|
+
const configured = process.env.GHOSTCRAB_BACKEND_BIN?.trim();
|
|
39
|
+
const roots = [
|
|
40
|
+
ghostcrabRoot,
|
|
41
|
+
resolve(process.cwd(), "node_modules", "@mindflight", "ghostcrab-personal-mcp"),
|
|
42
|
+
resolve(studioRootFromScript(import.meta.url), "node_modules", "@mindflight", "ghostcrab-personal-mcp")
|
|
43
|
+
].filter(Boolean);
|
|
44
|
+
const candidates = configured ? [resolve(configured)] : [];
|
|
45
|
+
for (const root of roots) {
|
|
46
|
+
candidates.push(resolve(root, "cmd/backend/zig-out/bin", executable));
|
|
47
|
+
}
|
|
48
|
+
if (suffix) {
|
|
49
|
+
for (const root of roots) {
|
|
50
|
+
candidates.push(
|
|
51
|
+
resolve(
|
|
52
|
+
root,
|
|
53
|
+
"node_modules",
|
|
54
|
+
`@mindflight/ghostcrab-personal-mcp-${suffix}`,
|
|
55
|
+
"bin",
|
|
56
|
+
executable
|
|
57
|
+
),
|
|
58
|
+
resolve(root, "prebuilds", suffix, executable),
|
|
59
|
+
resolve(root, "packages", `prebuild-${suffix}`, "bin", executable)
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
candidates.push(
|
|
63
|
+
resolve(process.cwd(), "node_modules", `@mindflight/ghostcrab-personal-mcp-${suffix}`, "bin", executable),
|
|
64
|
+
resolve(homedir(), ".ghostcrab", "bin", executable)
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
return candidates.find((candidate) => existsSync(candidate)) ?? candidates[0];
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const studioRoot = studioRootFromScript(import.meta.url);
|
|
71
|
+
loadDotEnv(studioRoot);
|
|
72
|
+
const { detach, filtered } = parseFlags(process.argv.slice(2));
|
|
73
|
+
const { sqlitePath, mode, fallbackReason } = resolveStudioDataTarget(studioRoot, filtered);
|
|
74
|
+
if (fallbackReason) {
|
|
75
|
+
console.error(`==> ${fallbackReason}; using packaged demo fixture.`);
|
|
76
|
+
}
|
|
77
|
+
if (mode === "sqlite-demo") {
|
|
78
|
+
console.error(`==> Demo fixture mode; no GhostCrab backend needed: ${sqlitePath}`);
|
|
79
|
+
process.exit(0);
|
|
80
|
+
}
|
|
81
|
+
const ghostcrabRoot = process.env.GHOSTCRAB_ROOT
|
|
82
|
+
? resolve(process.env.GHOSTCRAB_ROOT)
|
|
83
|
+
: resolve(studioRoot, "..", "ghostcrab-personal-mcp");
|
|
84
|
+
const backendBin = resolveBackendBin(ghostcrabRoot);
|
|
85
|
+
const paths = runtimePathsForSqlite(studioRoot, sqlitePath);
|
|
86
|
+
const runtimeJson = readRuntimeJson(paths.jsonPath);
|
|
87
|
+
|
|
88
|
+
if (!existsSync(sqlitePath)) {
|
|
89
|
+
console.error(`error: SQLite not found at ${sqlitePath}`);
|
|
90
|
+
console.error("Pass --sqlite /path/to/db.sqlite, or set GHOSTCRAB_SQLITE_PATH.");
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (!existsSync(backendBin)) {
|
|
95
|
+
console.error(`error: ghostcrab-backend not found at ${backendBin}`);
|
|
96
|
+
console.error("Run in ghostcrab-personal-mcp: pnpm run backend:build");
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (!process.env.GHOSTCRAB_BACKEND_ADDR && (await runtimeIsUsable(runtimeJson, sqlitePath))) {
|
|
101
|
+
console.error(`==> Reusing GhostCrab backend ${runtimeJson.base_url}`);
|
|
102
|
+
console.error(` pid: ${runtimeJson.pid}`);
|
|
103
|
+
console.error(` DB: ${runtimeJson.sqlite_path}`);
|
|
104
|
+
console.error(` Runtime: ${paths.jsonPath}`);
|
|
105
|
+
process.exit(0);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const explicitPort = parseAddr(process.env.GHOSTCRAB_BACKEND_ADDR);
|
|
109
|
+
const port = explicitPort ?? (await findFreePort(8092, 50));
|
|
110
|
+
const backendAddr = process.env.GHOSTCRAB_BACKEND_ADDR || `127.0.0.1:${port}`;
|
|
111
|
+
const baseUrl = baseUrlForPort(port);
|
|
112
|
+
|
|
113
|
+
mkdirSync(dirname(paths.jsonPath), { recursive: true });
|
|
114
|
+
|
|
115
|
+
console.error(`==> GhostCrab backend on ${backendAddr}`);
|
|
116
|
+
console.error(` URL: ${baseUrl}`);
|
|
117
|
+
console.error(` DB: ${sqlitePath}`);
|
|
118
|
+
console.error(` Runtime: ${paths.jsonPath}`);
|
|
119
|
+
console.error("");
|
|
120
|
+
|
|
121
|
+
const logFd = openSync(paths.logPath, constants.O_WRONLY | constants.O_CREAT | constants.O_APPEND);
|
|
122
|
+
const child = spawn(backendBin, [], {
|
|
123
|
+
env: {
|
|
124
|
+
...process.env,
|
|
125
|
+
GHOSTCRAB_SQLITE_PATH: sqlitePath,
|
|
126
|
+
GHOSTCRAB_BACKEND_ADDR: backendAddr
|
|
127
|
+
},
|
|
128
|
+
stdio: detach ? ["ignore", logFd, logFd] : ["ignore", "inherit", logFd],
|
|
129
|
+
detached: detach
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
let childExited = false;
|
|
133
|
+
let childExitCode = null;
|
|
134
|
+
child.on("exit", (code) => {
|
|
135
|
+
childExited = true;
|
|
136
|
+
childExitCode = code;
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
child.on("error", (err) => {
|
|
140
|
+
console.error(`error: failed to spawn backend: ${err.message}`);
|
|
141
|
+
process.exit(1);
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
const deadline = Date.now() + 15_000;
|
|
145
|
+
while (Date.now() < deadline) {
|
|
146
|
+
if (childExited) {
|
|
147
|
+
console.error(`error: backend exited early with code ${childExitCode ?? "unknown"}`);
|
|
148
|
+
process.exit(childExitCode ?? 1);
|
|
149
|
+
}
|
|
150
|
+
if (await healthOk(baseUrl)) {
|
|
151
|
+
const runtime = {
|
|
152
|
+
schema_version: 1,
|
|
153
|
+
pid: child.pid,
|
|
154
|
+
port,
|
|
155
|
+
base_url: baseUrl,
|
|
156
|
+
sqlite_path: sqlitePath,
|
|
157
|
+
backend_addr: backendAddr,
|
|
158
|
+
started_at: new Date().toISOString(),
|
|
159
|
+
source: "mindbrain-personal-studio:sqlite"
|
|
160
|
+
};
|
|
161
|
+
writeFileSync(paths.pidPath, `${child.pid}:${port}:studio\n`, "utf8");
|
|
162
|
+
writeFileSync(paths.jsonPath, `${JSON.stringify(runtime, null, 2)}\n`, "utf8");
|
|
163
|
+
console.error(`==> Backend healthy: ${baseUrl}/health`);
|
|
164
|
+
console.error(` Smoke: curl -fsS ${baseUrl}/api/mindbrain/workspace/list`);
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
await new Promise((resolveWait) => setTimeout(resolveWait, 150));
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
if (!(await healthOk(baseUrl))) {
|
|
171
|
+
console.error("error: backend did not become healthy within 15s");
|
|
172
|
+
child.kill();
|
|
173
|
+
process.exit(1);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (detach) {
|
|
177
|
+
child.unref();
|
|
178
|
+
process.exit(0);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
function stopChild(signal) {
|
|
182
|
+
if (!child.killed) child.kill(signal);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
process.on("SIGINT", () => stopChild("SIGINT"));
|
|
186
|
+
process.on("SIGTERM", () => stopChild("SIGTERM"));
|
|
187
|
+
|
|
188
|
+
child.on("exit", (code, signal) => {
|
|
189
|
+
process.exitCode = code ?? (signal ? 128 : 0);
|
|
190
|
+
});
|