@oldboydev/sheldon-darwin-arm64 0.2.0 → 0.2.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.
Files changed (73) hide show
  1. package/SHA256SUMS +69 -18
  2. package/inventory.json +291 -36
  3. package/node_modules/@sheldon/cli/dist/commands/agents.js +85 -69
  4. package/node_modules/@sheldon/cli/dist/commands/mcp.js +1 -1
  5. package/node_modules/@sheldon/cli/dist/help/fonts/NunitoSans-VariableFont_YTLC_opsz_wdth_wght.ttf +0 -0
  6. package/node_modules/@sheldon/cli/dist/help/index.html +97 -0
  7. package/node_modules/@sheldon/cli/dist/help/manifest.json +121 -0
  8. package/node_modules/@sheldon/cli/dist/help/pages/agent.html +101 -0
  9. package/node_modules/@sheldon/cli/dist/help/pages/answer.html +110 -0
  10. package/node_modules/@sheldon/cli/dist/help/pages/bundle.html +124 -0
  11. package/node_modules/@sheldon/cli/dist/help/pages/compile.html +120 -0
  12. package/node_modules/@sheldon/cli/dist/help/pages/doctor.html +102 -0
  13. package/node_modules/@sheldon/cli/dist/help/pages/flow-compile-review.html +125 -0
  14. package/node_modules/@sheldon/cli/dist/help/pages/flow-end-to-end.html +147 -0
  15. package/node_modules/@sheldon/cli/dist/help/pages/flow-first-vault.html +100 -0
  16. package/node_modules/@sheldon/cli/dist/help/pages/image.html +107 -0
  17. package/node_modules/@sheldon/cli/dist/help/pages/ingest.html +156 -0
  18. package/node_modules/@sheldon/cli/dist/help/pages/init.html +98 -0
  19. package/node_modules/@sheldon/cli/dist/help/pages/mcp.html +135 -0
  20. package/node_modules/@sheldon/cli/dist/help/pages/migrate-state.html +100 -0
  21. package/node_modules/@sheldon/cli/dist/help/pages/plugin.html +120 -0
  22. package/node_modules/@sheldon/cli/dist/help/pages/project.html +110 -0
  23. package/node_modules/@sheldon/cli/dist/help/pages/query.html +110 -0
  24. package/node_modules/@sheldon/cli/dist/help/pages/review.html +114 -0
  25. package/node_modules/@sheldon/cli/dist/help/pages/search.html +103 -0
  26. package/node_modules/@sheldon/cli/dist/help/pages/topic.html +112 -0
  27. package/node_modules/@sheldon/cli/dist/help/pages/web.html +102 -0
  28. package/node_modules/@sheldon/cli/dist/help/styles.css +368 -0
  29. package/node_modules/@sheldon/cli/dist/help.js +84 -0
  30. package/node_modules/@sheldon/cli/dist/main.js +38 -0
  31. package/node_modules/@sheldon/cli/node_modules/@sheldon/agent-runtime/dist/command-executor.js +1 -1
  32. package/node_modules/@sheldon/cli/node_modules/@sheldon/agent-runtime/dist/index.js +1 -1
  33. package/node_modules/@sheldon/cli/node_modules/@sheldon/agent-runtime/dist/profiles.js +1 -5
  34. package/node_modules/@sheldon/cli/node_modules/@sheldon/plugin-host/dist/official-catalog.js +4 -3
  35. package/node_modules/@sheldon/cli/node_modules/@sheldon/plugin-source-image/node_modules/@sheldon/plugin-host/dist/official-catalog.js +4 -3
  36. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/dist/client/assets/index-B8MAXTxb.js +13 -0
  37. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/dist/client/assets/{index-BB6UWWie.css → index-DZRX97IO.css} +1 -1
  38. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/dist/client/index.html +2 -2
  39. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/dist/contract.js +18 -0
  40. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/dist/server.js +26 -0
  41. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/dist/wiki-markdown.js +75 -0
  42. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/dist/wiki.js +175 -0
  43. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/react-native/diagnostics-channel-react-native.d.ts.map +1 -0
  44. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/react-native/diagnostics-channel-react-native.js.map +1 -0
  45. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/react-native/diagnostics-channel.d.ts +5 -0
  46. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/react-native/diagnostics-channel.js +7 -0
  47. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/react-native/index.d.ts +1400 -0
  48. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/react-native/index.d.ts.map +1 -0
  49. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/react-native/index.js +1733 -0
  50. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/react-native/index.js.map +1 -0
  51. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/react-native/perf.d.ts +12 -0
  52. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/react-native/perf.d.ts.map +1 -0
  53. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/react-native/perf.js +10 -0
  54. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/commonjs/react-native/perf.js.map +1 -0
  55. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/esm/react-native/diagnostics-channel-react-native.d.ts.map +1 -0
  56. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/esm/react-native/diagnostics-channel-react-native.js.map +1 -0
  57. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/esm/react-native/diagnostics-channel.d.ts +5 -0
  58. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/esm/react-native/diagnostics-channel.js +4 -0
  59. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/esm/react-native/index.d.ts +1400 -0
  60. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/esm/react-native/index.d.ts.map +1 -0
  61. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/esm/react-native/index.js +1729 -0
  62. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/esm/react-native/index.js.map +1 -0
  63. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/esm/react-native/perf.d.ts +12 -0
  64. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/esm/react-native/perf.d.ts.map +1 -0
  65. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/esm/react-native/perf.js +7 -0
  66. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/dist/esm/react-native/perf.js.map +1 -0
  67. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@fastify/static/node_modules/glob/node_modules/path-scurry/node_modules/lru-cache/package.json +17 -1
  68. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@sheldon/agent-runtime/dist/command-executor.js +1 -1
  69. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@sheldon/agent-runtime/dist/index.js +1 -1
  70. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/node_modules/@sheldon/agent-runtime/dist/profiles.js +1 -5
  71. package/package.json +1 -1
  72. package/sbom.spdx.json +1 -1
  73. package/node_modules/@sheldon/cli/node_modules/@sheldon/web/dist/client/assets/index-FrWwJl0U.js +0 -9
@@ -0,0 +1,112 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>topic</title>
7
+ <link rel="stylesheet" href="../styles.css">
8
+ </head>
9
+ <body>
10
+ <div class="win">
11
+ <header class="titlebar">
12
+ <div class="titlebar__brand">
13
+ <svg class="eq-logo" viewBox="0 0 28 18" width="28" height="18" aria-hidden="true">
14
+ <rect x="0" y="6" width="3.2" height="12" rx="1.6" fill="var(--eq-1)"/>
15
+ <rect x="6" y="2" width="3.2" height="16" rx="1.6" fill="var(--eq-2)"/>
16
+ <rect x="12" y="4" width="3.2" height="14" rx="1.6" fill="var(--eq-3)"/>
17
+ <rect x="18" y="0" width="3.2" height="18" rx="1.6" fill="var(--eq-4)"/>
18
+ <rect x="24" y="7" width="3.2" height="11" rx="1.6" fill="var(--eq-5)"/>
19
+ </svg>
20
+ <span class="titlebar__title">sheldon</span>
21
+ </div>
22
+ <span class="titlebar__sep"></span>
23
+ <span class="titlebar__meta">Ajuda offline</span>
24
+ </header>
25
+ <div class="appbody">
26
+ <aside class="sidebar">
27
+ <p class="sidebar__label">Início</p>
28
+ <nav class="sidebar__nav">
29
+ <a class="navitem" href="../index.html">Ajuda</a>
30
+ </nav>
31
+ <p class="sidebar__label">Fluxos</p>
32
+ <nav class="sidebar__nav">
33
+ <a class="navitem" href="flow-first-vault.html">First vault</a>
34
+ <a class="navitem" href="flow-compile-review.html">Compile then review</a>
35
+ <a class="navitem" href="flow-end-to-end.html">End-to-end</a>
36
+ </nav>
37
+ <p class="sidebar__label">Comandos</p>
38
+ <nav class="sidebar__nav">
39
+ <a class="navitem" href="init.html">init</a>
40
+ <a class="navitem" href="doctor.html">doctor</a>
41
+ <a class="navitem" href="migrate-state.html">migrate-state</a>
42
+ <a class="navitem" href="web.html">web</a>
43
+ <a class="navitem is-active" href="topic.html" aria-current="page">topic</a>
44
+ <a class="navitem" href="project.html">project</a>
45
+ <a class="navitem" href="ingest.html">ingest</a>
46
+ <a class="navitem" href="compile.html">compile</a>
47
+ <a class="navitem" href="review.html">review</a>
48
+ <a class="navitem" href="bundle.html">bundle</a>
49
+ <a class="navitem" href="search.html">search</a>
50
+ <a class="navitem" href="query.html">query</a>
51
+ <a class="navitem" href="answer.html">answer</a>
52
+ <a class="navitem" href="agent.html">agent</a>
53
+ <a class="navitem" href="mcp.html">mcp</a>
54
+ <a class="navitem" href="plugin.html">plugin</a>
55
+ <a class="navitem" href="image.html">image</a>
56
+ </nav>
57
+ </aside>
58
+ <div class="content">
59
+ <div class="content__inner">
60
+ <article class="card card__pad prose">
61
+ <h1>topic</h1>
62
+ <p>Create and manage topic knowledge spaces inside a vault. Topics group related sources, proposals, and approved wiki notes under a stable slug. Listing topics does not list vaults — Sheldon has no vault inventory; use the saved default from <code>init</code> or pass <code>--vault</code>.</p>
63
+ <h2>Synopsis</h2>
64
+ <pre><code class="language-text">sheldon topic create &lt;title&gt; [--description &lt;text&gt;] [--vault &lt;path&gt;]
65
+ sheldon topic list [--vault &lt;path&gt;]
66
+ sheldon topic show &lt;slug&gt; [--vault &lt;path&gt;]
67
+ sheldon topic rename &lt;slug&gt; &lt;title&gt; [--vault &lt;path&gt;]
68
+ sheldon topic archive &lt;slug&gt; [--vault &lt;path&gt;]
69
+ </code></pre>
70
+ <h2>Important flags / arguments</h2>
71
+ <ul>
72
+ <li><code>title</code> — human-readable name; <code>create</code> / <code>rename</code> derive the slug from it.</li>
73
+ <li><code>slug</code> — stable id used by ingest, compile, review, search, and query.</li>
74
+ <li><code>--description &lt;text&gt;</code> — optional description on create.</li>
75
+ <li><code>--vault &lt;path&gt;</code> — explicit vault path when the saved default is wrong or missing.</li>
76
+ </ul>
77
+ <h2>Examples</h2>
78
+ <p>PowerShell:</p>
79
+ <pre><code class="language-powershell">sheldon topic create &quot;Learning&quot; --vault C:\knowledge\sheldon
80
+ sheldon topic list --vault C:\knowledge\sheldon
81
+ sheldon topic show learning --vault C:\knowledge\sheldon
82
+ </code></pre>
83
+ <p>Unix:</p>
84
+ <pre><code class="language-sh">sheldon topic create &quot;Learning&quot; --vault ~/knowledge/sheldon
85
+ sheldon topic list --vault ~/knowledge/sheldon
86
+ sheldon topic show learning --vault ~/knowledge/sheldon
87
+ </code></pre>
88
+ <p>Rename or archive (portable):</p>
89
+ <pre><code class="language-sh">sheldon topic rename learning &quot;Deep Learning&quot;
90
+ sheldon topic archive deep-learning
91
+ </code></pre>
92
+ <h2>Expected outputs / artifacts</h2>
93
+ <ul>
94
+ <li><code>create</code> — prints the new topic metadata (including slug) and creates the topic directory layout in the vault.</li>
95
+ <li><code>list</code> / <code>show</code> — JSON of topic metadata.</li>
96
+ <li><code>rename</code> — updates the title/slug and prints the updated record.</li>
97
+ <li><code>archive</code> — marks the topic archived without deleting its knowledge files.</li>
98
+ </ul>
99
+ <h2>Common failures</h2>
100
+ <ul>
101
+ <li>No configured vault — pass <code>--vault &lt;path&gt;</code> or run <code>sheldon init</code>. Sheldon does <strong>not</strong> list vaults.</li>
102
+ <li>Slug already exists on create / unknown slug on show-rename-archive — pick another title or check <code>topic list</code>.</li>
103
+ <li>Conflicting rename target — choose a title that yields an unused slug.</li>
104
+ </ul>
105
+ <p>Related: <a href="project.html">project</a>, <a href="flow-first-vault.html">First vault</a>.</p>
106
+ </article>
107
+ </div>
108
+ </div>
109
+ </div>
110
+ </div>
111
+ </body>
112
+ </html>
@@ -0,0 +1,102 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>web</title>
7
+ <link rel="stylesheet" href="../styles.css">
8
+ </head>
9
+ <body>
10
+ <div class="win">
11
+ <header class="titlebar">
12
+ <div class="titlebar__brand">
13
+ <svg class="eq-logo" viewBox="0 0 28 18" width="28" height="18" aria-hidden="true">
14
+ <rect x="0" y="6" width="3.2" height="12" rx="1.6" fill="var(--eq-1)"/>
15
+ <rect x="6" y="2" width="3.2" height="16" rx="1.6" fill="var(--eq-2)"/>
16
+ <rect x="12" y="4" width="3.2" height="14" rx="1.6" fill="var(--eq-3)"/>
17
+ <rect x="18" y="0" width="3.2" height="18" rx="1.6" fill="var(--eq-4)"/>
18
+ <rect x="24" y="7" width="3.2" height="11" rx="1.6" fill="var(--eq-5)"/>
19
+ </svg>
20
+ <span class="titlebar__title">sheldon</span>
21
+ </div>
22
+ <span class="titlebar__sep"></span>
23
+ <span class="titlebar__meta">Ajuda offline</span>
24
+ </header>
25
+ <div class="appbody">
26
+ <aside class="sidebar">
27
+ <p class="sidebar__label">Início</p>
28
+ <nav class="sidebar__nav">
29
+ <a class="navitem" href="../index.html">Ajuda</a>
30
+ </nav>
31
+ <p class="sidebar__label">Fluxos</p>
32
+ <nav class="sidebar__nav">
33
+ <a class="navitem" href="flow-first-vault.html">First vault</a>
34
+ <a class="navitem" href="flow-compile-review.html">Compile then review</a>
35
+ <a class="navitem" href="flow-end-to-end.html">End-to-end</a>
36
+ </nav>
37
+ <p class="sidebar__label">Comandos</p>
38
+ <nav class="sidebar__nav">
39
+ <a class="navitem" href="init.html">init</a>
40
+ <a class="navitem" href="doctor.html">doctor</a>
41
+ <a class="navitem" href="migrate-state.html">migrate-state</a>
42
+ <a class="navitem is-active" href="web.html" aria-current="page">web</a>
43
+ <a class="navitem" href="topic.html">topic</a>
44
+ <a class="navitem" href="project.html">project</a>
45
+ <a class="navitem" href="ingest.html">ingest</a>
46
+ <a class="navitem" href="compile.html">compile</a>
47
+ <a class="navitem" href="review.html">review</a>
48
+ <a class="navitem" href="bundle.html">bundle</a>
49
+ <a class="navitem" href="search.html">search</a>
50
+ <a class="navitem" href="query.html">query</a>
51
+ <a class="navitem" href="answer.html">answer</a>
52
+ <a class="navitem" href="agent.html">agent</a>
53
+ <a class="navitem" href="mcp.html">mcp</a>
54
+ <a class="navitem" href="plugin.html">plugin</a>
55
+ <a class="navitem" href="image.html">image</a>
56
+ </nav>
57
+ </aside>
58
+ <div class="content">
59
+ <div class="content__inner">
60
+ <article class="card card__pad prose">
61
+ <h1>web</h1>
62
+ <p>Start the local Sheldon web interface on loopback only (<code>127.0.0.1</code>). The UI never binds a public interface; stop it with Ctrl+C when finished.</p>
63
+ <h2>Synopsis</h2>
64
+ <pre><code class="language-text">sheldon web [--vault &lt;path&gt;] [--port &lt;port&gt;]
65
+ </code></pre>
66
+ <h2>Important flags / arguments</h2>
67
+ <ul>
68
+ <li><code>--vault &lt;path&gt;</code> — explicit vault path when the saved default is wrong or missing.</li>
69
+ <li><code>--port &lt;port&gt;</code> — loopback port (0–65535). Omit to let Sheldon pick a free port.</li>
70
+ </ul>
71
+ <h2>Examples</h2>
72
+ <p>PowerShell:</p>
73
+ <pre><code class="language-powershell">sheldon web --vault C:\knowledge\sheldon
74
+ sheldon web --vault C:\knowledge\sheldon --port 8787
75
+ </code></pre>
76
+ <p>Unix:</p>
77
+ <pre><code class="language-sh">sheldon web --vault ~/knowledge/sheldon
78
+ sheldon web --vault ~/knowledge/sheldon --port 8787
79
+ </code></pre>
80
+ <p>Using the saved default (portable):</p>
81
+ <pre><code class="language-sh">sheldon web
82
+ </code></pre>
83
+ <h2>Expected outputs / artifacts</h2>
84
+ <ul>
85
+ <li>Prints <code>Sheldon web: http://127.0.0.1:&lt;port&gt;</code> and a reminder that access is loopback-only.</li>
86
+ <li>Serves the local UI until you press Ctrl+C.</li>
87
+ <li>Does not expose the vault on the LAN or internet.</li>
88
+ </ul>
89
+ <h2>Common failures</h2>
90
+ <ul>
91
+ <li>No configured vault — pass <code>--vault &lt;path&gt;</code> or run <code>sheldon init</code>. Sheldon does <strong>not</strong> list vaults.</li>
92
+ <li>Port already in use — omit <code>--port</code> for an automatic free port, or choose another value.</li>
93
+ <li>Browser cannot reach a non-loopback URL — open the printed <code>127.0.0.1</code> address only; do not put a reverse proxy in front.</li>
94
+ </ul>
95
+ <p>Related: <a href="init.html">init</a>, <a href="flow-first-vault.html">First vault</a>.</p>
96
+ </article>
97
+ </div>
98
+ </div>
99
+ </div>
100
+ </div>
101
+ </body>
102
+ </html>
@@ -0,0 +1,368 @@
1
+ @font-face {
2
+ font-family: 'Nunito Sans';
3
+ font-weight: 100 900;
4
+ font-style: normal;
5
+ font-stretch: 75% 125%;
6
+ src: url('fonts/NunitoSans-VariableFont_YTLC_opsz_wdth_wght.ttf') format('truetype');
7
+ font-display: swap;
8
+ }
9
+
10
+ :root {
11
+ --brand-navy: #001663;
12
+ --brand-navy-700: #001152;
13
+ --brand-navy-300: #5572b3;
14
+ --brand-magenta: #e74092;
15
+ --brand-magenta-600: #c2306e;
16
+ --brand-magenta-800: #96234f;
17
+ --brand-blue: #1383eb;
18
+ --brand-purple: #9d45e8;
19
+ --brand-yellow: #ff7f00;
20
+ --eq-1: #e74092;
21
+ --eq-2: #00a433;
22
+ --eq-3: #9d45e8;
23
+ --eq-4: #1383eb;
24
+ --eq-5: #ff7f00;
25
+ --ink: #1b1b1c;
26
+ --ink-soft: #636367;
27
+ --ink-faint: #8e8e93;
28
+ --line: #e5e5ea;
29
+ --line-strong: #c7c7cc;
30
+ --bg: #f7f7f9;
31
+ --bg-sunken: #efeff3;
32
+ --card: #ffffff;
33
+ --ok: #00a31a;
34
+ --ok-bg: #e7f9e9;
35
+ --ok-line: #b6ebbe;
36
+ --erro: #d61a5e;
37
+ --erro-bg: #fdeaf2;
38
+ --erro-line: #f6c2d6;
39
+ --alerta: #a87900;
40
+ --alerta-bg: #fff6dd;
41
+ --alerta-line: #f2e0a8;
42
+ --info: #0974b3;
43
+ --info-bg: #e8f6ff;
44
+ --info-line: #bfe4f7;
45
+ --r-card: 12px;
46
+ --r-control: 8px;
47
+ --r-sm: 6px;
48
+ --shadow-card: 0 1px 2px rgba(0, 22, 99, 0.05), 0 4px 14px rgba(0, 22, 99, 0.07);
49
+ --sp-4: 4px;
50
+ --sp-6: 6px;
51
+ --sp-8: 8px;
52
+ --sp-10: 10px;
53
+ --sp-12: 12px;
54
+ --sp-16: 16px;
55
+ --sp-20: 20px;
56
+ --sp-24: 24px;
57
+ --sp-32: 32px;
58
+ --font-sans: 'Nunito Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
59
+ --font-mono: 'Consolas', ui-monospace, 'SFMono-Regular', monospace;
60
+ --t-2xs: 11px;
61
+ --t-xs: 12px;
62
+ --t-sm: 13px;
63
+ --t-base: 14px;
64
+ --t-md: 15px;
65
+ --t-xl: 20px;
66
+ --t-2xl: 26px;
67
+ --lh-tight: 1.2;
68
+ --lh-normal: 1.5;
69
+ --fw-600: 600;
70
+ --fw-700: 700;
71
+ --fw-800: 800;
72
+ --ease: cubic-bezier(0.2, 0.7, 0.3, 1);
73
+ --dur-1: 0.12s;
74
+ --titlebar-h: 48px;
75
+ --sidebar-w: 232px;
76
+ --focus-ring: 0 0 0 2px var(--card), 0 0 0 4px var(--brand-blue);
77
+ color-scheme: light;
78
+ }
79
+
80
+ @media (prefers-color-scheme: dark) {
81
+ :root {
82
+ --ink: #ecebf2;
83
+ --ink-soft: #a6a1ba;
84
+ --ink-faint: #76718c;
85
+ --line: #2c2740;
86
+ --line-strong: #3d3756;
87
+ --bg: #131022;
88
+ --bg-sunken: #0e0b1c;
89
+ --card: #1c1830;
90
+ --ok: #4bd663;
91
+ --ok-bg: #122a18;
92
+ --ok-line: #234e2c;
93
+ --erro: #ff5c8f;
94
+ --erro-bg: #2c1320;
95
+ --erro-line: #5a2540;
96
+ --alerta: #f2c14e;
97
+ --alerta-bg: #2a230f;
98
+ --alerta-line: #534420;
99
+ --info: #4cb8ec;
100
+ --info-bg: #102634;
101
+ --info-line: #244a61;
102
+ --shadow-card: 0 1px 2px rgba(0, 0, 0, 0.4), 0 4px 14px rgba(0, 0, 0, 0.35);
103
+ --focus-ring: 0 0 0 2px var(--card), 0 0 0 4px var(--brand-blue);
104
+ color-scheme: dark;
105
+ }
106
+ }
107
+
108
+ *,
109
+ *::before,
110
+ *::after {
111
+ box-sizing: border-box;
112
+ }
113
+
114
+ html,
115
+ body {
116
+ margin: 0;
117
+ height: 100%;
118
+ }
119
+
120
+ body {
121
+ font-family: var(--font-sans);
122
+ font-size: var(--t-base);
123
+ line-height: var(--lh-normal);
124
+ color: var(--ink);
125
+ background: var(--bg);
126
+ -webkit-font-smoothing: antialiased;
127
+ text-rendering: optimizeLegibility;
128
+ }
129
+
130
+ :focus {
131
+ outline: none;
132
+ }
133
+
134
+ :focus-visible {
135
+ box-shadow: var(--focus-ring);
136
+ border-radius: var(--r-sm);
137
+ }
138
+
139
+ ::selection {
140
+ background: color-mix(in srgb, var(--brand-magenta) 26%, transparent);
141
+ }
142
+
143
+ .win {
144
+ min-height: 100vh;
145
+ display: grid;
146
+ grid-template-rows: var(--titlebar-h) 1fr;
147
+ background: var(--bg);
148
+ }
149
+
150
+ .titlebar {
151
+ display: flex;
152
+ align-items: center;
153
+ gap: var(--sp-12);
154
+ padding: 0 var(--sp-16);
155
+ background: var(--brand-navy);
156
+ color: #fff;
157
+ user-select: none;
158
+ }
159
+
160
+ .titlebar__brand {
161
+ display: flex;
162
+ align-items: center;
163
+ gap: var(--sp-10);
164
+ }
165
+
166
+ .titlebar__title {
167
+ font-size: var(--t-sm);
168
+ font-weight: var(--fw-700);
169
+ letter-spacing: 0.005em;
170
+ }
171
+
172
+ .titlebar__sep {
173
+ width: 1px;
174
+ height: 18px;
175
+ background: rgba(255, 255, 255, 0.16);
176
+ }
177
+
178
+ .titlebar__meta {
179
+ font-size: var(--t-xs);
180
+ color: rgba(255, 255, 255, 0.66);
181
+ }
182
+
183
+ .eq-logo {
184
+ display: block;
185
+ }
186
+
187
+ .appbody {
188
+ display: grid;
189
+ grid-template-columns: var(--sidebar-w) 1fr;
190
+ min-height: 0;
191
+ }
192
+
193
+ .sidebar {
194
+ background: var(--card);
195
+ border-right: 1px solid var(--line);
196
+ overflow: auto;
197
+ padding: var(--sp-12) 0 var(--sp-24);
198
+ }
199
+
200
+ .sidebar__label {
201
+ padding: var(--sp-8) var(--sp-16) var(--sp-4);
202
+ font-size: var(--t-2xs);
203
+ font-weight: var(--fw-700);
204
+ letter-spacing: 0.08em;
205
+ text-transform: uppercase;
206
+ color: var(--ink-faint);
207
+ margin: var(--sp-8) 0 0;
208
+ }
209
+
210
+ .sidebar__nav {
211
+ display: flex;
212
+ flex-direction: column;
213
+ gap: 2px;
214
+ padding: 0 var(--sp-12);
215
+ }
216
+
217
+ .navitem {
218
+ position: relative;
219
+ display: flex;
220
+ align-items: center;
221
+ gap: var(--sp-10);
222
+ padding: var(--sp-10);
223
+ border-radius: var(--r-control);
224
+ color: var(--ink-soft);
225
+ font-weight: var(--fw-600);
226
+ font-size: var(--t-base);
227
+ text-decoration: none;
228
+ transition:
229
+ background var(--dur-1) var(--ease),
230
+ color var(--dur-1) var(--ease);
231
+ }
232
+
233
+ .navitem:hover {
234
+ background: var(--bg-sunken);
235
+ color: var(--ink);
236
+ }
237
+
238
+ .navitem.is-active {
239
+ background: color-mix(in srgb, var(--brand-navy) 8%, transparent);
240
+ color: var(--brand-navy);
241
+ }
242
+
243
+ @media (prefers-color-scheme: dark) {
244
+ .navitem.is-active {
245
+ background: color-mix(in srgb, var(--brand-magenta) 16%, transparent);
246
+ color: #fff;
247
+ }
248
+ }
249
+
250
+ .navitem.is-active::before {
251
+ content: '';
252
+ position: absolute;
253
+ left: 0;
254
+ width: 3px;
255
+ height: 22px;
256
+ border-radius: 999px;
257
+ background: var(--brand-magenta);
258
+ }
259
+
260
+ .content {
261
+ min-width: 0;
262
+ overflow: auto;
263
+ background: var(--bg);
264
+ }
265
+
266
+ .content__inner {
267
+ padding: var(--sp-24);
268
+ max-width: 52rem;
269
+ }
270
+
271
+ .card {
272
+ background: var(--card);
273
+ border: 1px solid var(--line);
274
+ border-radius: var(--r-card);
275
+ box-shadow: var(--shadow-card);
276
+ }
277
+
278
+ .card__pad {
279
+ padding: var(--sp-24);
280
+ }
281
+
282
+ .prose h1,
283
+ .prose h2,
284
+ .prose h3 {
285
+ line-height: var(--lh-tight);
286
+ letter-spacing: -0.01em;
287
+ font-weight: var(--fw-800);
288
+ margin: 0 0 var(--sp-12);
289
+ }
290
+
291
+ .prose h1 {
292
+ font-size: var(--t-2xl);
293
+ }
294
+
295
+ .prose h2 {
296
+ font-size: var(--t-xl);
297
+ margin-top: var(--sp-32);
298
+ }
299
+
300
+ .prose h3 {
301
+ font-size: var(--t-md);
302
+ margin-top: var(--sp-24);
303
+ }
304
+
305
+ .prose p,
306
+ .prose ul,
307
+ .prose ol {
308
+ margin: 0.75rem 0;
309
+ }
310
+
311
+ .prose ul,
312
+ .prose ol {
313
+ padding-left: 1.35rem;
314
+ }
315
+
316
+ .prose a {
317
+ color: var(--brand-magenta);
318
+ font-weight: var(--fw-600);
319
+ }
320
+
321
+ .prose a:hover {
322
+ color: var(--brand-magenta-600);
323
+ }
324
+
325
+ .prose code {
326
+ font-family: var(--font-mono);
327
+ font-size: 0.92em;
328
+ font-variant-numeric: tabular-nums;
329
+ background: var(--bg-sunken);
330
+ padding: 0.1em 0.35em;
331
+ border-radius: var(--r-sm);
332
+ }
333
+
334
+ .prose pre {
335
+ overflow: auto;
336
+ background: var(--bg-sunken);
337
+ border: 1px solid var(--line);
338
+ border-radius: var(--r-control);
339
+ padding: 0.85rem 1rem;
340
+ }
341
+
342
+ .prose pre code {
343
+ padding: 0;
344
+ background: transparent;
345
+ }
346
+
347
+ .prose .muted,
348
+ .prose .note {
349
+ color: var(--ink-soft);
350
+ }
351
+
352
+ @media (max-width: 800px) {
353
+ .appbody {
354
+ grid-template-columns: 1fr;
355
+ }
356
+
357
+ .sidebar {
358
+ border-right: none;
359
+ border-bottom: 1px solid var(--line);
360
+ max-height: 40vh;
361
+ }
362
+ }
363
+
364
+ @media (prefers-reduced-motion: reduce) {
365
+ .navitem {
366
+ transition: none;
367
+ }
368
+ }
@@ -0,0 +1,84 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { access, readFile } from 'node:fs/promises';
3
+ import { dirname, join } from 'node:path';
4
+ import { fileURLToPath, pathToFileURL } from 'node:url';
5
+ const helpTopicId = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
6
+ export function defaultHelpRoot(moduleUrl = import.meta.url) {
7
+ return join(dirname(fileURLToPath(moduleUrl)), 'help');
8
+ }
9
+ export function resolveHelpRoot(root) {
10
+ return root ?? defaultHelpRoot();
11
+ }
12
+ export function resolveHelpPage(topic, root, pageIds) {
13
+ const id = !topic || topic === 'index' ? 'index' : topic;
14
+ if (!helpTopicId.test(id) || pageIds !== undefined && !pageIds.has(id)) {
15
+ throw new Error(`HELP_PAGE_MISSING: Offline help page not found for topic '${id}'.`);
16
+ }
17
+ return id === 'index' ? join(root, 'index.html') : join(root, 'pages', `${id}.html`);
18
+ }
19
+ export async function readHelpPageIds(root) {
20
+ try {
21
+ const manifest = JSON.parse(await readFile(join(root, 'manifest.json'), 'utf8'));
22
+ const ids = new Set();
23
+ for (const page of manifest.pages ?? []){
24
+ if (typeof page.id === 'string' && helpTopicId.test(page.id)) ids.add(page.id);
25
+ }
26
+ return ids;
27
+ } catch {
28
+ throw new Error(`HELP_PAGE_MISSING: Offline help manifest not found at ${join(root, 'manifest.json')}.`);
29
+ }
30
+ }
31
+ export async function assertHelpPageExists(path) {
32
+ try {
33
+ await access(path);
34
+ } catch {
35
+ throw new Error(`HELP_PAGE_MISSING: Offline help page not found at ${path}.`);
36
+ }
37
+ }
38
+ export async function openHelpPage(path, open = openWithSystemBrowser) {
39
+ await assertHelpPageExists(path);
40
+ await open(path);
41
+ }
42
+ async function openWithSystemBrowser(path) {
43
+ const fileUrl = pathToFileURL(path).href;
44
+ if (process.platform === 'win32') {
45
+ await spawnDetached('cmd', [
46
+ '/c',
47
+ 'start',
48
+ '',
49
+ fileUrl
50
+ ]);
51
+ return;
52
+ }
53
+ if (process.platform === 'darwin') {
54
+ await spawnDetached('open', [
55
+ fileUrl
56
+ ]);
57
+ return;
58
+ }
59
+ await spawnDetached('xdg-open', [
60
+ fileUrl
61
+ ]);
62
+ }
63
+ function spawnDetached(command, args) {
64
+ return new Promise((resolve, reject)=>{
65
+ let child;
66
+ try {
67
+ child = spawn(command, [
68
+ ...args
69
+ ], {
70
+ detached: true,
71
+ stdio: 'ignore',
72
+ windowsHide: true
73
+ });
74
+ } catch (error) {
75
+ reject(error);
76
+ return;
77
+ }
78
+ child.once('error', reject);
79
+ child.once('spawn', ()=>{
80
+ child.unref();
81
+ resolve();
82
+ });
83
+ });
84
+ }