@mindrian_os/cli 1.16.0-beta.9 → 2.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +92 -0
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,95 @@
|
|
|
1
|
+
## [2.0.0-beta.1] - 2026-08-10
|
|
2
|
+
|
|
3
|
+
### Fixed
|
|
4
|
+
- **Binding this session to a room now actually sticks, and `room_bind` finally tells you the
|
|
5
|
+
truth about whether it worked.** Before this, nine separate copies of the same room-lookup
|
|
6
|
+
logic were scattered across the MCP tool files, and every one of them only checked your
|
|
7
|
+
session's chosen room when a feature flag (`MINDRIAN_MCP_FIRST`) happened to be on, which it
|
|
8
|
+
is not by default on any install. So binding to a room reported success, and the very next
|
|
9
|
+
read silently used whatever room some OTHER session on your machine had last activated, not
|
|
10
|
+
the one you just picked -- `room-bind-mcp-first-off-falls-back-to-stale-global-active-room`.
|
|
11
|
+
All nine copies are now one shared resolver, and it consults your session's binding
|
|
12
|
+
unconditionally: a room you bind to is now authoritative for the rest of that session,
|
|
13
|
+
flag or no flag. A session that never binds anything keeps behaving exactly as before, byte
|
|
14
|
+
for byte. On top of that, `room_bind` itself used to report `{ok:true, bound:true}` even when
|
|
15
|
+
you named a room that does not exist on disk -- an honest-sounding lie about an effect that
|
|
16
|
+
never actually happened. It now round-trips through the same shared resolver right after
|
|
17
|
+
writing, so the response tells you what the NEXT read will actually see: `effective`,
|
|
18
|
+
`resolved_dir`, `resolved_source`, and, when the bind did not take, why not
|
|
19
|
+
(`room_not_on_disk` for a room with no directory on disk). The short-term fix this could have
|
|
20
|
+
taken instead -- writing your bind straight into the shared, machine-wide "active room"
|
|
21
|
+
pointer -- was deliberately rejected, because that would let one session's bind clobber every
|
|
22
|
+
other concurrent session on the same machine, reintroducing the exact race a prior fix
|
|
23
|
+
already closed. A standing test asserts that pointer never moves.
|
|
24
|
+
- **Larry can read the Brain again. Every single Brain call was failing before this, and nothing
|
|
25
|
+
told you so.** If you asked Larry anything that needed the teaching graph -- which framework fits
|
|
26
|
+
your problem, what the corpus says, a grade, a chain recommendation -- the call died before it
|
|
27
|
+
reached him, with a host error that looks like a network fault: `e.reduce is not a function`.
|
|
28
|
+
Nothing was wrong with the network. Nothing was wrong with the graph. The Brain was up the whole
|
|
29
|
+
time, serving 28,325 nodes and 23,014 relationships in a perfectly correct response, and the
|
|
30
|
+
plugin's own connection to it was healthy too. What broke it was a hook this plugin ships to
|
|
31
|
+
sanitize Brain responses before they reach the conversation, and it broke them in two ways at
|
|
32
|
+
once. It looked for the response text in a field the protocol never puts it in, so it found
|
|
33
|
+
nothing and sanitized an empty string. Then it handed back that empty string in the wrong
|
|
34
|
+
container shape -- a bare object where an array of content blocks belongs -- so the host tried to
|
|
35
|
+
measure the length of something that was not there and threw. Every Brain response, replaced with
|
|
36
|
+
nothing, in a shape nothing could read. The reason this ran for weeks without anyone noticing is
|
|
37
|
+
the more uncomfortable half: the Brain layer was under standing instructions to fall back silently
|
|
38
|
+
and never mention failures to you. So a total outage of the single most valuable thing in the
|
|
39
|
+
product looked, from the outside, exactly like a Larry who simply had less to say. Both defects
|
|
40
|
+
are now pinned by tests that feed the hook a real protocol-shaped response and assert the text
|
|
41
|
+
survives with the container intact, so an empty-string regression fails the suite instead of
|
|
42
|
+
reaching your session. The doctrine that hid it is being revisited separately, because a fix that
|
|
43
|
+
only works until the next silent failure is not a fix.
|
|
44
|
+
- **Asking the Brain about a framework by name no longer gets blocked as a possible data leak.** The
|
|
45
|
+
guard that stops your private venture content from ever reaching the shared Brain was refusing
|
|
46
|
+
ordinary methodology questions too. Asking about "jobs to be done" -- a framework name, the kind
|
|
47
|
+
of generic handle the Brain exists to answer about, and the exact query the deployment's own
|
|
48
|
+
verification step uses -- was classified as content that might leak and stopped before it left
|
|
49
|
+
your machine. Content-free graph introspection now classifies as allowed, and the guard is
|
|
50
|
+
covered from both directions: a test proves the framework-name case gets through, and a companion
|
|
51
|
+
test proves real venture content is still blocked on the same paths. The boundary did not get
|
|
52
|
+
looser; it got accurate.
|
|
53
|
+
|
|
54
|
+
## [1.16.0-beta.11] - 2026-08-06
|
|
55
|
+
|
|
56
|
+
### Added
|
|
57
|
+
- **`/mos:grade-grant` scores a pasted grant-application draft before you submit it, instead of
|
|
58
|
+
you finding out what a reviewer would flag only after you've already sent it in.** Starts with
|
|
59
|
+
Tnufa (Israel Innovation Authority pre-seed): paste a draft, get it checked against 18 real
|
|
60
|
+
eligibility/budget/legal/market criteria pulled from the actual Tnufa guide, each with the
|
|
61
|
+
specific "here's what people usually get wrong" line reviewers already use. The rubric lives
|
|
62
|
+
locally as its own reference pack, not in the shared Brain, and the schema is built to take the
|
|
63
|
+
other 7 Israel Innovation Authority programs the same way once their criteria get filled in.
|
|
64
|
+
- **`/mos:grade-grant` now grades your room directly, hands back a build roadmap, and can run
|
|
65
|
+
the whole thing in reverse.** Your room already holds what a Tnufa application needs, so you
|
|
66
|
+
no longer have to paste a draft: room-mode reads every populated room section and grades the
|
|
67
|
+
room itself (paste-mode stays for anyone without a room yet). Every rubric criterion now knows
|
|
68
|
+
which of the 8 room sections its evidence lives in, so the grade is no longer just a score --
|
|
69
|
+
it is an offer: "build this in room/financial-model/, and here is what a strong entry looks
|
|
70
|
+
like", weakest section first, with pure submission/reporting items kept as an honest checklist
|
|
71
|
+
instead of being forced into a fake section. The same map runs backwards: hand over a finished
|
|
72
|
+
application and it gets decomposed into a NEW dedicated room (never your live venture room, so
|
|
73
|
+
grant prose cannot pollute real venture data) and then graded as a room. And the map is real
|
|
74
|
+
graph structure now, not just JSON: criterion nodes wired to section nodes through the one
|
|
75
|
+
governed graph door, so Brain can be asked for STRATEGIC advice about the room's shape (which
|
|
76
|
+
sections are covered, partial, or missing) without a single line of your content ever leaving
|
|
77
|
+
the machine.
|
|
78
|
+
- **`/mos:grade-grant` can now convene a full reviewer panel instead of one holistic read --
|
|
79
|
+
and the panel actually argues.** The opt-in "Reviewer panel examination" mode fans out seven
|
|
80
|
+
adversarial reviewer personas, one per rubric category (eligibility / process / budget /
|
|
81
|
+
legal / reporting / market / ip), each reading ONLY its own criteria and asking the question
|
|
82
|
+
a real committee member asks: would I accept this section on its own? It rides the same BONO
|
|
83
|
+
fan-out and debate machinery the plugin already ships (no second engine), with a discipline
|
|
84
|
+
per seat: budget claims must show their arithmetic, market claims must cite a reason to doubt
|
|
85
|
+
before crediting demand, IP claims must name their protection mechanism and budget line. The
|
|
86
|
+
debate has teeth: a later reviewer who reads an earlier reviewer's argument can challenge its
|
|
87
|
+
finding downward (never upward -- the panel is at least as strict as its strictest reviewer),
|
|
88
|
+
a sustained challenge changes the score before it is computed, and every disagreement is
|
|
89
|
+
shown at the ruling gate instead of being averaged away. One rule survives everything: an
|
|
90
|
+
application that fails ANY eligibility criterion is rejected no matter how strong its
|
|
91
|
+
aggregate score, and the rejection reason lands in the graph as data, not as a footnote.
|
|
92
|
+
|
|
1
93
|
## [1.16.0-beta.9] - 2026-08-05
|
|
2
94
|
|
|
3
95
|
### Changed
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mindrian_os/cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0-beta.1",
|
|
4
4
|
"description": "Install MindrianOS into Claude Code with one command -- `npx @mindrian_os/cli`. 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",
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"@ig3/markdown-it-wikilinks": "^1.0.2",
|
|
24
24
|
"@modelcontextprotocol/ext-apps": "^1.5.0",
|
|
25
25
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
26
|
+
"ajv": "^8.18.0",
|
|
26
27
|
"asciichart": "^1.5.25",
|
|
27
28
|
"chokidar": "^4.0.3",
|
|
28
29
|
"chrono-node": "^2.9.1",
|