@monoes/monomindcli 2.7.12 → 2.7.14
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/.claude/commands/mastermind/createorg.md +2 -0
- package/.claude/commands/mastermind/okf-import.md +6 -1
- package/.claude/helpers/handlers/route-handler.cjs +40 -7
- package/.claude/helpers/handlers/session-restore-handler.cjs +24 -6
- package/.claude/skills/mastermind-createorg/SKILL.md +11 -4
- package/README.md +12 -6
- package/dist/src/capabilities/index.d.ts.map +1 -1
- package/dist/src/capabilities/index.js +17 -0
- package/dist/src/capabilities/index.js.map +1 -1
- package/dist/src/capabilities/types.d.ts +0 -11
- package/dist/src/capabilities/types.d.ts.map +1 -1
- package/dist/src/commands/doc.d.ts.map +1 -1
- package/dist/src/commands/doc.js +251 -8
- package/dist/src/commands/doc.js.map +1 -1
- package/dist/src/commands/doctor-project-checks.d.ts +25 -3
- package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
- package/dist/src/commands/doctor-project-checks.js +111 -8
- package/dist/src/commands/doctor-project-checks.js.map +1 -1
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +18 -2
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +32 -3
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/monograph.d.ts.map +1 -1
- package/dist/src/commands/monograph.js +26 -3
- package/dist/src/commands/monograph.js.map +1 -1
- package/dist/src/commands/org.d.ts +15 -0
- package/dist/src/commands/org.d.ts.map +1 -1
- package/dist/src/commands/org.js +251 -6
- package/dist/src/commands/org.js.map +1 -1
- package/dist/src/init/claudemd-generator.d.ts.map +1 -1
- package/dist/src/init/claudemd-generator.js +4 -1
- package/dist/src/init/claudemd-generator.js.map +1 -1
- package/dist/src/knowledge/document-pipeline.d.ts +77 -4
- package/dist/src/knowledge/document-pipeline.d.ts.map +1 -1
- package/dist/src/knowledge/document-pipeline.js +261 -15
- package/dist/src/knowledge/document-pipeline.js.map +1 -1
- package/dist/src/knowledge/eval/corpus.d.ts +56 -0
- package/dist/src/knowledge/eval/corpus.d.ts.map +1 -0
- package/dist/src/knowledge/eval/corpus.js +126 -0
- package/dist/src/knowledge/eval/corpus.js.map +1 -0
- package/dist/src/knowledge/eval/golden-set.d.ts +62 -0
- package/dist/src/knowledge/eval/golden-set.d.ts.map +1 -0
- package/dist/src/knowledge/eval/golden-set.js +331 -0
- package/dist/src/knowledge/eval/golden-set.js.map +1 -0
- package/dist/src/knowledge/eval/harness.d.ts +221 -0
- package/dist/src/knowledge/eval/harness.d.ts.map +1 -0
- package/dist/src/knowledge/eval/harness.js +610 -0
- package/dist/src/knowledge/eval/harness.js.map +1 -0
- package/dist/src/knowledge/eval/metrics.d.ts +120 -0
- package/dist/src/knowledge/eval/metrics.d.ts.map +1 -0
- package/dist/src/knowledge/eval/metrics.js +243 -0
- package/dist/src/knowledge/eval/metrics.js.map +1 -0
- package/dist/src/knowledge/eval/model-presence.d.ts +48 -0
- package/dist/src/knowledge/eval/model-presence.d.ts.map +1 -0
- package/dist/src/knowledge/eval/model-presence.js +128 -0
- package/dist/src/knowledge/eval/model-presence.js.map +1 -0
- package/dist/src/knowledge/eval/network-guard.d.ts +46 -0
- package/dist/src/knowledge/eval/network-guard.d.ts.map +1 -0
- package/dist/src/knowledge/eval/network-guard.js +112 -0
- package/dist/src/knowledge/eval/network-guard.js.map +1 -0
- package/dist/src/knowledge/eval/retrievers.d.ts +65 -0
- package/dist/src/knowledge/eval/retrievers.d.ts.map +1 -0
- package/dist/src/knowledge/eval/retrievers.js +180 -0
- package/dist/src/knowledge/eval/retrievers.js.map +1 -0
- package/dist/src/knowledge/eval/signals.d.ts +111 -0
- package/dist/src/knowledge/eval/signals.d.ts.map +1 -0
- package/dist/src/knowledge/eval/signals.js +232 -0
- package/dist/src/knowledge/eval/signals.js.map +1 -0
- package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/agent-tools.js +7 -34
- package/dist/src/mcp-tools/agent-tools.js.map +1 -1
- package/dist/src/mcp-tools/knowledge-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/knowledge-tools.js +88 -6
- package/dist/src/mcp-tools/knowledge-tools.js.map +1 -1
- package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.d.ts +44 -144
- package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.d.ts.map +1 -1
- package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts +30 -38
- package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts.map +1 -1
- package/dist/src/mcp-tools/task-tools.d.ts +1 -0
- package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/task-tools.js +76 -111
- package/dist/src/mcp-tools/task-tools.js.map +1 -1
- package/dist/src/mcp-tools/terminal-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/terminal-tools.js +3 -28
- package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
- package/dist/src/memory/bm25-index.d.ts +137 -0
- package/dist/src/memory/bm25-index.d.ts.map +1 -0
- package/dist/src/memory/bm25-index.js +219 -0
- package/dist/src/memory/bm25-index.js.map +1 -0
- package/dist/src/memory/embedding-operations.d.ts.map +1 -1
- package/dist/src/memory/embedding-operations.js +8 -7
- package/dist/src/memory/embedding-operations.js.map +1 -1
- package/dist/src/memory/ewc-consolidation.d.ts.map +1 -1
- package/dist/src/memory/ewc-consolidation.js +2 -1
- package/dist/src/memory/ewc-consolidation.js.map +1 -1
- package/dist/src/memory/hnsw-operations.d.ts.map +1 -1
- package/dist/src/memory/hnsw-operations.js +4 -3
- package/dist/src/memory/hnsw-operations.js.map +1 -1
- package/dist/src/memory/intelligence.d.ts.map +1 -1
- package/dist/src/memory/intelligence.js +2 -1
- package/dist/src/memory/intelligence.js.map +1 -1
- package/dist/src/memory/memory-bridge.d.ts +34 -0
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +184 -26
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-initializer.d.ts.map +1 -1
- package/dist/src/memory/memory-initializer.js +4 -3
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/memory/memory-schema.d.ts +1 -1
- package/dist/src/memory/memory-schema.js +1 -1
- package/dist/src/memory/text-tokens.d.ts +10 -0
- package/dist/src/memory/text-tokens.d.ts.map +1 -0
- package/dist/src/memory/text-tokens.js +37 -0
- package/dist/src/memory/text-tokens.js.map +1 -0
- package/dist/src/orgrt/daemon.d.ts +16 -1
- package/dist/src/orgrt/daemon.d.ts.map +1 -1
- package/dist/src/orgrt/daemon.js +65 -9
- package/dist/src/orgrt/daemon.js.map +1 -1
- package/dist/src/orgrt/scheduler.d.ts +14 -1
- package/dist/src/orgrt/scheduler.d.ts.map +1 -1
- package/dist/src/orgrt/scheduler.js +51 -5
- package/dist/src/orgrt/scheduler.js.map +1 -1
- package/dist/src/orgrt/session.js +12 -0
- package/dist/src/orgrt/session.js.map +1 -1
- package/dist/src/orgrt/types.d.ts +61 -831
- package/dist/src/orgrt/types.d.ts.map +1 -1
- package/dist/src/orgrt/types.js +7 -1
- package/dist/src/orgrt/types.js.map +1 -1
- package/dist/src/services/crash-reporter.d.ts.map +1 -1
- package/dist/src/services/crash-reporter.js +7 -0
- package/dist/src/services/crash-reporter.js.map +1 -1
- package/dist/src/ui/dashboard.html +57 -25
- package/dist/src/ui/orgs.html +30 -13
- package/dist/src/ui/routes-monograph.mjs +929 -0
- package/dist/src/ui/routes-org.mjs +2513 -0
- package/dist/src/ui/server.mjs +726 -4117
- package/dist/src/utils/json-file.d.ts +11 -0
- package/dist/src/utils/json-file.d.ts.map +1 -1
- package/dist/src/utils/json-file.js +27 -0
- package/dist/src/utils/json-file.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -6
|
@@ -28,6 +28,7 @@ Use orgs when the work is ongoing, not single-shot. A content team that ships 10
|
|
|
28
28
|
`--name <slug>` — org identifier used with `monomind org run <name>` (derived from goal if omitted)
|
|
29
29
|
`--roles <list>` — explicit role list (e.g. "boss, writer, reviewer, marketer")
|
|
30
30
|
`--schedule <interval>` — daemon schedule for `monomind org serve` to pick up, e.g. `"30m"`, `"2h"`, `"1440m"` for daily (omit for a manual, one-shot org)
|
|
31
|
+
`--max-run <interval>` — wall-clock bound on ONE scheduled cycle, same format (e.g. `"90m"`). Defaults to the schedule interval. A cycle hitting this bound is force-stopped with a 60s drain, so size it to how long the work takes, not how often you want it run.
|
|
31
32
|
`--auto` — skip confirmation, create immediately
|
|
32
33
|
`--confirm` — always ask before saving (default)
|
|
33
34
|
`--delete <name>` — delete a saved org and all associated data files (`monomind org delete <name> --yes`)
|
|
@@ -46,6 +47,7 @@ Parse `$ARGUMENTS` for:
|
|
|
46
47
|
- `--confirm` flag → mode = confirm
|
|
47
48
|
- `--name <name>` → org_name = <name> (must match `^[a-z0-9][a-z0-9-]{0,63}$`; if omitted, derived from goal)
|
|
48
49
|
- `--roles <desc>` → roles_desc = <desc> (explicit role list, e.g. "boss, writer, reviewer, marketer")
|
|
50
|
+
- `--max-run <interval>` → max_run = <interval>, same daemon format as `--schedule`
|
|
49
51
|
- `--schedule <interval>` → schedule = <interval>, daemon format only: `"<N>s"`, `"<N>m"`, or `"<N>h"` (e.g. `"30m"`, `"2h"`) — this is passed straight into `parseSchedule()` in `orgrt/scheduler.ts`, whose regex `^(\d+)\s*(s|m|h)$` rejects anything else (e.g. `"every 30 minutes"`, `"daily"`) and silently leaves the org unscheduled
|
|
50
52
|
- `--delete <name>` → delete_mode = true, delete_name = <name>
|
|
51
53
|
- `--list` flag → list_mode = true
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Parse `$ARGUMENTS` for:
|
|
4
4
|
- `--scope <name>` or `-s <name>` → knowledge scope (default: `shared`)
|
|
5
|
+
- `--global` or `-g` → import into the personal cross-project global brain
|
|
5
6
|
- Remaining positional arg → bundle directory path (REQUIRED)
|
|
6
7
|
|
|
7
8
|
If no bundle directory provided, ask: "Which directory contains the OKF bundle to import?"
|
|
@@ -9,7 +10,11 @@ If no bundle directory provided, ask: "Which directory contains the OKF bundle t
|
|
|
9
10
|
Run the import:
|
|
10
11
|
|
|
11
12
|
```bash
|
|
12
|
-
npx monomind doc
|
|
13
|
+
npx monomind doc import "<bundle_dir>" -s "<scope>"
|
|
13
14
|
```
|
|
14
15
|
|
|
16
|
+
Use `doc import`, never `doc ingest` — plain ingest would index the bundle's own
|
|
17
|
+
`index.md` manifest as if it were knowledge. Add `--global` when restoring a personal
|
|
18
|
+
brain exported with `doc export --global`.
|
|
19
|
+
|
|
15
20
|
After completion, report files processed, chunks indexed, and any errors. If the bundle directory doesn't exist or contains no `.md` files, say so.
|
|
@@ -343,8 +343,28 @@ module.exports = {
|
|
|
343
343
|
return t.length >= 3 && !_SB_FILLER.has(t);
|
|
344
344
|
});
|
|
345
345
|
if (_sbSubstantive.length >= 2 && sbPrompt.charAt(0) !== '/') {
|
|
346
|
-
|
|
347
|
-
|
|
346
|
+
// Gate on ANY knowledge, resolved from the nearest enclosing project.
|
|
347
|
+
//
|
|
348
|
+
// This used to require CWD/.monomind/knowledge/chunks.jsonl, which is
|
|
349
|
+
// written ONLY by the monograph god-node injector — so a user who ran
|
|
350
|
+
// `doc ingest ./docs` and populated the real document store (the
|
|
351
|
+
// corpus the warm endpoint below actually serves) got zero injection
|
|
352
|
+
// unless they also happened to have a monograph DB. doc-metadata.jsonl
|
|
353
|
+
// is the marker for that store; either one means there is knowledge
|
|
354
|
+
// worth searching. The upward walk matches the CLI, which keys the
|
|
355
|
+
// store to the project root, so a session started in a package
|
|
356
|
+
// subdirectory still finds its brain.
|
|
357
|
+
var sbRoot = null;
|
|
358
|
+
var sbProbe = CWD;
|
|
359
|
+
for (var _sbUp = 0; _sbUp < 8; _sbUp++) {
|
|
360
|
+
var _sbK = path.join(sbProbe, '.monomind', 'knowledge');
|
|
361
|
+
if (fs.existsSync(path.join(_sbK, 'chunks.jsonl')) || fs.existsSync(path.join(_sbK, 'doc-metadata.jsonl'))) { sbRoot = sbProbe; break; }
|
|
362
|
+
var _sbParent = path.dirname(sbProbe);
|
|
363
|
+
if (_sbParent === sbProbe) break;
|
|
364
|
+
sbProbe = _sbParent;
|
|
365
|
+
}
|
|
366
|
+
var sbKnowledgeDir = sbRoot && path.join(sbRoot, '.monomind', 'knowledge');
|
|
367
|
+
if (sbRoot) {
|
|
348
368
|
var sbHits = null;
|
|
349
369
|
var sbMethod = 'keyword';
|
|
350
370
|
// Which corpus answered. The two paths are NOT the same corpus and
|
|
@@ -368,13 +388,26 @@ module.exports = {
|
|
|
368
388
|
// sbAuth is the local dashboard session value from .monomind, same one
|
|
369
389
|
// every other hook event POST attaches — not a checked-in secret).
|
|
370
390
|
try {
|
|
391
|
+
// CWD first, then the resolved project root. CWD-first keeps an
|
|
392
|
+
// existing working pairing byte-identical; the root fallback is
|
|
393
|
+
// what stops a subdirectory session from reading no token at all,
|
|
394
|
+
// silently failing auth and reporting keyword where the warm
|
|
395
|
+
// server would have answered semantic.
|
|
371
396
|
var sbCtrlUrl = 'http://localhost:4242';
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
397
|
+
var _sbCfgDirs = sbRoot && sbRoot !== CWD ? [CWD, sbRoot] : [CWD];
|
|
398
|
+
for (var _sbCi = 0; _sbCi < _sbCfgDirs.length; _sbCi++) {
|
|
399
|
+
try {
|
|
400
|
+
var sbCtl = JSON.parse(fs.readFileSync(path.join(_sbCfgDirs[_sbCi], '.monomind', 'control.json'), 'utf-8'));
|
|
401
|
+
if (sbCtl.url) { sbCtrlUrl = sbCtl.url; break; }
|
|
402
|
+
} catch (_) {}
|
|
403
|
+
}
|
|
376
404
|
var sbAuth = '';
|
|
377
|
-
|
|
405
|
+
for (var _sbAi = 0; _sbAi < _sbCfgDirs.length; _sbAi++) {
|
|
406
|
+
try {
|
|
407
|
+
sbAuth = fs.readFileSync(path.join(_sbCfgDirs[_sbAi], '.monomind', 'dashboard-token'), 'utf-8').trim();
|
|
408
|
+
if (sbAuth) break;
|
|
409
|
+
} catch (_) {}
|
|
410
|
+
}
|
|
378
411
|
var sbResp = await fetch(sbCtrlUrl + '/api/knowledge/search', {
|
|
379
412
|
method: 'POST',
|
|
380
413
|
headers: { 'Content-Type': 'application/json', 'x-monomind-token': sbAuth },
|
|
@@ -284,7 +284,6 @@ module.exports = {
|
|
|
284
284
|
{ factory: 'createDDDWorker', file: 'worker-ddd.js', out: 'ddd-progress.json', always: true },
|
|
285
285
|
{ factory: 'createMapWorker', file: 'worker-map.js', out: 'codebase-map.json' },
|
|
286
286
|
{ factory: 'createAuditWorker', file: 'worker-audit.js', out: 'security-audit.json' },
|
|
287
|
-
{ factory: 'createOptimizeWorker', file: 'worker-optimize.js', out: 'performance.json' },
|
|
288
287
|
{ factory: 'createConsolidateWorker', file: 'worker-consolidate.js', out: 'consolidation.json' },
|
|
289
288
|
];
|
|
290
289
|
var _hooksDistDir = path.join(CWD, 'packages', '@monomind', 'hooks', 'dist', 'workers');
|
|
@@ -351,10 +350,29 @@ module.exports = {
|
|
|
351
350
|
// (c) a 30-min rate limit. Detached+unref spawn (same pattern as the
|
|
352
351
|
// helper-heal block below) — session start never waits on model loading.
|
|
353
352
|
try {
|
|
354
|
-
|
|
355
|
-
|
|
353
|
+
// Nearest enclosing knowledge base, CWD first. The CLI keys the store to
|
|
354
|
+
// the PROJECT ROOT, so a session started in a package subdirectory finds
|
|
355
|
+
// no doc-metadata.jsonl under CWD and would silently stop re-ingesting
|
|
356
|
+
// forever. Everything below (mtime gate, marker, document scan, spawn
|
|
357
|
+
// cwd) uses this one resolved root, so the check and the ingest can never
|
|
358
|
+
// disagree about which brain they mean.
|
|
359
|
+
//
|
|
360
|
+
// A stat walk, not `git rev-parse` (monograph.cjs's pattern): this runs on
|
|
361
|
+
// EVERY session start, including the majority with no knowledge base at
|
|
362
|
+
// all, and spawning git there costs a subprocess per session and writes
|
|
363
|
+
// "not a git repository" to stderr.
|
|
364
|
+
var _kbRoot = null;
|
|
365
|
+
var _kbProbe = CWD;
|
|
366
|
+
for (var _kbUp = 0; _kbUp < 8; _kbUp++) {
|
|
367
|
+
if (fs.existsSync(path.join(_kbProbe, '.monomind', 'knowledge', 'doc-metadata.jsonl'))) { _kbRoot = _kbProbe; break; }
|
|
368
|
+
var _kbParent = path.dirname(_kbProbe);
|
|
369
|
+
if (_kbParent === _kbProbe) break;
|
|
370
|
+
_kbProbe = _kbParent;
|
|
371
|
+
}
|
|
372
|
+
var _kbMetaPath = _kbRoot && path.join(_kbRoot, '.monomind', 'knowledge', 'doc-metadata.jsonl');
|
|
373
|
+
if (_kbMetaPath && fs.existsSync(_kbMetaPath)) {
|
|
356
374
|
var _kbMetaMtime = fs.statSync(_kbMetaPath).mtimeMs;
|
|
357
|
-
var _kbMarkerPath = path.join(
|
|
375
|
+
var _kbMarkerPath = path.join(_kbRoot, '.monomind', 'knowledge', 'reindex-check.json');
|
|
358
376
|
var _kbLastCheck = 0;
|
|
359
377
|
try { _kbLastCheck = JSON.parse(fs.readFileSync(_kbMarkerPath, 'utf-8')).ts || 0; } catch (_) {}
|
|
360
378
|
if (Date.now() - _kbLastCheck > 30 * 60 * 1000) {
|
|
@@ -389,11 +407,11 @@ module.exports = {
|
|
|
389
407
|
if (_DOC_EXT[ext] && st.mtimeMs > _kbMetaMtime) _kbDirty = true;
|
|
390
408
|
}
|
|
391
409
|
};
|
|
392
|
-
_kbWalk(
|
|
410
|
+
_kbWalk(_kbRoot, 0);
|
|
393
411
|
if (_kbDirty) {
|
|
394
412
|
var _kbSpawn = require('child_process').spawn;
|
|
395
413
|
var _kbChild = _kbSpawn('npx', ['-y', 'monomind@latest', 'doc', 'ingest', '.'], {
|
|
396
|
-
cwd:
|
|
414
|
+
cwd: _kbRoot,
|
|
397
415
|
detached: true,
|
|
398
416
|
stdio: 'ignore',
|
|
399
417
|
env: process.env,
|
|
@@ -20,7 +20,9 @@ Org Runtime v2 (`packages/@monomind/cli/src/orgrt/`) is a Node daemon, not a Tas
|
|
|
20
20
|
- `org_name`: desired name for the org (slug, e.g. `content-team`); constrained to `[a-z0-9-]`
|
|
21
21
|
- `roles_desc`: optional explicit role list from user (e.g. "boss, content writer, reviewer, marketer, designer")
|
|
22
22
|
- `schedule`: optional schedule string in daemon format — `"<N>s"`, `"<N>m"`, or `"<N>h"` (e.g. `"30m"`, `"2h"`). When provided, the org is picked up by `monomind org serve` on its own interval; omit for a one-shot `monomind org run`.
|
|
23
|
+
- `max_run`: optional, same format as `schedule`. See the run_config note below — always set it for a scheduled org.
|
|
23
24
|
- `budget_tokens`: optional total token budget for the org run (default 1,000,000 — split evenly across roles by the daemon)
|
|
25
|
+
- `max_run`: optional wall-clock bound on ONE scheduled cycle, same format as `schedule` (`"90m"`, `"3h"`). Defaults to the schedule interval. Set it whenever the org is scheduled: a cycle that hits this bound is force-stopped with only a 60s drain, so it should exceed how long the work actually takes, not how often you want it to run. Overrunning the interval is safe — the missed tick fires the moment the run ends rather than waiting for the next boundary.
|
|
24
26
|
- `mode`: auto | confirm
|
|
25
27
|
- `session_id`: session ID passed by command wrapper (snake_case input)
|
|
26
28
|
- `caller`: command | master
|
|
@@ -99,7 +101,8 @@ Produce an org config object matching `OrgDefSchema` exactly:
|
|
|
99
101
|
"max_concurrent_agents": 4,
|
|
100
102
|
"budget_tokens": "<budget_tokens input, or 1000000 default>",
|
|
101
103
|
"memory_namespace": "org:<org_name>",
|
|
102
|
-
"max_turns_per_message": 30
|
|
104
|
+
"max_turns_per_message": 30,
|
|
105
|
+
"max_run": "<how long ONE scheduled cycle may run, e.g. '90m'. Omit only for a one-shot org (no schedule).>"
|
|
103
106
|
},
|
|
104
107
|
"roles": [
|
|
105
108
|
{
|
|
@@ -142,6 +145,7 @@ ROLES (N roles — exactly one boss, every reports_to resolves to a real role i
|
|
|
142
145
|
SETTINGS
|
|
143
146
|
────────
|
|
144
147
|
Budget: <run_config.budget_tokens> tokens (split evenly across N roles)
|
|
148
|
+
Max run: <run_config.max_run, or "schedule interval" when unset>
|
|
145
149
|
Memory namespace: org:<org_name>
|
|
146
150
|
Schedule: <"every <N> <unit>" if schedule set; otherwise "manual — run with `monomind org run <org_name>`">
|
|
147
151
|
|
|
@@ -166,17 +170,20 @@ Write the confirmed org config as JSON using `jq` to guarantee valid encoding:
|
|
|
166
170
|
|
|
167
171
|
```bash
|
|
168
172
|
# Set shell variables from the confirmed plan before running this block:
|
|
169
|
-
# goal, schedule_val ("" if none), budget_tokens_val,
|
|
173
|
+
# goal, schedule_val ("" if none), budget_tokens_val, max_run_val ("" if none),
|
|
174
|
+
# roles_json (JSON array matching the role shape above)
|
|
170
175
|
jq -n \
|
|
171
176
|
--arg name "$org_name" \
|
|
172
177
|
--arg goal "$goal" \
|
|
173
178
|
--arg schedule "${schedule_val:-}" \
|
|
174
179
|
--argjson budget_tokens "${budget_tokens_val:-1000000}" \
|
|
180
|
+
--arg max_run "${max_run_val:-}" \
|
|
175
181
|
--argjson roles "$roles_json" \
|
|
176
182
|
'{name:$name,goal:$goal,status:"stopped",
|
|
177
183
|
schedule:(if $schedule=="" then null else $schedule end),
|
|
178
|
-
run_config:{max_concurrent_agents:4,budget_tokens:$budget_tokens,
|
|
179
|
-
|
|
184
|
+
run_config:({max_concurrent_agents:4,budget_tokens:$budget_tokens,
|
|
185
|
+
memory_namespace:("org:"+$name),max_turns_per_message:30}
|
|
186
|
+
+ (if $max_run=="" then {} else {max_run:$max_run} end)),
|
|
180
187
|
roles:$roles}' \
|
|
181
188
|
> "${orgJson}.tmp" && mv "${orgJson}.tmp" "$orgJson"
|
|
182
189
|
```
|
package/README.md
CHANGED
|
@@ -294,7 +294,7 @@ flowchart LR
|
|
|
294
294
|
DB -->|next session| CE
|
|
295
295
|
```
|
|
296
296
|
|
|
297
|
-
**
|
|
297
|
+
**8 on-demand workers** run at session start (staleness-gated, refreshed when older than 6 hours): `health` · `ddd` · `security` · `cache` · `progress` · `map` · `audit` · `consolidate`.
|
|
298
298
|
|
|
299
299
|
---
|
|
300
300
|
|
|
@@ -357,10 +357,16 @@ Everything runs from inside Claude Code via slash commands. Here's the highlight
|
|
|
357
357
|
|
|
358
358
|
| Package | npm | Purpose |
|
|
359
359
|
|---|---|---|
|
|
360
|
-
| `monomind` | [](https://www.npmjs.com/package/monomind) | Umbrella — **install this one** |
|
|
361
|
-
| `@monoes/monomindcli` | [](https://www.npmjs.com/package/@monoes/monomindcli) | CLI engine (32 commands) |
|
|
360
|
+
| `monomind` | [](https://www.npmjs.com/package/monomind) | Umbrella shim — **install this one** |
|
|
361
|
+
| `@monoes/monomindcli` | [](https://www.npmjs.com/package/@monoes/monomindcli) | CLI engine (32 commands, MCP server) |
|
|
362
|
+
| `@monoes/monograph` | [](https://www.npmjs.com/package/@monoes/monograph) | Code knowledge graph (tree-sitter + SQLite) |
|
|
363
|
+
| `@monoes/memory` | [](https://www.npmjs.com/package/@monoes/memory) | Persistent memory backends (SQLite + vectors) |
|
|
364
|
+
| `@monoes/hooks` | [](https://www.npmjs.com/package/@monoes/hooks) | Hook registry + 8 on-demand workers |
|
|
365
|
+
| `@monoes/mcp` | [](https://www.npmjs.com/package/@monoes/mcp) | MCP server framework (stdio/HTTP/WebSocket) |
|
|
366
|
+
| `@monoes/routing` | [](https://www.npmjs.com/package/@monoes/routing) | Semantic task-to-agent routing |
|
|
367
|
+
| `@monoes/monobrowse` | [](https://www.npmjs.com/package/@monoes/monobrowse) | Browser automation via CDP |
|
|
368
|
+
| `@monoes/monodesign` | [](https://www.npmjs.com/package/@monoes/monodesign) | Frontend design intelligence |
|
|
362
369
|
| `monofence-ai` | [](https://www.npmjs.com/package/monofence-ai) | AI manipulation defence |
|
|
363
|
-
| `@monoes/monograph` | [](https://www.npmjs.com/package/@monoes/monograph) | Code knowledge graph |
|
|
364
370
|
|
|
365
371
|
---
|
|
366
372
|
|
|
@@ -398,8 +404,8 @@ graph TD
|
|
|
398
404
|
## Resources
|
|
399
405
|
|
|
400
406
|
- 📖 [Full Documentation](https://monoes.github.io/monomind/)
|
|
401
|
-
- 🖥️ [CLI Command Reference](https://github.com/monoes/monomind/blob/main/
|
|
402
|
-
- 🏢 [Org Runtime v2 Architecture](https://github.com/monoes/monomind/blob/main/
|
|
407
|
+
- 🖥️ [CLI Command Reference](https://github.com/monoes/monomind/blob/main/doc/commands/cli-reference.md)
|
|
408
|
+
- 🏢 [Org Runtime v2 Architecture](https://github.com/monoes/monomind/blob/main/doc/concepts/org-runtime.md)
|
|
403
409
|
- 🏢 [Autonomous Orgs](https://monoes.github.io/monomind/#orgs)
|
|
404
410
|
- ⚡ [Mastermind Reference](https://monoes.github.io/monomind/#mastermind)
|
|
405
411
|
- 📋 [All Slash Commands](https://monoes.github.io/monomind/#slash)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/capabilities/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/capabilities/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AA0BjD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -9,6 +9,23 @@ export { CapabilityManager } from './manager.js';
|
|
|
9
9
|
// capabilities/ is not in package.json's `exports` map and src/index.ts never
|
|
10
10
|
// re-exported it. If incremental re-scanning is wanted later, wire it to the
|
|
11
11
|
// scanner at the same time rather than landing an unused class again.
|
|
12
|
+
//
|
|
13
|
+
// `EnrichmentPipeline` (./enrichment.ts) and the `enrich` command were never
|
|
14
|
+
// merged, for the same reason plus one worse one. Its only public entry point
|
|
15
|
+
// was `commands/enrich.ts`, which called loadState/pause/resume/getSummary but
|
|
16
|
+
// never `runTier()` — the one method that does the actual enriching had zero
|
|
17
|
+
// callers, so `enrich --status` would have reported progress on a pipeline
|
|
18
|
+
// nothing ever ran. On top of that, the branch tip did not compile: the final
|
|
19
|
+
// review-fix commit redeclared `const raw` in `loadState()` (TS2451). The
|
|
20
|
+
// T0/T1/T2 vocabulary it defined (`EnrichmentTier`/`EnrichmentStatus`/
|
|
21
|
+
// `EnrichmentState`/`EnrichResult` and the optional `enrich()` hook on
|
|
22
|
+
// `CapabilityModule`) was removed from types.ts at the same time as this note:
|
|
23
|
+
// no capability module implemented the hook and nothing constructed the state,
|
|
24
|
+
// so the types described a runtime that did not exist. Reintroduce them
|
|
25
|
+
// together with a caller, not ahead of one.
|
|
26
|
+
// Branch of record: feat/universal-second-brain (orphaned — shares no history
|
|
27
|
+
// with main after the rewrite, so it can never be merged; read it with
|
|
28
|
+
// `git show feat/universal-second-brain:<path>`).
|
|
12
29
|
export { codeCapability } from './cap-code.js';
|
|
13
30
|
export { documentsCapability } from './cap-documents.js';
|
|
14
31
|
export { mediaCapability } from './cap-media.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/capabilities/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,+EAA+E;AAC/E,4EAA4E;AAC5E,gFAAgF;AAChF,gFAAgF;AAChF,2EAA2E;AAC3E,8EAA8E;AAC9E,6EAA6E;AAC7E,sEAAsE;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/capabilities/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,+EAA+E;AAC/E,4EAA4E;AAC5E,gFAAgF;AAChF,gFAAgF;AAChF,2EAA2E;AAC3E,8EAA8E;AAC9E,6EAA6E;AAC7E,sEAAsE;AACtE,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,6EAA6E;AAC7E,2EAA2E;AAC3E,8EAA8E;AAC9E,0EAA0E;AAC1E,uEAAuE;AACvE,uEAAuE;AACvE,+EAA+E;AAC/E,+EAA+E;AAC/E,wEAAwE;AACxE,4CAA4C;AAC5C,8EAA8E;AAC9E,uEAAuE;AACvE,kDAAkD;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
export type EnrichmentTier = 't0' | 't1' | 't2';
|
|
2
|
-
export type EnrichmentStatus = 'pending' | 'queued' | 'done' | 'skipped' | 'failed';
|
|
3
1
|
export type CapabilityName = 'code' | 'documents' | 'media' | 'data' | 'graph' | 'timeline';
|
|
4
2
|
export interface FileEntry {
|
|
5
3
|
path: string;
|
|
@@ -30,11 +28,6 @@ export interface IndexResult {
|
|
|
30
28
|
skipped: number;
|
|
31
29
|
errors: string[];
|
|
32
30
|
}
|
|
33
|
-
export interface EnrichResult {
|
|
34
|
-
enriched: number;
|
|
35
|
-
skipped: number;
|
|
36
|
-
errors: string[];
|
|
37
|
-
}
|
|
38
31
|
export interface SearchResult {
|
|
39
32
|
path: string;
|
|
40
33
|
score: number;
|
|
@@ -49,15 +42,11 @@ export interface HealthCheck {
|
|
|
49
42
|
hint?: string;
|
|
50
43
|
fix?: string;
|
|
51
44
|
}
|
|
52
|
-
export interface EnrichmentState {
|
|
53
|
-
[relativePath: string]: Record<EnrichmentTier, EnrichmentStatus>;
|
|
54
|
-
}
|
|
55
45
|
export interface CapabilityModule {
|
|
56
46
|
name: CapabilityName;
|
|
57
47
|
detect(scan: DirectoryScan): number;
|
|
58
48
|
activate(rootDir: string): Promise<void>;
|
|
59
49
|
index(files: FileEntry[]): Promise<IndexResult>;
|
|
60
|
-
enrich?(files: FileEntry[]): Promise<EnrichResult>;
|
|
61
50
|
search?(query: string, limit?: number): Promise<SearchResult[]>;
|
|
62
51
|
healthChecks?(): Promise<HealthCheck[]>;
|
|
63
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/capabilities/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/capabilities/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;AAE5F,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,IAAI,CAAC;IACf,OAAO,EAAE,IAAI,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;IACtD,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,OAAO,EAAE,CAAC,CAAC;CACZ;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAChE,YAAY,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CACzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc.d.ts","sourceRoot":"","sources":["../../../src/commands/doc.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"doc.d.ts","sourceRoot":"","sources":["../../../src/commands/doc.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,aAAa,CAAC;AAqf1E,eAAO,MAAM,UAAU,EAAE,OAiCxB,CAAC;eAEa,UAAU"}
|