@maxkle1nz/m1nd 0.9.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/EXAMPLES.md +711 -0
- package/LICENSE +21 -0
- package/README.md +361 -0
- package/docs/AGENT-FIRST-DEMO.md +79 -0
- package/docs/AGENT-PACKS.md +107 -0
- package/docs/IDE-INTEGRATIONS.md +136 -0
- package/docs/MCP-HOST-REFRESH.md +123 -0
- package/docs/README.md +36 -0
- package/npm/bin/m1nd.js +9 -0
- package/npm/lib/cli.js +346 -0
- package/npm/test/cli.test.js +49 -0
- package/package.json +47 -0
- package/skills/README.md +26 -0
- package/skills/m1nd-first/SKILL.md +117 -0
- package/skills/m1nd-operator/SKILL.md +166 -0
- package/skills/m1nd-operator/references/l1ght-and-docs.md +164 -0
- package/skills/m1nd-operator/references/routing-playbooks.md +172 -0
- package/skills/m1nd-operator/references/runtime-and-refresh.md +135 -0
- package/skills/m1nd-operator/references/tool-families.md +168 -0
- package/skills/m1nd-operator/scripts/probe_m1nd.py +189 -0
- package/skills/m1nd-universal-agent-pack.md +81 -0
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@maxkle1nz/m1nd",
|
|
3
|
+
"version": "0.9.0-beta.0",
|
|
4
|
+
"description": "Universal installer and agent pack for the m1nd MCP runtime.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/maxkle1nz/m1nd.git"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/maxkle1nz/m1nd#readme",
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/maxkle1nz/m1nd/issues"
|
|
13
|
+
},
|
|
14
|
+
"type": "commonjs",
|
|
15
|
+
"bin": {
|
|
16
|
+
"m1nd": "npm/bin/m1nd.js"
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"npm/",
|
|
20
|
+
"skills/README.md",
|
|
21
|
+
"skills/m1nd-universal-agent-pack.md",
|
|
22
|
+
"skills/m1nd-first/SKILL.md",
|
|
23
|
+
"skills/m1nd-operator/SKILL.md",
|
|
24
|
+
"skills/m1nd-operator/references/*.md",
|
|
25
|
+
"skills/m1nd-operator/scripts/probe_m1nd.py",
|
|
26
|
+
"docs/AGENT-PACKS.md",
|
|
27
|
+
"docs/AGENT-FIRST-DEMO.md",
|
|
28
|
+
"docs/MCP-HOST-REFRESH.md",
|
|
29
|
+
"docs/IDE-INTEGRATIONS.md",
|
|
30
|
+
"README.md",
|
|
31
|
+
"EXAMPLES.md",
|
|
32
|
+
"LICENSE"
|
|
33
|
+
],
|
|
34
|
+
"scripts": {
|
|
35
|
+
"test": "node --test npm/test/cli.test.js",
|
|
36
|
+
"m1nd:doctor": "node npm/bin/m1nd.js doctor",
|
|
37
|
+
"m1nd:pack-check": "node npm/bin/m1nd.js pack-check",
|
|
38
|
+
"m1nd:install-generic": "node npm/bin/m1nd.js install-skills generic --project .",
|
|
39
|
+
"test:npm": "node --test npm/test/cli.test.js"
|
|
40
|
+
},
|
|
41
|
+
"engines": {
|
|
42
|
+
"node": ">=18"
|
|
43
|
+
},
|
|
44
|
+
"publishConfig": {
|
|
45
|
+
"access": "public"
|
|
46
|
+
}
|
|
47
|
+
}
|
package/skills/README.md
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# m1nd Agent Skills
|
|
2
|
+
|
|
3
|
+
This directory is the installable agent doctrine for `m1nd`.
|
|
4
|
+
|
|
5
|
+
It is intentionally host-neutral:
|
|
6
|
+
|
|
7
|
+
- `m1nd-first` is the short rule set agents should load before repository work.
|
|
8
|
+
- `m1nd-operator` is the deeper operating manual for routing, recovery, `L1GHT`,
|
|
9
|
+
document binding, multi-agent coordination, and runtime refresh.
|
|
10
|
+
- `m1nd-universal-agent-pack.md` is the portable prompt-pack form for hosts that
|
|
11
|
+
do not have a native skill directory.
|
|
12
|
+
|
|
13
|
+
Use the npm installer from the repo root to install the right shape:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install -g .
|
|
17
|
+
m1nd install-skills codex
|
|
18
|
+
m1nd install-skills generic --project /path/to/project
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
For a published package, the same flow becomes:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm install -g @maxkle1nz/m1nd@beta
|
|
25
|
+
m1nd init --host codex
|
|
26
|
+
```
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: m1nd-first
|
|
3
|
+
description: Use when investigating a repository, searching for implementation, reviewing changes, working from specs/docs, or preparing a risky code change in an environment where m1nd is available. This doctrine makes m1nd the first investigative layer before grep, glob, or manual file reads, except when the task is pure compiler/runtime truth or the exact file and lines are already known.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# m1nd-first
|
|
7
|
+
|
|
8
|
+
This is a doctrine, not a manual.
|
|
9
|
+
|
|
10
|
+
## Rules
|
|
11
|
+
|
|
12
|
+
- Start with `m1nd`.
|
|
13
|
+
- Before `rg`, shell globbing, or manual file reads, first ask whether `m1nd` can answer or narrow the task directly.
|
|
14
|
+
- Prefer the cheapest `m1nd` surface that preserves truth:
|
|
15
|
+
- exact text -> `search`
|
|
16
|
+
- path pattern -> `glob`
|
|
17
|
+
- known purpose, unknown location -> `seek`
|
|
18
|
+
- topic, subsystem, or connected neighborhood -> `activate`
|
|
19
|
+
- unfamiliar repo orientation -> `audit`
|
|
20
|
+
- stacktrace or runtime error text -> `trace`
|
|
21
|
+
- For docs/specs/knowledge:
|
|
22
|
+
- authored as `L1GHT` -> `ingest` with `adapter: "light"`
|
|
23
|
+
- ordinary docs/wiki/PDF/office docs -> `ingest` with `adapter: "universal"` or `adapter: "auto"`
|
|
24
|
+
- Before risky edits or change reviews, pass through `impact`, `validate_plan`, and usually `surgical_context_v2`.
|
|
25
|
+
- Keep `agent_id` stable across one investigation unless intentionally splitting roles.
|
|
26
|
+
|
|
27
|
+
## Skip Conditions
|
|
28
|
+
|
|
29
|
+
Skip the `m1nd` first pass only when:
|
|
30
|
+
|
|
31
|
+
- the user already gave the exact file and exact lines
|
|
32
|
+
- the question is compiler, test, or runtime truth rather than structure
|
|
33
|
+
- the task is a trivial local file action with no structural uncertainty
|
|
34
|
+
|
|
35
|
+
## Fallback
|
|
36
|
+
|
|
37
|
+
If `m1nd` does not answer enough, then fall back to shell search, direct file reads, compiler output, tests, logs, and debugger data.
|
|
38
|
+
|
|
39
|
+
For local m1nd repo work, prefer the cheap trust selftest path before a full smoke:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
python3 scripts/mcp_agent_smoke.py --repo . --handshake-only --json
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
When the live MCP surface exposes `trust_selftest`, call that tool first:
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{"agent_id":"codex-m1nd"}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Treat its `verdict` as the session routing decision before relying on
|
|
52
|
+
retrieval. If the verdict is not `full_trust`, follow the embedded
|
|
53
|
+
`recovery_playbook` or call `recovery_playbook` with the same evidence before
|
|
54
|
+
guessing the next move. The selftest is diagnostic-only: no ingest, repair,
|
|
55
|
+
host refresh, graph mutation, or retrieval probe happens automatically.
|
|
56
|
+
|
|
57
|
+
If `trust_selftest` is not exposed but `session_handshake` is, call the cheaper
|
|
58
|
+
sub-check:
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{"agent_id":"codex-m1nd"}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Treat its `trust_mode` as the session routing decision before relying on
|
|
65
|
+
retrieval. If the mode is not `full_trust`, call `recovery_playbook` before
|
|
66
|
+
guessing the next move. The playbook returns ordered recovery steps and a
|
|
67
|
+
binding fingerprint without ingesting, repairing, or probing automatically.
|
|
68
|
+
|
|
69
|
+
Use `--handshake-probe` only when retrieval trust itself matters. The plain
|
|
70
|
+
selftest/handshake path should stay cheap: no ingest, no repair, and no
|
|
71
|
+
retrieval probe by default. The repo-local smoke harness calls `trust_selftest`
|
|
72
|
+
and `session_handshake` when available and falls back to its built-in handshake
|
|
73
|
+
for older binaries.
|
|
74
|
+
|
|
75
|
+
If the host exposes `health` but not `trust_selftest`, `session_handshake`, or
|
|
76
|
+
`recovery_playbook`, read `health.tool_surface_contract` and
|
|
77
|
+
`health.host_binding_alignment`.
|
|
78
|
+
That is enough to classify the binding as partial/degraded and switch to local
|
|
79
|
+
smokes or direct file truth until the host refreshes its tool surface.
|
|
80
|
+
|
|
81
|
+
If `m1nd` is visible but the host tool surface is missing recovery tools such as
|
|
82
|
+
`ingest`, treat it as `degraded_host_tool_surface`, not as a normal graph
|
|
83
|
+
failure. Use whatever m1nd can still provide for orientation, but verify final
|
|
84
|
+
truth against local files until the MCP binding is refreshed. If
|
|
85
|
+
`recovery_playbook` is available, call it with the tool surface:
|
|
86
|
+
|
|
87
|
+
```json
|
|
88
|
+
{"agent_id":"codex-m1nd","observed_tool":"tools/list","observed_proof_state":"blocked","observed_tool_count":3,"available_tools":["seek","audit","doctor"],"missing_tools":["ingest"]}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
If an `ingest` call appears to succeed but a follow-up retrieval call such as
|
|
92
|
+
`seek`, `search`, or `activate` returns `blocked`, zero candidates, or an empty
|
|
93
|
+
graph unexpectedly, do not assume the codebase is unindexed. Treat it as a
|
|
94
|
+
possible host-binding/session-continuity problem. If `recovery_playbook` is
|
|
95
|
+
available, use `recovery.arguments` from the retrieval response when present.
|
|
96
|
+
If the response does not include a recovery payload, call `recovery_playbook`
|
|
97
|
+
with the suspicious output first. Let the playbook decide when to call
|
|
98
|
+
`doctor`:
|
|
99
|
+
|
|
100
|
+
```json
|
|
101
|
+
{"agent_id":"codex-m1nd","observed_tool":"seek","observed_proof_state":"blocked","observed_candidates":0}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
If the repo has a local m1nd checkout, verify the real runtime with its stdio
|
|
105
|
+
and HTTP smoke harness before deciding:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
python3 scripts/mcp_agent_smoke.py --repo . --json
|
|
109
|
+
python3 scripts/mcp_agent_smoke.py --repo . --transport http --json
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Deep Manual
|
|
113
|
+
|
|
114
|
+
If the task needs detailed routing, `L1GHT` semantics, document-lane choice, multi-agent coordination, or refresh procedures, consult:
|
|
115
|
+
|
|
116
|
+
- the companion `m1nd-operator` skill installed with this pack, usually at
|
|
117
|
+
`m1nd-operator/SKILL.md` in the same skills root.
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: m1nd-operator
|
|
3
|
+
description: Use when the user mentions m1nd or when repo investigation, search, review, docs/spec work, or risky change prep should go through m1nd first before grep, glob, or manual file reads. Covers m1nd-first routing, L1GHT and universal document ingestion, risky edit preparation, document-to-code binding, multi-agent coordination, trails/continuity, daemon alerts, and refreshing the live m1nd tool surface from the local m1nd-mcp binary.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# m1nd Operator
|
|
7
|
+
|
|
8
|
+
This is the deep execution manual that complements the short `m1nd-first` doctrine.
|
|
9
|
+
|
|
10
|
+
Use this skill when `m1nd` should be the first layer of truth for the task.
|
|
11
|
+
|
|
12
|
+
`m1nd` is strongest when structure, connected context, blast radius, continuity, docs/code bindings, or multi-agent coordination are the bottleneck. It is not the replacement for `rg`, the compiler, runtime logs, or the test runner.
|
|
13
|
+
|
|
14
|
+
## Default Stance
|
|
15
|
+
|
|
16
|
+
Default to `m1nd` before grep, glob, or manual file reads.
|
|
17
|
+
|
|
18
|
+
The first question is not "which shell command should I run?" It is "can `m1nd` answer or narrow this directly from graph structure, connected context, docs, or cross-domain bindings?"
|
|
19
|
+
|
|
20
|
+
Only skip the `m1nd` first pass when:
|
|
21
|
+
|
|
22
|
+
- the user already gave the exact file and exact lines
|
|
23
|
+
- the question is pure compiler/test/runtime truth
|
|
24
|
+
- the task is a trivial local file action with no search or structural uncertainty
|
|
25
|
+
|
|
26
|
+
## Core Rules
|
|
27
|
+
|
|
28
|
+
- Prefer the live MCP surface over stale prose. If tool names, counts, or parameters matter, run the bundled helper from this skill directory: `python3 scripts/probe_m1nd.py tools`.
|
|
29
|
+
- Keep `agent_id` stable within one investigation. Change it only when intentionally starting another role or another concurrent investigation.
|
|
30
|
+
- Ingest first. Re-ingest after code changes, or use incremental ingest for code repos when appropriate.
|
|
31
|
+
- If the live MCP surface exposes `trust_selftest`, call it first and route by
|
|
32
|
+
`verdict` before relying on retrieval. `full_trust` means proceed with
|
|
33
|
+
m1nd-first; `needs_ingest` means ingest the intended repo; `orientation_only`
|
|
34
|
+
or `degraded_host_tool_surface` means use m1nd only for orientation and
|
|
35
|
+
verify final truth with local files until the binding is refreshed;
|
|
36
|
+
`stale_binding_suspected` means compare binding fingerprints and follow the
|
|
37
|
+
recovery playbook before trusting retrieval.
|
|
38
|
+
- If `trust_selftest` is not exposed but `session_handshake` is, call the
|
|
39
|
+
handshake and route by `trust_mode` as the cheaper sub-check.
|
|
40
|
+
- If the selftest verdict or handshake trust mode is not `full_trust`, or
|
|
41
|
+
retrieval returns `blocked`/zero candidates unexpectedly, call
|
|
42
|
+
`recovery_playbook` before inventing the next step. Use its ordered steps and
|
|
43
|
+
`binding_fingerprint` to compare host, stdio, HTTP, runtime root, graph paths,
|
|
44
|
+
generation counters, and ingest roots.
|
|
45
|
+
- If the host exposes `health` but not `trust_selftest`, `session_handshake`, or
|
|
46
|
+
`recovery_playbook`, read `health.tool_surface_contract` and
|
|
47
|
+
`health.host_binding_alignment`. Treat missing required host-visible tools as
|
|
48
|
+
`degraded_host_tool_surface`, then verify with repo-local smokes or direct
|
|
49
|
+
files until the host refreshes its binding.
|
|
50
|
+
- After ingest, sanity-check that retrieval is seeing the same active graph. If
|
|
51
|
+
`seek`, `search`, or `activate` returns `blocked`, zero candidates, or an
|
|
52
|
+
unexpectedly empty graph immediately after a successful ingest, suspect
|
|
53
|
+
host-binding/session split-brain before blaming the repo or the m1nd core.
|
|
54
|
+
If the response includes `recovery.arguments`, pass those arguments directly
|
|
55
|
+
to `recovery_playbook`. Otherwise, call `recovery_playbook` with
|
|
56
|
+
`observed_tool`, `observed_proof_state`, and `observed_candidates` from the
|
|
57
|
+
suspicious response before falling back. Let the playbook decide when to call
|
|
58
|
+
`doctor`.
|
|
59
|
+
- If the host tool surface exposes m1nd but is missing recovery tools such as
|
|
60
|
+
`ingest`, classify the session as `degraded_host_tool_surface`. If `doctor`
|
|
61
|
+
is available, call it with `observed_tool="tools/list"`,
|
|
62
|
+
`observed_tool_count`, `available_tools`, and `missing_tools`. Until the MCP
|
|
63
|
+
binding is refreshed, use m1nd only as orientation and verify final truth with
|
|
64
|
+
direct repo files.
|
|
65
|
+
- Make `m1nd` the first investigative step before shell search:
|
|
66
|
+
- exact text need -> try `search` before `rg`
|
|
67
|
+
- path pattern need -> try `glob` before filesystem globbing
|
|
68
|
+
- implementation-by-purpose need -> try `seek`
|
|
69
|
+
- subsystem/topic/connected neighborhood need -> try `activate`
|
|
70
|
+
- Treat `proof_state`, `next_suggested_tool`, `next_suggested_target`, and `next_step_hint` as workflow control signals, not decorative fields.
|
|
71
|
+
- Use the cheapest surface that preserves structural truth:
|
|
72
|
+
- exact text -> `search`
|
|
73
|
+
- path pattern -> `glob`
|
|
74
|
+
- known file -> `view`
|
|
75
|
+
- known purpose, unknown location -> `seek`
|
|
76
|
+
- topic/subsystem/neighborhood -> `activate`
|
|
77
|
+
- For docs/specs/knowledge, decide the lane early:
|
|
78
|
+
- authored as graph-native semantic markdown -> `ingest` with `adapter: "light"`
|
|
79
|
+
- ordinary markdown/wiki/HTML/PDF/office docs -> `ingest` with `adapter: "universal"` or `adapter: "auto"`
|
|
80
|
+
- Before risky edits, route through `impact`, `validate_plan`, and usually `surgical_context_v2`.
|
|
81
|
+
- In Codex, prefer `m1nd` for analysis, planning, and context. If the task requires local file edits under Codex's editing rules, use `apply_patch` for the final file mutation unless there is a specific reason to use `m1nd`'s write surfaces.
|
|
82
|
+
|
|
83
|
+
## Fast Routing
|
|
84
|
+
|
|
85
|
+
- Unfamiliar repo or need a one-call orientation: use `audit`, then `batch_view`, `coverage_session`, or `cross_verify` as needed.
|
|
86
|
+
- Need a subsystem map: use `activate`.
|
|
87
|
+
- Need code by intent: use `seek`.
|
|
88
|
+
- Need why A connects to B: use `why`.
|
|
89
|
+
- Smells like missing validation, abstraction, cleanup, or lock: use `missing`.
|
|
90
|
+
- Have a stacktrace or runtime error text: use `trace`.
|
|
91
|
+
- Need blast radius before editing: use `impact`.
|
|
92
|
+
- Need co-change follow-through after editing: use `predict`.
|
|
93
|
+
- Need plan completeness and missing tests before implementation or review: use `validate_plan`.
|
|
94
|
+
- Need graph-native specs, design notes, or KB docs authored in `L1GHT`: ingest with `adapter: "light"` and usually `mode: "merge"`.
|
|
95
|
+
- Need regular spec/wiki/PDF/doc alignment with code: ingest with `adapter: "universal"` or `auto`, then use `document_resolve`, `document_bindings`, and `document_drift`.
|
|
96
|
+
- Need stateful navigation instead of stateless retrieval: use `perspective_*`.
|
|
97
|
+
- Need session continuity or handoff: use `trail_save`, `trail_list`, `trail_resume`, `trail_merge`, and sometimes `boot_memory`.
|
|
98
|
+
- Need background structural monitoring: use `daemon_start`, `daemon_status`, `daemon_tick`, `alerts_list`, and `alerts_ack`.
|
|
99
|
+
|
|
100
|
+
## Read These References
|
|
101
|
+
|
|
102
|
+
- `references/routing-playbooks.md`
|
|
103
|
+
- Use for end-to-end workflows by task type: onboarding, bug triage, risky change prep, spec-to-code work, multi-agent sessions, and long-lived monitoring.
|
|
104
|
+
- `references/tool-families.md`
|
|
105
|
+
- Use for the complete capability map grouped by family, including the less obvious tools (`antibody_*`, `runtime_overlay`, `ghost_edges`, `flow_simulate`, `layers`, `refactor_plan`, etc.).
|
|
106
|
+
- `references/runtime-and-refresh.md`
|
|
107
|
+
- Use for local installation facts, current live-surface notes, the docs-vs-runtime count discrepancy, refresh procedure, and the helper script usage.
|
|
108
|
+
- `references/l1ght-and-docs.md`
|
|
109
|
+
- Use for the `L1GHT` mental model, marker vocabulary, header fields, `light` vs `universal`, and mixed code+docs graph workflows.
|
|
110
|
+
|
|
111
|
+
## Local Helper
|
|
112
|
+
|
|
113
|
+
Use the bundled probe script from this skill directory whenever the live runtime matters more than remembered docs.
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
python3 scripts/probe_m1nd.py tools
|
|
117
|
+
python3 scripts/probe_m1nd.py call health '{"agent_id":"codex-m1nd"}'
|
|
118
|
+
python3 scripts/probe_m1nd.py call trust_selftest '{"agent_id":"codex-m1nd"}'
|
|
119
|
+
python3 scripts/probe_m1nd.py call recovery_playbook '{"agent_id":"codex-m1nd","observed_tool":"seek","observed_proof_state":"blocked","observed_candidates":0}'
|
|
120
|
+
python3 scripts/probe_m1nd.py call help '{"agent_id":"codex-m1nd","tool_name":"validate_plan"}'
|
|
121
|
+
python3 scripts/probe_m1nd.py run '[{"name":"ingest","arguments":{"agent_id":"codex-m1nd","path":"/path/to/repo"}},{"name":"seek","arguments":{"agent_id":"codex-m1nd","query":"where retry backoff is decided","top_k":5}}]'
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
For the m1nd repo itself, prefer the repo-local agent smoke harness when you
|
|
125
|
+
need to distinguish a real runtime problem from a host-provided MCP binding
|
|
126
|
+
problem:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
python3 scripts/mcp_agent_smoke.py --repo . --handshake-only --json
|
|
130
|
+
python3 scripts/mcp_agent_smoke.py --repo . --handshake-only --handshake-probe --json
|
|
131
|
+
python3 scripts/mcp_agent_smoke.py --repo . --json
|
|
132
|
+
python3 scripts/mcp_agent_smoke.py --repo . --transport http --json
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Use `trust_selftest` as the cheap default when exposed. The current binary also
|
|
136
|
+
exposes the sub-check as `session_handshake`; the harness calls both when
|
|
137
|
+
available and falls back for older binaries. The default path must stay
|
|
138
|
+
diagnostic-only: no ingest, no repair, and no retrieval probe by default.
|
|
139
|
+
`recovery_playbook` is the in-band next-step surface when the selftest,
|
|
140
|
+
handshake, or retrieval looks suspicious. Add `--handshake-probe` only when the
|
|
141
|
+
task depends on retrieval trust.
|
|
142
|
+
|
|
143
|
+
That harness proves the minimum trust loop over real Content-Length framed
|
|
144
|
+
stdio and the HTTP tool API:
|
|
145
|
+
|
|
146
|
+
```text
|
|
147
|
+
initialize -> tools/list -> trust_selftest -> session_handshake -> recovery_playbook when needed -> ingest -> seek -> help -> doctor
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
What the helper is for:
|
|
151
|
+
|
|
152
|
+
- confirming the local binary still responds
|
|
153
|
+
- listing the live tool surface
|
|
154
|
+
- detecting `degraded_host_tool_surface` when required tools such as `ingest`,
|
|
155
|
+
`seek`, `help`, `recovery_playbook`, or `doctor` are missing
|
|
156
|
+
- checking a tool's real response shape without relying on stale wiki prose
|
|
157
|
+
- catching graph/session continuity failures before falling back to broad shell
|
|
158
|
+
search
|
|
159
|
+
|
|
160
|
+
## Working Posture
|
|
161
|
+
|
|
162
|
+
- Use `m1nd` when the question is about relationships, not just strings.
|
|
163
|
+
- Use `m1nd` first even when the answer might be textual, because `search`, `seek`, and `activate` can often narrow the surface before any shell reads.
|
|
164
|
+
- Use `m1nd` before big changes when hidden neighbors or missing tests could bite later.
|
|
165
|
+
- Use `m1nd` for continuity when the same investigation spans agents or sessions.
|
|
166
|
+
- Fall back to `rg`, direct file reads, compiler output, and runtime logs when execution truth is the real question.
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# L1GHT And Document Lanes
|
|
2
|
+
|
|
3
|
+
This file captures the document side of `m1nd`, especially the distinction between the graph-native `L1GHT` lane and the more general `universal` document lane.
|
|
4
|
+
|
|
5
|
+
## What L1GHT Is
|
|
6
|
+
|
|
7
|
+
`L1GHT` is a graph-native semantic markdown protocol.
|
|
8
|
+
|
|
9
|
+
Use it when the document is meant to be an active part of the graph, not just a file to canonicalize and later bind. In the repo's public description, `light` is "structured markdown with typed YAML frontmatter and inline semantic markers" that turns specs, design decisions, and knowledge bases into first-class graph nodes with typed edges.
|
|
10
|
+
|
|
11
|
+
Practical meaning:
|
|
12
|
+
|
|
13
|
+
- code and structured docs can live in the same graph
|
|
14
|
+
- `activate`, `seek`, and other structural tools can surface both implementation and semantic spec nodes together
|
|
15
|
+
- this is the right lane when the doc itself is authored as machine-legible graph material
|
|
16
|
+
|
|
17
|
+
## When To Use `light` vs `universal`
|
|
18
|
+
|
|
19
|
+
Use `adapter: "light"` when:
|
|
20
|
+
|
|
21
|
+
- the markdown is intentionally authored in the `L1GHT` protocol
|
|
22
|
+
- the document should become graph-native semantic structure directly
|
|
23
|
+
- you want typed nodes and typed edges extracted from headers, sections, and inline semantic markers
|
|
24
|
+
|
|
25
|
+
Use `adapter: "universal"` or `adapter: "auto"` when:
|
|
26
|
+
|
|
27
|
+
- the source is ordinary markdown, wiki, HTML, PDF, office docs, or other non-L1GHT artifacts
|
|
28
|
+
- you want canonical local artifacts like `canonical.md`, `canonical.json`, and `claims.json`
|
|
29
|
+
- you want `document_resolve`, `document_bindings`, and `document_drift` on docs that were not authored as L1GHT
|
|
30
|
+
|
|
31
|
+
Short rule:
|
|
32
|
+
|
|
33
|
+
- authored graph-native spec -> `light`
|
|
34
|
+
- arbitrary doc you still want inside the graph -> `universal`
|
|
35
|
+
|
|
36
|
+
## What The Local Adapter Actually Recognizes
|
|
37
|
+
|
|
38
|
+
From the current `m1nd-ingest/src/l1ght_adapter.rs` implementation:
|
|
39
|
+
|
|
40
|
+
- it accepts `.md` and `.markdown`
|
|
41
|
+
- it positively recognizes `Protocol: L1GHT/`
|
|
42
|
+
- it also heuristically recognizes L1GHT-like files when enough semantic markers exist
|
|
43
|
+
|
|
44
|
+
The current heuristic marker set includes:
|
|
45
|
+
|
|
46
|
+
- `[⍂ entity: ...]`
|
|
47
|
+
- `[⍐ state: ...]`
|
|
48
|
+
- `[⍌ event: ...]`
|
|
49
|
+
- `[𝔻 confidence: ...]`
|
|
50
|
+
- `[𝔻 ambiguity: ...]`
|
|
51
|
+
- `[𝔻 evidence: ...]`
|
|
52
|
+
- `[⟁ depends_on: ...]`
|
|
53
|
+
- `[⟁ binds_to: ...]`
|
|
54
|
+
- `[⟁ tests: ...]`
|
|
55
|
+
- `[RED blocker: ...]`
|
|
56
|
+
- `[AMBER warning: ...]`
|
|
57
|
+
|
|
58
|
+
## Header Fields Understood By The Current Adapter
|
|
59
|
+
|
|
60
|
+
The adapter parses these header-level fields today:
|
|
61
|
+
|
|
62
|
+
- `Protocol:`
|
|
63
|
+
- `Node:`
|
|
64
|
+
- `State:`
|
|
65
|
+
- `Color:`
|
|
66
|
+
- `Glyph:`
|
|
67
|
+
- `Completeness:`
|
|
68
|
+
- `Proof:`
|
|
69
|
+
- `Depends on:`
|
|
70
|
+
- `Next:`
|
|
71
|
+
|
|
72
|
+
These become graph metadata nodes and/or typed edges.
|
|
73
|
+
|
|
74
|
+
Examples of edge semantics from the adapter:
|
|
75
|
+
|
|
76
|
+
- `depends_on` from header dependencies
|
|
77
|
+
- `next_binding` from `Next:`
|
|
78
|
+
- `defines_protocol`
|
|
79
|
+
- `has_state`
|
|
80
|
+
- `has_glyph`
|
|
81
|
+
- `has_color`
|
|
82
|
+
- generic `has_metadata`
|
|
83
|
+
|
|
84
|
+
## Structural Materialization In The Graph
|
|
85
|
+
|
|
86
|
+
The current adapter creates graph-native structure from the markdown:
|
|
87
|
+
|
|
88
|
+
- the file becomes a canonical file node
|
|
89
|
+
- `##` headings become section nodes
|
|
90
|
+
- header metadata becomes concept/reference nodes
|
|
91
|
+
- inline semantic markers become typed concept or process nodes
|
|
92
|
+
|
|
93
|
+
Current inline relation mapping includes:
|
|
94
|
+
|
|
95
|
+
- `[⍂ entity: ...]` -> `declares_entity`
|
|
96
|
+
- `[⍐ state: ...]` -> `declares_state`
|
|
97
|
+
- `[⍌ event: ...]` -> `declares_event`
|
|
98
|
+
- `[⟁ depends_on: ...]` -> `depends_on`
|
|
99
|
+
- `[⟁ binds_to: ...]` -> `binds_to`
|
|
100
|
+
- `[⟁ tests: ...]` -> `declares_test`
|
|
101
|
+
- `[RED blocker: ...]` -> `declares_blocker`
|
|
102
|
+
- `[AMBER warning: ...]` -> `declares_warning`
|
|
103
|
+
- everything else falls back to `declares_metadata`
|
|
104
|
+
|
|
105
|
+
This means `L1GHT` is not "markdown plus tags"; it is a semantic ingest format that turns authored knowledge into graph structure.
|
|
106
|
+
|
|
107
|
+
## Small Example
|
|
108
|
+
|
|
109
|
+
Illustrative shape from the docs:
|
|
110
|
+
|
|
111
|
+
```text
|
|
112
|
+
---
|
|
113
|
+
Protocol: L1GHT/1.0
|
|
114
|
+
Node: AuthService
|
|
115
|
+
State: production
|
|
116
|
+
Depends on:
|
|
117
|
+
- JWTService
|
|
118
|
+
- SessionStore
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Token Validation
|
|
122
|
+
|
|
123
|
+
The [⍂ entity: TokenValidator] runs HMAC-SHA256 checks.
|
|
124
|
+
[⟁ depends_on: RedisSessionStore]
|
|
125
|
+
[RED blocker: Connection pool not yet tuned for peak load]
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Typical mixed-graph use:
|
|
129
|
+
|
|
130
|
+
```json
|
|
131
|
+
{"method":"tools/call","params":{"name":"ingest","arguments":{
|
|
132
|
+
"agent_id":"dev",
|
|
133
|
+
"path":"./src",
|
|
134
|
+
"adapter":"code",
|
|
135
|
+
"mode":"replace"
|
|
136
|
+
}}}
|
|
137
|
+
|
|
138
|
+
{"method":"tools/call","params":{"name":"ingest","arguments":{
|
|
139
|
+
"agent_id":"dev",
|
|
140
|
+
"path":"./docs/specs",
|
|
141
|
+
"adapter":"light",
|
|
142
|
+
"mode":"merge"
|
|
143
|
+
}}}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
After that, graph queries can land in code or L1GHT nodes from one search space.
|
|
147
|
+
|
|
148
|
+
## How I Should Use This As An Agent
|
|
149
|
+
|
|
150
|
+
When a task involves docs, specs, or conceptual design artifacts:
|
|
151
|
+
|
|
152
|
+
1. Ask whether the source is authored as `L1GHT` or is just a regular document.
|
|
153
|
+
2. If it is `L1GHT`, prefer `ingest` with `adapter: "light"` and usually `mode: "merge"`.
|
|
154
|
+
3. If it is regular documentation, prefer `adapter: "universal"` or `auto`.
|
|
155
|
+
4. Query the combined graph with `search`, `seek`, `activate`, `impact`, or `validate_plan` before falling back to manual document reading.
|
|
156
|
+
|
|
157
|
+
## Important Distinction To Remember
|
|
158
|
+
|
|
159
|
+
`L1GHT` and `document_*` are related but not identical concerns.
|
|
160
|
+
|
|
161
|
+
- `L1GHT` is an authored semantic document protocol that becomes graph-native directly.
|
|
162
|
+
- `document_*` tools are most relevant for universal-document handling, canonical artifacts, and doc-to-code binding/drift workflows.
|
|
163
|
+
|
|
164
|
+
So if the user says "spec" or "wiki", do not assume `universal` immediately. First check whether the material is already authored in `L1GHT`.
|