clearotron 0.3.0-beta.8 → 0.3.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/INSTALL.md +65 -0
- package/README.md +3 -0
- package/bin/key.mjs +23 -5
- package/bin/onboard.mjs +4 -1
- package/bin/start.mjs +89 -13
- package/bin/status.mjs +24 -4
- package/bin/stop.mjs +23 -8
- package/build-info.json +2 -2
- package/docs/RELEASES.md +1 -1
- package/driver/CHANGELOG.md +44 -0
- package/driver/compose-read.mjs +21 -2
- package/driver/engine/jx-turn.mjs +4 -1
- package/driver/package.json +1 -1
- package/driver/portal-service.mjs +6 -2
- package/driver/suite-census.json +50 -8
- package/driver/systemd/render-units.mjs +7 -13
- package/driver/unit-environment.mjs +1 -1
- package/mcp-server/CHANGELOG.md +12 -0
- package/mcp-server/package.json +1 -1
- package/package.json +1 -1
- package/portal-ui/dist/assets/{index-qes7gLpM.js → index-CwPAS0we.js} +3 -2
- package/portal-ui/dist/index.html +1 -1
- package/portal-ui/package.json +1 -1
- package/providers/oauth-mcp-bridge/CHANGELOG.md +12 -0
- package/providers/oauth-mcp-bridge/package.json +1 -1
- package/scripts/import-cycle-check.mjs +468 -0
- package/scripts/release-install-check.mjs +51 -2
- package/scripts/release-notes-lint.mjs +2 -2
- package/scripts/release-version.mjs +3 -3
- package/shared/client-door.mjs +39 -0
- package/shared/env-file-merge.mjs +24 -0
- package/shared/invocation.mjs +18 -0
- package/shared/running-start.mjs +73 -0
package/driver/suite-census.json
CHANGED
|
@@ -141,6 +141,12 @@
|
|
|
141
141
|
"skips": 0,
|
|
142
142
|
"todos": 0
|
|
143
143
|
},
|
|
144
|
+
"a-command-printed-from-npx-outlives-the-cache.test.mjs": {
|
|
145
|
+
"tests": 3,
|
|
146
|
+
"asserts": 14,
|
|
147
|
+
"skips": 0,
|
|
148
|
+
"todos": 0
|
|
149
|
+
},
|
|
144
150
|
"a-company-can-be-given-a-framework-after-it-exists.test.mjs": {
|
|
145
151
|
"tests": 8,
|
|
146
152
|
"asserts": 19,
|
|
@@ -375,6 +381,12 @@
|
|
|
375
381
|
"skips": 0,
|
|
376
382
|
"todos": 0
|
|
377
383
|
},
|
|
384
|
+
"a-key-the-demo-prints-signs-for-that-demo.test.mjs": {
|
|
385
|
+
"tests": 5,
|
|
386
|
+
"asserts": 30,
|
|
387
|
+
"skips": 0,
|
|
388
|
+
"todos": 0
|
|
389
|
+
},
|
|
378
390
|
"a-killed-browser-takes-its-children.test.mjs": {
|
|
379
391
|
"tests": 2,
|
|
380
392
|
"asserts": 4,
|
|
@@ -543,6 +555,12 @@
|
|
|
543
555
|
"skips": 0,
|
|
544
556
|
"todos": 0
|
|
545
557
|
},
|
|
558
|
+
"a-read-the-engine-could-not-answer-names-the-check.test.mjs": {
|
|
559
|
+
"tests": 4,
|
|
560
|
+
"asserts": 14,
|
|
561
|
+
"skips": 0,
|
|
562
|
+
"todos": 0
|
|
563
|
+
},
|
|
546
564
|
"a-real-dispatch-records-the-tool-that-served-it.test.mjs": {
|
|
547
565
|
"tests": 1,
|
|
548
566
|
"asserts": 5,
|
|
@@ -629,7 +647,7 @@
|
|
|
629
647
|
},
|
|
630
648
|
"a-release-note-is-written-for-its-reader.test.mjs": {
|
|
631
649
|
"tests": 9,
|
|
632
|
-
"asserts":
|
|
650
|
+
"asserts": 66,
|
|
633
651
|
"skips": 0,
|
|
634
652
|
"todos": 0
|
|
635
653
|
},
|
|
@@ -1301,7 +1319,7 @@
|
|
|
1301
1319
|
},
|
|
1302
1320
|
"client-door.test.mjs": {
|
|
1303
1321
|
"tests": 38,
|
|
1304
|
-
"asserts":
|
|
1322
|
+
"asserts": 162,
|
|
1305
1323
|
"skips": 1,
|
|
1306
1324
|
"todos": 0
|
|
1307
1325
|
},
|
|
@@ -2781,6 +2799,12 @@
|
|
|
2781
2799
|
"skips": 0,
|
|
2782
2800
|
"todos": 0
|
|
2783
2801
|
},
|
|
2802
|
+
"nothing-a-command-awaits-imports-it-back.test.mjs": {
|
|
2803
|
+
"tests": 16,
|
|
2804
|
+
"asserts": 49,
|
|
2805
|
+
"skips": 0,
|
|
2806
|
+
"todos": 0
|
|
2807
|
+
},
|
|
2784
2808
|
"numeric-setting-refuses.test.mjs": {
|
|
2785
2809
|
"tests": 15,
|
|
2786
2810
|
"asserts": 35,
|
|
@@ -3095,7 +3119,7 @@
|
|
|
3095
3119
|
},
|
|
3096
3120
|
"portal-service.test.mjs": {
|
|
3097
3121
|
"tests": 124,
|
|
3098
|
-
"asserts":
|
|
3122
|
+
"asserts": 673,
|
|
3099
3123
|
"skips": 1,
|
|
3100
3124
|
"todos": 0
|
|
3101
3125
|
},
|
|
@@ -4217,7 +4241,13 @@
|
|
|
4217
4241
|
},
|
|
4218
4242
|
"start-refuses-on-a-box-that-has-the-services.test.mjs": {
|
|
4219
4243
|
"tests": 6,
|
|
4220
|
-
"asserts":
|
|
4244
|
+
"asserts": 20,
|
|
4245
|
+
"skips": 0,
|
|
4246
|
+
"todos": 0
|
|
4247
|
+
},
|
|
4248
|
+
"status-and-stop-see-a-foreground-start.test.mjs": {
|
|
4249
|
+
"tests": 6,
|
|
4250
|
+
"asserts": 25,
|
|
4221
4251
|
"skips": 0,
|
|
4222
4252
|
"todos": 0
|
|
4223
4253
|
},
|
|
@@ -4515,6 +4545,12 @@
|
|
|
4515
4545
|
"skips": 0,
|
|
4516
4546
|
"todos": 0
|
|
4517
4547
|
},
|
|
4548
|
+
"the-demo-offers-no-background-form.test.mjs": {
|
|
4549
|
+
"tests": 4,
|
|
4550
|
+
"asserts": 14,
|
|
4551
|
+
"skips": 0,
|
|
4552
|
+
"todos": 0
|
|
4553
|
+
},
|
|
4518
4554
|
"the-door-answers-the-address-it-advertises.test.mjs": {
|
|
4519
4555
|
"tests": 9,
|
|
4520
4556
|
"asserts": 37,
|
|
@@ -4635,6 +4671,12 @@
|
|
|
4635
4671
|
"skips": 0,
|
|
4636
4672
|
"todos": 0
|
|
4637
4673
|
},
|
|
4674
|
+
"the-install-guide-says-how-to-remove-it.test.mjs": {
|
|
4675
|
+
"tests": 4,
|
|
4676
|
+
"asserts": 11,
|
|
4677
|
+
"skips": 0,
|
|
4678
|
+
"todos": 0
|
|
4679
|
+
},
|
|
4638
4680
|
"the-install-names-the-auth-values-it-needs.test.mjs": {
|
|
4639
4681
|
"tests": 9,
|
|
4640
4682
|
"asserts": 25,
|
|
@@ -4804,8 +4846,8 @@
|
|
|
4804
4846
|
"todos": 0
|
|
4805
4847
|
},
|
|
4806
4848
|
"the-published-manifest-is-not-the-repos-manifest.test.mjs": {
|
|
4807
|
-
"tests":
|
|
4808
|
-
"asserts":
|
|
4849
|
+
"tests": 21,
|
|
4850
|
+
"asserts": 82,
|
|
4809
4851
|
"skips": 1,
|
|
4810
4852
|
"todos": 0
|
|
4811
4853
|
},
|
|
@@ -5828,8 +5870,8 @@
|
|
|
5828
5870
|
"todos": 0
|
|
5829
5871
|
},
|
|
5830
5872
|
"nav.test.ts": {
|
|
5831
|
-
"tests":
|
|
5832
|
-
"asserts":
|
|
5873
|
+
"tests": 13,
|
|
5874
|
+
"asserts": 67,
|
|
5833
5875
|
"skips": 0,
|
|
5834
5876
|
"todos": 0
|
|
5835
5877
|
},
|
|
@@ -112,19 +112,13 @@ export function unitsNeedingRender(root = ROOT) {
|
|
|
112
112
|
// through `envFrom`, so a name that later gains an old spelling in the alias table keeps resolving —
|
|
113
113
|
// a literal `process.env.X` here would be a spelling, and a spelling goes stale in silence.
|
|
114
114
|
//
|
|
115
|
-
// A `KEY=value` parser and nothing more
|
|
116
|
-
//
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
let v = m[2].trim();
|
|
123
|
-
if ((v.startsWith('"') && v.endsWith('"')) || (v.startsWith("'") && v.endsWith("'"))) v = v.slice(1, -1);
|
|
124
|
-
out[m[1]] = v;
|
|
125
|
-
}
|
|
126
|
-
return out;
|
|
127
|
-
}
|
|
115
|
+
// A `KEY=value` parser and nothing more, and it lives in `shared/env-file-merge.mjs` — a file that
|
|
116
|
+
// imports nothing. THIS module is a command too: its `--apply` path awaits at the top level and imports
|
|
117
|
+
// `bin/start.mjs` from inside that await, so anything that took the parser from here put a CLI in its
|
|
118
|
+
// import path, and `start.mjs` doing so closed a cycle that stopped 21 install arms at once. Re-exported
|
|
119
|
+
// so every reader here keeps one reader and one spelling.
|
|
120
|
+
export { parseEnvFile } from "../../shared/env-file-merge.mjs";
|
|
121
|
+
import { parseEnvFile } from "../../shared/env-file-merge.mjs";
|
|
128
122
|
|
|
129
123
|
export function resolveValues(names, { env = process.env, envFile = null } = {}) {
|
|
130
124
|
const fileVals = envFile && existsSync(envFile) ? parseEnvFile(readFileSync(envFile, "utf8")) : {};
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
// PURE. It opens no file and knows no path: the caller injects the unit text and the env-file text, so
|
|
36
36
|
// every branch — including the ones a developer box cannot produce — is drivable from a test.
|
|
37
37
|
|
|
38
|
-
import { parseEnvFile } from "
|
|
38
|
+
import { parseEnvFile } from "../shared/env-file-merge.mjs"; // the leaf the unit renderer re-exports it from; this module stays free of the command
|
|
39
39
|
|
|
40
40
|
/** systemd's own name for "load this file, and do not fail if it is missing". */
|
|
41
41
|
const OPTIONAL = "-";
|
package/mcp-server/CHANGELOG.md
CHANGED
package/mcp-server/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "trademark-artifacts-mcp",
|
|
3
|
-
"version": "0.3.0
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"license": "AGPL-3.0-only",
|
|
5
5
|
"private": true,
|
|
6
6
|
"description": "MCP server to interrogate clearotron trademark-clearance runs — list/read artifacts, trace the full decision flow, telemetry/cost, coverage, single-run search, and a gated single-step what-if. Imports the clearotron-driver read-only; touches no driver/template/deploy files.",
|
package/package.json
CHANGED
|
@@ -11008,7 +11008,8 @@ var NAV = [
|
|
|
11008
11008
|
label: "Clearance",
|
|
11009
11009
|
path: "/portal/result",
|
|
11010
11010
|
icon: "layers",
|
|
11011
|
-
hidden: true
|
|
11011
|
+
hidden: true,
|
|
11012
|
+
subtree: true
|
|
11012
11013
|
},
|
|
11013
11014
|
{
|
|
11014
11015
|
id: "about",
|
|
@@ -11107,7 +11108,7 @@ function avatarMenuFor(who, entries = NAV) {
|
|
|
11107
11108
|
}
|
|
11108
11109
|
function screenForPath(path, who, entries = NAV) {
|
|
11109
11110
|
const clean = path.replace(/[?#].*$/, "").replace(/\/+$/, "") || "/portal";
|
|
11110
|
-
const hits = flatten(routableFor(who, entries)).filter((e) => clean === e.path || clean.startsWith(e.path + "/"));
|
|
11111
|
+
const hits = flatten(routableFor(who, entries)).filter((e) => clean === e.path || e.subtree === true && clean.startsWith(e.path + "/"));
|
|
11111
11112
|
if (!hits.length) return null;
|
|
11112
11113
|
return hits.reduce((a, b) => b.path.length > a.path.length ? b : a);
|
|
11113
11114
|
}
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
-->
|
|
50
50
|
<link rel="preconnect" href="https://api.fontshare.com" crossorigin />
|
|
51
51
|
<link href="https://api.fontshare.com/v2/css?f[]=satoshi@400,500,700,900&display=swap" rel="stylesheet" />
|
|
52
|
-
<script type="module" crossorigin src="/portal/assets/index-
|
|
52
|
+
<script type="module" crossorigin src="/portal/assets/index-CwPAS0we.js"></script>
|
|
53
53
|
<link rel="stylesheet" crossorigin href="/portal/assets/index-Cv-E_agg.css">
|
|
54
54
|
</head>
|
|
55
55
|
<body>
|
package/portal-ui/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "portal-ui",
|
|
3
3
|
"private": true,
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "0.3.0
|
|
5
|
+
"version": "0.3.0",
|
|
6
6
|
"license": "AGPL-3.0-only",
|
|
7
7
|
"description": "The unified trademark portal UI. One address, one login: who you are decides what you see. Built as a static bundle, served by driver/portal-service.mjs — the browser never reaches profile-service or recipe-service.",
|
|
8
8
|
"engines": {
|