@mindrian_os/cli 1.13.0-beta.10 → 1.13.0-beta.43
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/CHANGELOG.md +340 -13
- package/README.md +76 -579
- package/bin/cli.js +166 -40
- package/lib/core/active-plugin-root.cjs +207 -0
- package/package.json +7 -13
- package/.claude-plugin/plugin.json +0 -21
- package/.mcp.json +0 -9
- package/agents/brain-query.md +0 -80
- package/agents/framework-runner.md +0 -237
- package/agents/grading.md +0 -188
- package/agents/investor.md +0 -128
- package/agents/larry-extended.md +0 -135
- package/agents/opportunity-scanner.md +0 -91
- package/agents/persona-analyst.md +0 -132
- package/agents/research.md +0 -89
- package/agents/reverse-salient-agent.md +0 -27
- package/bin/mindrian-mcp-server.cjs +0 -182
- package/bin/mindrian-tools.cjs +0 -765
- package/commands/act.md +0 -433
- package/commands/admin.md +0 -404
- package/commands/analyze-needs.md +0 -36
- package/commands/analyze-systems.md +0 -33
- package/commands/analyze-timing.md +0 -36
- package/commands/auto-explore.md +0 -64
- package/commands/beautiful-question.md +0 -34
- package/commands/brain-derive.md +0 -78
- package/commands/build-knowledge.md +0 -36
- package/commands/build-thesis.md +0 -40
- package/commands/causal.md +0 -228
- package/commands/challenge-assumptions.md +0 -33
- package/commands/compare-ventures.md +0 -77
- package/commands/dashboard.md +0 -110
- package/commands/deep-grade.md +0 -76
- package/commands/diagnose.md +0 -52
- package/commands/diagnostics.md +0 -145
- package/commands/doctor.md +0 -151
- package/commands/dominant-designs.md +0 -34
- package/commands/explain-decision.md +0 -87
- package/commands/explore-domains.md +0 -36
- package/commands/explore-futures.md +0 -34
- package/commands/explore-trends.md +0 -36
- package/commands/export.md +0 -103
- package/commands/file-meeting.md +0 -724
- package/commands/find-analogies.md +0 -182
- package/commands/find-bottlenecks.md +0 -56
- package/commands/find-connections.md +0 -70
- package/commands/funding.md +0 -81
- package/commands/grade.md +0 -197
- package/commands/graph.md +0 -128
- package/commands/hat-briefing.md +0 -119
- package/commands/heal.md +0 -196
- package/commands/help.md +0 -399
- package/commands/hmi-status.md +0 -172
- package/commands/jtbd.md +0 -241
- package/commands/leadership.md +0 -73
- package/commands/lean-canvas.md +0 -34
- package/commands/macro-trends.md +0 -34
- package/commands/map-unknowns.md +0 -34
- package/commands/memory.md +0 -173
- package/commands/models.md +0 -175
- package/commands/mos-reason.md +0 -279
- package/commands/mullins.md +0 -114
- package/commands/new-project.md +0 -481
- package/commands/onboard.md +0 -434
- package/commands/operator.md +0 -149
- package/commands/opportunities.md +0 -144
- package/commands/organize.md +0 -497
- package/commands/persona.md +0 -192
- package/commands/pipeline.md +0 -106
- package/commands/present.md +0 -91
- package/commands/publish.md +0 -201
- package/commands/query.md +0 -124
- package/commands/radar.md +0 -72
- package/commands/reanalyze.md +0 -91
- package/commands/research.md +0 -190
- package/commands/room.md +0 -352
- package/commands/rooms.md +0 -598
- package/commands/root-cause.md +0 -34
- package/commands/rs-experts.md +0 -79
- package/commands/rs-explain.md +0 -94
- package/commands/rs-fetch.md +0 -88
- package/commands/rs-thesis.md +0 -79
- package/commands/scenario-plan.md +0 -34
- package/commands/scheduled-tasks.md +0 -285
- package/commands/score-innovation.md +0 -37
- package/commands/scout.md +0 -239
- package/commands/setup.md +0 -618
- package/commands/snapshot.md +0 -147
- package/commands/speakers.md +0 -84
- package/commands/splash.md +0 -28
- package/commands/status.md +0 -75
- package/commands/structure-argument.md +0 -36
- package/commands/suggest-next.md +0 -74
- package/commands/systems-thinking.md +0 -34
- package/commands/think-hats.md +0 -36
- package/commands/update.md +0 -181
- package/commands/user-needs.md +0 -34
- package/commands/validate.md +0 -34
- package/commands/value-proposition.md +0 -55
- package/commands/vault.md +0 -180
- package/commands/visualize.md +0 -52
- package/commands/whitespace.md +0 -501
- package/commands/wiki.md +0 -69
- package/hooks/hooks.json +0 -381
- package/hooks/run-hook.cmd +0 -64
- package/lib/__init__.py +0 -0
- package/lib/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/agents/auto-explore-agent.cjs +0 -1043
- package/lib/agents/reverse-salient-agent.cjs +0 -679
- package/lib/agents/tension-hook-agent.cjs +0 -544
- package/lib/chat/chat-context.js +0 -185
- package/lib/chat/chat-panel.js +0 -721
- package/lib/chat/fabric-chat.cjs +0 -288
- package/lib/chat/generative-tools.js +0 -219
- package/lib/conversation/ROOM.md +0 -39
- package/lib/conversation/classifier-rules.json +0 -38
- package/lib/conversation/classifier.cjs +0 -264
- package/lib/conversation/operator.cjs +0 -287
- package/lib/copy/115-spec-strings.cjs +0 -55
- package/lib/core/__init__.py +0 -0
- package/lib/core/__nav-stub.cjs +0 -14
- package/lib/core/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs-math.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_cache.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_corpus.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_hybrid.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_math.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_rooms.cpython-312.pyc +0 -0
- package/lib/core/artifact-id.cjs +0 -148
- package/lib/core/asset-ops.cjs +0 -151
- package/lib/core/auto-commit-throttle.cjs +0 -129
- package/lib/core/bearer-token.cjs +0 -199
- package/lib/core/brain-client.cjs +0 -865
- package/lib/core/brain-derivation-prompts.cjs +0 -326
- package/lib/core/brain-derivation-queue.cjs +0 -431
- package/lib/core/brain-derivation.cjs +0 -580
- package/lib/core/brain-md-schema.cjs +0 -528
- package/lib/core/brain-md-staleness.cjs +0 -357
- package/lib/core/brain-response-sanitize.cjs +0 -188
- package/lib/core/bridge-writer.cjs +0 -477
- package/lib/core/chat-context-builder.cjs +0 -253
- package/lib/core/cross-room-aggregator.cjs +0 -762
- package/lib/core/daily-briefing.cjs +0 -438
- package/lib/core/decision-capture.cjs +0 -618
- package/lib/core/deep-links.cjs +0 -82
- package/lib/core/dispatch-optimizer.cjs +0 -354
- package/lib/core/dual-path-detector.cjs +0 -84
- package/lib/core/dual-path-detector.test.cjs +0 -334
- package/lib/core/exports-log.cjs +0 -79
- package/lib/core/feynman-minto-invariants.cjs +0 -605
- package/lib/core/folder-memory-async.cjs +0 -338
- package/lib/core/folder-memory-shared.cjs +0 -890
- package/lib/core/folder-memory.cjs +0 -416
- package/lib/core/framework-chain-composer.cjs +0 -411
- package/lib/core/frontmatter-schemas.cjs +0 -330
- package/lib/core/git-ops.cjs +0 -141
- package/lib/core/graph-ops.cjs +0 -258
- package/lib/core/hat-persistence.cjs +0 -362
- package/lib/core/index.cjs +0 -60
- package/lib/core/integration-registry.cjs +0 -232
- package/lib/core/intelligence-cascade.cjs +0 -661
- package/lib/core/lazygraph-ops.cjs +0 -1057
- package/lib/core/lru-cache.cjs +0 -139
- package/lib/core/mcp-profiles.cjs +0 -182
- package/lib/core/meeting-ops.cjs +0 -54
- package/lib/core/memory-ops.cjs +0 -600
- package/lib/core/migrations/ROOM.md +0 -33
- package/lib/core/migrations/phase-109-nodes-provenance.cjs +0 -339
- package/lib/core/migrations/phase-109-session-focus.cjs +0 -99
- package/lib/core/model-profiles.cjs +0 -246
- package/lib/core/mullins-scaffold.cjs +0 -160
- package/lib/core/nav-dial.cjs +0 -316
- package/lib/core/navigation/ROOM.md +0 -15
- package/lib/core/navigation/explanation.cjs +0 -43
- package/lib/core/navigation/focus.cjs +0 -135
- package/lib/core/navigation/ingestion.cjs +0 -82
- package/lib/core/navigation/insights.cjs +0 -350
- package/lib/core/navigation/memory-events.cjs +0 -118
- package/lib/core/navigation/neighborhood.cjs +0 -78
- package/lib/core/navigation/packet.cjs +0 -182
- package/lib/core/navigation/room-home.cjs +0 -127
- package/lib/core/navigation/transitions.cjs +0 -82
- package/lib/core/navigation-engine-shared.cjs +0 -242
- package/lib/core/navigation-engine.cjs +0 -664
- package/lib/core/navigation.cjs +0 -60
- package/lib/core/nl-graph-queries.cjs +0 -164
- package/lib/core/offer-presenter.cjs +0 -406
- package/lib/core/opportunity-extractor.cjs +0 -183
- package/lib/core/opportunity-ops.cjs +0 -1371
- package/lib/core/persona-ops.cjs +0 -537
- package/lib/core/persona-taxonomy.cjs +0 -190
- package/lib/core/platform-gates.cjs +0 -120
- package/lib/core/platform.cjs +0 -257
- package/lib/core/proactive-intelligence.cjs +0 -528
- package/lib/core/problem-type-router.cjs +0 -315
- package/lib/core/reasoning-ops.cjs +0 -639
- package/lib/core/reverse-salient-persona-suffix.cjs +0 -115
- package/lib/core/room-classifier-strict-mode.cjs +0 -229
- package/lib/core/room-db.cjs +0 -127
- package/lib/core/room-ops-async.cjs +0 -92
- package/lib/core/room-ops-shared.cjs +0 -64
- package/lib/core/room-ops-sync.cjs +0 -70
- package/lib/core/room-ops.cjs +0 -32
- package/lib/core/room-type-detector.cjs +0 -386
- package/lib/core/rs-brain-substrate-prompts.cjs +0 -129
- package/lib/core/rs-brain-substrate.cjs +0 -570
- package/lib/core/rs-breakthrough-scorer.cjs +0 -255
- package/lib/core/rs-canon-violations.cjs +0 -82
- package/lib/core/rs-chain-feeder.cjs +0 -343
- package/lib/core/rs-commercial-assessor.cjs +0 -280
- package/lib/core/rs-differential-scorer.cjs +0 -376
- package/lib/core/rs-domain-analyzer.cjs +0 -385
- package/lib/core/rs-egress-prompts.cjs +0 -113
- package/lib/core/rs-egress-telemetry.cjs +0 -225
- package/lib/core/rs-egress-violations.cjs +0 -53
- package/lib/core/rs-expert-mapper.cjs +0 -467
- package/lib/core/rs-fetcher-academic.cjs +0 -697
- package/lib/core/rs-fetcher-experts.cjs +0 -314
- package/lib/core/rs-fetcher-industry.cjs +0 -731
- package/lib/core/rs-fetcher-patents.cjs +0 -564
- package/lib/core/rs-innovation-classifier.cjs +0 -194
- package/lib/core/rs-mind-map.cjs +0 -656
- package/lib/core/rs-neo4j-writer.cjs +0 -388
- package/lib/core/rs-nl-to-query.cjs +0 -425
- package/lib/core/rs-pinecone-bridge.cjs +0 -303
- package/lib/core/rs-preprocessor.cjs +0 -350
- package/lib/core/rs-query-matrix.cjs +0 -316
- package/lib/core/rs-query-to-text.cjs +0 -438
- package/lib/core/rs-sqlite-mirror.cjs +0 -443
- package/lib/core/rs-thesis-generator.cjs +0 -188
- package/lib/core/rs_cache.py +0 -479
- package/lib/core/rs_corpus.py +0 -468
- package/lib/core/rs_hybrid.py +0 -586
- package/lib/core/rs_math.py +0 -287
- package/lib/core/rs_rooms.py +0 -193
- package/lib/core/scheduled-scanner.cjs +0 -463
- package/lib/core/scratchpad-ops.cjs +0 -201
- package/lib/core/section-8-trace-schema.cjs +0 -138
- package/lib/core/section-registry.cjs +0 -111
- package/lib/core/session-state.cjs +0 -144
- package/lib/core/shallow-doc-parser.cjs +0 -174
- package/lib/core/shallow-doc-parser.test.cjs +0 -226
- package/lib/core/skill-activation-router.cjs +0 -284
- package/lib/core/state-ops.cjs +0 -46
- package/lib/core/statusline-cache.cjs +0 -266
- package/lib/core/token-estimator.cjs +0 -348
- package/lib/core/user-archetype.cjs +0 -239
- package/lib/core/user-md-ops.cjs +0 -524
- package/lib/core/visual-ops.cjs +0 -624
- package/lib/core/write-lock.cjs +0 -149
- package/lib/graph/canvas-graph.js +0 -467
- package/lib/graph/constellation-config.cjs +0 -299
- package/lib/graph/graph-detail-panel.js +0 -165
- package/lib/hmi/ROOM.md +0 -47
- package/lib/hmi/across-session-memory.cjs +0 -604
- package/lib/hmi/cross-room-memory.cjs +0 -575
- package/lib/hmi/decoy-tier.cjs +0 -395
- package/lib/hmi/jtbd-classifier.cjs +0 -219
- package/lib/hmi/jtbd-state.cjs +0 -199
- package/lib/hmi/jtbd-taxonomy.json +0 -392
- package/lib/hmi/selector-dispatcher.cjs +0 -546
- package/lib/hmi/selector-telemetry.cjs +0 -263
- package/lib/hmi/shape-f0-renderer.cjs +0 -139
- package/lib/hmi/shape-f1-fallback.cjs +0 -80
- package/lib/hmi/shape-f1-renderer.cjs +0 -138
- package/lib/hmi/shape-f2-renderer.cjs +0 -132
- package/lib/hmi/shape-f3-renderer.cjs +0 -66
- package/lib/hmi/shape-f4-renderer.cjs +0 -72
- package/lib/hmi/shape-f5-renderer.cjs +0 -155
- package/lib/hmi/shape-f6-plan-review-renderer.cjs +0 -312
- package/lib/hmi/shape-f6-renderer.cjs +0 -144
- package/lib/hmi/shape-g-renderer.cjs +0 -219
- package/lib/hmi/shape-h-renderer.cjs +0 -222
- package/lib/hmi/tier-check.cjs +0 -63
- package/lib/import/PRECONDITIONS.md +0 -41
- package/lib/import/branding.cjs +0 -210
- package/lib/import/branding.test.cjs +0 -235
- package/lib/import/classifications-sync.cjs +0 -104
- package/lib/import/classifications-sync.test.cjs +0 -129
- package/lib/import/enricher.cjs +0 -296
- package/lib/import/enricher.test.cjs +0 -273
- package/lib/import/integration.test.cjs +0 -376
- package/lib/import/manifest.cjs +0 -129
- package/lib/import/manifest.schema.json +0 -185
- package/lib/import/manifest.test.cjs +0 -123
- package/lib/import/meeting-detector.cjs +0 -92
- package/lib/import/meeting-detector.test.cjs +0 -100
- package/lib/import/person-detector.cjs +0 -229
- package/lib/import/person-detector.test.cjs +0 -149
- package/lib/import/report.cjs +0 -186
- package/lib/import/report.test.cjs +0 -186
- package/lib/import/room-md-scaffolder.cjs +0 -49
- package/lib/import/router.cjs +0 -224
- package/lib/import/router.test.cjs +0 -356
- package/lib/import/run-all-tests.cjs +0 -36
- package/lib/import/smoke-test.cjs +0 -213
- package/lib/import/smoke-test.test.cjs +0 -148
- package/lib/import/test-fixtures/collision-vault/preexisting-room/STATE.md +0 -8
- package/lib/import/test-fixtures/collision-vault/preexisting-room/problem-definition/onboarding/onboarding.md +0 -7
- package/lib/import/test-fixtures/collision-vault/source/onboarding.md +0 -5
- package/lib/import/test-fixtures/obsidian-vault/.obsidian/workspace.json +0 -1
- package/lib/import/test-fixtures/obsidian-vault/notes/with-wikilinks.md +0 -4
- package/lib/import/test-fixtures/tiny-vault/notes/2026-01-15-team-sync.md +0 -9
- package/lib/import/test-fixtures/tiny-vault/notes/empty.md +0 -3
- package/lib/import/test-fixtures/tiny-vault/notes/onboarding.md +0 -5
- package/lib/import/test-fixtures/tiny-vault/notes/pricing.md +0 -5
- package/lib/import/test-fixtures/tiny-vault/notes/random.md +0 -4
- package/lib/import/undo.test.cjs +0 -199
- package/lib/import/vault-scanner.cjs +0 -105
- package/lib/import/vault-scanner.test.cjs +0 -67
- package/lib/mcp/app-html/dashboard.html +0 -316
- package/lib/mcp/app-html/graph.html +0 -428
- package/lib/mcp/app-html/mindrian-platform.html +0 -1841
- package/lib/mcp/app-html/wiki.html +0 -383
- package/lib/mcp/app-views.cjs +0 -322
- package/lib/mcp/brain-router.cjs +0 -418
- package/lib/mcp/capability-registry.cjs +0 -62
- package/lib/mcp/larry-context.cjs +0 -46
- package/lib/mcp/larry-server-instructions.md +0 -114
- package/lib/mcp/pipeline-state.cjs +0 -275
- package/lib/mcp/prompts.cjs +0 -302
- package/lib/mcp/resources.cjs +0 -227
- package/lib/mcp/session-catchup.cjs +0 -327
- package/lib/mcp/surface-detect.cjs +0 -75
- package/lib/mcp/tool-router.cjs +0 -1034
- package/lib/memory/aaak-compress.cjs +0 -403
- package/lib/memory/aaak-compress.test.cjs +0 -288
- package/lib/memory/async-artifact-auto-commit.test.cjs +0 -223
- package/lib/memory/bearer-token.test.cjs +0 -315
- package/lib/memory/brain-cache-lru.test.cjs +0 -259
- package/lib/memory/brain-client-query-shape.test.cjs +0 -160
- package/lib/memory/brain-derivation-graceful-degradation.test.cjs +0 -1019
- package/lib/memory/brain-derivation-queue.test.cjs +0 -539
- package/lib/memory/brain-derivation.test.cjs +0 -634
- package/lib/memory/brain-derive-command.test.cjs +0 -534
- package/lib/memory/brain-md-invariants-validator.test.cjs +0 -704
- package/lib/memory/brain-md-schema.test.cjs +0 -467
- package/lib/memory/brain-md-staleness.test.cjs +0 -525
- package/lib/memory/brain-server-resolution.test.cjs +0 -314
- package/lib/memory/chat-context.test.cjs +0 -128
- package/lib/memory/cross-room-aggregator.test.cjs +0 -909
- package/lib/memory/dashboard-server.test.cjs +0 -256
- package/lib/memory/debouncer-drain-at-prompt.test.cjs +0 -389
- package/lib/memory/decision-capture.test.cjs +0 -632
- package/lib/memory/decision-capture.worker.cjs +0 -70
- package/lib/memory/explain-decision-command.test.cjs +0 -521
- package/lib/memory/explain-decision-footer.test.cjs +0 -316
- package/lib/memory/explored-materials-store.cjs +0 -392
- package/lib/memory/feynman-minto-guardian.test.cjs +0 -736
- package/lib/memory/feynman-minto-invariants.test.cjs +0 -511
- package/lib/memory/feynman-prompts-drift.test.cjs +0 -144
- package/lib/memory/feynman-prompts.cjs +0 -151
- package/lib/memory/feynman-prompts.test.cjs +0 -96
- package/lib/memory/folder-memory-quadruple.test.cjs +0 -548
- package/lib/memory/folder-memory.test.cjs +0 -503
- package/lib/memory/framework-chain-composer.test.cjs +0 -515
- package/lib/memory/frontmatter-schema-validator.test.cjs +0 -290
- package/lib/memory/heal-command.test.cjs +0 -604
- package/lib/memory/index-artifact-transaction.test.cjs +0 -333
- package/lib/memory/lazygraph-rs-discoveries-view.test.cjs +0 -122
- package/lib/memory/mcp-input-validation.test.cjs +0 -240
- package/lib/memory/mcp-server-brain-deps.test.cjs +0 -270
- package/lib/memory/mcp-stack-fallback.test.cjs +0 -433
- package/lib/memory/minto-debouncer.test.cjs +0 -407
- package/lib/memory/minto-debouncer.worker.cjs +0 -46
- package/lib/memory/minto-migration-v88.test.cjs +0 -265
- package/lib/memory/minto-schema-v88.test.cjs +0 -390
- package/lib/memory/mos-status-renderer.test.cjs +0 -631
- package/lib/memory/narrative-schema.cjs +0 -376
- package/lib/memory/narrative-schema.test.cjs +0 -209
- package/lib/memory/nav-dial.test.cjs +0 -414
- package/lib/memory/navigation-engine-core.test.cjs +0 -722
- package/lib/memory/navigation-invariants.test.cjs +0 -483
- package/lib/memory/offer-presenter.test.cjs +0 -554
- package/lib/memory/on-stop-snapshot.test.cjs +0 -404
- package/lib/memory/pending-tension-store.cjs +0 -373
- package/lib/memory/post-compact-reinjection.test.cjs +0 -854
- package/lib/memory/post-write-triple.test.cjs +0 -317
- package/lib/memory/pre-compact-snapshot.test.cjs +0 -495
- package/lib/memory/problem-type-router.test.cjs +0 -656
- package/lib/memory/query-efficiency-telemetry.test.cjs +0 -370
- package/lib/memory/recompile-room-references.test.cjs +0 -392
- package/lib/memory/recompile-room-references.worker.cjs +0 -42
- package/lib/memory/record-decision-dual-write.test.cjs +0 -454
- package/lib/memory/room-classifier-strict-mode.test.cjs +0 -417
- package/lib/memory/room-minto-hook.test.cjs +0 -398
- package/lib/memory/rs-discovery-engine.test.cjs +0 -323
- package/lib/memory/run-feynman-tests.cjs +0 -1239
- package/lib/memory/security-trifecta.test.cjs +0 -312
- package/lib/memory/session-start-brain-staleness.test.cjs +0 -363
- package/lib/memory/session-start-triple-injection.test.cjs +0 -514
- package/lib/memory/sessionstart-banner-formatter.cjs +0 -318
- package/lib/memory/sessionstart-minto-banner.test.cjs +0 -373
- package/lib/memory/skill-activation-router.test.cjs +0 -419
- package/lib/memory/stamp-artifact-write.test.cjs +0 -304
- package/lib/memory/statusline-active-room.test.cjs +0 -315
- package/lib/memory/statusline-minto-segment.test.cjs +0 -292
- package/lib/memory/sync-async-entry-points.test.cjs +0 -204
- package/lib/memory/test-bridge-writer-enhanced.cjs +0 -452
- package/lib/memory/test-rs-brain-substrate-shape.cjs +0 -529
- package/lib/memory/test-rs-brain-substrate.cjs +0 -636
- package/lib/memory/test-rs-breakthrough-scorer.cjs +0 -375
- package/lib/memory/test-rs-canon-violations.cjs +0 -218
- package/lib/memory/test-rs-chain-feeder-core.cjs +0 -344
- package/lib/memory/test-rs-chain-feeder-skill-spawn.cjs +0 -297
- package/lib/memory/test-rs-commercial-assessor.cjs +0 -385
- package/lib/memory/test-rs-differential-scorer.cjs +0 -480
- package/lib/memory/test-rs-discovery-engine.cjs +0 -603
- package/lib/memory/test-rs-domain-analyzer.cjs +0 -492
- package/lib/memory/test-rs-egress-primitives.cjs +0 -420
- package/lib/memory/test-rs-expert-mapper.cjs +0 -547
- package/lib/memory/test-rs-explain-command.cjs +0 -443
- package/lib/memory/test-rs-fetcher-academic.cjs +0 -848
- package/lib/memory/test-rs-fetcher-experts.cjs +0 -496
- package/lib/memory/test-rs-fetcher-industry.cjs +0 -702
- package/lib/memory/test-rs-fetcher-patents.cjs +0 -674
- package/lib/memory/test-rs-innovation-classifier.cjs +0 -301
- package/lib/memory/test-rs-mind-map.cjs +0 -646
- package/lib/memory/test-rs-neo4j-writer.cjs +0 -518
- package/lib/memory/test-rs-nl-to-query.cjs +0 -449
- package/lib/memory/test-rs-pinecone-bridge.cjs +0 -277
- package/lib/memory/test-rs-preprocessor.cjs +0 -433
- package/lib/memory/test-rs-query-matrix.cjs +0 -391
- package/lib/memory/test-rs-query-to-text.cjs +0 -551
- package/lib/memory/test-rs-sqlite-mirror.cjs +0 -649
- package/lib/memory/test-rs-thesis-generator.cjs +0 -360
- package/lib/memory/triple-context-formatter.cjs +0 -473
- package/lib/memory/triple-context-formatter.test.cjs +0 -442
- package/lib/memory/user-md-persona.test.cjs +0 -565
- package/lib/memory/userpromptsubmit-integration.test.cjs +0 -690
- package/lib/memory/validators/README.md +0 -157
- package/lib/memory/validators/brain-md-invariants.cjs +0 -475
- package/lib/memory/validators/brain-substrate-invariants.cjs +0 -285
- package/lib/memory/validators/external-academic-invariants.cjs +0 -249
- package/lib/memory/validators/external-industry-invariants.cjs +0 -271
- package/lib/memory/validators/external-patents-invariants.cjs +0 -266
- package/lib/memory/validators/minto-invariants.cjs +0 -62
- package/lib/memory/validators/navigation-invariants.cjs +0 -340
- package/lib/memory/validators/queue-health.cjs +0 -95
- package/lib/memory/validators/snapshot-integrity.cjs +0 -129
- package/lib/memory/validators/stale-lifecycle.cjs +0 -116
- package/lib/memory/vault-section-minto-generator-atomic.test.cjs +0 -556
- package/lib/memory/vault-section-minto-generator-atomic.worker.cjs +0 -73
- package/lib/memory/write-lock-atomic.test.cjs +0 -137
- package/lib/memory/write-lock-atomic.worker.cjs +0 -55
- package/lib/parity/check-parity.cjs +0 -83
- package/lib/presentation/presentation-server.cjs +0 -101
- package/lib/presentation/presentation-watcher.cjs +0 -123
- package/lib/quickview/hub-server.cjs +0 -719
- package/lib/quickview/server.cjs +0 -533
- package/lib/render/JTBD-PALETTES.md +0 -145
- package/lib/render/ROOM.md +0 -59
- package/lib/render/render-v2.cjs +0 -486
- package/lib/render/render-v2.test.cjs +0 -267
- package/lib/render/render.cjs +0 -65
- package/lib/state/ROOM.md +0 -46
- package/lib/state/state-md-parser.cjs +0 -215
- package/lib/statusline/ROOM.md +0 -38
- package/lib/statusline/banner-suppression.cjs +0 -50
- package/lib/statusline/surface-detect.cjs +0 -85
- package/lib/update-bootstrap.sh.template +0 -145
- package/lib/vault/frontmatter-schema.cjs +0 -297
- package/lib/vault/room-scanner.cjs +0 -352
- package/lib/vault/wikilink-builder.cjs +0 -231
- package/lib/vault/wikilink-builder.test.cjs +0 -182
- package/lib/wiki/graph-links.cjs +0 -281
- package/lib/wiki/page-renderer.cjs +0 -229
- package/lib/wiki/wiki-chat.cjs +0 -81
- package/lib/wiki/wiki-layout.cjs +0 -1459
- package/lib/wiki/wiki-search.cjs +0 -142
- package/lib/wiki/wiki-server.cjs +0 -678
- package/lib/wiki/wiki-watcher.cjs +0 -105
- package/pipelines/analogy/01-decompose.md +0 -80
- package/pipelines/analogy/02-abstract.md +0 -87
- package/pipelines/analogy/03-search.md +0 -135
- package/pipelines/analogy/04-transfer.md +0 -101
- package/pipelines/analogy/05-validate.md +0 -106
- package/pipelines/analogy/CHAIN.md +0 -56
- package/pipelines/discovery/01-explore-domains.md +0 -44
- package/pipelines/discovery/02-think-hats.md +0 -50
- package/pipelines/discovery/03-analyze-needs.md +0 -54
- package/pipelines/discovery/CHAIN.md +0 -37
- package/pipelines/thesis/01-structure-argument.md +0 -45
- package/pipelines/thesis/02-challenge-assumptions.md +0 -48
- package/pipelines/thesis/03-build-thesis.md +0 -54
- package/pipelines/thesis/CHAIN.md +0 -37
- package/references/brain/causal-directives.md +0 -91
- package/references/brain/causal-enrichment.cypher +0 -165
- package/references/brain/command-triggers-schema.md +0 -226
- package/references/brain/graph-architecture.md +0 -317
- package/references/brain/query-patterns.md +0 -460
- package/references/brain/room-hierarchy-schema.md +0 -218
- package/references/brain/schema.md +0 -76
- package/references/capability-radar/capabilities-index.md +0 -241
- package/references/capability-radar/changelog-cache.md +0 -81
- package/references/causal/causal-schema.md +0 -103
- package/references/design/email-template-standard.md +0 -155
- package/references/design/graph-visualization-standard.md +0 -178
- package/references/document-generation.md +0 -179
- package/references/hsi/HSI-TOOLS-REFERENCE.md +0 -222
- package/references/import-config.md +0 -141
- package/references/integrations/detection-patterns.md +0 -101
- package/references/meeting/artifact-template.md +0 -377
- package/references/meeting/cross-meeting-intelligence.md +0 -216
- package/references/meeting/cross-relationship-patterns.md +0 -202
- package/references/meeting/live-join-interface.md +0 -244
- package/references/meeting/section-mapping.md +0 -192
- package/references/meeting/segment-classification.md +0 -258
- package/references/meeting/speaker-profile-template.md +0 -219
- package/references/meeting/summary-template.md +0 -348
- package/references/meeting/transcript-patterns.md +0 -226
- package/references/methodology/analyze-needs.md +0 -135
- package/references/methodology/analyze-systems.md +0 -121
- package/references/methodology/analyze-timing.md +0 -149
- package/references/methodology/beautiful-question.md +0 -109
- package/references/methodology/build-knowledge.md +0 -161
- package/references/methodology/build-thesis.md +0 -237
- package/references/methodology/challenge-assumptions.md +0 -127
- package/references/methodology/diagnose.md +0 -169
- package/references/methodology/dominant-designs.md +0 -212
- package/references/methodology/explore-domains.md +0 -147
- package/references/methodology/explore-futures.md +0 -163
- package/references/methodology/explore-trends.md +0 -129
- package/references/methodology/find-bottlenecks.md +0 -131
- package/references/methodology/grade.md +0 -211
- package/references/methodology/index.md +0 -97
- package/references/methodology/leadership.md +0 -200
- package/references/methodology/lean-canvas.md +0 -116
- package/references/methodology/macro-trends.md +0 -192
- package/references/methodology/map-unknowns.md +0 -137
- package/references/methodology/mullins-7-domains.md +0 -104
- package/references/methodology/problem-types.md +0 -65
- package/references/methodology/root-cause.md +0 -178
- package/references/methodology/sapphire-encoding.md +0 -355
- package/references/methodology/scenario-plan.md +0 -178
- package/references/methodology/score-innovation.md +0 -154
- package/references/methodology/structure-argument.md +0 -158
- package/references/methodology/systems-thinking.md +0 -159
- package/references/methodology/think-hats.md +0 -147
- package/references/methodology/triz-matrix.json +0 -751
- package/references/methodology/triz-principles.md +0 -501
- package/references/methodology/user-needs.md +0 -199
- package/references/methodology/validate.md +0 -163
- package/references/methodology/value-proposition.md +0 -244
- package/references/opportunities/funding-lifecycle.md +0 -103
- package/references/opportunities/grant-api-patterns.md +0 -99
- package/references/opportunities/opportunity-template.md +0 -84
- package/references/personality/assessment-philosophy.md +0 -72
- package/references/personality/lexicon.md +0 -100
- package/references/personality/persona-chains.md +0 -56
- package/references/personality/pws-lexicon-full.md +0 -499
- package/references/personality/voice-dna.md +0 -156
- package/references/personas/hat-perspectives.md +0 -76
- package/references/personas/persona-template.md +0 -63
- package/references/pipeline/act-output-contract.md +0 -88
- package/references/pipeline/chains-index.md +0 -39
- package/references/pws-profile-generation.md +0 -79
- package/references/reasoning/reasoning-schema.md +0 -143
- package/references/reasoning/reasoning-template.md +0 -68
- package/references/reasoning/run-template.md +0 -38
- package/references/research/RESEARCH_14_CLAUDE_CODE_SOURCE_ARCHITECTURE.md +0 -209
- package/references/research/RESEARCH_15_V1.8_OPTIMIZATION_JTBD.md +0 -375
- package/references/research/RESEARCH_16_NATIVE_FIRST_PLUGIN_ARCHITECTURE.md +0 -575
- package/references/research/RESEARCH_17_MCP_UI_FRAMEWORKS.md +0 -272
- package/references/taxonomy/TAXONOMY.md +0 -192
- package/references/templates/MINTO.md +0 -36
- package/references/user-research/2026-04-05-leah-lawrence-session.md +0 -202
- package/references/vault-kit/README.md +0 -35
- package/references/vault-kit/app.json +0 -12
- package/references/vault-kit/appearance.json +0 -12
- package/references/vault-kit/graph.json +0 -35
- package/references/vault-kit/snippets/mindrian-destijl.css +0 -297
- package/references/vault-kit/templates/new-artifact.md +0 -37
- package/references/vault-kit/templates/new-meeting-note.md +0 -35
- package/references/vault-kit/templates/new-team-profile.md +0 -29
- package/references/vault-kit/templates/new-xref.md +0 -35
- package/references/visual/symbol-system.md +0 -151
- package/skills/MOSDeckEngine/SKILL.md +0 -325
- package/skills/brain-connector/SKILL.md +0 -114
- package/skills/context-engine/SKILL.md +0 -147
- package/skills/conversation-mode/SKILL.md +0 -102
- package/skills/larry-personality/SKILL.md +0 -219
- package/skills/larry-personality/framework-chains.md +0 -92
- package/skills/larry-personality/mode-engine.md +0 -185
- package/skills/mullins-scaffold/SKILL.md +0 -61
- package/skills/mullins-scaffold/scaffold.json +0 -146
- package/skills/pws-methodology/SKILL.md +0 -49
- package/skills/room-passive/SKILL.md +0 -165
- package/skills/room-proactive/SKILL.md +0 -250
- package/skills/ui-system/SKILL.md +0 -277
package/bin/cli.js
CHANGED
|
@@ -1,88 +1,214 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
'use strict';
|
|
3
3
|
/*
|
|
4
|
-
*
|
|
4
|
+
* MindrianOS installer + diagnostics CLI.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
6
|
+
* npm package: @mindrian_os/cli -> `npx @mindrian_os/cli` installs MindrianOS
|
|
7
|
+
* installed command: mindrian-os <install|doctor|update> [args] (no subcommand = install)
|
|
7
8
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
9
|
+
* The package name is the verb: running it with no subcommand (or with only
|
|
10
|
+
* flags, e.g. `npx @mindrian_os/cli --version 1.13.0-beta.9`) does the
|
|
11
|
+
* install. `doctor` and `update` are still explicit subcommands.
|
|
12
|
+
*
|
|
13
|
+
* install Install (or bring current) MindrianOS by driving Claude Code's
|
|
14
|
+
* own plugin CLI: registers the Mindrian marketplace, refreshes the
|
|
15
|
+
* catalog, then `claude plugin install` + `claude plugin update` on
|
|
16
|
+
* mos@mindrian-marketplace. Requires the `claude` CLI on PATH (prints
|
|
17
|
+
* how to get it if missing). Flags pass through to `claude plugin
|
|
18
|
+
* install` (e.g. `--version 1.13.0-beta.9`); when a version is pinned
|
|
19
|
+
* the update step is skipped. The Brain key stays a printed hint --
|
|
20
|
+
* writing it to the environment is the one side effect left to you.
|
|
21
|
+
* doctor Run /mos:doctor's diagnostic from OUTSIDE Claude Code so you catch
|
|
22
|
+
* install/drift problems before a session. Resolves the installed
|
|
23
|
+
* plugin (marketplace cache, dev clone, or MINDRIAN_OS_ROOT), then
|
|
24
|
+
* `node <pluginRoot>/scripts/doctor.cjs <args...>`. If the plugin is
|
|
25
|
+
* not installed, says so plainly instead of throwing a node stack.
|
|
26
|
+
* update Bring MindrianOS current. For a marketplace install: `claude plugin
|
|
27
|
+
* marketplace update` + `claude plugin update mos@mindrian-marketplace`.
|
|
28
|
+
* For a dev clone (MINDRIAN_OS_ROOT set): `git -C <root> pull --ff-only`
|
|
29
|
+
* + `bash <root>/install.sh`.
|
|
19
30
|
*
|
|
20
31
|
* GSD pattern: pure CJS, node built-ins only, zero npm deps. No CLI framework
|
|
21
32
|
* (no commander/yargs/meow). process.argv switch-case routing, mirroring
|
|
22
33
|
* bin/mindrian-tools.cjs and ~/.claude/get-shit-done/bin/gsd-tools.cjs.
|
|
23
34
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
35
|
+
* Plugin-root resolution is delegated to lib/core/active-plugin-root.cjs (the
|
|
36
|
+
* single source of truth: MINDRIAN_OS_ROOT -> installed_plugins.json -> newest
|
|
37
|
+
* marketplace-cache mos/<version>/ -> legacy clone -> not-found). doctor and
|
|
38
|
+
* update both read from it; scripts/statusline-mos shells out to its CLI form.
|
|
26
39
|
*/
|
|
27
40
|
|
|
28
41
|
const { spawnSync } = require('node:child_process');
|
|
29
42
|
const path = require('node:path');
|
|
30
43
|
const os = require('node:os');
|
|
44
|
+
const fs = require('node:fs');
|
|
45
|
+
// The ONE plugin-root resolver: installed_plugins.json (temporal truth) first,
|
|
46
|
+
// then the pre-release-tolerant marketplace-cache scan, then a legacy clone.
|
|
47
|
+
const { resolveActivePluginRoot } = require('../lib/core/active-plugin-root.cjs');
|
|
48
|
+
|
|
49
|
+
const MARKETPLACE = 'jsagir/mindrian-marketplace';
|
|
50
|
+
const PLUGIN_SPEC = 'mos@mindrian-marketplace';
|
|
31
51
|
|
|
32
|
-
|
|
33
|
-
|
|
52
|
+
// On Windows, npm-global CLIs are installed as `.cmd` shims (e.g. `claude.cmd`),
|
|
53
|
+
// not bare executables. Node's spawnSync does NOT consult PATHEXT, so spawning
|
|
54
|
+
// 'claude' directly fails with ENOENT even when `claude --version` works in the
|
|
55
|
+
// user's interactive shell. Routing through the shell (cmd.exe) on win32 lets
|
|
56
|
+
// PATHEXT resolve the `.cmd` shim. POSIX is unaffected -- shell stays false there.
|
|
57
|
+
//
|
|
58
|
+
// IMPORTANT: shell is scoped to `claude` spawns ONLY (via runClaude below), NOT
|
|
59
|
+
// applied to the generic run() helper. run() is also called as
|
|
60
|
+
// run(process.execPath, ...) in the doctor subcommand, and on Windows
|
|
61
|
+
// process.execPath is `C:\Program Files\nodejs\node.exe` (contains a space).
|
|
62
|
+
// With shell:true Node passes the command unquoted to cmd.exe, which would parse
|
|
63
|
+
// `C:\Program` as the command and break. node/git resolve fine WITHOUT shell.
|
|
64
|
+
const isWindows = process.platform === 'win32';
|
|
34
65
|
|
|
35
66
|
function run(cmd, args, opts) {
|
|
36
67
|
return spawnSync(cmd, args, { stdio: 'inherit', ...opts });
|
|
37
68
|
}
|
|
38
69
|
|
|
70
|
+
// Spawn the `claude` CLI, shelling out on Windows so the `claude.cmd` shim
|
|
71
|
+
// resolves via PATHEXT. All `claude` invocations MUST go through this wrapper.
|
|
72
|
+
function runClaude(args, opts) {
|
|
73
|
+
return run('claude', args, { shell: isWindows, ...opts });
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function ok(result) {
|
|
77
|
+
return result && typeof result.status === 'number' && result.status === 0;
|
|
78
|
+
}
|
|
79
|
+
|
|
39
80
|
function exitFrom(result) {
|
|
40
81
|
// spawnSync sets status=null when the process was killed by a signal or
|
|
41
82
|
// failed to launch; treat that as a generic failure.
|
|
42
83
|
process.exit(result && typeof result.status === 'number' ? result.status : 1);
|
|
43
84
|
}
|
|
44
85
|
|
|
86
|
+
function hasDoctor(dir) {
|
|
87
|
+
try {
|
|
88
|
+
return !!dir && fs.existsSync(path.join(dir, 'scripts', 'doctor.cjs'));
|
|
89
|
+
} catch {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
45
94
|
function printUsage() {
|
|
46
|
-
console.log('mindrian-os <install|doctor|update>');
|
|
47
|
-
console.log(' install
|
|
48
|
-
console.log(' doctor run the MindrianOS install/drift diagnostic (
|
|
49
|
-
console.log(' update
|
|
95
|
+
console.log('mindrian-os <install|doctor|update> (no subcommand = install)');
|
|
96
|
+
console.log(' install install / bring current via Claude Code (marketplace add + plugin install/update)');
|
|
97
|
+
console.log(' doctor run the MindrianOS install/drift diagnostic (passes flags through to /mos:doctor)');
|
|
98
|
+
console.log(' update bring MindrianOS current (marketplace update + plugin update; or git pull for a dev clone)');
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function requireClaudeCli() {
|
|
102
|
+
const check = spawnSync('claude', ['--version'], { stdio: 'ignore', shell: isWindows });
|
|
103
|
+
if (ok(check)) return true;
|
|
104
|
+
console.error('Claude Code is not installed (no `claude` command on your PATH).');
|
|
105
|
+
console.error('Install it first:');
|
|
106
|
+
console.error(' npm install -g @anthropic-ai/claude-code');
|
|
107
|
+
console.error('Then re-run:');
|
|
108
|
+
console.error(' npx @mindrian_os/cli');
|
|
109
|
+
return false;
|
|
50
110
|
}
|
|
51
111
|
|
|
52
|
-
|
|
112
|
+
// No subcommand, or flags only (e.g. `npx @mindrian_os/cli --version 1.13.0-beta.9`),
|
|
113
|
+
// means "install" -- the package name is the verb. Pass any leading flags through.
|
|
114
|
+
let sub = process.argv[2];
|
|
115
|
+
let argOffset = 3;
|
|
116
|
+
if (!sub || sub.startsWith('-')) {
|
|
117
|
+
sub = 'install';
|
|
118
|
+
argOffset = 2;
|
|
119
|
+
}
|
|
53
120
|
|
|
54
121
|
switch (sub) {
|
|
55
122
|
case 'doctor': {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
123
|
+
const { root } = resolveActivePluginRoot();
|
|
124
|
+
if (!root || !hasDoctor(root)) {
|
|
125
|
+
console.error('MindrianOS does not appear to be installed (could not find scripts/doctor.cjs).');
|
|
126
|
+
console.error('Looked under: ' + path.join(os.homedir(), '.claude', 'plugins') + (process.env.MINDRIAN_OS_ROOT ? ' and $MINDRIAN_OS_ROOT' : ''));
|
|
127
|
+
console.error('Install it first:');
|
|
128
|
+
console.error(' npx @mindrian_os/cli');
|
|
129
|
+
process.exit(1);
|
|
130
|
+
}
|
|
131
|
+
const r = run(process.execPath, [path.join(root, 'scripts', 'doctor.cjs'), ...process.argv.slice(argOffset)]);
|
|
59
132
|
exitFrom(r);
|
|
60
133
|
break;
|
|
61
134
|
}
|
|
62
135
|
|
|
63
136
|
case 'update': {
|
|
64
|
-
//
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
137
|
+
// Dev clone (MINDRIAN_OS_ROOT or a legacy hand-clone): git pull + re-run install.sh.
|
|
138
|
+
const { root } = resolveActivePluginRoot();
|
|
139
|
+
const isDevClone = !!process.env.MINDRIAN_OS_ROOT
|
|
140
|
+
|| (root && fs.existsSync(path.join(root, '.git')) && fs.existsSync(path.join(root, 'install.sh')));
|
|
141
|
+
if (isDevClone && root) {
|
|
142
|
+
run('git', ['-C', root, 'pull', '--ff-only']);
|
|
143
|
+
const r = run('bash', [path.join(root, 'install.sh')]);
|
|
144
|
+
exitFrom(r);
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
// Marketplace install: use Claude Code's own update path.
|
|
148
|
+
if (!requireClaudeCli()) process.exit(1);
|
|
149
|
+
console.log('Refreshing the marketplace catalog...');
|
|
150
|
+
runClaude(['plugin', 'marketplace', 'update']);
|
|
151
|
+
console.log('Updating the MindrianOS plugin...');
|
|
152
|
+
const r = runClaude(['plugin', 'update', PLUGIN_SPEC]);
|
|
153
|
+
if (!ok(r)) {
|
|
154
|
+
console.error('');
|
|
155
|
+
console.error('`claude plugin update ' + PLUGIN_SPEC + '` did not complete.');
|
|
156
|
+
console.error('Try inside Claude Code: /plugin marketplace update then /plugin update ' + PLUGIN_SPEC);
|
|
157
|
+
exitFrom(r);
|
|
158
|
+
}
|
|
159
|
+
console.log('');
|
|
160
|
+
console.log('MindrianOS is up to date. Run `claude plugin list` to confirm the version.');
|
|
161
|
+
console.log('Verify: mindrian-os doctor (or /mos:doctor inside Claude Code)');
|
|
162
|
+
process.exit(0);
|
|
69
163
|
break;
|
|
70
164
|
}
|
|
71
165
|
|
|
72
166
|
case 'install': {
|
|
73
|
-
//
|
|
74
|
-
//
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
167
|
+
// Flags after `install` (or leading flags when `install` is implied) pass
|
|
168
|
+
// through to `claude plugin install` (e.g. `... --version 1.13.0-beta.9`).
|
|
169
|
+
const passthrough = process.argv.slice(argOffset);
|
|
170
|
+
const pinned = passthrough.some((a) => a === '--version' || a.startsWith('--version='));
|
|
171
|
+
|
|
172
|
+
if (!requireClaudeCli()) process.exit(1);
|
|
173
|
+
|
|
174
|
+
// Register the Mindrian marketplace (idempotent) and refresh its catalog so
|
|
175
|
+
// we resolve the current ref. Both are best-effort -- "already added" /
|
|
176
|
+
// "already up to date" exit non-zero on some Claude Code versions; fine.
|
|
177
|
+
console.log('Adding the Mindrian marketplace...');
|
|
178
|
+
runClaude(['plugin', 'marketplace', 'add', MARKETPLACE]);
|
|
179
|
+
console.log('Refreshing the marketplace catalog...');
|
|
180
|
+
runClaude(['plugin', 'marketplace', 'update']);
|
|
181
|
+
|
|
182
|
+
// Install. On an already-installed plugin Claude Code reports "already
|
|
183
|
+
// installed" and still exits 0 -- the update step below then moves it
|
|
184
|
+
// forward to the current ref (unless the caller pinned a version).
|
|
185
|
+
console.log('Installing the MindrianOS plugin...');
|
|
186
|
+
const inst = runClaude(['plugin', 'install', PLUGIN_SPEC, ...passthrough]);
|
|
187
|
+
let updated = false;
|
|
188
|
+
if (!pinned) {
|
|
189
|
+
console.log('Bringing the plugin to the current build...');
|
|
190
|
+
const upd = runClaude(['plugin', 'update', PLUGIN_SPEC]);
|
|
191
|
+
updated = ok(upd);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
if (!ok(inst) && !updated) {
|
|
195
|
+
console.error('');
|
|
196
|
+
console.error('Installing ' + PLUGIN_SPEC + ' did not complete.');
|
|
197
|
+
console.error('Finish it by hand inside Claude Code:');
|
|
198
|
+
console.error(' /plugin marketplace add ' + MARKETPLACE);
|
|
199
|
+
console.error(' /plugin install ' + PLUGIN_SPEC);
|
|
200
|
+
exitFrom(inst);
|
|
201
|
+
}
|
|
202
|
+
|
|
78
203
|
console.log('');
|
|
79
|
-
console.log('
|
|
80
|
-
console.log(' curl -fsSL https://raw.githubusercontent.com/jsagir/mindrian-os-plugin/main/install.sh | bash');
|
|
204
|
+
console.log('MindrianOS is installed and current. Run `claude plugin list` to see the version.');
|
|
81
205
|
console.log('');
|
|
82
|
-
console.log('Optional
|
|
83
|
-
console.log('
|
|
206
|
+
console.log('Optional -- connect the Brain for enriched intelligence:');
|
|
207
|
+
console.log(' inside Claude Code: /mos:setup (choose "Configure Brain", paste your key)');
|
|
208
|
+
console.log(' or set it directly: export MINDRIAN_BRAIN_KEY="<your-key>" (or add it to ~/.claude/.env)');
|
|
84
209
|
console.log('');
|
|
85
|
-
console.log('
|
|
210
|
+
console.log('Verify: mindrian-os doctor (or /mos:doctor inside Claude Code)');
|
|
211
|
+
console.log('Start: open a fresh Claude Code session, then /mos:onboard');
|
|
86
212
|
process.exit(0);
|
|
87
213
|
break;
|
|
88
214
|
}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
/*
|
|
3
|
+
* lib/core/active-plugin-root.cjs -- the ONE resolver for "where is the active
|
|
4
|
+
* MindrianOS plugin install on this machine?"
|
|
5
|
+
*
|
|
6
|
+
* Background: before this module, three different places guessed independently
|
|
7
|
+
* (bin/cli.js hardcoded a legacy path; scripts/statusline-mos did `ls cache |
|
|
8
|
+
* sort -V` with a pure-semver regex that rejected `-beta.N`; context-monitor
|
|
9
|
+
* inherited whatever those picked). Three guessers, three failure modes -- a box
|
|
10
|
+
* with 1.12.0 + 1.13.0-beta.9 in the cache ended up rendering the statusline,
|
|
11
|
+
* the version banner, and MINDRIAN_OS_ROOT from the wrong (older) version. This
|
|
12
|
+
* collapses them into one source of truth.
|
|
13
|
+
*
|
|
14
|
+
* Precedence (first hit wins):
|
|
15
|
+
* 1. MINDRIAN_OS_ROOT env var -- tests, dev boxes, hand clones.
|
|
16
|
+
* 2. ~/.claude/plugins/installed_plugins.json
|
|
17
|
+
* -- Claude Code's own registry of the
|
|
18
|
+
* ACTIVE install of mos@mindrian-marketplace.
|
|
19
|
+
* Temporal truth: it knows which one is
|
|
20
|
+
* current even when "highest semver" is not
|
|
21
|
+
* the active one (e.g. a pinned older version).
|
|
22
|
+
* 3. ~/.claude/plugins/cache/<marketplace>/mos/<version>/
|
|
23
|
+
* -- newest valid version dir; pre-release
|
|
24
|
+
* tolerant (`sort -V` ordering). Fallback
|
|
25
|
+
* for when installed_plugins.json is missing
|
|
26
|
+
* or unparseable.
|
|
27
|
+
* 4. ~/.claude/plugins/mindrian-os/ -- legacy hand-clone layout.
|
|
28
|
+
* 5. null -- not installed.
|
|
29
|
+
*
|
|
30
|
+
* Use as a module:
|
|
31
|
+
* const { resolveActivePluginRoot } = require('<...>/lib/core/active-plugin-root.cjs');
|
|
32
|
+
* const { root, source } = resolveActivePluginRoot(); // root may be null
|
|
33
|
+
*
|
|
34
|
+
* Use as a CLI (so a bash wrapper -- e.g. scripts/statusline-mos -- can shell out):
|
|
35
|
+
* node active-plugin-root.cjs -> prints the resolved path, or nothing; exit 0 if found, 1 if not
|
|
36
|
+
* node active-plugin-root.cjs --json -> prints {"root": "<path|null>", "source": "<...>"}
|
|
37
|
+
*
|
|
38
|
+
* Canon Part 8: this reads LOCAL files only (~/.claude/plugins/). Zero network.
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
const fs = require('node:fs');
|
|
42
|
+
const path = require('node:path');
|
|
43
|
+
const os = require('node:os');
|
|
44
|
+
|
|
45
|
+
const PLUGIN_KEYS = ['mos', 'mindrian-os']; // accept either marketplace plugin name
|
|
46
|
+
|
|
47
|
+
// A valid plugin install dir has a .claude-plugin/plugin.json.
|
|
48
|
+
function isPluginDir(dir) {
|
|
49
|
+
try {
|
|
50
|
+
return !!dir && fs.statSync(dir).isDirectory() && fs.existsSync(path.join(dir, '.claude-plugin', 'plugin.json'));
|
|
51
|
+
} catch {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function fromInstalledPlugins(home) {
|
|
57
|
+
// Shape (Claude Code 2.x):
|
|
58
|
+
// { "version": N, "plugins": { "mos@mindrian-marketplace": [ { "installPath": "...", ... } ], ... } }
|
|
59
|
+
// Defensive: the key might be just "mos"; the value might be an object not a
|
|
60
|
+
// 1-element array; the path field might be installPath / path / dir.
|
|
61
|
+
const file = path.join(home, '.claude', 'plugins', 'installed_plugins.json');
|
|
62
|
+
let data;
|
|
63
|
+
try {
|
|
64
|
+
data = JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
65
|
+
} catch {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const plugins = (data && (data.plugins || data)) || {};
|
|
69
|
+
for (const key of Object.keys(plugins)) {
|
|
70
|
+
const name = String(key).split('@')[0];
|
|
71
|
+
if (!PLUGIN_KEYS.includes(name)) continue;
|
|
72
|
+
let entry = plugins[key];
|
|
73
|
+
if (Array.isArray(entry)) entry = entry[0];
|
|
74
|
+
if (!entry || typeof entry !== 'object') continue;
|
|
75
|
+
const p = entry.installPath || entry.path || entry.dir;
|
|
76
|
+
if (p && isPluginDir(p)) return p;
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function fromMarketplaceCache(home) {
|
|
82
|
+
const cacheBase = path.join(home, '.claude', 'plugins', 'cache');
|
|
83
|
+
let marketplaces;
|
|
84
|
+
try {
|
|
85
|
+
marketplaces = fs.readdirSync(cacheBase, { withFileTypes: true });
|
|
86
|
+
} catch {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
const found = [];
|
|
90
|
+
for (const mk of marketplaces) {
|
|
91
|
+
if (!mk.isDirectory()) continue;
|
|
92
|
+
for (const pluginName of PLUGIN_KEYS) {
|
|
93
|
+
const pluginDir = path.join(cacheBase, mk.name, pluginName);
|
|
94
|
+
let versions;
|
|
95
|
+
try {
|
|
96
|
+
versions = fs.readdirSync(pluginDir, { withFileTypes: true });
|
|
97
|
+
} catch {
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
for (const v of versions) {
|
|
101
|
+
if (!v.isDirectory()) continue;
|
|
102
|
+
const candidate = path.join(pluginDir, v.name);
|
|
103
|
+
if (isPluginDir(candidate)) found.push({ dir: candidate, ver: v.name });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (!found.length) return null;
|
|
108
|
+
// `localeCompare` numeric ordering matches `sort -V` for the cases we care
|
|
109
|
+
// about: 1.12.0 < 1.12.5.1 < 1.13.0-beta.9 < 1.13.0-beta.11 < 1.13.0.
|
|
110
|
+
found.sort((a, b) => String(a.ver).localeCompare(String(b.ver), undefined, { numeric: true }));
|
|
111
|
+
return found[found.length - 1].dir;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function fromLegacyClone(home) {
|
|
115
|
+
const legacy = path.join(home, '.claude', 'plugins', 'mindrian-os');
|
|
116
|
+
return isPluginDir(legacy) ? legacy : null;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Phase 123 Plan-02 (HARNESS-123-05): classify the resolved plugin root into one
|
|
120
|
+
// of the 4 known topologies. RESEARCH Pitfall 4: a legacy-clone dir can carry an
|
|
121
|
+
// unrelated origin remote (the dogfood box's ~/.claude/plugins/mindrian-os/ has
|
|
122
|
+
// its origin pointed at mindrian-agno-backend.git) so a naive "has origin ->
|
|
123
|
+
// dev-clone" heuristic mis-classifies it. The order below is precedence-locked:
|
|
124
|
+
// env override and explicit legacy path win before the structural git probe.
|
|
125
|
+
//
|
|
126
|
+
// Returns one of: 'marketplace-cache' | 'dev-clone' | 'legacy' | 'not-found'.
|
|
127
|
+
function classifyTopology(root, source) {
|
|
128
|
+
if (!root) return 'not-found';
|
|
129
|
+
// env override -> always treated as a dev clone (tests, dev boxes, hand clones).
|
|
130
|
+
if (source === 'MINDRIAN_OS_ROOT') return 'dev-clone';
|
|
131
|
+
|
|
132
|
+
const home = os.homedir();
|
|
133
|
+
// Explicit legacy path wins before the structural check -- some legacy clones
|
|
134
|
+
// carry an unrelated origin remote (Pitfall 4).
|
|
135
|
+
try {
|
|
136
|
+
if (path.resolve(root) === path.resolve(home, '.claude', 'plugins', 'mindrian-os')) {
|
|
137
|
+
return 'legacy';
|
|
138
|
+
}
|
|
139
|
+
} catch { /* ignore */ }
|
|
140
|
+
|
|
141
|
+
// Marketplace cache: under ~/.claude/plugins/cache/<mp>/{mos|mindrian-os}/<version>/.
|
|
142
|
+
try {
|
|
143
|
+
const cacheBase = path.resolve(home, '.claude', 'plugins', 'cache');
|
|
144
|
+
const resolved = path.resolve(root);
|
|
145
|
+
if (resolved.startsWith(cacheBase + path.sep)) {
|
|
146
|
+
return 'marketplace-cache';
|
|
147
|
+
}
|
|
148
|
+
} catch { /* ignore */ }
|
|
149
|
+
|
|
150
|
+
// Dev clone structural probe: a .git + install.sh + an origin remote URL that
|
|
151
|
+
// mentions the plugin repo name. execSync is wrapped in try/catch so a missing
|
|
152
|
+
// git binary or a non-git dir falls through cleanly.
|
|
153
|
+
try {
|
|
154
|
+
if (fs.existsSync(path.join(root, '.git')) && fs.existsSync(path.join(root, 'install.sh'))) {
|
|
155
|
+
const cp = require('node:child_process');
|
|
156
|
+
let originUrl = '';
|
|
157
|
+
try {
|
|
158
|
+
originUrl = cp.execSync('git -C ' + JSON.stringify(root) + ' remote get-url origin', {
|
|
159
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
160
|
+
encoding: 'utf8',
|
|
161
|
+
timeout: 1500,
|
|
162
|
+
}).trim();
|
|
163
|
+
} catch { /* no origin remote, swallow */ }
|
|
164
|
+
if (/mindrian-os-plugin/i.test(originUrl)) return 'dev-clone';
|
|
165
|
+
}
|
|
166
|
+
} catch { /* ignore */ }
|
|
167
|
+
|
|
168
|
+
// Defensive defaults: respect the resolver's source classification.
|
|
169
|
+
if (source === 'legacy-clone') return 'legacy';
|
|
170
|
+
// A resolved plugin dir that is not under a recognized cache path and not the
|
|
171
|
+
// legacy fixed path and does not pass the dev-clone probe -- treat as
|
|
172
|
+
// marketplace-cache (the bin/cli.js + installed_plugins.json path).
|
|
173
|
+
return 'marketplace-cache';
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
function resolveActivePluginRoot() {
|
|
177
|
+
const envRoot = process.env.MINDRIAN_OS_ROOT;
|
|
178
|
+
if (envRoot) {
|
|
179
|
+
return { root: envRoot, source: 'MINDRIAN_OS_ROOT', topology: classifyTopology(envRoot, 'MINDRIAN_OS_ROOT') };
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
const home = os.homedir();
|
|
183
|
+
let r;
|
|
184
|
+
if ((r = fromInstalledPlugins(home))) {
|
|
185
|
+
return { root: r, source: 'installed_plugins.json', topology: classifyTopology(r, 'installed_plugins.json') };
|
|
186
|
+
}
|
|
187
|
+
if ((r = fromMarketplaceCache(home))) {
|
|
188
|
+
return { root: r, source: 'marketplace-cache', topology: classifyTopology(r, 'marketplace-cache') };
|
|
189
|
+
}
|
|
190
|
+
if ((r = fromLegacyClone(home))) {
|
|
191
|
+
return { root: r, source: 'legacy-clone', topology: classifyTopology(r, 'legacy-clone') };
|
|
192
|
+
}
|
|
193
|
+
return { root: null, source: 'not-found', topology: 'not-found' };
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
module.exports = { resolveActivePluginRoot, classifyTopology };
|
|
197
|
+
|
|
198
|
+
// CLI entry point.
|
|
199
|
+
if (require.main === module) {
|
|
200
|
+
const out = resolveActivePluginRoot();
|
|
201
|
+
if (process.argv.includes('--json')) {
|
|
202
|
+
process.stdout.write(JSON.stringify(out) + '\n');
|
|
203
|
+
} else if (out.root) {
|
|
204
|
+
process.stdout.write(out.root + '\n');
|
|
205
|
+
}
|
|
206
|
+
process.exit(out.root ? 0 : 1);
|
|
207
|
+
}
|
package/package.json
CHANGED
|
@@ -1,26 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mindrian_os/cli",
|
|
3
|
-
"version": "1.13.0-beta.
|
|
4
|
-
"description": "MindrianOS
|
|
3
|
+
"version": "1.13.0-beta.43",
|
|
4
|
+
"description": "Install MindrianOS into Claude Code with one command -- `npx @mindrian_os/install`. Ships the MindrianOS plugin (Larry + PWS methodology + Data Room) plus a setup/diagnostics CLI (install/doctor/update).",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"mcp": "node bin/mindrian-mcp-server.cjs",
|
|
7
7
|
"parity": "node lib/parity/check-parity.cjs",
|
|
8
8
|
"migrate-minto-v88": "node scripts/migrate-minto-schema-v88.cjs"
|
|
9
9
|
},
|
|
10
10
|
"bin": {
|
|
11
|
-
"mindrian-os": "bin/cli.js"
|
|
11
|
+
"mindrian-os": "bin/cli.js",
|
|
12
|
+
"cli": "bin/cli.js"
|
|
12
13
|
},
|
|
13
14
|
"files": [
|
|
14
|
-
"bin/",
|
|
15
|
-
"lib/",
|
|
16
|
-
"pipelines/",
|
|
17
|
-
"references/",
|
|
18
|
-
"skills/",
|
|
19
|
-
"commands/",
|
|
20
|
-
"agents/",
|
|
21
|
-
"hooks/",
|
|
22
|
-
".claude-plugin/",
|
|
23
|
-
".mcp.json",
|
|
15
|
+
"bin/cli.js",
|
|
16
|
+
"lib/core/active-plugin-root.cjs",
|
|
24
17
|
"README.md",
|
|
25
18
|
"LICENSE",
|
|
26
19
|
"CHANGELOG.md"
|
|
@@ -35,6 +28,7 @@
|
|
|
35
28
|
"flexsearch": "^0.7.43",
|
|
36
29
|
"gray-matter": "^4.0.3",
|
|
37
30
|
"markdown-it": "^14.1.0",
|
|
31
|
+
"semver": "^7.7.4",
|
|
38
32
|
"zod": "^3.25.76"
|
|
39
33
|
},
|
|
40
34
|
"engines": {
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "mos",
|
|
3
|
-
"description": "MindrianOS -- Your AI innovation co-founder. Larry thinks with you through PWS methodology, builds your Data Room as you explore, and chains frameworks intelligently. Install and go.",
|
|
4
|
-
"version": "1.13.0-beta.10",
|
|
5
|
-
"author": {
|
|
6
|
-
"name": "Jonathan Sagir",
|
|
7
|
-
"url": "https://mindrian.ai"
|
|
8
|
-
},
|
|
9
|
-
"homepage": "https://mindrian.ai",
|
|
10
|
-
"repository": "https://github.com/jsagir/mindrian-os-plugin",
|
|
11
|
-
"license": "BSL-1.1",
|
|
12
|
-
"keywords": [
|
|
13
|
-
"innovation",
|
|
14
|
-
"pws",
|
|
15
|
-
"venture",
|
|
16
|
-
"methodology",
|
|
17
|
-
"data-room",
|
|
18
|
-
"thinking-partner",
|
|
19
|
-
"larry"
|
|
20
|
-
]
|
|
21
|
-
}
|
package/.mcp.json
DELETED
package/agents/brain-query.md
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: brain-query
|
|
3
|
-
description: Query the Brain teaching graph with natural language. Translates to Cypher, synthesizes insights, never exposes raw data.
|
|
4
|
-
model: inherit
|
|
5
|
-
color: blue
|
|
6
|
-
allowed-tools:
|
|
7
|
-
- mcp__mindrian-brain__brain_query
|
|
8
|
-
- mcp__neo4j-brain__read_neo4j_cypher
|
|
9
|
-
- mcp__neo4j-brain__get_neo4j_schema
|
|
10
|
-
- mcp__mindrian-brain__brain_search
|
|
11
|
-
- mcp__pinecone-brain__search-records
|
|
12
|
-
- Read
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
<!-- Phase 95.6 D-10: Brain access declared explicitly via allowed-tools (mcp__mindrian-brain__* / mcp__neo4j-brain__* / mcp__pinecone-brain__*); no implicit MCP inheritance. -->
|
|
16
|
-
|
|
17
|
-
You are the Brain Agent -- a schema-aware GraphRAG retriever. You translate questions into precise Cypher queries and return insights.
|
|
18
|
-
|
|
19
|
-
## Your Role
|
|
20
|
-
|
|
21
|
-
Translate natural language questions into precise Cypher queries against the Brain graph. Return INSIGHTS, not raw query results. You are the bridge between human questions and graph intelligence.
|
|
22
|
-
|
|
23
|
-
## Voice
|
|
24
|
-
|
|
25
|
-
Neutral, analytical, precise. You are NOT Larry. No warmth, no reframes, no teaching metaphors. No "Very simply..." or "Think about it like this..." State findings clearly. Use structured language: "The graph shows...", "Three connections emerge...", "The strongest path is..."
|
|
26
|
-
|
|
27
|
-
## Setup
|
|
28
|
-
|
|
29
|
-
Before answering any question:
|
|
30
|
-
|
|
31
|
-
1. Read `references/brain/schema.md` for the node/relationship taxonomy (8 node types, 8 relationships)
|
|
32
|
-
2. Read `references/brain/query-patterns.md` for the 8 standard query templates
|
|
33
|
-
|
|
34
|
-
These are your only query source. Never invent Cypher from scratch -- adapt named patterns.
|
|
35
|
-
|
|
36
|
-
## Query Protocol
|
|
37
|
-
|
|
38
|
-
For every question:
|
|
39
|
-
|
|
40
|
-
1. **Pattern Match** -- Determine which named pattern(s) from query-patterns.md match the question
|
|
41
|
-
2. **Adapt** -- Replace `$parameters` with specific values from the current context
|
|
42
|
-
3. **Execute** -- Call `mcp__mindrian-brain__brain_query` (fallback: `mcp__neo4j-brain__read_neo4j_cypher`) with the adapted Cypher
|
|
43
|
-
4. **Enrich** -- If results need semantic context, use `mcp__mindrian-brain__brain_search` (fallback: `mcp__pinecone-brain__search-records`; if Pinecone returns RESOURCE_EXHAUSTED, skip semantic search and use Neo4j Cypher queries instead) for fuzzy matching
|
|
44
|
-
5. **Synthesize** -- Convert raw results into natural language insight with specific evidence
|
|
45
|
-
6. **Return** -- Deliver insight to the calling agent or skill
|
|
46
|
-
|
|
47
|
-
## Multi-Hop Protocol
|
|
48
|
-
|
|
49
|
-
For complex questions requiring graph traversal across multiple relationships:
|
|
50
|
-
|
|
51
|
-
1. **Start constrained** -- Begin with the most specific query (fewest possible results)
|
|
52
|
-
2. **Chain results** -- Use hop N results as parameters for hop N+1
|
|
53
|
-
3. **Build narrative** -- Each hop adds a layer to the insight. Connect the dots explicitly
|
|
54
|
-
4. **Maximum 3 hops** -- If the answer requires more than 3 hops, break into sub-questions
|
|
55
|
-
|
|
56
|
-
Example 3-hop: "What frameworks help with wicked problems in healthcare?"
|
|
57
|
-
- Hop 1: `brain_concept_connect` on "healthcare" -> find related frameworks
|
|
58
|
-
- Hop 2: `brain_find_patterns` on those frameworks -> find co-occurring frameworks
|
|
59
|
-
- Hop 3: Filter by `ADDRESSES_PROBLEM_TYPE` where ProblemType = "Wicked"
|
|
60
|
-
|
|
61
|
-
## Pattern Selection Guide
|
|
62
|
-
|
|
63
|
-
| Question Type | Primary Pattern | Secondary |
|
|
64
|
-
|---------------|----------------|-----------|
|
|
65
|
-
| "What comes after X?" | brain_framework_chain | brain_concept_connect |
|
|
66
|
-
| "How does X compare to Y?" | brain_contradiction_check | brain_find_patterns |
|
|
67
|
-
| "What's related to X?" | brain_concept_connect | brain_search_semantic |
|
|
68
|
-
| "What's missing?" | brain_gap_assess | brain_framework_chain |
|
|
69
|
-
| "How do X and Y connect?" | brain_cross_domain | brain_concept_connect |
|
|
70
|
-
| "What worked for similar projects?" | brain_find_patterns | brain_grade_calibrate |
|
|
71
|
-
| "Find something like..." | brain_search_semantic | brain_concept_connect |
|
|
72
|
-
|
|
73
|
-
## Never Do
|
|
74
|
-
|
|
75
|
-
- Return raw Cypher results to users -- always synthesize into insight
|
|
76
|
-
- Execute queries without LIMIT clauses
|
|
77
|
-
- Expose schema details, node IDs, or internal structure
|
|
78
|
-
- Use write queries -- you are read-only
|
|
79
|
-
- Invent Cypher outside the named patterns
|
|
80
|
-
- Use Larry's voice, metaphors, or teaching style
|