@dainprotocol/cli 1.0.15 → 1.0.17

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.
@@ -32,8 +32,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
32
32
  });
33
33
  };
34
34
  var __generator = (this && this.__generator) || function (thisArg, body) {
35
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
36
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
35
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
36
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
37
37
  function verb(n) { return function (v) { return step([n, v]); }; }
38
38
  function step(op) {
39
39
  if (f) throw new TypeError("Generator is already executing.");
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
@@ -20,8 +20,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
20
20
  });
21
21
  };
22
22
  var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
24
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
25
  function verb(n) { return function (v) { return step([n, v]); }; }
26
26
  function step(op) {
27
27
  if (f) throw new TypeError("Generator is already executing.");
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
37
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
38
+ return new (P || (P = Promise))(function (resolve, reject) {
39
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
40
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
41
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
42
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
43
+ });
44
+ };
45
+ var __generator = (this && this.__generator) || function (thisArg, body) {
46
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
47
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
48
+ function verb(n) { return function (v) { return step([n, v]); }; }
49
+ function step(op) {
50
+ if (f) throw new TypeError("Generator is already executing.");
51
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
52
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
53
+ if (y = 0, t) op = [op[0] & 2, t.value];
54
+ switch (op[0]) {
55
+ case 0: case 1: t = op; break;
56
+ case 4: _.label++; return { value: op[1], done: false };
57
+ case 5: _.label++; y = op[1]; op = [0]; continue;
58
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
59
+ default:
60
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
61
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
62
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
63
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
64
+ if (t[2]) _.ops.pop();
65
+ _.trys.pop(); continue;
66
+ }
67
+ op = body.call(thisArg, _);
68
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
69
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
70
+ }
71
+ };
72
+ Object.defineProperty(exports, "__esModule", { value: true });
73
+ exports.default = testchat;
74
+ var anthropic_1 = require("@ai-sdk/anthropic");
75
+ var ai_1 = require("ai");
76
+ require("dotenv/config");
77
+ var readline = __importStar(require("node:readline/promises"));
78
+ var client_1 = require("@dainprotocol/service-sdk/client");
79
+ var utils_1 = require("../utils");
80
+ var terminal = readline.createInterface({
81
+ input: process.stdin,
82
+ output: process.stdout,
83
+ });
84
+ function chat(dainConnection) {
85
+ return __awaiter(this, void 0, void 0, function () {
86
+ var allTools, toolBoxes, _i, toolBoxes_1, toolBox, toolBoxTools, messages, toolResponseAvailable, userInput, _a, text, toolCalls, toolResults, responseMessages, _b, toolCalls_1, _c, toolName, args, _d, toolResults_1, _e, toolName, result, error_1;
87
+ return __generator(this, function (_f) {
88
+ switch (_f.label) {
89
+ case 0:
90
+ allTools = {};
91
+ return [4 /*yield*/, dainConnection.getToolboxes()];
92
+ case 1:
93
+ toolBoxes = _f.sent();
94
+ _i = 0, toolBoxes_1 = toolBoxes;
95
+ _f.label = 2;
96
+ case 2:
97
+ if (!(_i < toolBoxes_1.length)) return [3 /*break*/, 5];
98
+ toolBox = toolBoxes_1[_i];
99
+ if (!toolBox.id)
100
+ return [3 /*break*/, 4];
101
+ return [4 /*yield*/, dainConnection.loadToolbox(toolBox.id, true)];
102
+ case 3:
103
+ toolBoxTools = _f.sent();
104
+ allTools = __assign(__assign({}, allTools), toolBoxTools);
105
+ _f.label = 4;
106
+ case 4:
107
+ _i++;
108
+ return [3 /*break*/, 2];
109
+ case 5:
110
+ messages = [];
111
+ toolResponseAvailable = false;
112
+ _f.label = 6;
113
+ case 6:
114
+ if (!true) return [3 /*break*/, 12];
115
+ if (!!toolResponseAvailable) return [3 /*break*/, 8];
116
+ return [4 /*yield*/, terminal.question('You: ')];
117
+ case 7:
118
+ userInput = _f.sent();
119
+ if (userInput.toLowerCase() === 'exit') {
120
+ console.log('Goodbye!');
121
+ terminal.close();
122
+ return [2 /*return*/];
123
+ }
124
+ messages.push({ role: 'user', content: userInput });
125
+ _f.label = 8;
126
+ case 8:
127
+ _f.trys.push([8, 10, , 11]);
128
+ console.log("messages", messages);
129
+ return [4 /*yield*/, (0, ai_1.generateText)({
130
+ model: (0, anthropic_1.anthropic)('claude-3-5-sonnet-20240620'),
131
+ tools: allTools,
132
+ messages: messages,
133
+ maxSteps: 5
134
+ })];
135
+ case 9:
136
+ _a = _f.sent(), text = _a.text, toolCalls = _a.toolCalls, toolResults = _a.toolResults, responseMessages = _a.responseMessages;
137
+ toolResponseAvailable = false;
138
+ if (text) {
139
+ process.stdout.write("\nAssistant: ".concat(text));
140
+ }
141
+ for (_b = 0, toolCalls_1 = toolCalls; _b < toolCalls_1.length; _b++) {
142
+ _c = toolCalls_1[_b], toolName = _c.toolName, args = _c.args;
143
+ process.stdout.write("\nTool call: '".concat(toolName, "' ").concat(JSON.stringify(args)));
144
+ }
145
+ for (_d = 0, toolResults_1 = toolResults; _d < toolResults_1.length; _d++) {
146
+ _e = toolResults_1[_d], toolName = _e.toolName, result = _e.result;
147
+ process.stdout.write("\nTool response: '".concat(toolName, "' ").concat(JSON.stringify(result)));
148
+ }
149
+ process.stdout.write('\n\n');
150
+ messages.push.apply(messages, responseMessages);
151
+ toolResponseAvailable = toolCalls.length > 0;
152
+ return [3 /*break*/, 11];
153
+ case 10:
154
+ error_1 = _f.sent();
155
+ console.error('Error generating response:', error_1);
156
+ return [3 /*break*/, 11];
157
+ case 11: return [3 /*break*/, 6];
158
+ case 12: return [2 /*return*/];
159
+ }
160
+ });
161
+ });
162
+ }
163
+ function testchat(options) {
164
+ return __awaiter(this, void 0, void 0, function () {
165
+ var config, url, agentAuth, dainConnection;
166
+ return __generator(this, function (_a) {
167
+ switch (_a.label) {
168
+ case 0:
169
+ config = (0, utils_1.getDainConfig)(options.config);
170
+ url = options.url || process.env.TEST_CHAT_URL;
171
+ if (!url) {
172
+ console.error('Error: Please provide a URL using --url option or set TEST_CHAT_URL in your .env file');
173
+ process.exit(1);
174
+ }
175
+ if (!process.env.ANTHROPIC_API_KEY) {
176
+ console.error('Error: ANTHROPIC_API_KEY is not set in your .env file');
177
+ process.exit(1);
178
+ }
179
+ if (!config['api-key']) {
180
+ throw new Error("'api-key' is required when using development proxy");
181
+ }
182
+ agentAuth = new client_1.DainClientAuth({
183
+ apiKey: config['api-key']
184
+ });
185
+ dainConnection = new client_1.DainServiceConnection(url, agentAuth);
186
+ console.log('Starting chat session. Type "exit" to end the conversation.');
187
+ return [4 /*yield*/, chat(dainConnection)];
188
+ case 1:
189
+ _a.sent();
190
+ return [2 /*return*/];
191
+ }
192
+ });
193
+ });
194
+ }
package/dist/index.js CHANGED
@@ -10,6 +10,7 @@ var dev_1 = __importDefault(require("./commands/dev"));
10
10
  var deploy_1 = __importDefault(require("./commands/deploy"));
11
11
  var build_1 = __importDefault(require("./commands/build"));
12
12
  var start_1 = __importDefault(require("./commands/start"));
13
+ var testchat_1 = __importDefault(require("./commands/testchat"));
13
14
  var program = new commander_1.Command();
14
15
  program
15
16
  .name('dain')
@@ -57,6 +58,13 @@ program
57
58
  .action(function (options) {
58
59
  (0, start_1.default)(options);
59
60
  });
61
+ program
62
+ .command('testchat')
63
+ .description('Start a chat session with a DAIN service')
64
+ .option('--url <url>', 'The URL of the DAIN service')
65
+ .action(function (options) {
66
+ (0, testchat_1.default)(options);
67
+ });
60
68
  program.parse(process.argv);
61
69
  // Add a catch-all command for unknown commands
62
70
  program.on('command:*', function () {
@@ -6,7 +6,7 @@
6
6
  "out-dir": "dist",
7
7
  "environment": "development",
8
8
  "version": "1.0.0",
9
- "tunnel-base-url": "wss:///devtunnel.dain-local.com",
9
+ "tunnel-base-url": "wss:///tunnel.dain-local.com",
10
10
  "platform-base-url": "https://platform.dain.org",
11
11
  "runtime": "workers"
12
12
  }
package/dist/utils.js CHANGED
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
@@ -116,7 +116,7 @@ function setupProxy(port, apiKey, config) {
116
116
  return [4 /*yield*/, client.start(parseInt(port))];
117
117
  case 2:
118
118
  tunnelUrl = _a.sent();
119
- spinner.succeed(chalk_1.default.green("Proxy URL: ".concat(tunnelUrl)));
119
+ spinner.succeed(chalk_1.default.green("\n------------------------------------------------------------\nYour service is available publicly at: ") + chalk_1.default.cyan.underline("".concat(tunnelUrl)) + chalk_1.default.green("\n------------------------------------------------------------\n"));
120
120
  return [2 /*return*/, client];
121
121
  case 3:
122
122
  error_1 = _a.sent();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dainprotocol/cli",
3
- "version": "1.0.15",
3
+ "version": "1.0.17",
4
4
  "description": "CLI for Dain Protocol",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -15,9 +15,12 @@
15
15
  "templates"
16
16
  ],
17
17
  "dependencies": {
18
+ "@ai-sdk/anthropic": "^0.0.50",
19
+ "@dainprotocol/service-sdk": "^1.0.14",
18
20
  "@dainprotocol/tunnel": "^1.0.2",
19
21
  "@types/fs-extra": "^11.0.4",
20
22
  "@types/localtunnel": "^2.0.4",
23
+ "ai": "^3.3.41",
21
24
  "chalk": "^4.1.2",
22
25
  "chokidar": "^3.6.0",
23
26
  "commander": "^11.1.0",
@@ -6,7 +6,7 @@
6
6
  "out-dir": "dist",
7
7
  "environment": "development",
8
8
  "version": "1.0.0",
9
- "tunnel-base-url": "wss:///devtunnel.dain-local.com",
9
+ "tunnel-base-url": "wss:///tunnel.dain-local.com",
10
10
  "platform-base-url": "https://platform.dain.org",
11
11
  "runtime": "workers"
12
12
  }