total-recall-brain 3.41.1 → 3.41.3

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 (105) hide show
  1. package/bin/total-recall.mjs +9 -3
  2. package/frontend/dist/assets/{index-BG9NkVUy.css → index-BIQmqDKP.css} +1 -1
  3. package/frontend/dist/assets/{index-BtuiZqwP.js → index-DFenQQEQ.js} +74 -79
  4. package/frontend/dist/index.html +2 -2
  5. package/frontend/dist/sw.js +8 -5
  6. package/frontend/src/api/auth.ts +0 -3
  7. package/frontend/src/components/plugins/PluginPanel.tsx +7 -3
  8. package/frontend/src/components/plugins/card/CardEngine.tsx +1 -1
  9. package/frontend/src/pages/LoginPage.tsx +1 -41
  10. package/frontend/src/pages/PluginsPage.tsx +14 -7
  11. package/package.json +2 -2
  12. package/scaffold/.agent/skills/plugin/scripts/record.mjs +6 -3
  13. package/scaffold/.agent/skills/total-recall/plugins/auth/README.md +10 -0
  14. package/scaffold/.agent/skills/total-recall/plugins/auth/cli.mjs +197 -31
  15. package/scaffold/.agent/skills/total-recall/plugins/auth/package-lock.json +1456 -12
  16. package/scaffold/.agent/skills/total-recall/plugins/auth/package.json +4 -4
  17. package/scaffold/.agent/skills/total-recall/plugins/auth/plugin.json +8 -1
  18. package/scaffold/.agent/skills/total-recall/plugins/auth/src/cli-secret.mjs +210 -27
  19. package/scaffold/.agent/skills/total-recall/plugins/auth/src/provider-catalog.mjs +10 -1
  20. package/scaffold/.agent/skills/total-recall/plugins/auth/src/rotation-capability.mjs +15 -0
  21. package/scaffold/.agent/skills/total-recall/plugins/auth/src/secrets-env-export.mjs +78 -6
  22. package/scaffold/.agent/skills/total-recall/plugins/auth/src/secrets-merge.mjs +131 -0
  23. package/scaffold/.agent/skills/total-recall/plugins/auth/src/secrets-remote-deploy.mjs +111 -2
  24. package/scaffold/.agent/skills/total-recall/plugins/auth/src/secrets-store.mjs +26 -5
  25. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/DESIGN.md +56 -8
  26. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/card.js +1068 -204
  27. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/panel.js +4 -2
  28. package/scaffold/.agent/skills/total-recall/plugins/cli-agents/ui/DESIGN.md +32 -0
  29. package/scaffold/.agent/skills/total-recall/plugins/cli-agents/ui/card.js +436 -274
  30. package/scaffold/.agent/skills/total-recall/plugins/code-quality/package-lock.json +4 -4
  31. package/scaffold/.agent/skills/total-recall/plugins/code-quality/package.json +1 -1
  32. package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/DESIGN.md +16 -2
  33. package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/card.js +461 -242
  34. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/package-lock.json +4 -4
  35. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/package.json +1 -1
  36. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/plugin.json +1 -7
  37. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/DESIGN.md +17 -2
  38. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/card.js +426 -300
  39. package/scaffold/.agent/skills/total-recall/plugins/embeddings/package-lock.json +4 -4
  40. package/scaffold/.agent/skills/total-recall/plugins/embeddings/ui/DESIGN.md +32 -0
  41. package/scaffold/.agent/skills/total-recall/plugins/embeddings/ui/card.js +350 -283
  42. package/scaffold/.agent/skills/total-recall/plugins/git-sentinel/package-lock.json +4 -4
  43. package/scaffold/.agent/skills/total-recall/plugins/git-sentinel/ui/card.js +31 -19
  44. package/scaffold/.agent/skills/total-recall/plugins/mesh/README.md +10 -0
  45. package/scaffold/.agent/skills/total-recall/plugins/mesh/{src/core/headscale-server.mjs → capability/control-server.mjs} +5 -2
  46. package/scaffold/.agent/skills/total-recall/plugins/mesh/capability/headscale-api.mjs +192 -0
  47. package/scaffold/.agent/skills/total-recall/plugins/mesh/capability/index.mjs +46 -0
  48. package/scaffold/.agent/skills/total-recall/plugins/mesh/cli.mjs +9 -1
  49. package/scaffold/.agent/skills/total-recall/plugins/mesh/package-lock.json +23 -22
  50. package/scaffold/.agent/skills/total-recall/plugins/mesh/package.json +6 -3
  51. package/scaffold/.agent/skills/total-recall/plugins/mesh/plugin.json +242 -8
  52. package/scaffold/.agent/skills/total-recall/plugins/mesh/src/cli/mesh.mjs +14 -9
  53. package/scaffold/.agent/skills/total-recall/plugins/mesh/src/cli/server.mjs +1 -1
  54. package/scaffold/.agent/skills/total-recall/plugins/mesh/src/core/credentials.mjs +4 -2
  55. package/scaffold/.agent/skills/total-recall/plugins/mesh/src/core/headscale-client.mjs +34 -181
  56. package/scaffold/.agent/skills/total-recall/plugins/mesh/src/core/mesh-auth.mjs +2 -2
  57. package/scaffold/.agent/skills/total-recall/plugins/mesh/src/core/presence.mjs +5 -5
  58. package/scaffold/.agent/skills/total-recall/plugins/mesh/src/core/screen-view.mjs +78 -0
  59. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/DESIGN.md +211 -12
  60. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/card.js +323 -388
  61. package/scaffold/.agent/skills/total-recall/plugins/openwiki/README.md +12 -1
  62. package/scaffold/.agent/skills/total-recall/plugins/openwiki/cli.mjs +7 -4
  63. package/scaffold/.agent/skills/total-recall/plugins/openwiki/package-lock.json +6 -6
  64. package/scaffold/.agent/skills/total-recall/plugins/openwiki/package.json +3 -2
  65. package/scaffold/.agent/skills/total-recall/plugins/openwiki/plugin.json +34 -1
  66. package/scaffold/.agent/skills/total-recall/plugins/openwiki/src/bootstrap.mjs +99 -0
  67. package/scaffold/.agent/skills/total-recall/plugins/openwiki/templates/openwiki/README.md +10 -0
  68. package/scaffold/.agent/skills/total-recall/plugins/openwiki/templates/openwiki/architecture.md +5 -0
  69. package/scaffold/.agent/skills/total-recall/plugins/openwiki/templates/openwiki/ide.md +10 -0
  70. package/scaffold/.agent/skills/total-recall/plugins/openwiki/templates/openwiki/memory.md +11 -0
  71. package/scaffold/.agent/skills/total-recall/plugins/openwiki/templates/openwiki/secrets.md +7 -0
  72. package/scaffold/.agent/skills/total-recall/plugins/openwiki/templates/openwiki/skills.md +7 -0
  73. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/DESIGN.md +16 -2
  74. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/card.js +380 -298
  75. package/scaffold/.agent/skills/total-recall/plugins/security/cli.mjs +7 -1
  76. package/scaffold/.agent/skills/total-recall/plugins/security/package-lock.json +6 -6
  77. package/scaffold/.agent/skills/total-recall/plugins/security/package.json +1 -1
  78. package/scaffold/.agent/skills/total-recall/plugins/security/plugin.json +1 -1
  79. package/scaffold/.agent/skills/total-recall/plugins/security/src/scanner.mjs +17 -3
  80. package/scaffold/.agent/skills/total-recall/plugins/security/ui/DESIGN.md +38 -15
  81. package/scaffold/.agent/skills/total-recall/plugins/security/ui/card.js +60 -34
  82. package/scaffold/.agent/skills/total-recall/references/auth.md +2 -0
  83. package/src/cli/command.mjs +23 -18
  84. package/src/cli/daemon.mjs +23 -1
  85. package/src/cli/plugin/copies.mjs +8 -5
  86. package/src/cli/plugin/index.mjs +25 -2
  87. package/src/cli/rebuild.mjs +22 -0
  88. package/src/cli/reset-password.mjs +3 -2
  89. package/src/cli/skill.mjs +8 -2
  90. package/src/cli/status.mjs +25 -7
  91. package/src/core/automatic-brain-updates.mjs +9 -3
  92. package/src/core/brain-updates.mjs +63 -5
  93. package/src/core/global-brain-updates.mjs +21 -1
  94. package/src/core/mesh-brain-updates.mjs +5 -2
  95. package/src/core/meta-harness.mjs +16 -41
  96. package/src/core/plugin-runner.mjs +6 -1
  97. package/src/core/plugin-store.mjs +67 -1
  98. package/src/core/plugin-updates.mjs +1 -1
  99. package/src/core/portable-skills-maintenance.mjs +19 -0
  100. package/src/core/required-plugins.mjs +7 -0
  101. package/src/core/skills-registry.mjs +33 -3
  102. package/src/server/auth.mjs +41 -1
  103. package/src/server/memory-app.mjs +2 -1
  104. package/src/server/routes/auth.mjs +25 -1
  105. package/src/server/routes/plugins.mjs +17 -4
@@ -14,8 +14,19 @@ Peers install it with `npx total-recall plugin install peer:<this-node>/openwiki
14
14
 
15
15
  ## Features
16
16
 
17
+ OpenWiki owns documentation bootstrap and templates. Total Recall core initializes portable memory without creating OpenWiki pages. After installing this plugin, create missing documentation explicitly:
18
+
19
+ ```sh
20
+ total-recall openwiki bootstrap --brain /absolute/path/to/brain \
21
+ --project-root /absolute/path/to/repository --json
22
+ ```
23
+
24
+ `--brain` is required. `--project-root` adds repository documentation; omit it to seed only the brain's `openwiki/` directory. Existing files and page symlinks are preserved. A symlinked destination directory or a non-file page fails explicitly. `--dry-run` reports planned pages without writing. Bootstrap is a local Node-only operation and does not require credentials, a Total Recall server, ingestion or a provider request.
25
+
26
+ `total-recall openwiki hubs --json` lists repository pages. `total-recall openwiki ingest <directory> --project` explicitly imports documentation through the existing memory CLI. A successful bootstrap does not claim indexing or runtime readiness.
27
+
17
28
  - **Identifier**: `openwiki`
18
- - **Version**: 0.1.0
29
+ - **Version**: 0.1.1
19
30
  - **SSSS Category**: `openwiki-hubs`
20
31
  - **CLI Command**: `npx total-recall openwiki`
21
32
  - **UI**: `ui/panel.js` custom element with DESIGN.md tokens
@@ -6,11 +6,9 @@
6
6
  // Scaffold: report honestly what exists. Add each real subcommand to
7
7
  // IMPLEMENTED and to plugin.json "cli.subcommands" as it is built.
8
8
 
9
- import { spawnSync } from "node:child_process";
10
9
  import fs from "node:fs";
11
10
  import path from "node:path";
12
-
13
- const TR = process.env.TOTAL_RECALL_BIN || "total-recall";
11
+ import { runBootstrapCommand } from './src/bootstrap.mjs';
14
12
 
15
13
  async function probeCommand(args) {
16
14
  const json = args.includes("--json");
@@ -24,6 +22,7 @@ async function probeCommand(args) {
24
22
  const result = { status, ok, latency_ms, endpoint: "/health" };
25
23
  if (json) console.log(JSON.stringify(result));
26
24
  else console.log(`Health probe: HTTP ${status} (${latency_ms}ms) from ${host}`);
25
+ if (!ok) process.exitCode = 1;
27
26
  } catch (err) {
28
27
  const latency_ms = Date.now() - start;
29
28
  const result = { status: 503, ok: false, latency_ms, error: err.message };
@@ -84,6 +83,7 @@ const IMPLEMENTED = {};
84
83
  IMPLEMENTED.probe = probeCommand;
85
84
  IMPLEMENTED.hubs = hubsCommand;
86
85
  IMPLEMENTED.ingest = ingestCommand;
86
+ IMPLEMENTED.bootstrap = runBootstrapCommand;
87
87
 
88
88
 
89
89
  export async function run(argv = []) {
@@ -112,12 +112,15 @@ export async function run(argv = []) {
112
112
  probe [--json] Check subsystem health
113
113
  hubs [--json] List indexed documentation hubs
114
114
  ingest <path> [options] Ingest Markdown files into knowledge graph
115
+ bootstrap --brain <path> [--project-root <path>] [--dry-run] [--json]
116
+ Create missing plugin-owned documentation pages
115
117
  `);
116
118
  return;
117
119
  }
118
120
 
119
- if (IMPLEMENTED[sub]) return IMPLEMENTED[sub](args.slice(1));
121
+ if (Object.hasOwn(IMPLEMENTED, sub)) return IMPLEMENTED[sub](args.slice(1));
120
122
 
123
+ if (json) console.log(JSON.stringify({ ok: false, error: `OpenWiki operation is not implemented: ${sub}` }));
121
124
  console.error(`OpenWiki: "${sub}" is not implemented.`);
122
125
  process.exitCode = 2;
123
126
  }
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "tr-plugin-openwiki",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "tr-plugin-openwiki",
9
- "version": "0.1.1",
9
+ "version": "0.1.2",
10
10
  "license": "MIT",
11
11
  "devDependencies": {
12
- "total-recall-brain": "^3.40.7"
12
+ "total-recall-brain": "3.41.2"
13
13
  }
14
14
  },
15
15
  "node_modules/@hexagon/base64": {
@@ -2556,9 +2556,9 @@
2556
2556
  }
2557
2557
  },
2558
2558
  "node_modules/total-recall-brain": {
2559
- "version": "3.40.7",
2560
- "resolved": "https://registry.npmjs.org/total-recall-brain/-/total-recall-brain-3.40.7.tgz",
2561
- "integrity": "sha512-G+sEWXVucI5Zs8uV1ie8P+mV/6cncWX76ES72T5dnPB3sFAwlcG9ous2SYTUaYUOETGB2vHTSo3cV4XWkHQ0Ww==",
2559
+ "version": "3.41.2",
2560
+ "resolved": "https://registry.npmjs.org/total-recall-brain/-/total-recall-brain-3.41.2.tgz",
2561
+ "integrity": "sha512-bwJFAFAyvk9ysf+5zhBzMxrKus1Hj1AygUWdBNt+vQbM2sfSEf6701sa30KwfGyU8+cMuN6YNT5Mn63mFZIi/w==",
2562
2562
  "dev": true,
2563
2563
  "license": "MIT",
2564
2564
  "workspaces": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tr-plugin-openwiki",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "type": "module",
5
5
  "description": "Multi-repo knowledge graph and documentation wiki engine for Total Recall",
6
6
  "scripts": {
@@ -13,6 +13,7 @@
13
13
  "README.md",
14
14
  "LICENSE",
15
15
  "ui/",
16
- "src/"
16
+ "src/",
17
+ "templates/"
17
18
  ]
18
19
  }
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://github.com/gregiteen/total-recall/blob/main/metadata.plugin.schema.json",
3
3
  "id": "openwiki",
4
4
  "name": "OpenWiki",
5
- "version": "0.1.1",
5
+ "version": "0.1.2",
6
6
  "description": "Multi-repo knowledge graph and documentation wiki engine for Total Recall.",
7
7
  "license": "MIT",
8
8
  "branding": {
@@ -83,6 +83,39 @@
83
83
  "timeout_ms": 600000,
84
84
  "effect": "write"
85
85
  },
86
+ {
87
+ "name": "bootstrap",
88
+ "description": "Create missing OpenWiki documentation pages in explicit brain and project directories",
89
+ "effect": "write",
90
+ "output": "json",
91
+ "args": [
92
+ {
93
+ "name": "brain",
94
+ "flag": "--brain",
95
+ "label": "Brain directory",
96
+ "type": "string",
97
+ "required": true
98
+ },
99
+ {
100
+ "name": "projectRoot",
101
+ "flag": "--project-root",
102
+ "label": "Project root",
103
+ "type": "string"
104
+ },
105
+ {
106
+ "name": "dryRun",
107
+ "flag": "--dry-run",
108
+ "label": "Preview without writing",
109
+ "type": "boolean"
110
+ },
111
+ {
112
+ "name": "json",
113
+ "flag": "--json",
114
+ "label": "JSON output",
115
+ "type": "boolean"
116
+ }
117
+ ]
118
+ },
86
119
  {
87
120
  "name": "probe",
88
121
  "description": "Run HTTP 200 health verification probe",
@@ -0,0 +1,99 @@
1
+ /** Plugin-owned, create-only documentation bootstrap. No host runtime required. */
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+
6
+ const templatesDir = fileURLToPath(new URL('../templates/openwiki/', import.meta.url));
7
+
8
+ function requireAbsolute(value, label) {
9
+ if (typeof value !== 'string' || !value || !path.isAbsolute(value)) throw new Error(`${label} must be an absolute directory path`);
10
+ return path.resolve(value);
11
+ }
12
+
13
+ function inspectDirectory(directory) {
14
+ const stat = fs.lstatSync(directory, { throwIfNoEntry: false });
15
+ if (stat && (stat.isSymbolicLink() || !stat.isDirectory())) throw new Error(`Unsafe documentation directory: ${directory}`);
16
+ }
17
+
18
+ function inspectTarget(root) {
19
+ inspectDirectory(root);
20
+ const directory = path.join(root, 'openwiki');
21
+ inspectDirectory(directory);
22
+ return directory;
23
+ }
24
+
25
+ /** Preserve every existing page; filesystem projections are not canonical memory. */
26
+ export function bootstrapOpenWiki({ brain, projectRoot = null, dryRun = false } = {}) {
27
+ const brainRoot = requireAbsolute(brain, '--brain');
28
+ const project = projectRoot === null ? null : requireAbsolute(projectRoot, '--project-root');
29
+ const roots = [...new Set([brainRoot, ...(project ? [project] : [])])];
30
+ const directories = roots.map(inspectTarget);
31
+ const templates = fs.readdirSync(templatesDir, { withFileTypes: true })
32
+ .sort((a, b) => a.name.localeCompare(b.name));
33
+ if (!templates.length || templates.some(entry => !entry.isFile() || !entry.name.endsWith('.md'))) {
34
+ throw new Error('OpenWiki documentation templates are missing or invalid');
35
+ }
36
+
37
+ // Validate every destination before creating any directory or page.
38
+ for (const directory of directories) for (const entry of templates) {
39
+ const destination = path.join(directory, entry.name);
40
+ const stat = fs.lstatSync(destination, { throwIfNoEntry: false });
41
+ if (stat && !stat.isFile() && !stat.isSymbolicLink()) throw new Error(`Documentation page is not a file: ${destination}`);
42
+ }
43
+
44
+ const targets = directories.map(directory => {
45
+ const created = [], preserved = [], planned = [];
46
+ if (!dryRun) fs.mkdirSync(directory, { recursive: true });
47
+ for (const entry of templates) {
48
+ const destination = path.join(directory, entry.name);
49
+ if (fs.lstatSync(destination, { throwIfNoEntry: false })) {
50
+ preserved.push(entry.name);
51
+ continue;
52
+ }
53
+ if (dryRun) { planned.push(entry.name); continue; }
54
+ try {
55
+ fs.copyFileSync(path.join(templatesDir, entry.name), destination, fs.constants.COPYFILE_EXCL);
56
+ created.push(entry.name);
57
+ } catch (err) {
58
+ // A concurrently authored page belongs to its author, never the template.
59
+ if (err.code !== 'EEXIST') throw err;
60
+ preserved.push(entry.name);
61
+ }
62
+ }
63
+ return { directory, created, preserved, planned };
64
+ });
65
+ return { ok: true, dry_run: dryRun, targets,
66
+ files_created: targets.reduce((sum, target) => sum + target.created.length, 0),
67
+ files_preserved: targets.reduce((sum, target) => sum + target.preserved.length, 0),
68
+ files_planned: targets.reduce((sum, target) => sum + target.planned.length, 0) };
69
+ }
70
+
71
+ export async function runBootstrapCommand(args = []) {
72
+ const json = args.includes('--json');
73
+ if (args.includes('--help') || args.includes('-h')) {
74
+ console.log('Usage: total-recall openwiki bootstrap --brain <absolute-directory> [--project-root <absolute-directory>] [--dry-run] [--json]');
75
+ return { ok: true, help: true };
76
+ }
77
+ try {
78
+ const options = {};
79
+ for (let index = 0; index < args.length; index++) {
80
+ const arg = args[index];
81
+ if (arg === '--brain' || arg === '--project-root') {
82
+ const value = args[++index];
83
+ if (!value || value.startsWith('--')) throw new Error(`Missing value for ${arg}`);
84
+ options[arg === '--brain' ? 'brain' : 'projectRoot'] = value;
85
+ } else if (arg === '--dry-run') options.dryRun = true;
86
+ else if (arg !== '--json') throw new Error(`Unknown bootstrap option: ${arg}`);
87
+ }
88
+ const result = bootstrapOpenWiki(options);
89
+ if (json) console.log(JSON.stringify(result));
90
+ else console.log(`OpenWiki: ${result.files_created} pages created, ${result.files_preserved} preserved${result.dry_run ? `, ${result.files_planned} planned (dry run)` : ''}.`);
91
+ return result;
92
+ } catch (err) {
93
+ const result = { ok: false, error: err.message };
94
+ if (json) console.log(JSON.stringify(result));
95
+ console.error(`OpenWiki bootstrap failed: ${err.message}`);
96
+ process.exitCode = 1;
97
+ return result;
98
+ }
99
+ }
@@ -0,0 +1,10 @@
1
+ # OpenWiki
2
+
3
+ Portable knowledge documentation for this Total Recall brain.
4
+
5
+ | Layer | Purpose |
6
+ |-------|---------|
7
+ | **Memory vault** | SSSS nodes (rules, prefs, facts) — machine-enforceable |
8
+ | **OpenWiki** | Human/agent docs (architecture, how-tos, stack notes) |
9
+
10
+ OpenWiki documentation is provided by the OpenWiki plugin. Edit freely; do not put secrets here.
@@ -0,0 +1,5 @@
1
+ # Architecture (this brain)
2
+
3
+ Describe the systems this brain cares about: repos, stacks, deploy targets.
4
+
5
+ Project brains should document the local codebase; the global brain documents cross-repo identity and preferences.
@@ -0,0 +1,10 @@
1
+ # IDE personalization
2
+
3
+ ```bash
4
+ npx total-recall connect claude-code # CLAUDE.md
5
+ npx total-recall connect codex # AGENTS.md
6
+ npx total-recall connect cursor # .cursor/rules/
7
+ npx total-recall connect gemini # GEMINI.md
8
+ ```
9
+
10
+ Total Recall only writes inside managed inject markers. Your local rules stay intact.
@@ -0,0 +1,11 @@
1
+ # Memory
2
+
3
+ Use the Total Recall CLI for durable memory:
4
+
5
+ ```bash
6
+ npx total-recall remember invariant "Never commit secrets." --importance 5
7
+ npx total-recall recall "secrets"
8
+ npx total-recall compile
9
+ ```
10
+
11
+ Categories: invariants, preferences, facts, decisions, patterns, anti-patterns, concepts, lore.
@@ -0,0 +1,7 @@
1
+ # Secrets & API keys
2
+
3
+ Manage credentials through the auth plugin: `total-recall auth secret list|set|rotate|audit`.
4
+
5
+ **Never** put API keys in openwiki pages or compiled IDE instruction files.
6
+
7
+ Credential values belong in the encrypted auth store, never in documentation.
@@ -0,0 +1,7 @@
1
+ # Skills
2
+
3
+ - **Total Recall skill** (only nested agent skill): `.agent/skills/total-recall/SKILL.md`
4
+ - **User skills**: `.agent/skills/<name>/SKILL.md` — project or global
5
+ - **TR modules** (not skills): `.agent/skills/total-recall/modules/` — internal docs/scripts
6
+
7
+ TR will track skill installs across repos and support adaptive deploy (see TR_CORE_FOCUS).
@@ -6,7 +6,14 @@ tokens:
6
6
  wordmark: "[BRAIN//DUMP]"
7
7
  color-primary: "#3b82f6"
8
8
  color-background: "#0f172a"
9
+ color-surface: "#1e293b"
9
10
  color-accent: "#facc15"
11
+ color-ok: "#10b981"
12
+ color-warn: "#f59e0b"
13
+ color-danger: "#ef4444"
14
+ color-text: "#f8fafc"
15
+ color-muted: "#94a3b8"
16
+ color-line: "#334155"
10
17
  badge: "Knowledge Graph"
11
18
  font-mono: "'JetBrains Mono', 'Fira Code', monospace"
12
19
  border-radius: "8px"
@@ -14,5 +21,12 @@ tokens:
14
21
 
15
22
  ## Brand & Typographic Wordmark
16
23
  - **Name**: Brain Dump
17
- - **Wordmark Logo**: `[BRAIN//DUMP]` (custom typographic badge, no generic icons)
18
- - **Palette**: Primary `#3b82f6`, Surface `#0f172a`, Accent `#facc15`.
24
+ - **Wordmark Logo**: `[BRAIN//DUMP]` (custom vector typographic badge, no generic emojis)
25
+ - **Palette**: Primary `#3b82f6`, Surface `#0f172a`, Secondary Surface `#1e293b`, Accent `#facc15`, Line `#334155`, Text `#f8fafc`.
26
+ - **States**: Verified Knowledge `#10b981`, Warning `#f59e0b`, Danger `#ef4444`.
27
+
28
+ ## Interface Architecture
29
+ 1. **Header**: Custom vector wordmark, knowledge graph badge, active hub count.
30
+ 2. **Hub Tree Matrix**: Grid of verified documentation files (`openwiki/*.md`), rendering title, path, file size in bytes, and line count.
31
+ 3. **Structured Ingestion Deck**: Interactive controls for cross-repo documentation ingest with target path input, dry-run toggle, and run button.
32
+ 4. **Bootstrap & Inspection Deck**: One-click bootstrap trigger and execution receipts without terminal stdout dumps.