total-recall-brain 3.45.0 → 3.46.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/bin/total-recall.mjs +7 -2
- package/frontend/dist/assets/index-BRYE1jmv.css +1 -0
- package/frontend/dist/assets/index-D1goIPjC.js +5598 -0
- package/frontend/dist/index.html +2 -2
- package/frontend/dist/sw.js +5 -4
- package/frontend/src/App.tsx +183 -236
- package/frontend/src/api/auth-inventory.ts +62 -0
- package/frontend/src/api/memory.ts +13 -8
- package/frontend/src/api/plugin-credentials.ts +23 -0
- package/frontend/src/api/plugins.ts +37 -53
- package/frontend/src/api/workspace-drawers.ts +97 -0
- package/frontend/src/components/BrainSelector.tsx +9 -3
- package/frontend/src/components/plugins/PluginPanel.tsx +83 -42
- package/frontend/src/components/plugins/PluginSettings.tsx +10 -20
- package/frontend/src/components/plugins/PluginWorkspace.tsx +367 -0
- package/frontend/src/components/plugins/ScopedPluginCommands.tsx +142 -0
- package/frontend/src/components/plugins/plugin-frame.ts +44 -33
- package/frontend/src/components/plugins/scoped-plugin-operations.ts +28 -0
- package/frontend/src/components/workspace/DrawerChat.tsx +110 -0
- package/frontend/src/components/workspace/DrawerLayout.tsx +196 -0
- package/frontend/src/components/workspace/DrawerMarkup.tsx +49 -0
- package/frontend/src/components/workspace/PluginChunkLibrary.tsx +92 -0
- package/frontend/src/components/workspace/PluginHome.tsx +76 -0
- package/frontend/src/components/workspace/WorkspaceDrawers.tsx +96 -0
- package/frontend/src/components/workspace/WorkspacePage.tsx +95 -0
- package/frontend/src/components/workspace/usePluginDesign.ts +38 -0
- package/frontend/src/index.css +409 -136
- package/frontend/src/pages/HelpPage.tsx +15 -46
- package/frontend/src/pages/MemoryPage.tsx +19 -36
- package/frontend/src/pages/SettingsPage.tsx +1 -1
- package/metadata.plugin.schema.json +53 -227
- package/package.json +1 -1
- package/scaffold/.agent/skills/plugin/SKILL.md +13 -11
- package/scaffold/.agent/skills/plugin/evals/README.md +14 -21
- package/scaffold/.agent/skills/plugin/evals/cases/01-fabricated-seed.mjs +15 -18
- package/scaffold/.agent/skills/plugin/evals/cases/02-reassuring-default.mjs +19 -24
- package/scaffold/.agent/skills/plugin/evals/cases/03-declared-template.mjs +12 -20
- package/scaffold/.agent/skills/plugin/evals/cases/04-home-collects-credential.mjs +35 -0
- package/scaffold/.agent/skills/plugin/evals/cases/05-host-leak-in-scaffold.mjs +8 -28
- package/scaffold/.agent/skills/plugin/evals/cases/06-correct-plugin.mjs +85 -47
- package/scaffold/.agent/skills/plugin/evals/run.mjs +17 -18
- package/scaffold/.agent/skills/plugin/prompts/05-credentials.md +4 -4
- package/scaffold/.agent/skills/plugin/prompts/07-scaffold.md +2 -2
- package/scaffold/.agent/skills/plugin/prompts/08-verify.md +4 -4
- package/scaffold/.agent/skills/plugin/references/anti-patterns.md +2 -2
- package/scaffold/.agent/skills/plugin/references/generative-home.md +38 -0
- package/scaffold/.agent/skills/plugin/references/scaffold.md +5 -5
- package/scaffold/.agent/skills/plugin/references/surfaces.md +13 -4
- package/scaffold/.agent/skills/plugin/scripts/record.mjs +75 -153
- package/scaffold/.agent/skills/plugin/subagents/plugin-reviewer.md +4 -4
- package/scaffold/.agent/skills/total-recall/plugins/auth/DESIGN.md +76 -0
- package/scaffold/.agent/skills/total-recall/plugins/auth/README.md +3 -1
- package/scaffold/.agent/skills/total-recall/plugins/auth/cli.mjs +20 -15
- package/scaffold/.agent/skills/total-recall/plugins/auth/package-lock.json +6 -6
- package/scaffold/.agent/skills/total-recall/plugins/auth/package.json +2 -1
- package/scaffold/.agent/skills/total-recall/plugins/auth/plugin.json +13 -51
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/access-overview.md +17 -0
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/agent-login.md +20 -0
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/baseline-audit.md +22 -0
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/credential-repository-binding.md +17 -0
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/credential-store-maintenance.md +17 -0
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/dashboard-password.md +18 -0
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/dashboard-sessions.md +18 -0
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/endpoint-probe.md +23 -0
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/google-sign-in.md +21 -0
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/mesh-machines.md +16 -0
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/passkey-enrollment.md +21 -0
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/registered-brains.md +16 -0
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/scoped-access-keys.md +17 -0
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/secret-inventory.md +25 -0
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/signing-key-rotation.md +22 -0
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/home.js +375 -0
- package/scaffold/.agent/skills/total-recall/plugins/automations/{ui/DESIGN.md → DESIGN.md} +32 -21
- package/scaffold/.agent/skills/total-recall/plugins/automations/adapters.mjs +17 -1
- package/scaffold/.agent/skills/total-recall/plugins/automations/cli.mjs +10 -1
- package/scaffold/.agent/skills/total-recall/plugins/automations/package-lock.json +6 -6
- package/scaffold/.agent/skills/total-recall/plugins/automations/package.json +4 -3
- package/scaffold/.agent/skills/total-recall/plugins/automations/plugin.json +11 -27
- package/scaffold/.agent/skills/total-recall/plugins/automations/ui/automations.js +2 -2
- package/scaffold/.agent/skills/total-recall/plugins/automations/ui/chunks/control-ledger.md +42 -0
- package/scaffold/.agent/skills/total-recall/plugins/automations/ui/chunks/local-inventory-triage.md +17 -0
- package/scaffold/.agent/skills/total-recall/plugins/automations/ui/chunks/pending-control.md +39 -0
- package/scaffold/.agent/skills/total-recall/plugins/automations/ui/chunks/run-evidence.md +41 -0
- package/scaffold/.agent/skills/total-recall/plugins/automations/ui/chunks/schedule-vs-run-evidence.md +17 -0
- package/scaffold/.agent/skills/total-recall/plugins/automations/ui/chunks/source-coverage.md +41 -0
- package/scaffold/.agent/skills/total-recall/plugins/automations/ui/{card.js → home.js} +32 -27
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/DESIGN.md +53 -0
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/cli.mjs +23 -0
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/commands/run-core.mjs +4 -2
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/core/check.mjs +4 -2
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/package-lock.json +6 -6
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/package.json +2 -1
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/plugin.json +40 -40
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/chunks/config.md +15 -0
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/chunks/detect.md +15 -0
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/chunks/gate.md +15 -0
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/chunks/init.md +15 -0
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/chunks/report.md +17 -0
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/chunks/run.md +17 -0
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/chunks/snapshot.md +15 -0
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/code-quality-report.mjs +55 -23
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/home.mjs +214 -0
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/DESIGN.md +146 -0
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/package-lock.json +6 -6
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/package.json +2 -1
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/plugin.json +51 -34
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/src/command.mjs +1 -1
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/create.md +35 -0
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/history.md +35 -0
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/library.md +49 -0
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/list.md +42 -0
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/promote.md +40 -0
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/read.md +25 -0
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/remove.md +26 -0
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/rollback.md +26 -0
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/show.md +53 -0
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/status.md +40 -0
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/test-path.md +38 -0
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/test.md +46 -0
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/update.md +32 -0
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/home.js +533 -0
- package/scaffold/.agent/skills/total-recall/plugins/embeddings/DESIGN.md +110 -0
- package/scaffold/.agent/skills/total-recall/plugins/embeddings/package-lock.json +6 -6
- package/scaffold/.agent/skills/total-recall/plugins/embeddings/package.json +2 -1
- package/scaffold/.agent/skills/total-recall/plugins/embeddings/plugin.json +13 -10
- package/scaffold/.agent/skills/total-recall/plugins/embeddings/ui/chunks/benchmark.md +49 -0
- package/scaffold/.agent/skills/total-recall/plugins/embeddings/ui/chunks/coverage.md +53 -0
- package/scaffold/.agent/skills/total-recall/plugins/embeddings/ui/chunks/models.md +43 -0
- package/scaffold/.agent/skills/total-recall/plugins/embeddings/ui/chunks/pull.md +41 -0
- package/scaffold/.agent/skills/total-recall/plugins/embeddings/ui/chunks/status.md +59 -0
- package/scaffold/.agent/skills/total-recall/plugins/embeddings/ui/home.js +353 -0
- package/scaffold/.agent/skills/total-recall/plugins/git/DESIGN.md +31 -0
- package/scaffold/.agent/skills/total-recall/plugins/git/README.md +25 -1
- package/scaffold/.agent/skills/total-recall/plugins/git/cli.mjs +5 -1
- package/scaffold/.agent/skills/total-recall/plugins/git/package-lock.json +6 -6
- package/scaffold/.agent/skills/total-recall/plugins/git/package.json +2 -1
- package/scaffold/.agent/skills/total-recall/plugins/git/plugin.json +17 -27
- package/scaffold/.agent/skills/total-recall/plugins/git/src/ops/commit-memory.mjs +30 -6
- package/scaffold/.agent/skills/total-recall/plugins/git/src/ops/fleet.mjs +24 -6
- package/scaffold/.agent/skills/total-recall/plugins/git/src/ops/secret-firewall.mjs +33 -7
- package/scaffold/.agent/skills/total-recall/plugins/git/src/ops/undo.mjs +29 -5
- package/scaffold/.agent/skills/total-recall/plugins/git/src/ops/unmerged.mjs +182 -0
- package/scaffold/.agent/skills/total-recall/plugins/git/ui/chunks/change-comparison.md +27 -0
- package/scaffold/.agent/skills/total-recall/plugins/git/ui/chunks/commit-identity.md +22 -0
- package/scaffold/.agent/skills/total-recall/plugins/git/ui/chunks/create-worktree.md +25 -0
- package/scaffold/.agent/skills/total-recall/plugins/git/ui/chunks/registered-worktrees.md +22 -0
- package/scaffold/.agent/skills/total-recall/plugins/git/ui/chunks/remove-worktree.md +23 -0
- package/scaffold/.agent/skills/total-recall/plugins/git/ui/chunks/repository-ledger.md +25 -0
- package/scaffold/.agent/skills/total-recall/plugins/git/ui/chunks/unmerged-work.md +22 -0
- package/scaffold/.agent/skills/total-recall/plugins/git/ui/chunks/upstream-divergence.md +17 -0
- package/scaffold/.agent/skills/total-recall/plugins/git/ui/chunks/worktree-conflict-triage.md +17 -0
- package/scaffold/.agent/skills/total-recall/plugins/git/ui/chunks/worktree-terminal.md +22 -0
- package/scaffold/.agent/skills/total-recall/plugins/git/ui/home.js +273 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/DESIGN.md +35 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/README.md +4 -5
- package/scaffold/.agent/skills/total-recall/plugins/mesh/cli.mjs +9 -3
- package/scaffold/.agent/skills/total-recall/plugins/mesh/package-lock.json +6 -6
- package/scaffold/.agent/skills/total-recall/plugins/mesh/package.json +2 -1
- package/scaffold/.agent/skills/total-recall/plugins/mesh/plugin.json +37 -39
- package/scaffold/.agent/skills/total-recall/plugins/mesh/src/cli/mesh.mjs +5 -3
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/active-device-dispatch.md +22 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/control-probe.md +25 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/control-server.md +22 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/credential-readiness.md +23 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/elected-leader.md +22 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/enrollment-key.md +22 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/file-receipt.md +25 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/fleet-execution.md +23 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/fleet-presence.md +23 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/interactive-ssh.md +22 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/local-enrollment.md +23 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/mesh-policy.md +23 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/network-atlas.md +25 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/node-roster.md +26 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/node-selection-proof.md +17 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/owner-observations.md +23 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/peer-path.md +23 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/pinned-leader.md +24 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/reachability-evidence-ladder.md +17 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/recorded-login.md +23 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/remote-execution.md +22 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/secret-grants.md +26 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/{card.js → home.js} +93 -22
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/DESIGN.md +86 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/README.md +19 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/cli.mjs +5 -1
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/package-lock.json +6 -6
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/package.json +2 -1
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/plugin.json +43 -22
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/chat.mjs +80 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/adapter-docs-freshness.md +16 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/chat-handoff.md +26 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/fleet-maintenance.md +21 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/harness-inventory.md +21 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/included-access.md +18 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/included-usage-verification.md +15 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/independent-review.md +17 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/managed-execution.md +20 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/official-documentation.md +18 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/quota-recovery.md +21 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/review-routing-decision.md +16 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/route-work.md +18 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/routing-evidence.md +18 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/run-ledger.md +18 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/home.js +198 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/DESIGN.md +75 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/README.md +2 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/cli.mjs +17 -14
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/package-lock.json +6 -6
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/package.json +2 -1
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/plugin.json +10 -44
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/src/generate.mjs +5 -4
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/src/graph.mjs +3 -4
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/src/ingest.mjs +23 -18
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/src/mesh-vaults.mjs +8 -3
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/src/refresh.mjs +6 -3
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/src/search.mjs +3 -5
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/src/token.mjs +21 -47
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/src/upstream-watcher.mjs +17 -6
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/auto-refresh.md +18 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/bootstrap-pages.md +18 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/generate-wiki.md +21 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/generator-settings.md +18 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/host-probe.md +18 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/ingest-preview.md +18 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/link-hygiene.md +21 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/link-topology.md +19 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/passage-search.md +19 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/propagation-plan.md +18 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/provider-credentials.md +18 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/refresh-report.md +18 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/task-evidence.md +22 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/upstream-record.md +18 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/watch-upstream.md +18 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/wiki-atlas.md +19 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/panel.js +261 -513
- package/scaffold/.agent/skills/total-recall/plugins/security/DESIGN.md +84 -0
- package/scaffold/.agent/skills/total-recall/plugins/security/README.md +4 -2
- package/scaffold/.agent/skills/total-recall/plugins/security/cli.mjs +7 -19
- package/scaffold/.agent/skills/total-recall/plugins/security/package-lock.json +6 -6
- package/scaffold/.agent/skills/total-recall/plugins/security/package.json +2 -3
- package/scaffold/.agent/skills/total-recall/plugins/security/plugin.json +19 -52
- package/scaffold/.agent/skills/total-recall/plugins/security/ui/chunks/device-evidence.md +21 -0
- package/scaffold/.agent/skills/total-recall/plugins/security/ui/chunks/evidence-desk.md +18 -0
- package/scaffold/.agent/skills/total-recall/plugins/security/ui/chunks/guided-device-review.md +17 -0
- package/scaffold/.agent/skills/total-recall/plugins/security/ui/chunks/host-and-network.md +21 -0
- package/scaffold/.agent/skills/total-recall/plugins/security/ui/chunks/https-headers.md +17 -0
- package/scaffold/.agent/skills/total-recall/plugins/security/ui/chunks/mesh-coverage.md +18 -0
- package/scaffold/.agent/skills/total-recall/plugins/security/ui/chunks/private-security-tools.md +16 -0
- package/scaffold/.agent/skills/total-recall/plugins/security/ui/chunks/single-origin-header-check.md +17 -0
- package/scaffold/.agent/skills/total-recall/plugins/security/ui/chunks/source-review.md +21 -0
- package/scaffold/.agent/skills/total-recall/plugins/security/ui/chunks/ssh-permission-plan.md +17 -0
- package/scaffold/.agent/skills/total-recall/plugins/security/ui/home.js +283 -0
- package/scaffold/.agent/skills/total-recall/plugins/ssss/DESIGN.md +93 -0
- package/scaffold/.agent/skills/total-recall/plugins/ssss/package-lock.json +2 -2
- package/scaffold/.agent/skills/total-recall/plugins/ssss/package.json +2 -1
- package/scaffold/.agent/skills/total-recall/plugins/ssss/plugin.json +5 -3
- package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/chunks/conformance.md +26 -0
- package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/chunks/registry.md +37 -0
- package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/chunks/repair.md +42 -0
- package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/chunks/scaffold.md +33 -0
- package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/chunks/status.md +43 -0
- package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/chunks/validate.md +34 -0
- package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/chunks/validation-diagnostics.md +17 -0
- package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/chunks/workspace-registry-preflight.md +17 -0
- package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/home.js +348 -0
- package/scaffold/.agent/skills/total-recall/references/operations.md +2 -0
- package/src/cli/api.mjs +3 -3
- package/src/cli/brief.mjs +3 -0
- package/src/cli/config.mjs +16 -0
- package/src/cli/connect.mjs +2 -7
- package/src/cli/plugin/chunks.mjs +145 -0
- package/src/cli/plugin/create.mjs +24 -52
- package/src/cli/plugin/index.mjs +20 -9
- package/src/cli/setup.mjs +2 -9
- package/src/cli/start.mjs +1 -0
- package/src/cli/startup.mjs +18 -0
- package/src/core/app-deploy/design-tokens.mjs +14 -9
- package/src/core/app-deploy/ui-elements.mjs +1 -1
- package/src/core/brain-registry.mjs +5 -0
- package/src/core/brain-updates.mjs +5 -1
- package/src/core/daemon-control.mjs +5 -1
- package/src/core/dashboard-bundle.mjs +261 -0
- package/src/core/default-plugin-refresh.mjs +39 -0
- package/src/core/ensure-dependencies.mjs +19 -15
- package/src/core/memory-brain.mjs +30 -8
- package/src/core/plugin-activation.mjs +63 -20
- package/src/core/plugin-contracts/{card.mjs → manifest.mjs} +23 -57
- package/src/core/plugin-contracts/startup-check.mjs +49 -0
- package/src/core/plugin-contracts/ui.mjs +9 -3
- package/src/core/plugin-distribution.mjs +6 -6
- package/src/core/plugin-lifecycle.mjs +58 -0
- package/src/core/plugin-loader.mjs +9 -5
- package/src/core/plugin-runner.mjs +21 -10
- package/src/core/plugin-startup-checks.mjs +44 -0
- package/src/core/plugin-state.mjs +19 -5
- package/src/core/plugin-store.mjs +30 -11
- package/src/core/project-id.mjs +15 -5
- package/src/core/required-plugins.mjs +31 -6
- package/src/core/schema.mjs +2 -0
- package/src/core/ssss-operation-service.mjs +1 -0
- package/src/core/startup-health.mjs +28 -3
- package/src/core/testing/plugin-fixture.mjs +22 -21
- package/src/core/throttled-fetch.mjs +25 -18
- package/src/core/ui-chunk-choice.mjs +77 -0
- package/src/core/ui-chunk.registry.json +23 -0
- package/src/core/ui-chunks.mjs +434 -0
- package/src/core/vault-cache.mjs +58 -59
- package/src/core/workspace-compositions.mjs +151 -0
- package/src/core/workspace-drawers.mjs +79 -0
- package/src/server/api.mjs +4 -27
- package/src/server/index.mjs +28 -21
- package/src/server/memory-events.mjs +31 -0
- package/src/server/plugin-brain-targets.mjs +89 -0
- package/src/server/rest.mjs +2 -0
- package/src/server/route-inventory.mjs +3 -2
- package/src/server/route-manifest.json +52 -4
- package/src/server/routes/_shared.mjs +7 -14
- package/src/server/routes/brains.mjs +29 -44
- package/src/server/routes/dashboard.mjs +26 -0
- package/src/server/routes/plugins.mjs +154 -45
- package/src/server/routes/ui-chunks.mjs +192 -0
- package/frontend/dist/assets/index-DACh1dhx.js +0 -5613
- package/frontend/dist/assets/index-DtwsDyFM.css +0 -1
- package/frontend/src/components/plugins/card/CardEngine.tsx +0 -108
- package/frontend/src/components/plugins/card/CardScenes.tsx +0 -103
- package/frontend/src/components/plugins/card/ExecutionPicker.tsx +0 -64
- package/frontend/src/components/plugins/card/args.ts +0 -28
- package/frontend/src/components/plugins/card/card.css +0 -32
- package/frontend/src/components/plugins/card/cli-line.ts +0 -13
- package/frontend/src/components/plugins/card/contract.ts +0 -91
- package/frontend/src/components/plugins/card/format.ts +0 -49
- package/frontend/src/components/plugins/card/runner-context.ts +0 -11
- package/frontend/src/components/plugins/card/runner.tsx +0 -43
- package/frontend/src/components/plugins/card/theme.ts +0 -35
- package/frontend/src/components/plugins/card/use-source.ts +0 -22
- package/frontend/src/components/plugins/card/widgets.tsx +0 -94
- package/frontend/src/components/plugins/workspace/WorkspaceHost.tsx +0 -23
- package/frontend/src/pages/PluginsPage.tsx +0 -1719
- package/scaffold/.agent/skills/plugin/evals/cases/04-card-collects-credential.mjs +0 -47
- package/scaffold/.agent/skills/plugin/prompts/06-card.md +0 -46
- package/scaffold/.agent/skills/plugin/references/card.md +0 -90
- package/scaffold/.agent/skills/plugin/subagents/card-designer.md +0 -60
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/DESIGN.md +0 -67
- package/scaffold/.agent/skills/total-recall/plugins/auth/ui/card.js +0 -1179
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/DESIGN.md +0 -32
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/card.js +0 -588
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/card.js +0 -575
- package/scaffold/.agent/skills/total-recall/plugins/embeddings/ui/DESIGN.md +0 -32
- package/scaffold/.agent/skills/total-recall/plugins/embeddings/ui/card.js +0 -482
- package/scaffold/.agent/skills/total-recall/plugins/git/ui/DESIGN.md +0 -100
- package/scaffold/.agent/skills/total-recall/plugins/git/ui/card.js +0 -637
- package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/DESIGN.md +0 -217
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/DESIGN.md +0 -32
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/card.js +0 -1276
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/DESIGN.md +0 -45
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/card.js +0 -1401
- package/scaffold/.agent/skills/total-recall/plugins/security/scripts/build-ui.mjs +0 -4
- package/scaffold/.agent/skills/total-recall/plugins/security/ui/DESIGN.md +0 -41
- package/scaffold/.agent/skills/total-recall/plugins/security/ui/card.js +0 -396
- package/scaffold/.agent/skills/total-recall/plugins/security/ui/panel.js +0 -98
- package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/DESIGN.md +0 -15
- package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/card.js +0 -182
|
@@ -84,7 +84,7 @@ export default function MemoryPage({ activeBrainId }: { activeBrainId?: string }
|
|
|
84
84
|
setError("")
|
|
85
85
|
try {
|
|
86
86
|
if (query.trim()) {
|
|
87
|
-
const results = await searchMemory(query, category === "all" ? undefined : category)
|
|
87
|
+
const results = await searchMemory(query, category === "all" ? undefined : category, activeBrainId)
|
|
88
88
|
setNodes(results)
|
|
89
89
|
} else {
|
|
90
90
|
const results = await listMemory(activeBrainId, category === "all" ? undefined : category)
|
|
@@ -299,9 +299,10 @@ export default function MemoryPage({ activeBrainId }: { activeBrainId?: string }
|
|
|
299
299
|
|
|
300
300
|
// Wire SSE Live Agent Monitor Streaming
|
|
301
301
|
useEffect(() => {
|
|
302
|
+
// The dashboard's authenticated memory event stream; /stream is the local monitor port only.
|
|
302
303
|
const base = getApiBase() || window.location.origin
|
|
303
|
-
const sseUrl = `${base.replace(/\/+$/, '')}/
|
|
304
|
-
const eventSource = new EventSource(sseUrl)
|
|
304
|
+
const sseUrl = `${base.replace(/\/+$/, '')}/api/memory-events`
|
|
305
|
+
const eventSource = new EventSource(sseUrl, { withCredentials: new URL(base).origin !== window.location.origin })
|
|
305
306
|
|
|
306
307
|
eventSource.onmessage = (event) => {
|
|
307
308
|
try {
|
|
@@ -546,14 +547,14 @@ export default function MemoryPage({ activeBrainId }: { activeBrainId?: string }
|
|
|
546
547
|
|
|
547
548
|
return (
|
|
548
549
|
<div className="page">
|
|
549
|
-
<div className="page-header
|
|
550
|
+
<div className="page-header memory-header">
|
|
550
551
|
<div>
|
|
551
552
|
<h1>Memory Vault</h1>
|
|
552
553
|
<p>Browse, audit, and resolve contradictions in your SSSS knowledge graph</p>
|
|
553
554
|
</div>
|
|
554
555
|
|
|
555
556
|
{/* Tab Selection */}
|
|
556
|
-
<div
|
|
557
|
+
<div className="memory-tabs">
|
|
557
558
|
<button
|
|
558
559
|
className={`btn btn-sm ${activeTab === "vault" ? "btn-purple" : "btn-ghost"}`}
|
|
559
560
|
onClick={() => { setActiveTab("vault"); setSelected(null); setSearchParams({}); }}
|
|
@@ -591,28 +592,20 @@ export default function MemoryPage({ activeBrainId }: { activeBrainId?: string }
|
|
|
591
592
|
{error && <div className="badge badge-error" style={{ alignSelf: "flex-start", marginBottom: 15 }}>{error}</div>}
|
|
592
593
|
|
|
593
594
|
{activeTab === "vault" ? (
|
|
594
|
-
<div className="memory-
|
|
595
|
-
<div className="memory-
|
|
596
|
-
<
|
|
597
|
-
|
|
598
|
-
<
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
: categoryCounts[c]
|
|
607
|
-
? <span className="category-count">{categoryCounts[c]}</span>
|
|
608
|
-
: null
|
|
609
|
-
}
|
|
610
|
-
</button>
|
|
611
|
-
))}
|
|
612
|
-
|
|
595
|
+
<div className="memory-main">
|
|
596
|
+
<div className="memory-toolbar">
|
|
597
|
+
<select className="select" aria-label="Memory category" value={category}
|
|
598
|
+
onChange={event => { setCategory(event.target.value); setSearchParams({}); setIsCreating(false); setIsEditing(false); }}>
|
|
599
|
+
{CATEGORIES.map(c => <option key={c} value={c}>
|
|
600
|
+
{c === "all" ? `All Nodes${category === "all" ? ` (${nodes.length})` : ""}`
|
|
601
|
+
: `${c}${categoryCounts[c] ? ` (${categoryCounts[c]})` : ""}`}
|
|
602
|
+
</option>)}
|
|
603
|
+
</select>
|
|
604
|
+
<input className="input" id="memory-search" type="search" aria-label="Search memory nodes"
|
|
605
|
+
placeholder="Search memory nodes…" value={query} onChange={event => setQuery(event.target.value)} />
|
|
606
|
+
<button className="btn btn-ghost btn-sm" onClick={fetchNodes}>Refresh</button>
|
|
613
607
|
<button
|
|
614
608
|
className="btn btn-purple"
|
|
615
|
-
style={{ width: "100%", marginTop: 20, display: "flex", alignItems: "center", justifyContent: "center", gap: 8, fontSize: 13, minHeight: 44, borderRadius: "var(--radius-md, 10px)", fontWeight: 600 }}
|
|
616
609
|
onClick={() => {
|
|
617
610
|
setSelected(null);
|
|
618
611
|
setSearchParams({});
|
|
@@ -636,17 +629,7 @@ export default function MemoryPage({ activeBrainId }: { activeBrainId?: string }
|
|
|
636
629
|
Create New Node
|
|
637
630
|
</button>
|
|
638
631
|
</div>
|
|
639
|
-
<div
|
|
640
|
-
<div className="memory-search">
|
|
641
|
-
<input
|
|
642
|
-
id="memory-search"
|
|
643
|
-
type="text"
|
|
644
|
-
placeholder="Search memory nodes…"
|
|
645
|
-
value={query}
|
|
646
|
-
onChange={e => setQuery(e.target.value)}
|
|
647
|
-
/>
|
|
648
|
-
<button className="btn btn-ghost btn-sm" onClick={fetchNodes}>Refresh</button>
|
|
649
|
-
</div>
|
|
632
|
+
<div>
|
|
650
633
|
{loading ? (
|
|
651
634
|
<div style={{ display: "flex", flexDirection: "column", gap: 8 }}>
|
|
652
635
|
{[1, 2, 3].map(i => <div key={i} className="skeleton" style={{ height: 60 }} />)}
|
|
@@ -876,7 +876,7 @@ export default function SettingsPage({ activeBrainId }: { activeBrainId?: string
|
|
|
876
876
|
</div>
|
|
877
877
|
|
|
878
878
|
<p style={{ fontSize: 12, color: 'var(--text-tertiary)', margin: '0 0 12px', lineHeight: 1.5 }}>
|
|
879
|
-
|
|
879
|
+
Choose the active vault layer under <strong>Brains</strong> in the left drawer.
|
|
880
880
|
Fields below edit this install’s <code>brain.json</code> identity — not the active layer.
|
|
881
881
|
</p>
|
|
882
882
|
|
|
@@ -11,6 +11,13 @@
|
|
|
11
11
|
"description"
|
|
12
12
|
],
|
|
13
13
|
"additionalProperties": true,
|
|
14
|
+
"not": {
|
|
15
|
+
"anyOf": [
|
|
16
|
+
{ "required": ["card"] },
|
|
17
|
+
{ "required": ["card_face"] },
|
|
18
|
+
{ "required": ["card_layout"] }
|
|
19
|
+
]
|
|
20
|
+
},
|
|
14
21
|
"properties": {
|
|
15
22
|
"configuration": {
|
|
16
23
|
"type": "object",
|
|
@@ -125,6 +132,20 @@
|
|
|
125
132
|
"text"
|
|
126
133
|
]
|
|
127
134
|
},
|
|
135
|
+
"sensitive_output": {
|
|
136
|
+
"type": "boolean",
|
|
137
|
+
"description": "The operation can return private credential material. The generic browser runner and UI data bindings must not expose it."
|
|
138
|
+
},
|
|
139
|
+
"terminal_only_args": {
|
|
140
|
+
"type": "array",
|
|
141
|
+
"uniqueItems": true,
|
|
142
|
+
"items": { "type": "string", "pattern": "^--[a-z][a-z0-9-]{0,63}$" },
|
|
143
|
+
"description": "Long flags reserved for the owning terminal CLI. Browser dispatch rejects separate and equals-form values."
|
|
144
|
+
},
|
|
145
|
+
"terminal_only": {
|
|
146
|
+
"type": "boolean",
|
|
147
|
+
"description": "The owning terminal CLI is required. Safe output pointers may still be documented."
|
|
148
|
+
},
|
|
128
149
|
"timeout_ms": {
|
|
129
150
|
"type": "integer",
|
|
130
151
|
"minimum": 1,
|
|
@@ -133,7 +154,7 @@
|
|
|
133
154
|
"args": {
|
|
134
155
|
"type": "array",
|
|
135
156
|
"items": {
|
|
136
|
-
"$ref": "#/definitions/
|
|
157
|
+
"$ref": "#/definitions/pluginArgument"
|
|
137
158
|
}
|
|
138
159
|
}
|
|
139
160
|
}
|
|
@@ -517,6 +538,10 @@
|
|
|
517
538
|
"pattern": "\\.md$",
|
|
518
539
|
"description": "Plugin-relative default DESIGN.md, used when the app supplies none."
|
|
519
540
|
},
|
|
541
|
+
"home": {
|
|
542
|
+
"type": "string",
|
|
543
|
+
"description": "ID of the plugin's declared native Home element."
|
|
544
|
+
},
|
|
520
545
|
"elements": {
|
|
521
546
|
"type": "array",
|
|
522
547
|
"items": {
|
|
@@ -540,9 +565,7 @@
|
|
|
540
565
|
"list",
|
|
541
566
|
"detail",
|
|
542
567
|
"settings",
|
|
543
|
-
"widget"
|
|
544
|
-
"card",
|
|
545
|
-
"card-face"
|
|
568
|
+
"widget"
|
|
546
569
|
]
|
|
547
570
|
},
|
|
548
571
|
"tag": {
|
|
@@ -680,110 +703,6 @@
|
|
|
680
703
|
}
|
|
681
704
|
}
|
|
682
705
|
},
|
|
683
|
-
"card_face": {
|
|
684
|
-
"type": "object",
|
|
685
|
-
"description": "Branded creative UI card face configuration: mobile-first, touch-friendly, agent-customizable layout, metrics, and actions",
|
|
686
|
-
"properties": {
|
|
687
|
-
"skin": {
|
|
688
|
-
"type": "string",
|
|
689
|
-
"enum": [
|
|
690
|
-
"winamp-classic",
|
|
691
|
-
"analog-hifi",
|
|
692
|
-
"synth-deck",
|
|
693
|
-
"translucent-acrylic",
|
|
694
|
-
"pocket-arcade",
|
|
695
|
-
"studio-rack",
|
|
696
|
-
"vibrant-modern"
|
|
697
|
-
],
|
|
698
|
-
"description": "Creative visual skin inspired by classic audio players, hardware decks, and retro UI"
|
|
699
|
-
},
|
|
700
|
-
"theme": {
|
|
701
|
-
"type": "string",
|
|
702
|
-
"enum": [
|
|
703
|
-
"vibrant",
|
|
704
|
-
"neon",
|
|
705
|
-
"gradient",
|
|
706
|
-
"minimal",
|
|
707
|
-
"glass",
|
|
708
|
-
"compact"
|
|
709
|
-
],
|
|
710
|
-
"description": "Visual theme preset for the card face"
|
|
711
|
-
},
|
|
712
|
-
"headline": {
|
|
713
|
-
"type": "string",
|
|
714
|
-
"description": "Custom headline or tag line for the plugin card face"
|
|
715
|
-
},
|
|
716
|
-
"primary_color": {
|
|
717
|
-
"type": "string",
|
|
718
|
-
"description": "Primary brand color hex (e.g. #10b981)"
|
|
719
|
-
},
|
|
720
|
-
"secondary_color": {
|
|
721
|
-
"type": "string",
|
|
722
|
-
"description": "Secondary accent or background tint hex"
|
|
723
|
-
},
|
|
724
|
-
"accent_color": {
|
|
725
|
-
"type": "string",
|
|
726
|
-
"description": "Highlight or glowing accent hex"
|
|
727
|
-
},
|
|
728
|
-
"quick_actions": {
|
|
729
|
-
"type": "array",
|
|
730
|
-
"description": "Touch-friendly direct CLI execution actions rendered on the card face",
|
|
731
|
-
"items": {
|
|
732
|
-
"type": "object",
|
|
733
|
-
"required": [
|
|
734
|
-
"subcommand",
|
|
735
|
-
"label"
|
|
736
|
-
],
|
|
737
|
-
"properties": {
|
|
738
|
-
"subcommand": {
|
|
739
|
-
"type": "string"
|
|
740
|
-
},
|
|
741
|
-
"label": {
|
|
742
|
-
"type": "string"
|
|
743
|
-
},
|
|
744
|
-
"icon": {
|
|
745
|
-
"type": "string"
|
|
746
|
-
},
|
|
747
|
-
"color": {
|
|
748
|
-
"type": "string"
|
|
749
|
-
}
|
|
750
|
-
}
|
|
751
|
-
}
|
|
752
|
-
},
|
|
753
|
-
"metrics": {
|
|
754
|
-
"type": "array",
|
|
755
|
-
"description": "DEPRECATED: fixed text cannot reflect real state. Declare a 'status' command (top-level 'status' field) so the card reads the plugin's real state instead.",
|
|
756
|
-
"items": {
|
|
757
|
-
"type": "object",
|
|
758
|
-
"required": [
|
|
759
|
-
"label",
|
|
760
|
-
"value"
|
|
761
|
-
],
|
|
762
|
-
"properties": {
|
|
763
|
-
"label": {
|
|
764
|
-
"type": "string"
|
|
765
|
-
},
|
|
766
|
-
"value": {
|
|
767
|
-
"type": "string"
|
|
768
|
-
}
|
|
769
|
-
}
|
|
770
|
-
}
|
|
771
|
-
},
|
|
772
|
-
"touch_layout": {
|
|
773
|
-
"type": "string",
|
|
774
|
-
"enum": [
|
|
775
|
-
"compact",
|
|
776
|
-
"comfortable",
|
|
777
|
-
"dense"
|
|
778
|
-
],
|
|
779
|
-
"description": "Touch target and padding layout mode"
|
|
780
|
-
},
|
|
781
|
-
"interactive": {
|
|
782
|
-
"type": "boolean",
|
|
783
|
-
"description": "Whether interactive JavaScript controls are active on the card face"
|
|
784
|
-
}
|
|
785
|
-
}
|
|
786
|
-
},
|
|
787
706
|
"locked": {
|
|
788
707
|
"type": "boolean",
|
|
789
708
|
"description": "When true, editing is locked to protect a completed plugin from inadvertent modification"
|
|
@@ -898,6 +817,31 @@
|
|
|
898
817
|
}
|
|
899
818
|
}
|
|
900
819
|
},
|
|
820
|
+
"startup_check": {
|
|
821
|
+
"type": "object",
|
|
822
|
+
"description": "A read command contributed to `startup check` and `brief`. It prints one JSON object { ok, outstanding, summary }; outstanding above zero needs attention.",
|
|
823
|
+
"required": [
|
|
824
|
+
"command"
|
|
825
|
+
],
|
|
826
|
+
"properties": {
|
|
827
|
+
"command": {
|
|
828
|
+
"type": "string",
|
|
829
|
+
"pattern": "^[a-z][a-z0-9-]{0,63}$"
|
|
830
|
+
},
|
|
831
|
+
"args": {
|
|
832
|
+
"type": "array",
|
|
833
|
+
"maxItems": 8,
|
|
834
|
+
"items": {
|
|
835
|
+
"type": "string"
|
|
836
|
+
}
|
|
837
|
+
},
|
|
838
|
+
"timeout_ms": {
|
|
839
|
+
"type": "integer",
|
|
840
|
+
"minimum": 1000,
|
|
841
|
+
"maximum": 30000
|
|
842
|
+
}
|
|
843
|
+
}
|
|
844
|
+
},
|
|
901
845
|
"distribution": {
|
|
902
846
|
"type": "object",
|
|
903
847
|
"required": [
|
|
@@ -921,124 +865,6 @@
|
|
|
921
865
|
}
|
|
922
866
|
}
|
|
923
867
|
},
|
|
924
|
-
"card_layout": {
|
|
925
|
-
"type": "object",
|
|
926
|
-
"required": [
|
|
927
|
-
"template",
|
|
928
|
-
"regions"
|
|
929
|
-
],
|
|
930
|
-
"properties": {
|
|
931
|
-
"template": {
|
|
932
|
-
"enum": [
|
|
933
|
-
"console",
|
|
934
|
-
"ledger",
|
|
935
|
-
"monitor",
|
|
936
|
-
"inbox",
|
|
937
|
-
"dashboard",
|
|
938
|
-
"workbench",
|
|
939
|
-
"vault"
|
|
940
|
-
]
|
|
941
|
-
},
|
|
942
|
-
"regions": {
|
|
943
|
-
"type": "array",
|
|
944
|
-
"minItems": 1,
|
|
945
|
-
"maxItems": 12,
|
|
946
|
-
"items": {
|
|
947
|
-
"type": "object",
|
|
948
|
-
"required": [
|
|
949
|
-
"widget"
|
|
950
|
-
],
|
|
951
|
-
"properties": {
|
|
952
|
-
"widget": {
|
|
953
|
-
"enum": [
|
|
954
|
-
"status",
|
|
955
|
-
"actions",
|
|
956
|
-
"table",
|
|
957
|
-
"detail",
|
|
958
|
-
"log",
|
|
959
|
-
"form",
|
|
960
|
-
"keypad",
|
|
961
|
-
"gauge",
|
|
962
|
-
"list",
|
|
963
|
-
"settings",
|
|
964
|
-
"credentials",
|
|
965
|
-
"activity",
|
|
966
|
-
"live"
|
|
967
|
-
]
|
|
968
|
-
},
|
|
969
|
-
"title": {
|
|
970
|
-
"type": "string"
|
|
971
|
-
},
|
|
972
|
-
"command": {
|
|
973
|
-
"type": "string"
|
|
974
|
-
},
|
|
975
|
-
"commands": {
|
|
976
|
-
"type": "array",
|
|
977
|
-
"items": {
|
|
978
|
-
"type": "string"
|
|
979
|
-
}
|
|
980
|
-
},
|
|
981
|
-
"span": {
|
|
982
|
-
"type": "integer",
|
|
983
|
-
"minimum": 1,
|
|
984
|
-
"maximum": 12
|
|
985
|
-
},
|
|
986
|
-
"source": {
|
|
987
|
-
"type": "object",
|
|
988
|
-
"required": [
|
|
989
|
-
"command"
|
|
990
|
-
],
|
|
991
|
-
"properties": {
|
|
992
|
-
"command": {
|
|
993
|
-
"type": "string"
|
|
994
|
-
},
|
|
995
|
-
"args": {
|
|
996
|
-
"type": "array",
|
|
997
|
-
"items": {
|
|
998
|
-
"type": "string"
|
|
999
|
-
}
|
|
1000
|
-
},
|
|
1001
|
-
"path": {
|
|
1002
|
-
"type": "string"
|
|
1003
|
-
}
|
|
1004
|
-
}
|
|
1005
|
-
},
|
|
1006
|
-
"columns": {
|
|
1007
|
-
"type": "array",
|
|
1008
|
-
"minItems": 1,
|
|
1009
|
-
"items": {
|
|
1010
|
-
"type": "object",
|
|
1011
|
-
"required": [
|
|
1012
|
-
"key",
|
|
1013
|
-
"label"
|
|
1014
|
-
],
|
|
1015
|
-
"properties": {
|
|
1016
|
-
"key": {
|
|
1017
|
-
"type": "string"
|
|
1018
|
-
},
|
|
1019
|
-
"label": {
|
|
1020
|
-
"type": "string"
|
|
1021
|
-
},
|
|
1022
|
-
"format": {
|
|
1023
|
-
"enum": [
|
|
1024
|
-
"text",
|
|
1025
|
-
"number",
|
|
1026
|
-
"money",
|
|
1027
|
-
"date",
|
|
1028
|
-
"datetime",
|
|
1029
|
-
"bytes",
|
|
1030
|
-
"percent",
|
|
1031
|
-
"status"
|
|
1032
|
-
]
|
|
1033
|
-
}
|
|
1034
|
-
}
|
|
1035
|
-
}
|
|
1036
|
-
}
|
|
1037
|
-
}
|
|
1038
|
-
}
|
|
1039
|
-
}
|
|
1040
|
-
}
|
|
1041
|
-
},
|
|
1042
868
|
"workspace": {
|
|
1043
869
|
"type": "object",
|
|
1044
870
|
"description": "Live-use surface hosted in the slide-out drawer",
|
|
@@ -1122,7 +948,7 @@
|
|
|
1122
948
|
}
|
|
1123
949
|
},
|
|
1124
950
|
"definitions": {
|
|
1125
|
-
"
|
|
951
|
+
"pluginArgument": {
|
|
1126
952
|
"type": "object",
|
|
1127
953
|
"required": [
|
|
1128
954
|
"name",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "total-recall-brain",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.46.1",
|
|
4
4
|
"description": "The Vibe Coding Brain & Autonomous Software Factory: memory, rules, secrets, and 33 visual plugins automatically managed across all your devices.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plugin
|
|
3
|
-
description: Author, review or fix a Total Recall plugin (tr-plugin-*).
|
|
3
|
+
description: Author, review or fix a Total Recall plugin (tr-plugin-*). Declare real operations and data, author its bespoke Home and SSSS UI blocks, and compose pages through Decision.
|
|
4
4
|
repo_scoped: false
|
|
5
5
|
metadata:
|
|
6
|
-
version: "1.
|
|
6
|
+
version: "1.2.0"
|
|
7
7
|
source: total-recall-brain
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -17,7 +17,7 @@ A plugin adds **one capability** to Total Recall. Core holds portable memory and
|
|
|
17
17
|
|
|
18
18
|
Before designing or writing a plugin, inventory `total-recall plugin library --json`, `total-recall plugin available --json` and `total-recall plugin bricks --json`. Match each dependency to an existing owner. Call installed plugins for shared services and vendor existing bricks for code the project needs to own. Document the verified gaps that need new code. Run `record.mjs --reuse` after drafting the manifest and before implementing the capability.
|
|
19
19
|
|
|
20
|
-
**A plugin is not one shape.** It declares the surfaces its capability needs, and a capability can need almost any combination — memory, context, a CLI, skills, scheduled work, runtime behaviour, a
|
|
20
|
+
**A plugin is not one shape.** It declares the surfaces its capability needs, and a capability can need almost any combination — memory, context, a CLI, skills, scheduled work, runtime behaviour, a Home, deployment, distribution, composition. Some plugins are only a memory category. Some are only a generator. Some are a CLI. Some are several at once. What it is, is decided by what it does.
|
|
21
21
|
|
|
22
22
|
```
|
|
23
23
|
references/ every field, every rule, and the failure catalogue
|
|
@@ -38,8 +38,8 @@ True of every plugin, whatever it turns out to be. Check every one before callin
|
|
|
38
38
|
3. **Machine-facing output is structured.** A command emits JSON under `--json` and exits non-zero on failure, so an agent acts on a result instead of scraping prose.
|
|
39
39
|
4. **Credentials are declared, never held.** Resolved only through `total-recall auth secret`. Never a second store, never `argv`, never an ambient environment variable, never a log.
|
|
40
40
|
5. **Real data only.** Every value traces to something that actually returned it. No seeded readings, no placeholders, no example defaults, no reassuring badges. A failure is reported as a failure, with the time of the last attempt.
|
|
41
|
-
6. **
|
|
42
|
-
7. **
|
|
41
|
+
6. **Owner design.** Every plugin ships a bespoke root `DESIGN.md` and a Home centered on its main workflows, live status and next actions. Author the interface in the owner repository.
|
|
42
|
+
7. **Composable coverage.** Ship reusable SSSS blocks for every routine workflow and meaningful safe data point. Provide editable inputs and real actions where the workflow needs them. Agents can author additional blocks and place them on a page. Jev selects from validated candidates through Decision.
|
|
43
43
|
8. **Fail closed.** A missing credential, a failed provider or an unreachable peer is an explicit error, never a success state.
|
|
44
44
|
9. **Copy.** No filler words, and no sentence ends with a preposition.
|
|
45
45
|
|
|
@@ -54,11 +54,13 @@ True of every plugin, whatever it turns out to be. Check every one before callin
|
|
|
54
54
|
| 3 | [Scaffold, then stop generating](prompts/03-scaffold.md) | repository skeleton | it exists, tests run |
|
|
55
55
|
| 4 | [Write the CLI as an agent interface](prompts/04-cli.md) | operations, args, effects, JSON | `record.mjs` passes |
|
|
56
56
|
| 5 | [Declare credentials and settings](prompts/05-credentials.md) | `secrets[]`, `configuration` | one credential path, auth |
|
|
57
|
-
| 6 | [Design the
|
|
57
|
+
| 6 | [Design the Home and blocks](references/generative-home.md) | `DESIGN.md`, native panels, SSSS blocks | validate every block and check coverage |
|
|
58
58
|
| 7 | [Extract the scaffold](prompts/07-scaffold.md) | the capability for another app | runs with Total Recall absent |
|
|
59
59
|
| 8 | [Verify and report](prompts/08-verify.md) | a truthful report | `record.mjs` passes every check |
|
|
60
60
|
|
|
61
|
-
Read [surfaces](references/surfaces.md) before Prompt 2
|
|
61
|
+
Read [surfaces](references/surfaces.md) before Prompt 2 and [generative Home](references/generative-home.md) before Step 6.
|
|
62
|
+
|
|
63
|
+
For an existing dashboard task, follow [Author and place a block](references/generative-home.md#author-and-place-a-block). This works for any installed, enabled owner in the selected brain.
|
|
62
64
|
|
|
63
65
|
---
|
|
64
66
|
|
|
@@ -69,7 +71,7 @@ Run from the plugin repository.
|
|
|
69
71
|
```
|
|
70
72
|
node <skill>/scripts/record.mjs . # every check
|
|
71
73
|
node <skill>/scripts/record.mjs . --manifest # manifest only
|
|
72
|
-
node <skill>/scripts/record.mjs . --
|
|
74
|
+
node <skill>/scripts/record.mjs . --home # Home, design and operation coverage
|
|
73
75
|
node <skill>/scripts/record.mjs . --secrets # credential safety only
|
|
74
76
|
node <skill>/scripts/record.mjs . --scaffold # standalone scaffold only
|
|
75
77
|
node <skill>/scripts/record.mjs . --reuse # installed owner commands and required bricks
|
|
@@ -87,10 +89,10 @@ Delegate when the work is separable. Each is a prompt file, disposable and repea
|
|
|
87
89
|
| Subagent | Use when | Returns |
|
|
88
90
|
| --- | --- | --- |
|
|
89
91
|
| [plugin-reviewer](subagents/plugin-reviewer.md) | a plugin is claimed finished | violations against the invariants, with evidence, or "clean" |
|
|
90
|
-
| [
|
|
92
|
+
| [Home design procedure](references/generative-home.md) | the plugin's work is known and its Home is missing | a useful owner Home, verified bindings and bespoke design |
|
|
91
93
|
| [scaffold-extractor](subagents/scaffold-extractor.md) | a plugin holds a capability another app could use | capability module design, or "not separable, because…" |
|
|
92
94
|
|
|
93
|
-
The reviewer is adversarial by construction: it looks for fabricated values, host leaks, and
|
|
95
|
+
The reviewer is adversarial by construction: it looks for fabricated values, host leaks, and an interface that would suit any other plugin.
|
|
94
96
|
|
|
95
97
|
---
|
|
96
98
|
|
|
@@ -110,6 +112,6 @@ See [evals](evals/README.md).
|
|
|
110
112
|
## References
|
|
111
113
|
|
|
112
114
|
- [Surfaces](references/surfaces.md) — every surface and its exact manifest fields.
|
|
113
|
-
- [
|
|
115
|
+
- [Generative Home](references/generative-home.md) — owner Home, SSSS chunks, Decision and evidence.
|
|
114
116
|
- [Scaffold](references/scaffold.md) — the capability for another application, and distribution.
|
|
115
117
|
- [Anti-patterns](references/anti-patterns.md) — the failure catalogue, every entry observed in a real plugin.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Proof that the recipe and its checks work.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
The positive fixture has a native Home, an SSSS page block, root `DESIGN.md`, bundled Auth and a standalone capability. Each defect case changes the files that produce its expected failure.
|
|
6
6
|
|
|
7
7
|
```
|
|
8
8
|
node evals/run.mjs # every case
|
|
@@ -11,48 +11,41 @@ node evals/run.mjs --json
|
|
|
11
11
|
node evals/run.mjs --keep # keep the temp fixture for inspection
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
Use an installed Total Recall and Auth catalog, or set `TOTAL_RECALL_BIN` to the candidate binary and `AGENT_DIR` to its plugin registry. The suite exits nonzero when a case fails.
|
|
15
15
|
|
|
16
16
|
## How a case is judged
|
|
17
17
|
|
|
18
|
-
A case declares the
|
|
19
|
-
|
|
20
|
-
- A defect case passes only if the checker **catches** it. A checker that looks at nothing fails here.
|
|
21
|
-
- The correct-plugin case passes only if there are **no** failures. An over-eager checker fails here.
|
|
22
|
-
- A case whose expectation is empty treats any failure as unexpected.
|
|
18
|
+
A case declares the exact set of failed check names it expects. The positive case expects zero failures and requires the checks that prove Auth, native Home, design, block validation, coverage and capability portability.
|
|
23
19
|
|
|
24
20
|
## The cases
|
|
25
21
|
|
|
26
22
|
| Case | Defect it encodes | Expected |
|
|
27
23
|
| --- | --- | --- |
|
|
28
|
-
| [`fabricated-seed`](cases/01-fabricated-seed.mjs) |
|
|
29
|
-
| [`reassuring-default`](cases/02-reassuring-default.mjs) |
|
|
30
|
-
| [`declared-template`](cases/03-declared-template.mjs) | a
|
|
31
|
-
| [`
|
|
32
|
-
| [`host-leak-in-scaffold`](cases/05-host-leak-in-scaffold.mjs) | a capability
|
|
33
|
-
| [`correct-plugin`](cases/06-correct-plugin.mjs) |
|
|
24
|
+
| [`fabricated-seed`](cases/01-fabricated-seed.mjs) | Home displays a seeded memory reading before any command runs | `no seeded values` |
|
|
25
|
+
| [`reassuring-default`](cases/02-reassuring-default.mjs) | Home displays "Healthy" when the response lacks a health reading | `no reassuring default` |
|
|
26
|
+
| [`declared-template`](cases/03-declared-template.mjs) | a native Home package retains a `card_layout` declaration and an orphaned card module | `contract`, `native presentation only` |
|
|
27
|
+
| [`home-collects-credential`](cases/04-home-collects-credential.mjs) | Home collects a service key in a password input and dispatches the raw value outside the declared credential interface | `credential interface` |
|
|
28
|
+
| [`host-leak-in-scaffold`](cases/05-host-leak-in-scaffold.mjs) | a capability calls the `total-recall` binary for credentials and uses a placeholder endpoint | `no Total Recall dependency`, `no placeholder values` |
|
|
29
|
+
| [`correct-plugin`](cases/06-correct-plugin.mjs) | native Home with a verified operation and binding, a bundled Auth session, an Auth-owned service key and a host-free capability | zero failures and all declared passes |
|
|
34
30
|
| [`missing-reuse`](cases/07-missing-reuse.mjs) | an otherwise valid plugin without a reuse decision | `reuse declared` |
|
|
35
31
|
| [`unresolved-owner-command`](cases/08-unresolved-owner-command.mjs) | a reference to an operation absent from its installed owner | `owner commands resolve` |
|
|
36
32
|
| [`missing-brick`](cases/09-missing-brick.mjs) | a declared brick without a project-owned copy | `required bricks present` |
|
|
37
33
|
|
|
38
|
-
Reuse cases resolve Auth against an installed Total Recall plugin catalog. Run them from a machine with Total Recall and Auth available.
|
|
39
|
-
|
|
40
34
|
## Adding a case
|
|
41
35
|
|
|
42
|
-
A case
|
|
36
|
+
A case exports `{ name, why, files, expect }`. Use optional `flags` to isolate a recorder section when an intentionally invalid manifest prevents later sections from running independently.
|
|
43
37
|
|
|
44
38
|
```js
|
|
45
39
|
export default {
|
|
46
40
|
name: 'kebab-case-name',
|
|
47
41
|
why: 'the failure mode this encodes, and what it costs',
|
|
48
|
-
files: { 'plugin.json': '…', 'cli.mjs': '…', 'ui/
|
|
42
|
+
files: { 'plugin.json': '…', 'cli.mjs': '…', 'ui/home.js': '…' },
|
|
49
43
|
expect: { fail: ['the check name record.mjs must report'] },
|
|
50
44
|
}
|
|
51
45
|
```
|
|
52
46
|
|
|
53
47
|
Rules:
|
|
54
48
|
|
|
55
|
-
- `why`
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
- If a new case cannot be made to fail, the check behind it is decorative — fix the check, not the case.
|
|
49
|
+
- Use `why` to state what can go wrong for the operator.
|
|
50
|
+
- List the exact recorder check names in `expect.fail`. An empty list requires acceptance. Put any required successful check names in `expect.pass`.
|
|
51
|
+
- Base each defect on an observed failure and isolate the behavior that the check is meant to catch.
|