sim 1.0.18 → 2.0.0-dev.19.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/package.json CHANGED
@@ -1,73 +1,60 @@
1
1
  {
2
2
  "name": "sim",
3
- "main": "./lib/index.js",
4
- "version": "1.0.18",
3
+ "version": "2.0.0-dev.19.1",
4
+ "description": "Sim CLI - talk to the Sim API from your terminal",
5
+ "type": "module",
5
6
  "bin": {
6
- "sim": "./cli/cli"
7
+ "sim": "dist/index.js"
7
8
  },
8
- "dependencies": {
9
- "async": "^2.1.4",
10
- "babel": "^6.5.2",
11
- "babel-core": "^6.22.1",
12
- "babel-loader": "^6.2.10",
13
- "babel-plugin-transform-class-properties": "^6.22.0",
14
- "babel-plugin-transform-decorators-legacy": "^1.3.4",
15
- "babel-preset-es2015": "^6.22.0",
16
- "babel-preset-latest": "^6.22.0",
17
- "babel-preset-stage-0": "^6.22.0",
18
- "body-parser": "^1.16.0",
19
- "chokidar": "^1.6.1",
20
- "clean-css": "^3.4.24",
21
- "colors": "^1.1.2",
22
- "connect": "^3.5.0",
23
- "cortml": "0.0.8",
24
- "css-loader": "^0.26.1",
25
- "emailjs": "^1.0.8",
26
- "extract-text-webpack-plugin": "^1.0.1",
27
- "fs-extra": "^2.0.0",
28
- "gj": "0.0.1",
29
- "gutil": "^1.6.4",
30
- "handlebars": "^4.0.6",
31
- "html-loader": "^0.4.4",
32
- "html-minifier": "^3.2.3",
33
- "html-webpack-plugin": "^2.26.0",
34
- "jade": "^1.11.0",
35
- "jb": "0.0.1",
36
- "js-beautify": "^1.6.8",
37
- "jsb": "0.0.1",
38
- "json-loader": "^0.5.4",
39
- "kit": "^1.0.5",
40
- "less": "^2.7.2",
41
- "lodash": "^4.17.4",
42
- "mime": "^1.3.4",
43
- "moment": "^2.17.1",
44
- "mongodb": "^2.2.21",
45
- "open": "0.0.5",
46
- "optimist": "^0.6.1",
47
- "require.fresh": "0.0.2",
48
- "sanitize-html": "^1.14.1",
49
- "serve-static": "^1.11.1",
50
- "sha1": "^1.1.1",
51
- "socket.io": "^1.7.2",
52
- "striptags": "^2.2.1",
53
- "stylus": "^0.54.5",
54
- "supports-color": "^3.2.3",
55
- "tap": "^9.0.3",
56
- "underscore": "^1.8.3",
57
- "webpack": "^1.14.0",
58
- "wrench": "^1.5.9",
59
- "yaml-loader": "^0.4.0"
9
+ "scripts": {
10
+ "prebuild": "bun run clean",
11
+ "build": "bun build src/index.ts --target=node --format=esm --packages=bundle --reject-unresolved --outfile=dist/index.js",
12
+ "clean": "bun -e \"import { rmSync } from 'node:fs'; rmSync('dist', { recursive: true, force: true })\"",
13
+ "type-check": "tsc --noEmit",
14
+ "lint": "biome check --write --unsafe .",
15
+ "lint:check": "biome check .",
16
+ "format": "biome format --write .",
17
+ "format:check": "biome format .",
18
+ "test": "vitest run",
19
+ "prepublishOnly": "bun run build"
60
20
  },
61
- "description": "Simple Node.js HTTP-server",
62
- "devDependencies": {},
63
- "directories": {},
64
- "maintainers": [
65
- {
66
- "name": "jf7",
67
- "email": "teu@nm.ru"
68
- }
21
+ "files": [
22
+ "dist",
23
+ "THIRD_PARTY_LICENSES"
69
24
  ],
70
- "optionalDependencies": {},
71
- "readme": "ERROR: No README data found!",
72
- "scripts": {}
25
+ "keywords": [
26
+ "sim",
27
+ "ai",
28
+ "agents",
29
+ "cli",
30
+ "workflow"
31
+ ],
32
+ "author": "Sim",
33
+ "license": "Apache-2.0",
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "git+https://github.com/simstudioai/sim.git",
37
+ "directory": "packages/sim-cli"
38
+ },
39
+ "homepage": "https://github.com/simstudioai/sim/tree/main/packages/sim-cli#readme",
40
+ "bugs": {
41
+ "url": "https://github.com/simstudioai/sim/issues"
42
+ },
43
+ "publishConfig": {
44
+ "access": "public"
45
+ },
46
+ "engines": {
47
+ "node": ">=20"
48
+ },
49
+ "devDependencies": {
50
+ "@sim/tsconfig": "0.0.0",
51
+ "@types/js-yaml": "4.0.9",
52
+ "@types/node": "24.2.1",
53
+ "@xterm/headless": "6.0.0",
54
+ "chalk": "5.6.2",
55
+ "commander": "^11.1.0",
56
+ "js-yaml": "4.3.1",
57
+ "typescript": "^7.0.2",
58
+ "vitest": "^4.1.0"
59
+ }
73
60
  }
package/.npmignore DELETED
@@ -1 +0,0 @@
1
- node_modules/
package/app.js DELETED
@@ -1,4 +0,0 @@
1
- 'use strict';
2
-
3
- const _ = require('lodash');
4
- const kit = global.kit = require('kit');
package/cli/cli DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- 'use strict';
4
-
5
- const Manager = require('./manager');
6
-
7
- var manager = new Manager();
8
- manager.start();
package/cli/config.yaml DELETED
@@ -1,43 +0,0 @@
1
- dirs:
2
- - models
3
- - static
4
- - lib
5
- - pages
6
- - pages/index
7
- - slots
8
- - middleware
9
-
10
- files:
11
- settings.yaml: settings
12
- app.js: app
13
- package.json: package
14
- urls.yaml: urls
15
- # middleware.js: middleware
16
- pages/index/index.html: index
17
- pages/index/styles.styl: styles
18
-
19
- logs:
20
- info:
21
- color: blue
22
- icon: ℹ
23
- success:
24
- color: green
25
- icon: ✔
26
- error:
27
- color: red
28
- icon: ⚠
29
-
30
- txt:
31
- title: SIM Framework
32
- version: Version
33
- creating: Creating sim project
34
- creatingIn: in
35
- project: Project
36
- filesCreated: files generated
37
- successfully: successfully
38
- error: Error
39
- mustEnter: you must enter
40
- projectName: project's name
41
- forExample: For example
42
- directory: directory
43
- alreadyExists: already exists
package/cli/manager.js DELETED
@@ -1,173 +0,0 @@
1
- 'use strict';
2
-
3
- const _ = require('lodash');
4
- const fs = require('fs');
5
- const child_process = require('child_process');
6
- const kit = require('kit');
7
- const path = require('path');
8
- const colors = require('colors');
9
- const optimist = require('optimist');
10
- const packageJSON = require('../package');
11
- const cml = require('cortml');
12
-
13
- const exists = fs.existsSync;
14
- const wfile = fs.writeFileSync;
15
- const templates = require('./templates');
16
-
17
- const config = cml.loadFile(path.join(__dirname, 'config.yaml'));
18
-
19
- class Manager {
20
-
21
- constructor () {
22
- var self = this;
23
- self.argv = process.argv;
24
- self.cwd = process.cwd();
25
- self.args = optimist.argv;
26
- self.command = self.args._[0];
27
- self.parentDir = path.normalize(self.cwd);
28
- self.name = (self.argv[3] || self.argv[2] || '').trim();
29
- self.dir = path.normalize(path.join(self.parentDir, self.name));
30
- self.dirs = config.dirs;
31
- self.logger = self.createLogger();
32
- self.logs = templates.logs;
33
- }
34
-
35
- start() {
36
- var self = this;
37
- self.info(self.logs.welcome);
38
-
39
- if (self.command === 'run')
40
- return self.commandRun();
41
-
42
- if (self.command === 'create')
43
- return self.commandRun();
44
-
45
- self.commandCreate();
46
- }
47
-
48
- commandCreate () {
49
- var self = this;
50
-
51
- if (!self.commandCreateValidate())
52
- return;
53
-
54
- self.info(self.logs.creating);
55
- self.makeDirs();
56
- self.writeFiles();
57
- self.info(self.logs.filesCreated);
58
- self.info(self.logs.dependencies);
59
-
60
- self
61
- .installDependencies()
62
- .then(() => {
63
- self.success(self.logs.created);
64
- });
65
- }
66
-
67
- installDependencies () {
68
- var self = this;
69
- return new Promise((resolve, reject) => {
70
- child_process.exec('npm install', {
71
- cwd: self.dir
72
- }, resolve);
73
- });
74
- }
75
-
76
- resolve (p) {
77
- var self = this;
78
- return path.resolve(self.dir, p);
79
- }
80
-
81
- writeFiles () {
82
- var self = this;
83
- _.each(config.files, (code, file) => wfile(
84
- self.resolve(file),
85
- // self.render(templates[code])
86
- self.render(templates[code] || code)
87
- ));
88
- }
89
-
90
- commandCreateValidate () {
91
- var self = this;
92
-
93
- if (!self.name)
94
- return self.error(self.logs.nameRequired);
95
-
96
- if (exists(self.dir))
97
- return self.error(self.logs.exists);
98
-
99
- return true;
100
- }
101
-
102
- makeDirs () {
103
- var self = this;
104
- fs.mkdirSync(self.dir);
105
- self.dirs.forEach(dir => {
106
- var dirname = path.join(self.dir, dir);
107
- if (exists(dirname)) return;
108
- fs.mkdirSync(dirname);
109
- });
110
- }
111
-
112
- commandRun () {
113
- var self = this;
114
- self.error('Cant run project!');
115
- }
116
-
117
- render (code, data = {}) {
118
- var self = this,
119
- re = /\{\{([^\}]+)\}\}/mgi,
120
- context = _.extend({
121
- name: packageJSON.name,
122
- version: packageJSON.version,
123
- date: `${(new Date()).miniDate()}:`.grey,
124
- name: self.name,
125
- parentDir: self.parentDir,
126
- dir: self.dir,
127
- txt: config.txt,
128
- }, data);
129
- return code.replace(re, (txt, name) => {
130
- return _.get(context, name);
131
- });
132
- }
133
-
134
- renderMessage (message, data) {
135
- var self = this;
136
- return self.render(message, data);
137
- }
138
-
139
- createLogger () {
140
- var self = this,
141
- logger = {};
142
- _.each(config.logs, (opts, name) => {
143
- logger[name] = (msg = '', data = {}) => {
144
- console.log(
145
- self.renderMessage(msg[opts.color], _.extend({
146
- color: opts.color,
147
- icon: `${opts.icon}`[opts.color],
148
- }, data))
149
- );
150
- };
151
- });
152
- return logger;
153
- }
154
-
155
- info (...args) {
156
- var self = this;
157
- return self.logger.info(...args);
158
- }
159
-
160
- success (...args) {
161
- var self = this;
162
- return self.logger.success(...args);
163
- }
164
-
165
- error (...args) {
166
- var self = this;
167
- return self.logger.error(...args);
168
- }
169
-
170
- }
171
-
172
-
173
- module.exports = Manager;
package/cli/templates.js DELETED
@@ -1,117 +0,0 @@
1
- 'use strict';
2
-
3
- module.exports = {
4
-
5
- // Create Files ================================================================
6
-
7
- urls:
8
- `/: index
9
- `,
10
-
11
- settings:
12
- `port: 8080
13
- dbURL: mongodb://localhost/test
14
- minCSS: false
15
- minJS: false
16
- minHTML: false
17
- includeParentStyles: true
18
- compileLESS: true
19
- includeJSLibs: true
20
- includeStyles: true
21
- includeScript: true
22
- # jsLibs:
23
- useSlots: true
24
- preLoad: false
25
- cssPreprocessor: stylus
26
- `,
27
-
28
- package:
29
- `{
30
- "name": "{{name}}",
31
- "version": "0.0.1",
32
- "dependencies": {
33
- "sim": "^1.0.5",
34
- "babel": "^6.5.2",
35
- "babel-core": "^6.22.1",
36
- "babel-loader": "^6.2.10",
37
- "babel-plugin-transform-class-properties": "^6.22.0",
38
- "babel-plugin-transform-decorators-legacy": "^1.3.4",
39
- "babel-preset-es2015": "^6.22.0",
40
- "babel-preset-latest": "^6.22.0",
41
- "babel-preset-stage-0": "^6.22.0",
42
- "css-loader": "^0.26.1",
43
- "extract-text-webpack-plugin": "^1.0.1",
44
- "html-loader": "^0.4.4",
45
- "html-webpack-plugin": "^2.26.0",
46
- "json-loader": "^0.5.4",
47
- "lodash": "^4.17.4",
48
- "webpack": "^1.14.0",
49
- "yaml-loader": "^0.4.0",
50
- "kit": "^1.0.0"
51
- }
52
- }
53
- `,
54
-
55
- index:
56
- `<!doctype html>
57
- <html>
58
- <head>
59
- <meta charset="utf-8">
60
- <title>Test</title>
61
- </head>
62
- <body>
63
- <h1>Test</h1>
64
- </body>
65
- </html>
66
- `,
67
-
68
- styles:
69
- `body, html
70
- padding: 0;
71
- margin: 0;
72
- `,
73
-
74
- app:
75
- `require('sim').start(__dirname);
76
- `,
77
-
78
- middleware:
79
- `exports.user = function (context, callback) {
80
- context.user = this.options.user;
81
- callback(context);
82
- };
83
- `,
84
-
85
- // Logs ========================================================================
86
-
87
- logs: {
88
-
89
- welcome: `\n` + `★`.cyan.bold + ` ` + `{{txt.title}}`.bold.white
90
- + ` {{txt.version}} {{version}}`.white + ` ★`.cyan.bold + '\n',
91
-
92
- creating: `{{date}} {{icon}} {{txt.creating}} «` + `{{name}}`.bold.blue
93
- + `» {{txt.creatingIn}} «` + `{{parentDir}}`.bold.blue + `»...`,
94
-
95
- filesCreated: `{{date}} {{icon}} {{txt.project}} `
96
- + `{{txt.filesCreated}}`.bold.blue + ` {{txt.successfully}}.`,
97
-
98
- dependencies: `{{date}} {{icon}} Installing ` + `dependencies`.bold.blue + `...`,
99
-
100
- created: `{{date}} {{icon}} `
101
- + `Success`.bold.green
102
- + `: Project «`
103
- + `{{name}}`.bold
104
- + `» created successfully.\n`,
105
-
106
- nameRequired: `{{date}} {{icon}} `
107
- + `{{txt.error}}`.bold.red + `: {{txt.mustEnter}} `
108
- + `{{txt.projectName}}`.bold.white + `. `
109
- + `{{txt.forExample}}, «sim test_project»` + `\n`,
110
-
111
- exists: `{{date}} {{icon}} `
112
- + `{{txt.error}}`.bold.red + `: {{txt.directory}} «`
113
- + `{{dir}}`.blue.bold + `» `
114
- + `{{txt.alreadyExists}}`.bold.red + `.\n`,
115
- },
116
-
117
- };
package/client/slots.js DELETED
@@ -1,35 +0,0 @@
1
- var server = server || {};
2
- (function () {
3
- var socket = io(),
4
- slotsList = {
5
- {
6
- {
7
- slotsList
8
- }
9
- }
10
- };
11
- slotsList.forEach(function (slot) {
12
- var module = slot.module,
13
- name = slot.name;
14
- server[module] = server[module] || {};
15
- server[module][name] = function () {
16
- var args = Array.prototype.slice.call(arguments),
17
- callback = args.pop(),
18
- sessionKey = getCookie('sessionKey');
19
- socket.emit('slot', {
20
- name: name,
21
- module: module,
22
- args: args,
23
- sessionKey: sessionKey,
24
- anonUserId: getCookie('anonUserId')
25
- }, callback);
26
- };
27
- });
28
-
29
- function getCookie(name) {
30
- var matches = document.cookie.match(new RegExp("(?:^|; )" +
31
- name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"));
32
- return matches ? decodeURIComponent(matches[1]) : undefined;
33
- }
34
-
35
- }());
package/lib/auth/auth.js DELETED
@@ -1,157 +0,0 @@
1
- 'use strict';
2
-
3
- const _ = require('lodash');
4
- const db = require('../db');
5
- const cookies = require('../cookies');
6
-
7
- class Auth {
8
-
9
- constructor () {
10
- var self = this;
11
- db.loadFromDir(__dirname + '/models');
12
- _.extend(self, {
13
- sessions: db.getLists().sessions,
14
- users: db.getLists().users,
15
- errorsDescription: {
16
- 1: 'Имя пользователя слишком короткое.',
17
- 2: 'Имя пользователя слишком длинное.',
18
- 3: 'Пароль слишком короткий.',
19
- 4: 'Пароль слишком длинный.',
20
- 5: 'Введенные пароли не совпадают.',
21
- 6: 'Данное имя пользователя недоступно.',
22
- 7: 'Введен некорректный e-mail адрес.',
23
- },
24
- });
25
- }
26
-
27
- createSession (user, callback) {
28
- var self = this;
29
- self.sessions.add({
30
- username: user.username,
31
- created: new Date()
32
- }, session => callback(session._id));
33
- }
34
-
35
- getUserBySession (sessionKey, callback) {
36
- var self = this;
37
- self.sessions.get({
38
- _id: sessionKey
39
- }, session => {
40
- if (!session) return callback(null);
41
- self.users.get({
42
- username: session.username
43
- }, user => {
44
- if (!user) return callback(null);
45
- callback(user);
46
- });
47
- });
48
- }
49
-
50
- getUser (username, password, callback) {
51
- var self = this;
52
- self.users.get({
53
- username: username
54
- }, user => {
55
- if (!user || !user.checkPassword(password))
56
- return callback(null);
57
- callback(user);
58
- });
59
- }
60
-
61
- removeSession (sessionKey, callback) {
62
- var self = this;
63
- self.sessions.remove({
64
- sessionKey: sessionKey
65
- }, callback);
66
- }
67
-
68
- login (options, callback) {
69
- var self = this,
70
- username = options.username,
71
- password = options.password,
72
- response = options.response;
73
- self.getUser(username, password, (user) => {
74
- if (!user) return callback(null);
75
- self.createSession(user, sessionKey => {
76
- cookies.set(response, 'sessionKey', sessionKey, true);
77
- user.loginDate = new Date();
78
- user.save(() => callback(user));
79
- });
80
- });
81
- }
82
-
83
- logout (response, callback) {
84
- var self = this;
85
- cookies.remove(response, 'sessionKey');
86
- callback();
87
- }
88
-
89
- auth (request, callback) {
90
- var self = this,
91
- sessionKey = cookies.get(request, 'sessionKey') || '';
92
- if (sessionKey === '')
93
- return self.createAnonymousUser(request, callback);
94
- self.getUserBySession(sessionKey, user => {
95
- if (user) return callback(user);
96
- self.createAnonymousUser(request, callback);
97
- });
98
- }
99
-
100
- register (user, callback) {
101
- var self = this,
102
- errors = [];
103
- if (user.password1 === undefined) {
104
- user.password1 = user.password;
105
- user.password2 = user.password;
106
- }
107
- if (user.username.length < 3)
108
- errors.push(1);
109
- if (user.username.length > 30)
110
- errors.push(2);
111
- if (user.password1.length < 3)
112
- errors.push(3);
113
- if (user.password1.length > 30)
114
- errors.push(4);
115
- if (user.password1 !== user.password2)
116
- errors.push(5);
117
- if (user.email && user.email.search(/.+\@.+\..+/) === -1)
118
- errors.push(7);
119
- self.users.get({
120
- username: user.username
121
- }, us => {
122
- if (us) errors.push(6);
123
- if (errors.length > 0) return callback(errors);
124
- user.password = user.password1;
125
- user.isAuth = true;
126
- delete user.password1;
127
- delete user.password2;
128
- self.users.addUser(user, user => callback([], user));
129
- });
130
- }
131
-
132
- createAnonymousUser (request, callback) {
133
- var self = this,
134
- id = cookies.get(request, 'anonUserId');
135
- self.users.get({
136
- _id: id
137
- }, user => {
138
- if (user) return callback(user);
139
- self.users.addUser({
140
- isAuth: false
141
- }, user => {
142
- user.username = user._id + '';
143
- user.save(() => {
144
- cookies.set(request._response, 'anonUserId', user._id + '');
145
- callback(user);
146
- });
147
- });
148
- });
149
- }
150
-
151
- getError (code) {
152
- var self = this;
153
- return self.errorsDescription[code] || 'Неизвестная ошибка.';
154
- }
155
- }
156
-
157
- module.exports = Auth;
package/lib/auth/index.js DELETED
@@ -1,6 +0,0 @@
1
- 'use strict';
2
-
3
- const _ = require('lodash');
4
- const Auth = require('./auth');
5
-
6
- module.exports = new Auth();
File without changes