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.
- package/bin/total-recall.mjs +9 -3
- package/frontend/dist/assets/{index-BG9NkVUy.css → index-BIQmqDKP.css} +1 -1
- package/frontend/dist/assets/{index-BtuiZqwP.js → index-DFenQQEQ.js} +74 -79
- package/frontend/dist/index.html +2 -2
- package/frontend/dist/sw.js +8 -5
- package/frontend/src/api/auth.ts +0 -3
- package/frontend/src/components/plugins/PluginPanel.tsx +7 -3
- package/frontend/src/components/plugins/card/CardEngine.tsx +1 -1
- package/frontend/src/pages/LoginPage.tsx +1 -41
- package/frontend/src/pages/PluginsPage.tsx +14 -7
- package/package.json +2 -2
- package/scaffold/.agent/skills/plugin/scripts/record.mjs +6 -3
- package/scaffold/.agent/skills/total-recall/plugins/auth/README.md +10 -0
- package/scaffold/.agent/skills/total-recall/plugins/auth/cli.mjs +197 -31
- package/scaffold/.agent/skills/total-recall/plugins/auth/package-lock.json +1456 -12
- package/scaffold/.agent/skills/total-recall/plugins/auth/package.json +4 -4
- package/scaffold/.agent/skills/total-recall/plugins/auth/plugin.json +8 -1
- package/scaffold/.agent/skills/total-recall/plugins/auth/src/cli-secret.mjs +210 -27
- package/scaffold/.agent/skills/total-recall/plugins/auth/src/provider-catalog.mjs +10 -1
- package/scaffold/.agent/skills/total-recall/plugins/auth/src/rotation-capability.mjs +15 -0
- package/scaffold/.agent/skills/total-recall/plugins/auth/src/secrets-env-export.mjs +78 -6
- package/scaffold/.agent/skills/total-recall/plugins/auth/src/secrets-merge.mjs +131 -0
- package/scaffold/.agent/skills/total-recall/plugins/auth/src/secrets-remote-deploy.mjs +111 -2
- package/scaffold/.agent/skills/total-recall/plugins/auth/src/secrets-store.mjs +26 -5
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/DESIGN.md +56 -8
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/card.js +1068 -204
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/panel.js +4 -2
- package/scaffold/.agent/skills/total-recall/plugins/cli-agents/ui/DESIGN.md +32 -0
- package/scaffold/.agent/skills/total-recall/plugins/cli-agents/ui/card.js +436 -274
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/package-lock.json +4 -4
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/package.json +1 -1
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/DESIGN.md +16 -2
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/card.js +461 -242
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/package-lock.json +4 -4
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/package.json +1 -1
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/plugin.json +1 -7
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/DESIGN.md +17 -2
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/card.js +426 -300
- package/scaffold/.agent/skills/total-recall/plugins/embeddings/package-lock.json +4 -4
- package/scaffold/.agent/skills/total-recall/plugins/embeddings/ui/DESIGN.md +32 -0
- package/scaffold/.agent/skills/total-recall/plugins/embeddings/ui/card.js +350 -283
- package/scaffold/.agent/skills/total-recall/plugins/git-sentinel/package-lock.json +4 -4
- package/scaffold/.agent/skills/total-recall/plugins/git-sentinel/ui/card.js +31 -19
- package/scaffold/.agent/skills/total-recall/plugins/mesh/README.md +10 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/{src/core/headscale-server.mjs → capability/control-server.mjs} +5 -2
- package/scaffold/.agent/skills/total-recall/plugins/mesh/capability/headscale-api.mjs +192 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/capability/index.mjs +46 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/cli.mjs +9 -1
- package/scaffold/.agent/skills/total-recall/plugins/mesh/package-lock.json +23 -22
- package/scaffold/.agent/skills/total-recall/plugins/mesh/package.json +6 -3
- package/scaffold/.agent/skills/total-recall/plugins/mesh/plugin.json +242 -8
- package/scaffold/.agent/skills/total-recall/plugins/mesh/src/cli/mesh.mjs +14 -9
- package/scaffold/.agent/skills/total-recall/plugins/mesh/src/cli/server.mjs +1 -1
- package/scaffold/.agent/skills/total-recall/plugins/mesh/src/core/credentials.mjs +4 -2
- package/scaffold/.agent/skills/total-recall/plugins/mesh/src/core/headscale-client.mjs +34 -181
- package/scaffold/.agent/skills/total-recall/plugins/mesh/src/core/mesh-auth.mjs +2 -2
- package/scaffold/.agent/skills/total-recall/plugins/mesh/src/core/presence.mjs +5 -5
- package/scaffold/.agent/skills/total-recall/plugins/mesh/src/core/screen-view.mjs +78 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/DESIGN.md +211 -12
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/card.js +323 -388
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/README.md +12 -1
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/cli.mjs +7 -4
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/package-lock.json +6 -6
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/package.json +3 -2
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/plugin.json +34 -1
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/src/bootstrap.mjs +99 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/templates/openwiki/README.md +10 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/templates/openwiki/architecture.md +5 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/templates/openwiki/ide.md +10 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/templates/openwiki/memory.md +11 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/templates/openwiki/secrets.md +7 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/templates/openwiki/skills.md +7 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/DESIGN.md +16 -2
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/card.js +380 -298
- package/scaffold/.agent/skills/total-recall/plugins/security/cli.mjs +7 -1
- package/scaffold/.agent/skills/total-recall/plugins/security/package-lock.json +6 -6
- package/scaffold/.agent/skills/total-recall/plugins/security/package.json +1 -1
- package/scaffold/.agent/skills/total-recall/plugins/security/plugin.json +1 -1
- package/scaffold/.agent/skills/total-recall/plugins/security/src/scanner.mjs +17 -3
- package/scaffold/.agent/skills/total-recall/plugins/security/ui/DESIGN.md +38 -15
- package/scaffold/.agent/skills/total-recall/plugins/security/ui/card.js +60 -34
- package/scaffold/.agent/skills/total-recall/references/auth.md +2 -0
- package/src/cli/command.mjs +23 -18
- package/src/cli/daemon.mjs +23 -1
- package/src/cli/plugin/copies.mjs +8 -5
- package/src/cli/plugin/index.mjs +25 -2
- package/src/cli/rebuild.mjs +22 -0
- package/src/cli/reset-password.mjs +3 -2
- package/src/cli/skill.mjs +8 -2
- package/src/cli/status.mjs +25 -7
- package/src/core/automatic-brain-updates.mjs +9 -3
- package/src/core/brain-updates.mjs +63 -5
- package/src/core/global-brain-updates.mjs +21 -1
- package/src/core/mesh-brain-updates.mjs +5 -2
- package/src/core/meta-harness.mjs +16 -41
- package/src/core/plugin-runner.mjs +6 -1
- package/src/core/plugin-store.mjs +67 -1
- package/src/core/plugin-updates.mjs +1 -1
- package/src/core/portable-skills-maintenance.mjs +19 -0
- package/src/core/required-plugins.mjs +7 -0
- package/src/core/skills-registry.mjs +33 -3
- package/src/server/auth.mjs +41 -1
- package/src/server/memory-app.mjs +2 -1
- package/src/server/routes/auth.mjs +25 -1
- 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.
|
|
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
|
|
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.
|
|
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.
|
|
9
|
+
"version": "0.1.2",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"devDependencies": {
|
|
12
|
-
"total-recall-brain": "
|
|
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.
|
|
2560
|
-
"resolved": "https://registry.npmjs.org/total-recall-brain/-/total-recall-brain-3.
|
|
2561
|
-
"integrity": "sha512-
|
|
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.
|
|
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.
|
|
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,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
|
|
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.
|