diff --git a/apps/shinkai-visor-e2e/cypress.config.ts b/apps/shinkai-visor-e2e/cypress.config.ts
index bc91e98d8..a45b4fd68 100644
--- a/apps/shinkai-visor-e2e/cypress.config.ts
+++ b/apps/shinkai-visor-e2e/cypress.config.ts
@@ -2,5 +2,7 @@ import { defineConfig } from 'cypress';
import { nxE2EPreset } from '@nx/cypress/plugins/cypress-preset';
export default defineConfig({
- e2e: nxE2EPreset(__dirname),
+ e2e: nxE2EPreset(__dirname, {
+ bundler: 'vite',
+ }),
});
diff --git a/apps/shinkai-visor-e2e/src/e2e/app.cy.ts b/apps/shinkai-visor-e2e/src/e2e/app.cy.ts
index 04341b9fc..264b6016c 100644
--- a/apps/shinkai-visor-e2e/src/e2e/app.cy.ts
+++ b/apps/shinkai-visor-e2e/src/e2e/app.cy.ts
@@ -1,13 +1,9 @@
-import { getGreeting } from '../support/app.po';
+import { getWelcomeMessage } from '../support/app.po';
describe('shinkai-visor', () => {
beforeEach(() => cy.visit('/'));
it('should display welcome message', () => {
- // Custom command example, see `../support/commands.ts` file
- cy.login('my-email@something.com', 'myPassword');
-
- // Function helper example, see `../support/app.po.ts` file
- getGreeting().contains('Welcome shinkai-visor');
+ getWelcomeMessage().should('exist').contains('Setup Shinkai Visor to transform your web browser into a first class Shinkai client');
});
});
diff --git a/apps/shinkai-visor-e2e/src/support/app.po.ts b/apps/shinkai-visor-e2e/src/support/app.po.ts
index 329342469..76f0561c9 100644
--- a/apps/shinkai-visor-e2e/src/support/app.po.ts
+++ b/apps/shinkai-visor-e2e/src/support/app.po.ts
@@ -1 +1 @@
-export const getGreeting = () => cy.get('h1');
+export const getWelcomeMessage = () => cy.get('[data-cy=welcome-message]');
diff --git a/apps/shinkai-visor/.babelrc b/apps/shinkai-visor/.babelrc
deleted file mode 100644
index 25ae6f463..000000000
--- a/apps/shinkai-visor/.babelrc
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "presets": [
- [
- "@nx/react/babel",
- {
- "runtime": "automatic"
- }
- ],
- [
- "@babel/preset-env",
- {
- "modules": false
- }
- ],
- "@babel/preset-react"
-],
- "plugins": []
-}
diff --git a/apps/shinkai-visor/jest.config.ts b/apps/shinkai-visor/jest.config.ts
deleted file mode 100644
index d2d3c3074..000000000
--- a/apps/shinkai-visor/jest.config.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-/* eslint-disable */
-export default {
- displayName: 'shinkai-visor',
- preset: '../../jest.preset.js',
- transform: {
- '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '@nx/react/plugins/jest',
- '^.+\\.[tj]sx?$': ['babel-jest', { presets: ['@nx/react/babel'] }],
- },
- moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],
- coverageDirectory: '../../coverage/apps/shinkai-visor',
-};
diff --git a/apps/shinkai-visor/package.json b/apps/shinkai-visor/package.json
index 74b722636..726cd0a1c 100644
--- a/apps/shinkai-visor/package.json
+++ b/apps/shinkai-visor/package.json
@@ -1,6 +1,7 @@
{
"name": "shinkai-visor",
- "version": "0.1.0",
- "description": "",
- "license": "ISC"
+ "private": true,
+ "version": "0.0.1",
+ "type": "module",
+ "description": "Shinkai Visor"
}
diff --git a/apps/shinkai-visor/postcss.config.js b/apps/shinkai-visor/postcss.config.js
new file mode 100644
index 000000000..079f80e79
--- /dev/null
+++ b/apps/shinkai-visor/postcss.config.js
@@ -0,0 +1,12 @@
+import { join, dirname } from 'path';
+import { fileURLToPath } from 'url';
+const __filename = fileURLToPath(import.meta.url);
+
+export default {
+ plugins: {
+ tailwindcss: {
+ config: join(dirname(__filename), 'tailwind.config.js'),
+ },
+ autoprefixer: {},
+ },
+}
diff --git a/apps/shinkai-visor/project.json b/apps/shinkai-visor/project.json
index e33885f8a..080f30b30 100644
--- a/apps/shinkai-visor/project.json
+++ b/apps/shinkai-visor/project.json
@@ -5,57 +5,32 @@
"projectType": "application",
"targets": {
"build": {
- "executor": "@nx/webpack:webpack",
+ "executor": "@nx/vite:build",
"outputs": ["{options.outputPath}"],
"defaultConfiguration": "production",
"options": {
- "compiler": "babel",
- "outputPath": "dist/apps/shinkai-visor",
- "baseHref": "/",
- "main": "apps/shinkai-visor/src/popup.tsx",
- "additionalEntryPoints": [
- { "entryName": "popup", "entryPath": "apps/shinkai-visor/src/popup.tsx" },
- { "entryName": "launcher", "entryPath": "apps/shinkai-visor/src/launcher.tsx" },
- { "entryName": "content", "entryPath": "apps/shinkai-visor/src/content.ts" },
- { "entryName": "background", "entryPath": "apps/shinkai-visor/src/background.ts" }
- ],
- "index": "apps/shinkai-visor/src/index.html",
- "tsConfig": "apps/shinkai-visor/tsconfig.app.json",
- "assets": [
- { "glob": "*", "input": "apps/shinkai-visor/public", "output": "."}
- ],
- "styles": [],
- "scripts": [],
- "webpackConfig": "apps/shinkai-visor/webpack.config.js"
+ "outputPath": "dist/apps/shinkai-visor"
},
"configurations": {
"development": {
- "extractLicenses": false,
- "optimization": false,
- "sourceMap": true,
- "vendorChunk": false
+ "mode": "development",
+ "watch": true
},
"production": {
- "fileReplacements": [],
- "optimization": false,
- "outputHashing": "none",
- "sourceMap": false,
- "namedChunks": false,
- "extractLicenses": true,
- "vendorChunk": false
+ "mode": "production"
}
}
},
"serve": {
- "executor": "@nx/webpack:dev-server",
+ "executor": "@nx/vite:dev-server",
"defaultConfiguration": "development",
"options": {
- "buildTarget": "shinkai-visor:build",
- "hmr": true
+ "buildTarget": "shinkai-visor:build"
},
"configurations": {
"development": {
- "buildTarget": "shinkai-visor:build:development"
+ "buildTarget": "shinkai-visor:build:development",
+ "hmr": true
},
"production": {
"buildTarget": "shinkai-visor:build:production",
@@ -63,6 +38,29 @@
}
}
},
+ "preview": {
+ "executor": "@nx/vite:preview-server",
+ "defaultConfiguration": "development",
+ "options": {
+ "buildTarget": "shinkai-visor:build"
+ },
+ "configurations": {
+ "development": {
+ "buildTarget": "shinkai-visor:build:development"
+ },
+ "production": {
+ "buildTarget": "shinkai-visor:build:production"
+ }
+ }
+ },
+ "test": {
+ "executor": "@nx/vite:test",
+ "outputs": ["{options.reportsDirectory}"],
+ "options": {
+ "passWithNoTests": true,
+ "reportsDirectory": "../../coverage/apps/shinkai-visor"
+ }
+ },
"lint": {
"executor": "@nx/linter:eslint",
"outputs": ["{options.outputFile}"],
@@ -75,22 +73,7 @@
"options": {
"buildTarget": "shinkai-visor:build"
}
- },
- "test": {
- "executor": "@nx/jest:jest",
- "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
- "options": {
- "jestConfig": "apps/shinkai-visor/jest.config.ts",
- "passWithNoTests": true
- },
- "configurations": {
- "ci": {
- "ci": true,
- "codeCoverage": true
- }
- }
}
},
"tags": []
}
-
diff --git a/apps/shinkai-visor/public/dcsparklogo.png b/apps/shinkai-visor/public/dcsparklogo.png
deleted file mode 100644
index 51507271e..000000000
Binary files a/apps/shinkai-visor/public/dcsparklogo.png and /dev/null differ
diff --git a/apps/shinkai-visor/public/icon128.png b/apps/shinkai-visor/public/icon128.png
index eeca56488..8b65ff5e3 100644
Binary files a/apps/shinkai-visor/public/icon128.png and b/apps/shinkai-visor/public/icon128.png differ
diff --git a/apps/shinkai-visor/public/icon16.png b/apps/shinkai-visor/public/icon16.png
index fec76c699..8b65ff5e3 100644
Binary files a/apps/shinkai-visor/public/icon16.png and b/apps/shinkai-visor/public/icon16.png differ
diff --git a/apps/shinkai-visor/public/icon48.png b/apps/shinkai-visor/public/icon48.png
index ab5595133..8b65ff5e3 100644
Binary files a/apps/shinkai-visor/public/icon48.png and b/apps/shinkai-visor/public/icon48.png differ
diff --git a/apps/shinkai-visor/public/launcher.html b/apps/shinkai-visor/public/launcher.html
deleted file mode 100644
index 60ebd86f8..000000000
--- a/apps/shinkai-visor/public/launcher.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
- Shinkai Visor command launcher
-
-
-
-
-
-
-
-
diff --git a/apps/shinkai-visor/public/manifest.json b/apps/shinkai-visor/public/manifest.json
index 2900a92c9..c1f396094 100644
--- a/apps/shinkai-visor/public/manifest.json
+++ b/apps/shinkai-visor/public/manifest.json
@@ -15,19 +15,19 @@
"16": "icon16.png",
"48": "icon48.png"
},
- "default_popup": "popup.html"
+ "default_popup": "src/popup/popup.html"
},
"background": {
- "scripts": ["background.js"],
+ "scripts": ["assets/background.js"],
"persistent": true
},
"content_scripts": [
{
"matches": ["*://*/*"],
- "js": ["content.js"]
+ "js": ["assets/content.js"]
}
],
- "web_accessible_resources": ["popup.html", "launcher.html"],
+ "web_accessible_resources": ["src/popup.html"],
"commands": {
"_execute_browser_action": {
"suggested_key": {
diff --git a/apps/shinkai-visor/public/popup.html b/apps/shinkai-visor/public/popup.html
deleted file mode 100644
index 5729b1b44..000000000
--- a/apps/shinkai-visor/public/popup.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
- Shinkai Visor
-
-
-
-
-
-
-
-
diff --git a/apps/shinkai-visor/scripts/compress.js b/apps/shinkai-visor/scripts/compress.js
deleted file mode 100644
index f0772d2f1..000000000
--- a/apps/shinkai-visor/scripts/compress.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// add package-specific dependencies
-module.paths.unshift(`${process.cwd()}/node_modules`);
-
-const fs = require("fs");
-const path = require("path");
-const ChromeExtension = require("crx");
-const argv = require("minimist")(process.argv.slice(2));
-/* eslint import/no-unresolved: 0 */
-
-const name = require(path.join(process.cwd(), "/dist/manifest.json")).name;
-
-function readKeyFromFile(keyPath) {
- if (!fs.existsSync(keyPath)) {
- throw new Error(`Key not found at ${keyPath}`);
- }
- return fs.readFileSync(keyPath);
-}
-
-function getPrivateKey() {
- if (argv.key == null) return null;
- if (argv.key.startsWith("./")) {
- return readKeyFromFile(argv.key);
- }
- return Buffer.from(argv.key, "utf-8");
-}
-
-const privateKey = getPrivateKey();
-const zipOnly = argv["zip-only"];
-const isCrx = !zipOnly;
-
-if (!argv.codebase) {
- console.error("Missing codebase param.");
- process.exit();
-}
-
-const crx = new ChromeExtension({
- appId: argv["app-id"],
- codebase: argv.codebase,
- version: 3,
- privateKey,
-});
-
-async function compress(isCrxBuild) {
- await crx.load(path.join(process.cwd(), "/dist"));
- const archiveBuffer = await crx.loadContents();
- fs.writeFileSync(`${name}.zip`, archiveBuffer);
-
- if (isCrxBuild) {
- const crxBuffer = await crx.pack();
- fs.writeFileSync(`${name}-${argv.env}.crx`, crxBuffer);
- }
-}
-
-compress(isCrx).catch((err) => console.error(err));
diff --git a/apps/shinkai-visor/src/App.css b/apps/shinkai-visor/src/App.css
deleted file mode 100644
index cdccf5a18..000000000
--- a/apps/shinkai-visor/src/App.css
+++ /dev/null
@@ -1,517 +0,0 @@
-@import './variables.css';
-@font-face {
- font-family: 'Inter';
- src: url('./fonts/Inter-Regular.ttf');
-}
-
-/* @media (prefers-color-scheme: dark) {
- :root {
- --background: rgb(26, 26, 26);
- --foreground: rgb(255, 255, 255);
- }
-} */
-
-/* @media (prefers-color-scheme: light) {
- :root {
- --background: rgb(255, 255, 255);
- --foreground: rgb(0, 0, 0);
- }
-} */
-
-* {
- box-sizing: border-box;
-}
-
-div#popup {
- overflow: hidden;
- height: 100%;
-}
-
-body {
- font-family: 'Inter', sans-serif;
- margin: 0;
- width: 357px;
- height: 600px;
- overflow-y: hidden;
- font-size: 16px;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- background-color: #1e1e1e;
-}
-
-.App {
- color: var(--background-color-contrast);
- height: 100%;
- background-color: var(--background-color);
-}
-
-h4 {
- font-size: 1.4rem;
-}
-
-.App-content {
- background-color: inherit;
- color: var(--background-color-contrast);
- width: 100%;
- height: calc(100% - 62px);
- display: flex;
- flex-direction: column;
- align-items: center;
-}
-
-@media (min-width: 600px) {
- body {
- margin: 20px auto;
- width: 500px;
- height: 840px;
- box-shadow: 2px 2px 8px 1px rgb(150 150 150 / 50%);
- font-family: 'Inter', sans-serif;
- /* box-shadow: 0 0 7px 0 rgb(0 0 0 / 8%); */
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- }
- .App-content {
- color: var(--foreground);
- height: 778px;
- max-height: 778px;
- }
-}
-
-@media (prefers-reduced-motion: no-preference) {
- .App-logo {
- animation: App-logo-spin infinite 20s linear;
- }
-}
-
-@keyframes App-logo-spin {
- from {
- transform: rotate(0deg);
- }
- to {
- transform: rotate(360deg);
- }
-}
-
-.welcome {
- margin: auto;
- position: relative;
-}
-
-.App-logo {
- height: 150px;
- display: flex;
- margin: 3em auto;
- margin-top: 30%;
-}
-
-a {
- text-decoration: none;
- color: white;
-}
-
-.successMessage {
- font-size: 1rem;
- height: 1rem;
- color: rgb(3, 125, 214);
- text-align: center;
- margin: 0;
-}
-
-.spinner {
- text-align: center;
-}
-
-.errorMessage {
- font-size: 12px;
- color: var(--alert-color);
- text-align: center;
-}
-
-.succesMessage {
- color: var(--foreground);
-}
-
-.setup .errorMessage {
- margin-bottom: 0.5rem;
-}
-
-.tooltip-trigger {
- vertical-align: super;
- margin: 0.1rem 0 0.1rem 0.1rem;
-}
-
-.setup .tooltip {
- position: fixed;
- top: 180px;
- left: 200px;
- height: 98px;
- width: 150px;
- font-size: 0.9rem;
- border: 1px solid var(--foreground);
- background-color: #1a1c1b;
- border-radius: 8px;
- color: white;
- z-index: 900;
-}
-
-.setup .tooltip p {
- margin-left: 10px;
- margin-right: 2px;
-}
-
-.setup {
- padding: 1rem;
- margin: auto;
-}
-
-/* titles */
-
-.title-page {
- font-size: 20px;
- line-height: 30px;
- display: flex;
- align-items: center;
- color: var(--background-color-contrast);
- margin: 0 0 1em;
-}
-
-.centered {
- justify-content: center;
- text-align: center;
-}
-
-.description {
- font-weight: normal;
- font-size: 13px;
- line-height: 15px;
- letter-spacing: 0.02em;
- color: var(--light-gray);
- margin-top: -1.5em;
-}
-
-.margin-0 {
- margin-top: 0 !important;
-}
-
-.linear-red-bg {
- border: 1px solid var(--alert-color);
- background: transparent !important;
- color: var(--alert-color);
-}
-
-.red-bg {
- background-color: var(--alert-color) !important;
- /* border: 1px solid rgba(100,0,0,1) !important; */
-}
-
-/* forms */
-
-label {
- line-height: 1.5;
-}
-
-.label-input {
- font-style: normal;
- font-weight: 500;
- font-size: 12px;
- line-height: 20px;
- letter-spacing: 2px;
- text-transform: uppercase;
- color: var(--medium-gray);
- margin: 0;
-}
-
-input {
- width: 100%;
- height: 48px;
- background: transparent;
- border: 1px solid var(--medium-gray);
- color: var(--background-color-contrast);
- box-sizing: border-box;
- border-radius: 12px;
- margin: 5px 0 10px;
- padding: 10px;
- text-align: left;
- font-size: 14px;
- box-shadow: none;
- display: block;
- outline: none;
-}
-
-.separator {
- margin: 5px;
-}
-
-.flex {
- display: flex;
- align-items: center;
-}
-
-.flex-grow-wrapper {
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- flex-grow: 1;
- max-height: 100%;
- height: 100%;
- width: 100%;
- padding: 2.5em 1.5em 1.5em;
- overflow-y: auto;
-}
-
-.flex-grow {
- flex: 1 1 0%;
-}
-
-.vertical {
- display: flex;
- flex-direction: column;
- align-items: flex-start;
-}
-
-.form {
- text-align: left;
- width: 100%;
- display: flex;
- flex-direction: column;
- justify-content: space-between;
-}
-
-.modal-background {
- height: 100%;
- width: 100%;
- background-color: rgb(0, 0, 0, 0.7);
-}
-
-.modal-foreground {
- padding: 0.5rem;
- background-color: grey;
- margin: 40% auto;
- width: 70%;
-}
-
-.modal-foreground img {
- width: 120px;
-}
-
-.moonname p,
-.moonname span {
- font-weight: 500;
- font-size: 16px;
- line-height: 16px;
- color: var(--background-color-contrast);
- white-space: nowrap;
- overflow: hidden;
- display: block;
- text-overflow: ellipsis;
- margin: 0;
-}
-
-/* buttons */
-
-button {
- font-family: 'Inter', sans-serif;
- width: 100%;
- transition: all 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
- border-radius: 12px;
- display: flex;
- flex-direction: row;
- -webkit-box-pack: center;
- justify-content: center;
- align-items: center;
- padding: 14px 0px;
- font-size: 14px;
- line-height: 19px;
- font-weight: 500;
- color: #fff;
- pointer-events: auto;
- border: none;
- outline-color: transparent;
- outline-style: none;
- cursor: pointer;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
-button:hover {
- opacity: 0.5;
-}
-
-.submit-setup-button {
- margin: auto;
- width: 100%;
-}
-
-.small-button {
- display: block;
- width: 100%;
- background-color: var(--primary-color);
- cursor: pointer;
- padding: 8px;
-}
-
-.buttonContainer {
- display: flex;
- background-color: #282c34;
- color: white;
- min-width: 150px;
- padding: 10px;
-}
-
-.loginButton {
- border: 0;
- background-color: #1a1d22;
- color: white;
- padding: 5px 10px;
- width: 100%;
- cursor: pointer;
-}
-
-.small-button:disabled {
- border-color: currentColor;
- pointer-events: none;
- cursor: not-allowed;
- opacity: 0.5;
-}
-
-.single-button {
- width: 100%;
- background-color: var(--primary-color);
- color: var(--background-color-contrast);
-}
-
-.linear-button {
- background: transparent;
- border: 1px solid var(--primary-color);
- color: var(--primary-color);
-}
-
-.surface-button {
- background: var(--background-color-tint-contrast);
- border-radius: 12px;
- display: flex;
- align-items: center;
- font-weight: 500;
- font-size: 12px;
- line-height: 15px;
- height: 65px;
- margin-top: 10px;
-}
-
-.surface-button .button-icon {
- width: 16px;
- margin-bottom: 5px;
-}
-
-.block-footer {
- margin: 0.5em -1.5em -1.5em;
- padding: 1.5em;
- border-radius: 20px 20px 0 0;
- background: var(--background-color-tint);
- position: relative;
-}
-
-.confirm-string {
- font-weight: 600;
- font-size: 16px;
- line-height: 22px;
- color: #ffffff;
- margin: 0;
- position: absolute;
- top: -10px;
- transform: translate(0, -100%);
-}
-
-.collapse-header {
- text-overflow: ellipsis;
- overflow: hidden;
-}
-
-.confirm-string::after {
- position: absolute;
- content: '';
- width: 30px;
- height: 2px;
- background-color: white;
- bottom: -10px;
- left: 0;
-}
-
-.title-footer {
- position: relative;
- margin-bottom: 0;
-}
-
-.title-footer::after {
- position: absolute;
- content: '';
- width: 30px;
- height: 2px;
- background-color: white;
- bottom: -9px;
- left: 0;
- z-index: 9999;
-}
-
-.row-buttons {
- display: flex;
- align-items: center;
-}
-
-.two-buttons {
- display: flex;
- width: 100%;
-}
-
-.two-buttons button {
- width: 100%;
-}
-
-.flex-end {
- align-self: flex-end;
-}
-
-.blue-button {
- background-color: rgb(3, 125, 214, 0.5);
-}
-
-.two-buttons .right {
- margin-left: 5px;
-}
-
-.two-buttons .left {
- margin-right: 5px;
-}
-
-.cancel-button {
- background-color: rgb(45, 45, 45);
-}
-
-.multiple-buttons {
- margin: 0.5rem 0;
-}
-
-.small-padding {
- width: 100%;
- padding: 1rem;
-}
-
-.full-size {
- height: 100%;
- width: 100%;
-}
-
-::-webkit-scrollbar {
- width: 10px;
-}
-
-::-webkit-scrollbar-thumb {
- background: #3e3e3e;
- border-radius: 20px;
-}
-
-::-webkit-scrollbar-track {
- background: #969494;
- border-radius: 20px;
-}
diff --git a/apps/shinkai-visor/src/App.tsx b/apps/shinkai-visor/src/App.tsx
deleted file mode 100644
index fdd9e0b15..000000000
--- a/apps/shinkai-visor/src/App.tsx
+++ /dev/null
@@ -1,116 +0,0 @@
-import * as React from 'react';
-import { useState, useEffect } from 'react';
-import NavBar from './components/ui/NavBar';
-import Welcome from './components/setup/Welcome';
-import Setup from './components/setup/Setup';
-import AddShip from './components/adding/AddShip';
-import AddLLM from './components/adding/AddLLM';
-import ShipLLMsList from './components/list/ShipLLMsList';
-import ShipShow from './components/show/ShipShow';
-import PermissionsPrompt from './components/perms/PermissionsPrompt';
-import Settings from './components/settings/Settings';
-import About from './components/ui/About';
-import { AnimatePresence } from 'framer-motion';
-import { EncryptedLLMCredentials, EncryptedShipCredentials } from './types';
-import { Messaging } from './messaging';
-import { MemoryRouter as Router, Switch, Route, Redirect, useHistory } from 'react-router-dom';
-import { LocationDescriptor } from 'history';
-
-import './App.css';
-import LLMShow from './components/show/LLMShow';
-
-export default function App() {
- useEffect(() => {
- Messaging.sendToBackground({ action: 'get_initial_state' }).then(state => {
- console.log('initial state: ', state);
- setFirst(state.first);
- setShips(state.ships);
- setLLMs(state.llms);
- setActiveLLM(state.activeLLM);
- setActive(state.activeShip);
- setPermsRequest(state.requestedPerms);
- setInteracting(state.requestedPerms != undefined || state.first);
- route(state);
- });
- }, []);
- const [active, setActive] = useState(null);
- const [activeLLM, setActiveLLM] = useState(null);
- const [interacting, setInteracting] = useState(false);
- const [ships, setShips] = useState([]);
- const [llms, setLLMs] = useState([]);
- const [first, setFirst] = useState(false);
- const [permsRequest, setPermsRequest] = useState(null);
-
- const history = useHistory();
-
- function route(state: any): void {
- console.log('state to route from: ', state);
- console.log('state.cachedURL?.length: ', state.cachedURL?.length);
- console.log('state.cachedCreds: ', state.cachedCreds);
- if (state.first) history.push('/welcome');
- else if (state.cachedURL?.length || state.cachedCreds) history.push('/add_llm'); // TODO: not sure if this is right
- else if (state.requestedPerms) history.push('/ask_perms');
- else if (state.activeLLM) {
- Messaging.sendToBackground({ action: 'select_llm', data: { llm: state.activeLLM } }).then(
- res => history.push(`/llm/${state.activeLLM.uniqueId}`)
- );
- } else if (state.llms.length) history.push('/ship_list');
- else {
- console.log('pushing to add_llm');
- console.log('state.activeLLM: ', state.activeLLM);
- history.push('/add_llm');
- }
- }
-
- function redirect(): LocationDescriptor {
- if (first) return '/welcome';
- else if (activeLLM) return '/llm/' + activeLLM.uniqueId;
- else if (llms.length) return '/ship_list';
- else return '/add_llm';
- }
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/apps/shinkai-visor/src/api.ts b/apps/shinkai-visor/src/api.ts
deleted file mode 100644
index 1c9beea9a..000000000
--- a/apps/shinkai-visor/src/api.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { EncryptedShipCredentials } from './types';
-
-export class Shinkai {
- constructor(public ships: EncryptedShipCredentials[]) {
- return this;
- }
-}
diff --git a/apps/shinkai-visor/src/app/app.module.css b/apps/shinkai-visor/src/app/app.module.css
deleted file mode 100644
index 7b88fbabf..000000000
--- a/apps/shinkai-visor/src/app/app.module.css
+++ /dev/null
@@ -1 +0,0 @@
-/* Your styles goes here. */
diff --git a/apps/shinkai-visor/src/app/app.spec.tsx b/apps/shinkai-visor/src/app/app.spec.tsx
deleted file mode 100644
index 3a6f4f1d4..000000000
--- a/apps/shinkai-visor/src/app/app.spec.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { render } from '@testing-library/react';
-
-import { BrowserRouter } from 'react-router-dom';
-
-import App from './app';
-
-describe('App', () => {
- it('should render successfully', () => {
- const { baseElement } = render(
-
-
-
- );
- expect(baseElement).toBeTruthy();
- });
-
- it('should have a greeting as the title', () => {
- const { getByText } = render(
-
-
-
- );
- expect(getByText(/Welcome shinkai-visor/gi)).toBeTruthy();
- });
-});
diff --git a/apps/shinkai-visor/src/app/app.tsx b/apps/shinkai-visor/src/app/app.tsx
deleted file mode 100644
index ff1f1c740..000000000
--- a/apps/shinkai-visor/src/app/app.tsx
+++ /dev/null
@@ -1,53 +0,0 @@
-// eslint-disable-next-line @typescript-eslint/no-unused-vars
-import styles from './app.module.css';
-
-import NxWelcome from './nx-welcome';
-
-import { Route, Routes, Link } from 'react-router-dom';
-
-export function App() {
- return (
-
-
-
- {/* START: routes */}
- {/* These routes and navigation have been generated for you */}
- {/* Feel free to move and update them to fit your needs */}
-
-
-
-
-
-
- Home
-
-
- Page 2
-
-
-
-
-
- This is the generated root route.{' '}
- Click here for page 2.
-
- }
- />
-
- Click here to go back to root page.
-
- }
- />
-
- {/* END: routes */}
-
- );
-}
-
-export default App;
diff --git a/apps/shinkai-visor/src/app/nx-welcome.tsx b/apps/shinkai-visor/src/app/nx-welcome.tsx
deleted file mode 100644
index f0cd657b7..000000000
--- a/apps/shinkai-visor/src/app/nx-welcome.tsx
+++ /dev/null
@@ -1,845 +0,0 @@
-/*
- * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- This is a starter component and can be deleted.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- Delete this file and get started with your project!
- * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- */
-export function NxWelcome({ title }: { title: string }) {
- return (
- <>
-