@monoes/monomindcli 2.14.1 → 2.15.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/.claude/helpers/control-start.cjs +10 -13
- package/.claude/skills/monodesign/scripts/context.mjs +4 -4
- package/.claude/skills/monodesign/scripts/critique-storage.mjs +1 -1
- package/.claude/skills/monodesign/scripts/detect-csp.mjs +1 -6
- package/.claude/skills/monodesign/scripts/detector/browser/injected/index.mjs +16 -18
- package/.claude/skills/monodesign/scripts/detector/cli/main.mjs +3 -3
- package/.claude/skills/monodesign/scripts/detector/detect-antipatterns-browser.js +67 -47
- package/.claude/skills/monodesign/scripts/detector/engines/regex/detect-text.mjs +6 -6
- package/.claude/skills/monodesign/scripts/detector/engines/static-html/css-cascade.mjs +6 -5
- package/.claude/skills/monodesign/scripts/detector/engines/static-html/detect-html.mjs +6 -6
- package/.claude/skills/monodesign/scripts/detector/fix/index.mjs +3 -3
- package/.claude/skills/monodesign/scripts/detector/node/file-system.mjs +1 -1
- package/.claude/skills/monodesign/scripts/detector/registry/antipatterns.mjs +1 -1
- package/.claude/skills/monodesign/scripts/detector/rules/checks.mjs +24 -25
- package/.claude/skills/monodesign/scripts/detector/shared/color.mjs +2 -2
- package/.claude/skills/monodesign/scripts/detector/shared/constants.mjs +1 -1
- package/.claude/skills/monodesign/scripts/detector/shared/inline-ignores.mjs +2 -2
- package/.claude/skills/monodesign/scripts/hook-admin.mjs +6 -6
- package/.claude/skills/monodesign/scripts/hook-before-edit.mjs +4 -4
- package/.claude/skills/monodesign/scripts/hook-lib.mjs +20 -11
- package/.claude/skills/monodesign/scripts/hook.mjs +1 -1
- package/.claude/skills/monodesign/scripts/lib/design-parser.mjs +9 -42
- package/.claude/skills/monodesign/scripts/lib/is-generated.mjs +1 -1
- package/.claude/skills/monodesign/scripts/lib/monodesign-config.mjs +5 -5
- package/.claude/skills/monodesign/scripts/lib/monodesign-paths.mjs +1 -1
- package/.claude/skills/monodesign/scripts/live/event-validation.mjs +13 -13
- package/.claude/skills/monodesign/scripts/live/manual-apply.mjs +4 -4
- package/.claude/skills/monodesign/scripts/live/manual-edits-buffer.mjs +1 -1
- package/.claude/skills/monodesign/scripts/live/session-store.mjs +5 -5
- package/.claude/skills/monodesign/scripts/live/svelte-component.mjs +13 -13
- package/.claude/skills/monodesign/scripts/live/sveltekit-adapter.mjs +4 -4
- package/.claude/skills/monodesign/scripts/live/ui-core.mjs +1 -1
- package/.claude/skills/monodesign/scripts/live-accept.mjs +24 -24
- package/.claude/skills/monodesign/scripts/live-browser-dom.js +8 -7
- package/.claude/skills/monodesign/scripts/live-browser-session.js +8 -7
- package/.claude/skills/monodesign/scripts/live-browser.js +405 -432
- package/.claude/skills/monodesign/scripts/live-commit-manual-edits.mjs +6 -6
- package/.claude/skills/monodesign/scripts/live-copy-edit-agent.mjs +2 -2
- package/.claude/skills/monodesign/scripts/live-discard-manual-edits.mjs +1 -1
- package/.claude/skills/monodesign/scripts/live-inject.mjs +7 -7
- package/.claude/skills/monodesign/scripts/live-insert.mjs +11 -11
- package/.claude/skills/monodesign/scripts/live-manual-edit-evidence.mjs +4 -4
- package/.claude/skills/monodesign/scripts/live-poll.mjs +5 -5
- package/.claude/skills/monodesign/scripts/live-server.mjs +10 -10
- package/.claude/skills/monodesign/scripts/live-wrap.mjs +31 -41
- package/.claude/skills/monodesign/scripts/live.mjs +5 -5
- package/.claude/skills/monodesign/scripts/palette.mjs +3 -1
- package/.claude/skills/monodesign/scripts/pin.mjs +1 -1
- package/dist/src/commands/doc-filters.d.ts.map +1 -1
- package/dist/src/commands/doc-filters.js +6 -0
- package/dist/src/commands/doc-filters.js.map +1 -1
- package/dist/src/commands/doc-library.d.ts +2 -1
- package/dist/src/commands/doc-library.d.ts.map +1 -1
- package/dist/src/commands/doc-library.js +66 -2
- package/dist/src/commands/doc-library.js.map +1 -1
- package/dist/src/commands/doc.d.ts.map +1 -1
- package/dist/src/commands/doc.js +2 -0
- package/dist/src/commands/doc.js.map +1 -1
- package/dist/src/commands/org.d.ts.map +1 -1
- package/dist/src/commands/org.js +42 -4
- package/dist/src/commands/org.js.map +1 -1
- package/dist/src/commands/ui.d.ts.map +1 -1
- package/dist/src/commands/ui.js +60 -0
- package/dist/src/commands/ui.js.map +1 -1
- package/dist/src/knowledge/capture-envelope.d.ts +5 -0
- package/dist/src/knowledge/capture-envelope.d.ts.map +1 -1
- package/dist/src/knowledge/capture-envelope.js +2 -0
- package/dist/src/knowledge/capture-envelope.js.map +1 -1
- package/dist/src/knowledge/document-chunking.d.ts +42 -0
- package/dist/src/knowledge/document-chunking.d.ts.map +1 -0
- package/dist/src/knowledge/document-chunking.js +288 -0
- package/dist/src/knowledge/document-chunking.js.map +1 -0
- package/dist/src/knowledge/document-index.d.ts +124 -0
- package/dist/src/knowledge/document-index.d.ts.map +1 -0
- package/dist/src/knowledge/document-index.js +314 -0
- package/dist/src/knowledge/document-index.js.map +1 -0
- package/dist/src/knowledge/document-ingest.d.ts +23 -0
- package/dist/src/knowledge/document-ingest.d.ts.map +1 -0
- package/dist/src/knowledge/document-ingest.js +368 -0
- package/dist/src/knowledge/document-ingest.js.map +1 -0
- package/dist/src/knowledge/document-pipeline.d.ts +26 -208
- package/dist/src/knowledge/document-pipeline.d.ts.map +1 -1
- package/dist/src/knowledge/document-pipeline.js +25 -1104
- package/dist/src/knowledge/document-pipeline.js.map +1 -1
- package/dist/src/knowledge/document-search.d.ts +27 -0
- package/dist/src/knowledge/document-search.d.ts.map +1 -0
- package/dist/src/knowledge/document-search.js +138 -0
- package/dist/src/knowledge/document-search.js.map +1 -0
- package/dist/src/knowledge/document-store.d.ts +28 -0
- package/dist/src/knowledge/document-store.d.ts.map +1 -0
- package/dist/src/knowledge/document-store.js +61 -0
- package/dist/src/knowledge/document-store.js.map +1 -0
- package/dist/src/knowledge/document-types.d.ts +103 -0
- package/dist/src/knowledge/document-types.d.ts.map +1 -0
- package/dist/src/knowledge/document-types.js +12 -0
- package/dist/src/knowledge/document-types.js.map +1 -0
- package/dist/src/knowledge/highlights.d.ts +168 -0
- package/dist/src/knowledge/highlights.d.ts.map +1 -0
- package/dist/src/knowledge/highlights.js +311 -0
- package/dist/src/knowledge/highlights.js.map +1 -0
- package/dist/src/knowledge/lookup.d.ts +80 -0
- package/dist/src/knowledge/lookup.d.ts.map +1 -0
- package/dist/src/knowledge/lookup.js +156 -0
- package/dist/src/knowledge/lookup.js.map +1 -0
- package/dist/src/knowledge/okf-bundle.d.ts +19 -0
- package/dist/src/knowledge/okf-bundle.d.ts.map +1 -0
- package/dist/src/knowledge/okf-bundle.js +106 -0
- package/dist/src/knowledge/okf-bundle.js.map +1 -0
- package/dist/src/knowledge/profile-store.d.ts +134 -0
- package/dist/src/knowledge/profile-store.d.ts.map +1 -0
- package/dist/src/knowledge/profile-store.js +237 -0
- package/dist/src/knowledge/profile-store.js.map +1 -0
- package/dist/src/orgrt/agent-runner.d.ts +4 -0
- package/dist/src/orgrt/agent-runner.d.ts.map +1 -1
- package/dist/src/orgrt/agent-runner.js +22 -0
- package/dist/src/orgrt/agent-runner.js.map +1 -1
- package/dist/src/orgrt/antigravity-runner.d.ts.map +1 -1
- package/dist/src/orgrt/antigravity-runner.js +2 -1
- package/dist/src/orgrt/antigravity-runner.js.map +1 -1
- package/dist/src/orgrt/authority-mask.d.ts +32 -0
- package/dist/src/orgrt/authority-mask.d.ts.map +1 -0
- package/dist/src/orgrt/authority-mask.js +135 -0
- package/dist/src/orgrt/authority-mask.js.map +1 -0
- package/dist/src/orgrt/codex-runner.d.ts.map +1 -1
- package/dist/src/orgrt/codex-runner.js +2 -1
- package/dist/src/orgrt/codex-runner.js.map +1 -1
- package/dist/src/orgrt/copilot-runner.d.ts.map +1 -1
- package/dist/src/orgrt/copilot-runner.js +2 -1
- package/dist/src/orgrt/copilot-runner.js.map +1 -1
- package/dist/src/orgrt/crush-runner.d.ts.map +1 -1
- package/dist/src/orgrt/crush-runner.js +6 -1
- package/dist/src/orgrt/crush-runner.js.map +1 -1
- package/dist/src/orgrt/daemon.d.ts +4 -0
- package/dist/src/orgrt/daemon.d.ts.map +1 -1
- package/dist/src/orgrt/daemon.js +13 -2
- package/dist/src/orgrt/daemon.js.map +1 -1
- package/dist/src/orgrt/decisions.d.ts +9 -0
- package/dist/src/orgrt/decisions.d.ts.map +1 -1
- package/dist/src/orgrt/decisions.js +32 -5
- package/dist/src/orgrt/decisions.js.map +1 -1
- package/dist/src/orgrt/file-roots.d.ts +2 -1
- package/dist/src/orgrt/file-roots.d.ts.map +1 -1
- package/dist/src/orgrt/file-roots.js +7 -3
- package/dist/src/orgrt/file-roots.js.map +1 -1
- package/dist/src/orgrt/grok-runner.d.ts.map +1 -1
- package/dist/src/orgrt/grok-runner.js +2 -1
- package/dist/src/orgrt/grok-runner.js.map +1 -1
- package/dist/src/orgrt/hermes-runner.d.ts.map +1 -1
- package/dist/src/orgrt/hermes-runner.js +2 -1
- package/dist/src/orgrt/hermes-runner.js.map +1 -1
- package/dist/src/orgrt/inbox.d.ts.map +1 -1
- package/dist/src/orgrt/inbox.js +70 -4
- package/dist/src/orgrt/inbox.js.map +1 -1
- package/dist/src/orgrt/kimicode-runner.d.ts.map +1 -1
- package/dist/src/orgrt/kimicode-runner.js +2 -1
- package/dist/src/orgrt/kimicode-runner.js.map +1 -1
- package/dist/src/orgrt/opencode-runner.d.ts.map +1 -1
- package/dist/src/orgrt/opencode-runner.js +3 -2
- package/dist/src/orgrt/opencode-runner.js.map +1 -1
- package/dist/src/orgrt/pi-rpc-runner.d.ts.map +1 -1
- package/dist/src/orgrt/pi-rpc-runner.js +3 -2
- package/dist/src/orgrt/pi-rpc-runner.js.map +1 -1
- package/dist/src/orgrt/pi-runner.d.ts.map +1 -1
- package/dist/src/orgrt/pi-runner.js +2 -1
- package/dist/src/orgrt/pi-runner.js.map +1 -1
- package/dist/src/orgrt/policy.d.ts.map +1 -1
- package/dist/src/orgrt/policy.js +3 -0
- package/dist/src/orgrt/policy.js.map +1 -1
- package/dist/src/orgrt/qwen-rpc-runner.d.ts.map +1 -1
- package/dist/src/orgrt/qwen-rpc-runner.js +3 -2
- package/dist/src/orgrt/qwen-rpc-runner.js.map +1 -1
- package/dist/src/orgrt/qwen-runner.d.ts.map +1 -1
- package/dist/src/orgrt/qwen-runner.js +2 -1
- package/dist/src/orgrt/qwen-runner.js.map +1 -1
- package/dist/src/orgrt/role-sandbox.d.ts +21 -0
- package/dist/src/orgrt/role-sandbox.d.ts.map +1 -1
- package/dist/src/orgrt/role-sandbox.js +31 -6
- package/dist/src/orgrt/role-sandbox.js.map +1 -1
- package/dist/src/orgrt/session.d.ts.map +1 -1
- package/dist/src/orgrt/session.js +21 -2
- package/dist/src/orgrt/session.js.map +1 -1
- package/dist/src/orgrt/task-dag.d.ts +3 -0
- package/dist/src/orgrt/task-dag.d.ts.map +1 -1
- package/dist/src/orgrt/task-dag.js +1 -0
- package/dist/src/orgrt/task-dag.js.map +1 -1
- package/dist/src/orgrt/types.d.ts +5 -0
- package/dist/src/orgrt/types.d.ts.map +1 -1
- package/dist/src/orgrt/types.js +23 -1
- package/dist/src/orgrt/types.js.map +1 -1
- package/dist/src/ui/dashboard.html +28 -848
- package/dist/src/ui/human-auth.mjs +103 -0
- package/dist/src/ui/org-hil.mjs +86 -37
- package/dist/src/ui/org-runtime.mjs +21 -13
- package/dist/src/ui/routes-org.mjs +49 -445
- package/dist/src/ui/server.mjs +103 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
package/dist/src/ui/server.mjs
CHANGED
|
@@ -22,6 +22,13 @@ import {
|
|
|
22
22
|
collectSystem,
|
|
23
23
|
collectTokens,
|
|
24
24
|
} from './collector.mjs';
|
|
25
|
+
import {
|
|
26
|
+
consumeLoginNonce,
|
|
27
|
+
humanSessionCookie,
|
|
28
|
+
isHumanRequest,
|
|
29
|
+
issueLoginNonce,
|
|
30
|
+
loginRequiredPage,
|
|
31
|
+
} from './human-auth.mjs';
|
|
25
32
|
import { handleMonoesRoutes } from './routes-monoes.mjs';
|
|
26
33
|
import { handleMonographRoutes } from './routes-monograph.mjs';
|
|
27
34
|
import { handleOrgRoutes } from './routes-org.mjs';
|
|
@@ -856,7 +863,7 @@ export function watchSafely(watcher, label) {
|
|
|
856
863
|
/**
|
|
857
864
|
* Opens a URL in the default browser, cross-platform.
|
|
858
865
|
*/
|
|
859
|
-
async function openUrl(url) {
|
|
866
|
+
export async function openUrl(url) {
|
|
860
867
|
const { exec } = await import('node:child_process');
|
|
861
868
|
const cmd =
|
|
862
869
|
process.platform === 'darwin'
|
|
@@ -877,16 +884,27 @@ function bindServer(server, port) {
|
|
|
877
884
|
let attempt = 0;
|
|
878
885
|
|
|
879
886
|
function tryPort(p) {
|
|
880
|
-
|
|
887
|
+
// A failed attempt's 'listening' callback is never invoked (listen()
|
|
888
|
+
// failure emits 'error', not 'listening'), so it stays armed on the
|
|
889
|
+
// server. Without removeAllListeners('listening') here, the NEXT
|
|
890
|
+
// attempt's successful bind fires every still-armed 'listening'
|
|
891
|
+
// listener in registration order — the failed attempt's callback runs
|
|
892
|
+
// first and resolves with the busy port it never got, not the port
|
|
893
|
+
// actually bound. Resolving from server.address().port (rather than
|
|
894
|
+
// the closed-over `p`) is the same fix for the port:0 (OS-assigned)
|
|
895
|
+
// case, where `p` is 0 but the real port is whatever the OS picked.
|
|
896
|
+
server.removeAllListeners('listening');
|
|
897
|
+
server.removeAllListeners('error');
|
|
898
|
+
server.once('listening', () => resolve(server.address().port));
|
|
881
899
|
server.once('error', (err) => {
|
|
882
900
|
if (err.code === 'EADDRINUSE' && attempt < maxTries) {
|
|
883
901
|
attempt += 1;
|
|
884
|
-
server.removeAllListeners('error');
|
|
885
902
|
tryPort(p + 1);
|
|
886
903
|
} else {
|
|
887
904
|
reject(err);
|
|
888
905
|
}
|
|
889
906
|
});
|
|
907
|
+
server.listen(p, '127.0.0.1');
|
|
890
908
|
}
|
|
891
909
|
|
|
892
910
|
tryPort(port);
|
|
@@ -1921,7 +1939,20 @@ export async function startServer({
|
|
|
1921
1939
|
'/orgs-files.js',
|
|
1922
1940
|
'/markdown.js',
|
|
1923
1941
|
'/favicon.ico',
|
|
1942
|
+
'/api/identity',
|
|
1924
1943
|
]);
|
|
1944
|
+
// Pages that embed the token: served only to a browser with the human session.
|
|
1945
|
+
const _HUMAN_PAGES = new Set(['/', '/v2', '/orgs', '/mastermind']);
|
|
1946
|
+
// Mutations that act as the human supervising an org (org-hil.mjs,
|
|
1947
|
+
// org-runtime.mjs's config patch): the token alone is not enough.
|
|
1948
|
+
const _HUMAN_ROUTES = [
|
|
1949
|
+
/^\/api\/questions\/answer$/,
|
|
1950
|
+
/^\/api\/org\/[^/]+\/approvals\/[^/]+$/,
|
|
1951
|
+
/^\/api\/org\/[^/]+\/gates\/[^/]+$/,
|
|
1952
|
+
/^\/api\/org\/[^/]+\/config$/,
|
|
1953
|
+
/^\/api\/orgs\/[^/]+\/chat$/,
|
|
1954
|
+
];
|
|
1955
|
+
const _isHumanRoute = (url) => _HUMAN_ROUTES.some((re) => re.test(url));
|
|
1925
1956
|
const _isOpenRoute = (url, method) =>
|
|
1926
1957
|
(method === 'GET' || method === 'HEAD' || method === 'OPTIONS') &&
|
|
1927
1958
|
(_OPEN_ROUTES.has(url) ||
|
|
@@ -2002,6 +2033,67 @@ export async function startServer({
|
|
|
2002
2033
|
}
|
|
2003
2034
|
}
|
|
2004
2035
|
|
|
2036
|
+
// ------------------------------------------------ GET /api/identity
|
|
2037
|
+
// Which process serves this port and where its token file is — never the
|
|
2038
|
+
// token itself. control-start.cjs pairs another project with a server it
|
|
2039
|
+
// finds already listening, by reading that file as the same user.
|
|
2040
|
+
if (req.method === 'GET' && url === '/api/identity') {
|
|
2041
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
2042
|
+
res.end(
|
|
2043
|
+
JSON.stringify({
|
|
2044
|
+
pid: process.pid,
|
|
2045
|
+
dir: projectDir || process.cwd(),
|
|
2046
|
+
tokenFile: _dashboardTokenFilePath,
|
|
2047
|
+
}),
|
|
2048
|
+
);
|
|
2049
|
+
return;
|
|
2050
|
+
}
|
|
2051
|
+
|
|
2052
|
+
// ── Human session (human-auth.mjs) ─────────────────────────────────────
|
|
2053
|
+
// The pages embed the dashboard token, and the decision routes act as the
|
|
2054
|
+
// human who supervises an org — both need the browser session cookie, not
|
|
2055
|
+
// just the token any local process can obtain. A one-time `?login=` link
|
|
2056
|
+
// sets that cookie.
|
|
2057
|
+
if (req.method === 'GET' && _HUMAN_PAGES.has(url)) {
|
|
2058
|
+
const _login = new URL(req.url, 'http://localhost').searchParams.get('login');
|
|
2059
|
+
if (_login && consumeLoginNonce(_login)) {
|
|
2060
|
+
res.writeHead(302, {
|
|
2061
|
+
Location: url,
|
|
2062
|
+
'Set-Cookie': humanSessionCookie(),
|
|
2063
|
+
'Cache-Control': 'no-store',
|
|
2064
|
+
});
|
|
2065
|
+
res.end();
|
|
2066
|
+
return;
|
|
2067
|
+
}
|
|
2068
|
+
if (!isHumanRequest(req)) {
|
|
2069
|
+
res.writeHead(401, {
|
|
2070
|
+
'Content-Type': 'text/html; charset=utf-8',
|
|
2071
|
+
'Cache-Control': 'no-store',
|
|
2072
|
+
});
|
|
2073
|
+
res.end(loginRequiredPage());
|
|
2074
|
+
return;
|
|
2075
|
+
}
|
|
2076
|
+
}
|
|
2077
|
+
if (
|
|
2078
|
+
req.method !== 'GET' &&
|
|
2079
|
+
req.method !== 'HEAD' &&
|
|
2080
|
+
_isHumanRoute(url) &&
|
|
2081
|
+
!isHumanRequest(req)
|
|
2082
|
+
) {
|
|
2083
|
+
res.writeHead(403, {
|
|
2084
|
+
'Content-Type': 'application/json',
|
|
2085
|
+
...(corsOrigin ? { 'Access-Control-Allow-Origin': corsOrigin } : {}),
|
|
2086
|
+
});
|
|
2087
|
+
res.end(
|
|
2088
|
+
JSON.stringify({
|
|
2089
|
+
ok: false,
|
|
2090
|
+
error:
|
|
2091
|
+
'this acts as the human supervising the org — open the dashboard with `monomind dashboard open` and do it from that browser',
|
|
2092
|
+
}),
|
|
2093
|
+
);
|
|
2094
|
+
return;
|
|
2095
|
+
}
|
|
2096
|
+
|
|
2005
2097
|
// ------------------------------------------------------------------ GET /
|
|
2006
2098
|
if (req.method === 'GET' && url === '/') {
|
|
2007
2099
|
const htmlPath = path.join(__dirname, 'dashboard.html');
|
|
@@ -6091,7 +6183,14 @@ export async function startServer({
|
|
|
6091
6183
|
|
|
6092
6184
|
// ---------------------------------------------------------- Auto-open
|
|
6093
6185
|
if (openBrowser) {
|
|
6094
|
-
|
|
6186
|
+
// A one-time login link, so the browser this opens gets the human session.
|
|
6187
|
+
let _openAt = url;
|
|
6188
|
+
try {
|
|
6189
|
+
_openAt = `${url}/?login=${issueLoginNonce()}`;
|
|
6190
|
+
} catch (_) {
|
|
6191
|
+
/* no session possible — the page explains how to get one */
|
|
6192
|
+
}
|
|
6193
|
+
openUrl(_openAt).catch(() => {
|
|
6095
6194
|
// Non-fatal: browser open failure should not crash the server
|
|
6096
6195
|
});
|
|
6097
6196
|
}
|