From 5ca6f94e0415914f3a7af7742e5f2014c4e4df3e Mon Sep 17 00:00:00 2001 From: Valerie Date: Wed, 22 Dec 2021 08:12:12 -0500 Subject: [PATCH] default.config === config defaults :) --- .system | 42 +++++++++++++- package.json | 2 + src/commands/create.ts | 20 ++++++- src/modules/n-arm-bandit/agent/exploreOnly.ts | 6 ++ src/modules/n-arm-bandit/bandit.ts | 20 +++++++ vsh/bandits.vsh | 5 ++ yarn.lock | 56 ++++--------------- 7 files changed, 101 insertions(+), 50 deletions(-) create mode 100644 src/modules/n-arm-bandit/agent/exploreOnly.ts create mode 100644 src/modules/n-arm-bandit/bandit.ts create mode 100644 vsh/bandits.vsh diff --git a/.system b/.system index 484b223..00da811 100644 --- a/.system +++ b/.system @@ -10,10 +10,50 @@ "600F5B3828BC4D78BCBA375596F6898B": { "config": {}, "module": "sshd" + }, + "51E27DEEE43B4731A700D1E01E4CD27A": { + "config": { + "variance": 3.3541307827308686, + "base": 8.708580891798924 + }, + "module": "n-arm-bandit/bandit" + }, + "05EA8268E28F4C9FAC7F8E5BE0ABAB5F": { + "config": { + "variance": 3.1710920949168986, + "base": 1.8243272668986266 + }, + "module": "n-arm-bandit/bandit" + }, + "0F0B6AEB69754319A7E480E3989F7E54": { + "config": { + "variance": 3.4606530100151267, + "base": 7.154055540463526 + }, + "module": "n-arm-bandit/bandit" + }, + "34064741B6324D9BBCEE0A1364F21220": { + "config": { + "variance": 6.020933937139774, + "base": 3.6188560055328733 + }, + "module": "n-arm-bandit/bandit" + }, + "18461538E5A1487EBC9F54040295440A": { + "config": { + "variance": 5.750266712617811, + "base": 7.786595862237511 + }, + "module": "n-arm-bandit/bandit" } }, "aliases": { "systemd": "B7FFCD6C11974FC7A74509B6683D7420", - "sshd": "600F5B3828BC4D78BCBA375596F6898B" + "sshd": "600F5B3828BC4D78BCBA375596F6898B", + "SLOT1": "51E27DEEE43B4731A700D1E01E4CD27A", + "SLOT2": "05EA8268E28F4C9FAC7F8E5BE0ABAB5F", + "SLOT3": "0F0B6AEB69754319A7E480E3989F7E54", + "SLOT4": "34064741B6324D9BBCEE0A1364F21220", + "SLOT5": "18461538E5A1487EBC9F54040295440A" } } \ No newline at end of file diff --git a/package.json b/package.json index b234da0..507abf4 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,12 @@ "tsc": "tsc" }, "dependencies": { + "@types/lodash": "^4.14.178", "@types/md5": "^2.3.1", "@types/node": "^16.11.12", "@types/uuid": "^8.3.3", "chalk": "^5.0.0", + "lodash": "^4.17.21", "md5": "^2.3.0", "serverline": "^1.5.0", "ssh2": "^1.5.0", diff --git a/src/commands/create.ts b/src/commands/create.ts index a74140c..94736c3 100644 --- a/src/commands/create.ts +++ b/src/commands/create.ts @@ -1,13 +1,14 @@ import { system, autoColorString } from '@kernel:base'; import chalk from 'chalk'; import * as uuid from 'uuid'; +import { merge } from 'lodash'; export default async function create(module: string, name: string, id: string) { if(!module || typeof module !== 'string' || module.trim() === '') { throw new Error('INVALID_MODULE_NAME'); } if(name && (typeof name !== 'string' || name.trim() === '')) { - throw new Error('IVALID_MODULE_ALIAS'); + throw new Error('INVALID_MODULE_ALIAS'); } // undefined means no paramter given. this is treated as a default alias // otherise, null should be to create anonymous instances. only addressable @@ -21,11 +22,24 @@ export default async function create(module: string, name: string, id: string) { } } const imported = (await import('@builtin:' + module)); - const functions = 'default' in imported ? imported.default : imported; + const { default: moduleOptions, ...functions} = imported; + + const config: object = (function () { + if(moduleOptions && 'config' in moduleOptions) { + if(typeof moduleOptions.config === 'function') { + return moduleOptions.config(); + } else { + return moduleOptions.config; + } + } else { + return {}; + } + })(); + id ??= uuid.v4().replace(/-/g, '').toUpperCase(); system.instances.set(id, { privateScope: { - config: {}, + config, ram: {} }, module: module, diff --git a/src/modules/n-arm-bandit/agent/exploreOnly.ts b/src/modules/n-arm-bandit/agent/exploreOnly.ts new file mode 100644 index 0000000..44af85d --- /dev/null +++ b/src/modules/n-arm-bandit/agent/exploreOnly.ts @@ -0,0 +1,6 @@ + + + +export function run(tries: string) { + +} \ No newline at end of file diff --git a/src/modules/n-arm-bandit/bandit.ts b/src/modules/n-arm-bandit/bandit.ts new file mode 100644 index 0000000..364d113 --- /dev/null +++ b/src/modules/n-arm-bandit/bandit.ts @@ -0,0 +1,20 @@ + +export default { + config: () => { + return { + variance: Math.random() * 10, + base: Math.random() * 10 + }; + } +} + +function randomNormal(width: number = 1, offset: number = 0) { + var u = 0, v = 0; + while(u === 0) u = Math.random(); //Converting [0,1) to (0,1) + while(v === 0) v = Math.random(); + const base = Math.sqrt( -2.0 * Math.log( u ) ) * Math.cos( 2.0 * Math.PI * v ); +} + +export function pull() { + console.log(randomNormal(this.config.variance, this.config.base)); +} \ No newline at end of file diff --git a/vsh/bandits.vsh b/vsh/bandits.vsh new file mode 100644 index 0000000..860af0b --- /dev/null +++ b/vsh/bandits.vsh @@ -0,0 +1,5 @@ +create n-arm-bandit/bandit SLOT1 +create n-arm-bandit/bandit SLOT2 +create n-arm-bandit/bandit SLOT3 +create n-arm-bandit/bandit SLOT4 +create n-arm-bandit/bandit SLOT5 \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index e5f6f38..bad08d5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39,6 +39,11 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= +"@types/lodash@^4.14.178": + version "4.14.178" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.178.tgz#341f6d2247db528d4a13ddbb374bcdc80406f4f8" + integrity sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw== + "@types/md5@^2.3.1": version "2.3.1" resolved "https://registry.yarnpkg.com/@types/md5/-/md5-2.3.1.tgz#010bcf3bb50a2cff3a574cb1c0b4051a9c67d6bc" @@ -85,26 +90,6 @@ bcrypt-pbkdf@^1.0.2: dependencies: tweetnacl "^0.14.3" -binary@*: - version "0.3.0" - resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" - integrity sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk= - dependencies: - buffers "~0.1.1" - chainsaw "~0.1.0" - -buffers@*, buffers@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" - integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s= - -chainsaw@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" - integrity sha1-XqtQsor+WAdNDVgpE4iCi15fvJg= - dependencies: - traverse ">=0.3.0 <0.4" - chalk@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.0.0.tgz#bd96c6bb8e02b96e08c0c3ee2a9d90e050c7b832" @@ -132,13 +117,6 @@ crypt@0.0.2: resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= -debug@*: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - diff@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" @@ -156,6 +134,11 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + make-error@^1.1.1: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" @@ -175,11 +158,6 @@ minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - nan@^2.14.1, nan@^2.15.0: version "2.15.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" @@ -211,24 +189,10 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= -telnet@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/telnet/-/telnet-0.0.1.tgz#db164465c551a99ee785ea7fbba5a67cfc26c4af" - integrity sha1-2xZEZcVRqZ7nhep/u6WmfPwmxK8= - dependencies: - binary "*" - buffers "*" - debug "*" - "telnet@git+https://github.com/TooTallNate/node-telnet.git#780340617e1f223de384cdfcb7cecf0a1a6f1159": version "0.0.1" resolved "git+https://github.com/TooTallNate/node-telnet.git#780340617e1f223de384cdfcb7cecf0a1a6f1159" -"traverse@>=0.3.0 <0.4": - version "0.3.9" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" - integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk= - ts-node@^10.4.0: version "10.4.0" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.4.0.tgz#680f88945885f4e6cf450e7f0d6223dd404895f7"