@mindflight/mindbrain-personal-studio 0.6.2 → 0.6.4
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 +16 -8
- package/build/client/_app/immutable/chunks/{D0UIlUGZ.js → BjfgiHck.js} +1 -1
- package/build/client/_app/immutable/chunks/BjfgiHck.js.br +0 -0
- package/build/client/_app/immutable/chunks/BjfgiHck.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.CR-imLox.js → app.XgS1PoV0.js} +2 -2
- package/build/client/_app/immutable/entry/app.XgS1PoV0.js.br +0 -0
- package/build/client/_app/immutable/entry/app.XgS1PoV0.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.Dtz8dQFZ.js +1 -0
- package/build/client/_app/immutable/entry/start.Dtz8dQFZ.js.br +2 -0
- package/build/client/_app/immutable/entry/start.Dtz8dQFZ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.CTEedoSY.js → 1.Cs3BmvHO.js} +1 -1
- package/build/client/_app/immutable/nodes/1.Cs3BmvHO.js.br +3 -0
- package/build/client/_app/immutable/nodes/1.Cs3BmvHO.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/handler.js +4 -4
- package/build/index.js +4 -4
- package/build/server/chunks/chunks/{internal.js-WOmQXGMa.js → internal.js-BnebQ91H.js} +2 -2
- package/build/server/chunks/chunks/{internal.js-WOmQXGMa.js.map → internal.js-BnebQ91H.js.map} +1 -1
- package/build/server/chunks/{handler-BIDedSZq.js → handler-B8M0DnFi.js} +3 -3
- package/build/server/chunks/{handler-BIDedSZq.js.map → handler-B8M0DnFi.js.map} +1 -1
- package/build/server/chunks/{index.js-YVPJa0so.js → index.js-qz9YZN7m.js} +2 -2
- package/build/server/chunks/{index.js-YVPJa0so.js.map → index.js-qz9YZN7m.js.map} +1 -1
- package/build/server/chunks/{manifest.js-aGRKuiqF.js → manifest.js-BxEwHoCX.js} +3 -3
- package/build/server/chunks/{manifest.js-aGRKuiqF.js.map → manifest.js-BxEwHoCX.js.map} +1 -1
- package/build/server/chunks/nodes/{1.js-Dhh3ErZY.js → 1.js-D3KAPgsF.js} +2 -2
- package/build/server/chunks/nodes/{1.js-Dhh3ErZY.js.map → 1.js-D3KAPgsF.js.map} +1 -1
- package/examples/immeuble/ACCEPTANCE.yaml +82 -0
- package/examples/immeuble/BIM_LITE.md +15 -0
- package/examples/immeuble/CHECKLIST.md +128 -0
- package/examples/immeuble/README.md +121 -0
- package/examples/immeuble/bundle/immeuble.bundle.json +22786 -0
- package/examples/immeuble/contracts/answer_artifacts.seed.jsonl +34 -0
- package/examples/immeuble/contracts/business_capabilities.seed.jsonl +25 -0
- package/examples/immeuble/contracts/consumer_contract.yaml +131 -0
- package/examples/immeuble/contracts/immeuble_structured_import_model.json +310 -0
- package/examples/immeuble/contracts/mapping_external_to_canonical.json +375 -0
- package/examples/immeuble/contracts/mapping_external_to_canonical.yaml +55 -0
- package/examples/immeuble/contracts/mapping_external_to_canonical_ws.json +65 -0
- package/examples/immeuble/contracts/model_contract.json +943 -0
- package/examples/immeuble/contracts/projection_catalog.yaml +366 -0
- package/examples/immeuble/contracts/scenarios.yaml +27 -0
- package/examples/immeuble/contracts/semantic_proposal.golden.json +1 -0
- package/examples/immeuble/contracts/source_profile.yaml +38 -0
- package/examples/immeuble/fake_data/DeltaFinding.csv +20 -0
- package/examples/immeuble/fake_data/ProjectionResult.csv +13 -0
- package/examples/immeuble/fake_data/ag_meeting.csv +4 -0
- package/examples/immeuble/fake_data/agenda_item.csv +4 -0
- package/examples/immeuble/fake_data/architect.csv +3 -0
- package/examples/immeuble/fake_data/architecture_firm.csv +2 -0
- package/examples/immeuble/fake_data/bank_account.csv +3 -0
- package/examples/immeuble/fake_data/billing_group.csv +41 -0
- package/examples/immeuble/fake_data/block.csv +10 -0
- package/examples/immeuble/fake_data/budget_line.csv +3 -0
- package/examples/immeuble/fake_data/building.csv +6 -0
- package/examples/immeuble/fake_data/cellar.csv +41 -0
- package/examples/immeuble/fake_data/change_order.csv +2 -0
- package/examples/immeuble/fake_data/charge_call.csv +58 -0
- package/examples/immeuble/fake_data/claim.csv +4 -0
- package/examples/immeuble/fake_data/coda_entry.csv +49 -0
- package/examples/immeuble/fake_data/compliance_certificate.csv +10 -0
- package/examples/immeuble/fake_data/contractor.csv +4 -0
- package/examples/immeuble/fake_data/decision.csv +5 -0
- package/examples/immeuble/fake_data/defect_reserve.csv +3 -0
- package/examples/immeuble/fake_data/household.csv +41 -0
- package/examples/immeuble/fake_data/inspection.csv +3 -0
- package/examples/immeuble/fake_data/insurance_policy.csv +4 -0
- package/examples/immeuble/fake_data/intervention.csv +13 -0
- package/examples/immeuble/fake_data/invoice.csv +3 -0
- package/examples/immeuble/fake_data/lease_contract.csv +12 -0
- package/examples/immeuble/fake_data/maintenance_ticket.csv +13 -0
- package/examples/immeuble/fake_data/meter.csv +4 -0
- package/examples/immeuble/fake_data/meter_reading.csv +19 -0
- package/examples/immeuble/fake_data/milestone.csv +3 -0
- package/examples/immeuble/fake_data/organization.csv +12 -0
- package/examples/immeuble/fake_data/parking_space.csv +8 -0
- package/examples/immeuble/fake_data/permit.csv +3 -0
- package/examples/immeuble/fake_data/person.csv +85 -0
- package/examples/immeuble/fake_data/private_garden.csv +7 -0
- package/examples/immeuble/fake_data/progress_event.csv +2 -0
- package/examples/immeuble/fake_data/quote.csv +3 -0
- package/examples/immeuble/fake_data/receipt.csv +2 -0
- package/examples/immeuble/fake_data/reminder.csv +11 -0
- package/examples/immeuble/fake_data/service_contract.csv +4 -0
- package/examples/immeuble/fake_data/shared_equipment.csv +8 -0
- package/examples/immeuble/fake_data/shared_space.csv +10 -0
- package/examples/immeuble/fake_data/unit.csv +41 -0
- package/examples/immeuble/fake_data/work_package.csv +4 -0
- package/examples/immeuble/fake_data/worksite_project.csv +3 -0
- package/examples/immeuble/gap-rules/L0-patrimoine.json +57 -0
- package/examples/immeuble/gap-rules/L1-syndic-naive.json +36 -0
- package/examples/immeuble/gap-rules/L1-syndic.json +61 -0
- package/examples/immeuble/gap-rules/L2-chantier.json +87 -0
- package/examples/immeuble/gap-rules/L2-exploitation.json +87 -0
- package/examples/immeuble/gap-rules/L2-finance.json +48 -0
- package/examples/immeuble/gap-rules/L2-maintenance.json +107 -0
- package/examples/immeuble/gap-rules/L2-syndic-filtered.json +39 -0
- package/examples/immeuble/gap-rules/L3-full.json +332 -0
- package/examples/immeuble/gap-rules/closed-world-contract.md +76 -0
- package/examples/immeuble/gap-rules/demo.json +51 -0
- package/examples/immeuble/gap-rules/expected-findings.yaml +100 -0
- package/examples/immeuble/gap-rules/gap-scenarios.yaml +79 -0
- package/examples/immeuble/gap-rules/motifs.json +38 -0
- package/examples/immeuble/gap-rules/syndic.json +40 -0
- package/examples/immeuble/import_manifest.yaml +25 -0
- package/examples/immeuble/import_ready/graph_edges_import.csv +848 -0
- package/examples/immeuble/import_ready/mfo_facets_import.csv +559 -0
- package/examples/immeuble/index.md +140 -0
- package/examples/immeuble/model/immeuble_model.json +418 -0
- package/examples/immeuble/reports/01-model.validation.json +56 -0
- package/examples/immeuble/reports/02-mapping.validation.json +9 -0
- package/examples/immeuble/reports/acceptance.validation.json +161 -0
- package/examples/immeuble/reports/consumer_contract.validation.json +162 -0
- package/examples/immeuble/reports/graph_edges.jsonl +847 -0
- package/examples/immeuble/reports/graph_nodes.jsonl +558 -0
- package/examples/immeuble/reports/hybrid-compare.json +144 -0
- package/examples/immeuble/reports/immeuble-import-scenario.json +233 -0
- package/examples/immeuble/reports/live-artifacts-refresh.validation.json +51 -0
- package/examples/immeuble/reports/pipeline_audit.json +59 -0
- package/examples/immeuble/reports/projection_audit.json +69 -0
- package/examples/immeuble/reports/projection_audit_immeuble.json +257 -0
- package/examples/immeuble/reports/projection_audit_immeuble.md +122 -0
- package/examples/immeuble/reports/projection_candidates.json +1596 -0
- package/examples/immeuble/reports/projection_candidates.md +117 -0
- package/examples/immeuble/reports/projection_model_validation.md +115 -0
- package/examples/immeuble/reports/reindex.json +4 -0
- package/examples/immeuble/reports/reset-immeuble-workspace.json +32 -0
- package/examples/immeuble/reports/schema-id-prefix-check.json +5 -0
- package/examples/immeuble/scripts/audit-immeuble-projections.mjs +254 -0
- package/examples/immeuble/scripts/build-immeuble-model.mjs +308 -0
- package/examples/immeuble/scripts/compare-immeuble-snapshots.sh +227 -0
- package/examples/immeuble/scripts/enrich-immeuble-demo.mjs +1135 -0
- package/examples/immeuble/scripts/reset-immeuble-workspace.mjs +139 -0
- package/examples/immeuble/scripts/run-immeuble-backend.sh +164 -0
- package/examples/immeuble/scripts/run-immeuble-import.mjs +232 -0
- package/examples/immeuble/scripts/run-immeuble-live-lab.sh +439 -0
- package/examples/immeuble/scripts/seed-immeuble-gap-rules.mjs +103 -0
- package/examples/immeuble/scripts/start-immeuble-demo.sh +52 -0
- package/examples/immeuble/scripts/starterkit/analysis-lenses.mjs +181 -0
- package/examples/immeuble/scripts/starterkit/analyze-projection-candidates.mjs +714 -0
- package/examples/immeuble/scripts/starterkit/audit-ghostcrab-projections.mjs +674 -0
- package/examples/immeuble/scripts/starterkit/facet-prefix.mjs +166 -0
- package/examples/immeuble/scripts/starterkit/sqlite-utils.mjs +131 -0
- package/examples/immeuble/scripts/verify-immeuble-acceptance.mjs +284 -0
- package/examples/immeuble/scripts/verify-immeuble-live-artifacts.mjs +140 -0
- package/examples/immeuble/scripts/yaml-lite.mjs +96 -0
- package/examples/immeuble/sources/agent-prompts/prompts/00-prerequisites-immo-mcp.md +161 -0
- package/examples/immeuble/sources/agent-prompts/prompts/00-prerequisites.md +39 -0
- package/examples/immeuble/sources/agent-prompts/prompts/01-discovery-and-model-proposal.md +42 -0
- package/examples/immeuble/sources/agent-prompts/prompts/02-ontology-register.md +44 -0
- package/examples/immeuble/sources/agent-prompts/prompts/03-gap-rules-design.md +44 -0
- package/examples/immeuble/sources/agent-prompts/prompts/04-document-ingest.md +40 -0
- package/examples/immeuble/sources/agent-prompts/prompts/05-graph-extraction.md +44 -0
- package/examples/immeuble/sources/agent-prompts/prompts/06-validate-and-compare-immo-mcp.md +109 -0
- package/examples/immeuble/sources/agent-prompts/prompts/06-validate-and-compare-test-immo-mcp3.md +30 -0
- package/examples/immeuble/sources/agent-prompts/prompts/06-validate-and-compare.md +63 -0
- package/examples/immeuble/sources/checklists/gap-rules-checklist.md +42 -0
- package/examples/immeuble/sources/checklists/ontology-checklist.md +54 -0
- package/examples/immeuble/sources/documents/README.md +42 -0
- package/examples/immeuble/sources/documents/annexes-caves-garages-jardins.md +8 -0
- package/examples/immeuble/sources/documents/annexes-jardins-garages.md +1 -0
- package/examples/immeuble/sources/documents/baux-erables.md +1 -0
- package/examples/immeuble/sources/documents/baux-locatifs.md +11 -0
- package/examples/immeuble/sources/documents/coda-janvier-2026.md +10 -0
- package/examples/immeuble/sources/documents/composition-menages.md +1 -0
- package/examples/immeuble/sources/documents/composition-occupants.md +18 -0
- package/examples/immeuble/sources/documents/expected-coverage.json +70 -0
- package/examples/immeuble/sources/documents/extrait-coda-janvier-2026.md +1 -0
- package/examples/immeuble/sources/documents/groupes-facturation.md +30 -0
- package/examples/immeuble/sources/documents/manifest.json +79 -0
- package/examples/immeuble/sources/documents/note-architecte-chantier-erables.md +3 -0
- package/examples/immeuble/sources/documents/permis-urbanisme-erables.md +3 -0
- package/examples/immeuble/sources/documents/procedures-operationnelles.md +3 -0
- package/examples/immeuble/sources/documents/pv-ag-budget-2026.md +1 -0
- package/examples/immeuble/sources/documents/pv-reception-reserves-erables.md +3 -0
- package/examples/immeuble/sources/documents/registre-coproprietaires.md +24 -0
- package/examples/immeuble/sources/documents/reglement-copropriete-tilleuls.md +1 -0
- package/examples/immeuble/sources/documents/statuts-erables.md +22 -0
- package/examples/immeuble/sources/documents/statuts-tilleuls.md +19 -0
- package/examples/immeuble/sources/documents/succession-jean-dupont.md +3 -0
- package/examples/immeuble/sources/documents/titre-propriete-tilleuls-a3.md +1 -0
- package/examples/immeuble/sources/documents/trous-pedagogiques.md +3 -0
- package/examples/immeuble/sources/ontology/README.md +1 -0
- package/examples/immeuble/sources/ontology/core.yaml +444 -0
- package/examples/immeuble/success-criteria.yaml +35 -0
- package/fixtures/immeuble-demo.sqlite +0 -0
- package/package.json +11 -2
- package/scripts/lib/sqlite-runtime.mjs +1 -1
- package/scripts/load-immeuble-demo.sh +179 -0
- package/scripts/seed-immeuble-projections.mjs +75 -148
- package/scripts/verify-immeuble-demo-sources.mjs +93 -0
- package/scripts/verify-immeuble-demo.mjs +69 -0
- package/build/client/_app/immutable/chunks/D0UIlUGZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/D0UIlUGZ.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CR-imLox.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CR-imLox.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.DV-AjeAB.js +0 -1
- package/build/client/_app/immutable/entry/start.DV-AjeAB.js.br +0 -2
- package/build/client/_app/immutable/entry/start.DV-AjeAB.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.CTEedoSY.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.CTEedoSY.js.gz +0 -0
|
@@ -10,10 +10,10 @@ return {
|
|
|
10
10
|
assets: new Set(["robots.txt"]),
|
|
11
11
|
mimeTypes: {".txt":"text/plain"},
|
|
12
12
|
_: {
|
|
13
|
-
client: {start:"_app/immutable/entry/start.
|
|
13
|
+
client: {start:"_app/immutable/entry/start.Dtz8dQFZ.js",app:"_app/immutable/entry/app.XgS1PoV0.js",imports:["_app/immutable/entry/start.Dtz8dQFZ.js","_app/immutable/chunks/BjfgiHck.js","_app/immutable/chunks/BnkCgNCx.js","_app/immutable/chunks/BNUkRZqg.js","_app/immutable/entry/app.XgS1PoV0.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
14
|
nodes: [
|
|
15
15
|
__memo(() => import('./nodes/0.js-87v83UX9.js')),
|
|
16
|
-
__memo(() => import('./nodes/1.js-
|
|
16
|
+
__memo(() => import('./nodes/1.js-D3KAPgsF.js')),
|
|
17
17
|
__memo(() => import('./nodes/2.js-D9-B_qyX.js'))
|
|
18
18
|
],
|
|
19
19
|
remotes: {
|
|
@@ -88,4 +88,4 @@ return {
|
|
|
88
88
|
})();
|
|
89
89
|
|
|
90
90
|
export { manifest as m };
|
|
91
|
-
//# sourceMappingURL=manifest.js-
|
|
91
|
+
//# sourceMappingURL=manifest.js-BxEwHoCX.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js-
|
|
1
|
+
{"version":3,"file":"manifest.js-BxEwHoCX.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.Dtz8dQFZ.js\",app:\"_app/immutable/entry/app.XgS1PoV0.js\",imports:[\"_app/immutable/entry/start.Dtz8dQFZ.js\",\"_app/immutable/chunks/BjfgiHck.js\",\"_app/immutable/chunks/BnkCgNCx.js\",\"_app/immutable/chunks/BNUkRZqg.js\",\"_app/immutable/entry/app.XgS1PoV0.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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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
const index = 1;
|
|
2
2
|
let component_cache;
|
|
3
3
|
const component = async () => component_cache ??= (await import('../entries/fallbacks/error.svelte.js-B7V4yZjo.js')).default;
|
|
4
|
-
const imports = ["_app/immutable/nodes/1.
|
|
4
|
+
const imports = ["_app/immutable/nodes/1.Cs3BmvHO.js","_app/immutable/chunks/NXeHtWpC.js","_app/immutable/chunks/BnkCgNCx.js","_app/immutable/chunks/D0daF8Eh.js","_app/immutable/chunks/BjfgiHck.js","_app/immutable/chunks/BNUkRZqg.js"];
|
|
5
5
|
const stylesheets = [];
|
|
6
6
|
const fonts = [];
|
|
7
7
|
|
|
8
8
|
export { component, fonts, imports, index, stylesheets };
|
|
9
|
-
//# sourceMappingURL=1.js-
|
|
9
|
+
//# sourceMappingURL=1.js-D3KAPgsF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"1.js-
|
|
1
|
+
{"version":3,"file":"1.js-D3KAPgsF.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.Cs3BmvHO.js\",\"_app/immutable/chunks/NXeHtWpC.js\",\"_app/immutable/chunks/BnkCgNCx.js\",\"_app/immutable/chunks/D0daF8Eh.js\",\"_app/immutable/chunks/BjfgiHck.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,82 @@
|
|
|
1
|
+
# Definition of Done - workspace immeuble
|
|
2
|
+
workspace_id: immeuble
|
|
3
|
+
ontology_id: immeuble::core
|
|
4
|
+
schema_id_prefix: "immeuble:"
|
|
5
|
+
|
|
6
|
+
import_ready:
|
|
7
|
+
facet_rows_min: 400
|
|
8
|
+
edge_rows_min: 800
|
|
9
|
+
fake_data_csv_min: 35
|
|
10
|
+
entity_type_counts_min:
|
|
11
|
+
building: 5
|
|
12
|
+
block: 9
|
|
13
|
+
unit: 40
|
|
14
|
+
household: 40
|
|
15
|
+
cellar: 40
|
|
16
|
+
person: 80
|
|
17
|
+
charge_call: 50
|
|
18
|
+
coda_entry: 35
|
|
19
|
+
maintenance_ticket: 10
|
|
20
|
+
worksite_project: 2
|
|
21
|
+
|
|
22
|
+
db_after_import:
|
|
23
|
+
agent_facts_min: 400
|
|
24
|
+
relations_raw_min: 800
|
|
25
|
+
graph_entity_min: 400
|
|
26
|
+
schema_id_violations: 0
|
|
27
|
+
|
|
28
|
+
hybrid_compare:
|
|
29
|
+
required: false
|
|
30
|
+
max_deltas:
|
|
31
|
+
facets_inserted: 0
|
|
32
|
+
edges_inserted: 0
|
|
33
|
+
entities_upserted: 0
|
|
34
|
+
|
|
35
|
+
projections:
|
|
36
|
+
analysis_plan_min: 1
|
|
37
|
+
live_answer_view_min: 25
|
|
38
|
+
answer_snapshot_min: 8
|
|
39
|
+
|
|
40
|
+
consumer_contract:
|
|
41
|
+
facet_queries_min: 3
|
|
42
|
+
graph_traversals_min: 2
|
|
43
|
+
answer_artifacts_min: 25
|
|
44
|
+
|
|
45
|
+
business_capabilities:
|
|
46
|
+
active_min: 25
|
|
47
|
+
required_artifact_ids:
|
|
48
|
+
- live_answer_view__lots_sans_proprietaire
|
|
49
|
+
- live_answer_view__coda_a_rapprocher
|
|
50
|
+
- live_answer_view__interventions_en_retard
|
|
51
|
+
- live_answer_view__chantier_actif
|
|
52
|
+
|
|
53
|
+
starterkit_projection_audit:
|
|
54
|
+
quality_score_min: 70
|
|
55
|
+
required_facet_observation_gap_max: 0
|
|
56
|
+
required_schema_record_gap_max: 0
|
|
57
|
+
required_edge_type_gap_max: 0
|
|
58
|
+
planned_missing_count_max: 0
|
|
59
|
+
strict_only: true
|
|
60
|
+
|
|
61
|
+
bundle:
|
|
62
|
+
path: bundle/immeuble.bundle.json
|
|
63
|
+
documents_raw_min: 20
|
|
64
|
+
entities_raw_min: 400
|
|
65
|
+
relations_raw_min: 800
|
|
66
|
+
answer_artifacts_min: 33
|
|
67
|
+
|
|
68
|
+
graph_search_min:
|
|
69
|
+
query: appartement
|
|
70
|
+
min_hits: 40
|
|
71
|
+
|
|
72
|
+
construction_lite:
|
|
73
|
+
entity_types_min: 14
|
|
74
|
+
graph_entities_min: 30
|
|
75
|
+
live_answer_views_min: 6
|
|
76
|
+
projection_results_min: 8
|
|
77
|
+
delta_findings_min: 12
|
|
78
|
+
gap_rules_min: 25
|
|
79
|
+
|
|
80
|
+
expected_findings:
|
|
81
|
+
file: gap-rules/expected-findings.yaml
|
|
82
|
+
min_count: 12
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
|
|
2
|
+
# BIM Lite
|
|
3
|
+
|
|
4
|
+
La couche `construction_lite` s'inspire de DiCon/BOT/IFC sans importer ces ontologies.
|
|
5
|
+
Elle sert de vocabulaire métier lisible pour la démo GhostCrab Studio.
|
|
6
|
+
|
|
7
|
+
| Concept local | Inspiration indicative |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| `worksite_project` | `dicp:Project` |
|
|
10
|
+
| `work_package` | `dicp:Activity` |
|
|
11
|
+
| `architect`, `contractor` | `dica:Agent` |
|
|
12
|
+
| `permit`, `quote`, `invoice` | `dici:Information` |
|
|
13
|
+
| `building`, `unit`, `shared_space` | BOT/IFC spatial and asset notions |
|
|
14
|
+
|
|
15
|
+
Ces mappings sont documentaires. Ils ne créent aucune dépendance RDF externe et ne prétendent pas garantir une conformité BIM.
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Immeuble — checklist exécutable
|
|
2
|
+
|
|
3
|
+
Prérequis : backend MindBrain joignable (`ghostcrab_status` OK), Node ≥ 20, `sqlite3` CLI optionnel (checks DB).
|
|
4
|
+
|
|
5
|
+
Variables :
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
export GHOSTCRAB_SQLITE_PATH="$PWD/data/immeuble.sqlite"
|
|
9
|
+
export GHOSTCRAB_MINDBRAIN_URL="${GHOSTCRAB_MINDBRAIN_URL:-http://127.0.0.1:8091}"
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Critères chiffrés : [`ACCEPTANCE.yaml`](ACCEPTANCE.yaml)
|
|
13
|
+
Vérification auto : `npm run immeuble:verify`
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Phase 0 — Préconditions
|
|
18
|
+
|
|
19
|
+
| # | Action | Post-condition OK | KO si |
|
|
20
|
+
|---|--------|-------------------|-------|
|
|
21
|
+
| 0.1 | `ghostcrab_status` | `ok: true`, tools visibles | backend down |
|
|
22
|
+
| 0.2 | Branche + submodule | `vendor/mindbrain` ≥ 549c39f | mismatch binaire |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Phase 1 — Build (filesystem only)
|
|
27
|
+
|
|
28
|
+
| # | Commande | Artefacts | Post-condition |
|
|
29
|
+
|---|----------|-----------|----------------|
|
|
30
|
+
| 1.1 | `npm run immeuble:build` | `fake_data/*.csv` (≥19), `import_ready/*`, `reports/01-model.validation.json` | `pipeline_audit.ok=true`, facet_rows=131, edge_rows=265 |
|
|
31
|
+
| 1.2 | `npm run immeuble:verify` | `reports/acceptance.validation.json` | all checks ok (sans DB) |
|
|
32
|
+
|
|
33
|
+
**Tables DB touchées :** aucune
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Phase 2 — Dry-run import
|
|
38
|
+
|
|
39
|
+
| # | Commande | Post-condition |
|
|
40
|
+
|---|----------|----------------|
|
|
41
|
+
| 2.1 | `node examples/immeuble/scripts/run-immeuble-import.mjs --skip-preflight --skip-provenance-validation` | plan summary facet_rows>0, edge_rows>0 |
|
|
42
|
+
|
|
43
|
+
**Tables DB :** aucune écriture
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Phase 3 — Reset + apply (workspace propre)
|
|
48
|
+
|
|
49
|
+
| # | Commande | Post-condition |
|
|
50
|
+
|---|----------|----------------|
|
|
51
|
+
| 3.1 | `npm run immeuble:reset -- --db /tmp/immeuble-test/immeuble.sqlite` | DB fraîche isolée (recommandé si backend actif) |
|
|
52
|
+
| 3.1b | `npm run immeuble:reset` | DB `data/immeuble.sqlite` (requiert `--force` si backend sur même fichier) |
|
|
53
|
+
|
|
54
|
+
**Post-conditions DB (`ACCEPTANCE.yaml`) :**
|
|
55
|
+
|
|
56
|
+
- `agent_facts` ≥ 131, tous `schema_id` préfixés `immeuble:`
|
|
57
|
+
- `relations_raw` ≥ 265
|
|
58
|
+
- `graph_entity` > 0 après reindex
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Phase 4 — Hybrid compare (optionnel CI)
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
node examples/immeuble/scripts/run-immeuble-import.mjs \
|
|
66
|
+
--apply --engine both --skip-preflight --skip-provenance-validation \
|
|
67
|
+
--db /tmp/immeuble-hybrid.sqlite \
|
|
68
|
+
--compare-output examples/immeuble/reports/hybrid-compare.json
|
|
69
|
+
npm run immeuble:verify -- --require-hybrid
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**OK si :** deltas legacy/hybrid = 0 sur facets/edges/entities
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Phase 5 — Projections (surface minimale garantie)
|
|
77
|
+
|
|
78
|
+
Surface documentée dans `ACCEPTANCE.yaml` → section `projections` :
|
|
79
|
+
|
|
80
|
+
| artifact_id | kind |
|
|
81
|
+
|-------------|------|
|
|
82
|
+
| `analysis_plan__immeuble_competency_questions` | analysis_plan |
|
|
83
|
+
| `live_answer_view__annuaire_coproprietes` | live_answer_view |
|
|
84
|
+
| `live_answer_view__baux_actifs` | live_answer_view |
|
|
85
|
+
| `live_answer_view__quotites_par_immeuble` | live_answer_view |
|
|
86
|
+
|
|
87
|
+
| # | Commande | Post-condition |
|
|
88
|
+
|---|----------|----------------|
|
|
89
|
+
| 5.1 | `npm run immeuble:reset -- --with-artifact-seed` | seeds chargés |
|
|
90
|
+
| 5.2 | `gcp brain artifact list --workspace-id immeuble --kind live_answer_view` | ≥3 ids listés |
|
|
91
|
+
| 5.3 | `gcp brain artifact refresh live_answer_view__annuaire_coproprietes` | POST 200, lifecycle mis à jour |
|
|
92
|
+
| 5.4 | `node examples/immeuble/scripts/starterkit/analyze-projection-candidates.mjs --db data/immeuble.sqlite --workspace immeuble --projection-catalog contracts/projection_catalog.yaml --model-contract contracts/model_contract.json --output-dir reports --include-blind-spots --include-jtbd` | report `projection_candidates.json` généré |
|
|
93
|
+
| 5.5 | `node examples/immeuble/scripts/starterkit/audit-ghostcrab-projections.mjs --db data/immeuble.sqlite --workspace immeuble --model contracts/model_contract.json --answer-artifacts-seed contracts/answer_artifacts.seed.jsonl --output-dir reports` | `projection_audit_immeuble.json` généré, coverage conforme `ACCEPTANCE.yaml` |
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Phase 6 — Bundle reload
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
npm run immeuble:reset -- --with-bundle-load --keep-db
|
|
101
|
+
# ou
|
|
102
|
+
node bin/gcp.mjs load examples/immeuble/bundle/immeuble.bundle.json \
|
|
103
|
+
--workspace immeuble --reindex all
|
|
104
|
+
npm run immeuble:verify -- --require-bundle
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**OK si :** counts bundle = counts post-import (entities ≥131, documents=7)
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Rollback local
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
git restore --worktree --source=HEAD .
|
|
115
|
+
# artefacts : reports/*.json datés, DB : rm data/immeuble.sqlite
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Legacy fallback : `--engine legacy` (défaut) ; hybrid via `--engine both` sans supprimer legacy.
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Definition of Done (résumé)
|
|
123
|
+
|
|
124
|
+
- [x] `npm run immeuble:build && npm run immeuble:verify` → ok
|
|
125
|
+
- [x] `npm run immeuble:reset` → ok
|
|
126
|
+
- [x] `--engine both` → hybrid deltas 0 (CI)
|
|
127
|
+
- [x] 3 live_answer_view + 1 analysis_plan seedés/listés + refresh live (`immeuble:verify:live`)
|
|
128
|
+
- [ ] bundle reload → counts stables
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# Immeuble — exemple canonique GhostCrab
|
|
2
|
+
|
|
3
|
+
Unique domain example for the GhostCrab Personal methodology. Structure mirrors [MVP_Serenity_2](https://github.com/mindflight-orchestrator/ghostcrab-personal-mcp) (model → CSV → import_ready → reports → bundle).
|
|
4
|
+
|
|
5
|
+
**Workspace:** `immeuble`
|
|
6
|
+
**Ontology:** `immeuble::core` ([`ontologies/immeuble/core.yaml`](../../ontologies/immeuble/core.yaml))
|
|
7
|
+
|
|
8
|
+
## Quick start
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
# 1) Generate fake_data, import_ready, reports from bundle
|
|
12
|
+
npm run immeuble:build
|
|
13
|
+
|
|
14
|
+
# 2) Dry-run structured import
|
|
15
|
+
node examples/immeuble/scripts/run-immeuble-import.mjs --skip-preflight --skip-provenance-validation
|
|
16
|
+
|
|
17
|
+
# 3) Apply + reindex + prefix checks
|
|
18
|
+
npm run immeuble:import
|
|
19
|
+
|
|
20
|
+
# 4) Load full bundle (documents + graph + projections seed)
|
|
21
|
+
export GHOSTCRAB_SQLITE_PATH="$PWD/data/immeuble.sqlite"
|
|
22
|
+
node bin/gcp.mjs load examples/immeuble/bundle/immeuble.bundle.json \
|
|
23
|
+
--workspace immeuble --reindex all
|
|
24
|
+
|
|
25
|
+
# 5) Audit projections registry
|
|
26
|
+
npm run immeuble:verify # acceptance criteria (filesystem + optional --db)
|
|
27
|
+
npm run immeuble:reset -- --db /tmp/immeuble-test/immeuble.sqlite # workspace propre
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Pour le mode live (backend+snapshots), il existe un wrapper dédié :
|
|
31
|
+
```bash
|
|
32
|
+
npm run immeuble:backend:run -- \
|
|
33
|
+
--db /tmp/immeuble-lab/immeuble.sqlite \
|
|
34
|
+
--ready-timeout 40
|
|
35
|
+
```
|
|
36
|
+
Ou directement :
|
|
37
|
+
```bash
|
|
38
|
+
bash examples/immeuble/scripts/run-immeuble-backend.sh \
|
|
39
|
+
--db /tmp/immeuble-lab/immeuble.sqlite \
|
|
40
|
+
--ready-timeout 40
|
|
41
|
+
```
|
|
42
|
+
Il lance le binaire `ghostcrab-backend` en standalone HTTP (via `env GHOSTCRAB_*=...`),
|
|
43
|
+
retourne `BACKEND_PID`, `BACKEND_URL` et `BACKEND_LOG`, puis laisse le processus tourner.
|
|
44
|
+
|
|
45
|
+
Hybrid legacy/compare:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
node examples/immeuble/scripts/run-immeuble-import.mjs \
|
|
49
|
+
--apply --engine both --skip-preflight --skip-provenance-validation \
|
|
50
|
+
--compare-output examples/immeuble/reports/hybrid-compare.json
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Orchestrer tout le pipeline avec DB fraîche + backups de progression
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
bash examples/immeuble/scripts/run-immeuble-live-lab.sh \
|
|
57
|
+
--db /tmp/immeuble-lab/immeuble.sqlite \
|
|
58
|
+
--engine both \
|
|
59
|
+
--with-projection-plan \
|
|
60
|
+
--projection-strict \
|
|
61
|
+
--with-artifact-seed \
|
|
62
|
+
--with-live-verify \
|
|
63
|
+
--stop-after live_verify
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Le script :
|
|
67
|
+
- démarre le backend local `ghostcrab-backend` en mode standalone HTTP (`:8091` par défaut),
|
|
68
|
+
- exécute les étapes `build → projection_plan → import → artifact_seed → audit (StarterKit) → verify → live_verify` (et `bundle` si demandé),
|
|
69
|
+
- fait un snapshot SQLite après chaque étape (`.sqlite`, `-.wal`, `-.shm` quand présents),
|
|
70
|
+
- permet d’évaluer la progression entre chaque snapshot.
|
|
71
|
+
|
|
72
|
+
C’est bien un pipeline via les outils **HTTP (gcp + scripts Immeuble)** contre un backend en marche, pas des appels standalone directs sur sqlite depuis les scripts.
|
|
73
|
+
|
|
74
|
+
Comparer deux snapshots :
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
npm run immeuble:compare:snapshots -- \
|
|
78
|
+
--from data/immeuble-lab-backups/20260614-120101-00-start.sqlite \
|
|
79
|
+
--to data/immeuble-lab-backups/20260614-120223-import.sqlite \
|
|
80
|
+
--workspace immeuble \
|
|
81
|
+
--label-a start --label-b import
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Version JSON (utile pour rapporter l’évolution dans un script CI) :
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
npm run immeuble:compare:snapshots -- \
|
|
88
|
+
--from data/immeuble-lab-backups/20260614-120101-00-start.sqlite \
|
|
89
|
+
--to data/immeuble-lab-backups/20260614-120223-import.sqlite \
|
|
90
|
+
--workspace immeuble \
|
|
91
|
+
--json --out /tmp/immeuble-compare.json
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Layout
|
|
95
|
+
|
|
96
|
+
| Path | Role |
|
|
97
|
+
|------|------|
|
|
98
|
+
| [`sources/documents/`](sources/documents/) | Raw markdown corpus (Tilleuls / Érables narrative) |
|
|
99
|
+
| [`sources/agent-prompts/`](sources/agent-prompts/) | Optional agent reconstruction prompts |
|
|
100
|
+
| [`model/immeuble_model.json`](model/immeuble_model.json) | Global entity/edge contract |
|
|
101
|
+
| [`contracts/`](contracts/) | Mapping, consumer contract, projection catalog, answer seeds |
|
|
102
|
+
| [`fake_data/`](fake_data/) | One CSV per entity type (generated) |
|
|
103
|
+
| [`import_ready/`](import_ready/) | `mfo_facets_import.csv` + `graph_edges_import.csv` |
|
|
104
|
+
| [`reports/`](reports/) | Step checkpoints (JSON/JSONL) |
|
|
105
|
+
| [`bundle/immeuble.bundle.json`](bundle/immeuble.bundle.json) | Importable workspace snapshot |
|
|
106
|
+
| [`gap-rules/`](gap-rules/) | Gap diagnostics curriculum (optional) |
|
|
107
|
+
| [`scripts/`](scripts/) | Build, import, audit runners |
|
|
108
|
+
|
|
109
|
+
## Methodology
|
|
110
|
+
|
|
111
|
+
Step-by-step walkthrough: [`index.md`](index.md)
|
|
112
|
+
Voir aussi : [`CHECKLIST.md`](CHECKLIST.md) · [`ACCEPTANCE.yaml`](ACCEPTANCE.yaml)
|
|
113
|
+
|
|
114
|
+
## Success criteria
|
|
115
|
+
|
|
116
|
+
Counts and graph checks: [`success-criteria.yaml`](success-criteria.yaml)
|
|
117
|
+
## BIM Lite / chantier
|
|
118
|
+
|
|
119
|
+
La démo inclut maintenant un scénario `construction_lite` : chantier toiture/façades de la Résidence Les Érables, architecte, entreprises, lots de travaux, permis, budget, planning, inspection et réserves.
|
|
120
|
+
|
|
121
|
+
Ce profil s'inspire de DiCon/BOT/IFC uniquement comme vocabulaire de conception. La démo n'importe pas IFC, ifcOWL, BOT ou DiCon en entier. Voir [BIM_LITE.md](BIM_LITE.md).
|