@ai2aim.ai/hivemind-sdk 1.0.9 → 1.0.11
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/README.md +90 -8
- package/dist/cli.js +112 -0
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +88 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +139 -0
- package/dist/client.js.map +1 -1
- package/dist/types.d.ts +257 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/web.d.ts.map +1 -1
- package/dist/web.js +48 -38
- package/dist/web.js.map +1 -1
- package/package.json +1 -1
package/dist/web.js
CHANGED
|
@@ -57,7 +57,9 @@ function buildDashboardHtml(config) {
|
|
|
57
57
|
</style>
|
|
58
58
|
</head>
|
|
59
59
|
<body class="bg-bg text-white overflow-hidden h-screen">
|
|
60
|
-
<div id="app"
|
|
60
|
+
<div id="app"></div>
|
|
61
|
+
<script type="text/html" id="app-tpl">
|
|
62
|
+
<div class="flex h-screen">
|
|
61
63
|
|
|
62
64
|
<!-- ═══════ SIDEBAR ═══════ -->
|
|
63
65
|
<aside :class="sidebarOpen?'sidebar-full':'sidebar-mini'" class="bg-surface border-r border-border flex flex-col h-full overflow-hidden z-20 flex-shrink-0">
|
|
@@ -215,7 +217,7 @@ function buildDashboardHtml(config) {
|
|
|
215
217
|
<text-field label="Org ID" v-model="orgFlow.orgId" placeholder="my-org-1"></text-field>
|
|
216
218
|
<text-field label="Name" v-model="orgFlow.name" placeholder="Acme Corp"></text-field>
|
|
217
219
|
<select-field label="Tier" v-model="orgFlow.tier" :options="['free','standard','premium','enterprise']"></select-field>
|
|
218
|
-
<
|
|
220
|
+
<div class="flex flex-wrap gap-2 mt-4"><flow-btn @click="orgFlowCreate" :loading="orgFlow.loading">Create Organization</flow-btn></div>
|
|
219
221
|
</step-card>
|
|
220
222
|
<step-card v-if="orgFlow.step===1" title="API Key Generated" subtitle="Store this key securely — it won't be shown again.">
|
|
221
223
|
<div class="flex items-center gap-2 bg-bg rounded-lg p-3 border border-green-900">
|
|
@@ -224,10 +226,10 @@ function buildDashboardHtml(config) {
|
|
|
224
226
|
<button @click="copyText(orgFlow.apiKey)" class="text-gray-500 hover:text-white transition" title="Copy"><span class="mdi mdi-content-copy"></span></button>
|
|
225
227
|
</div>
|
|
226
228
|
<kv-display v-if="orgFlow.orgData" :items="orgFlow.orgData" class="mt-3"></kv-display>
|
|
227
|
-
<
|
|
229
|
+
<div class="flex flex-wrap gap-2 mt-4"><flow-btn @click="orgFlow.step=2">Verify →</flow-btn></div>
|
|
228
230
|
</step-card>
|
|
229
231
|
<step-card v-if="orgFlow.step===2" title="Verify Organization" subtitle="Confirm the org was created correctly.">
|
|
230
|
-
<
|
|
232
|
+
<div class="flex flex-wrap gap-2 mt-4"><flow-btn @click="orgFlowVerify" :loading="orgFlow.loading">Verify</flow-btn></div>
|
|
231
233
|
</step-card>
|
|
232
234
|
<step-card v-if="orgFlow.step===3" title="Rotate API Key" subtitle="Generate a new key (the old one becomes invalid).">
|
|
233
235
|
<kv-display v-if="orgFlow.verifyData" :items="orgFlow.verifyData" class="mb-3"></kv-display>
|
|
@@ -236,7 +238,7 @@ function buildDashboardHtml(config) {
|
|
|
236
238
|
<code class="text-amber-300 text-xs flex-1 break-all select-all">{{orgFlow.newKey}}</code>
|
|
237
239
|
<button @click="copyText(orgFlow.newKey)" class="text-gray-500 hover:text-white transition"><span class="mdi mdi-content-copy"></span></button>
|
|
238
240
|
</div>
|
|
239
|
-
<
|
|
241
|
+
<div class="flex flex-wrap gap-2 mt-4"><flow-btn @click="orgFlowRotate" :loading="orgFlow.loading" variant="warn">Rotate Key</flow-btn></div>
|
|
240
242
|
</step-card>
|
|
241
243
|
<flow-result :result="orgFlow.lastResult"></flow-result>
|
|
242
244
|
</div>
|
|
@@ -246,7 +248,7 @@ function buildDashboardHtml(config) {
|
|
|
246
248
|
<flow-header title="Document Pipeline" desc="Upload documents, query via RAG, chat with your data." :step="docFlow.step" :steps="docFlow.steps"></flow-header>
|
|
247
249
|
<step-card v-if="docFlow.step===0" title="Select Organization" subtitle="Which org should own the documents?">
|
|
248
250
|
<text-field label="Org ID" v-model="docFlow.orgId" placeholder="my-org-1"></text-field>
|
|
249
|
-
<
|
|
251
|
+
<div class="flex flex-wrap gap-2 mt-4"><flow-btn @click="docFlow.step=1" :disabled="!docFlow.orgId">Next →</flow-btn></div>
|
|
250
252
|
</step-card>
|
|
251
253
|
<step-card v-if="docFlow.step===1" title="Upload Document" subtitle="Select a file or drag & drop anywhere on the page.">
|
|
252
254
|
<div class="border-2 border-dashed rounded-xl p-8 text-center transition-all" :class="dragActive?'border-brand bg-brand/5':'border-border hover:border-gray-500'" @click="$refs.docFile&&$refs.docFile.click()">
|
|
@@ -256,10 +258,10 @@ function buildDashboardHtml(config) {
|
|
|
256
258
|
</div>
|
|
257
259
|
<input ref="docFile" id="docFileInput" type="file" class="hidden" @change="docFlowUpload">
|
|
258
260
|
<kv-display v-if="docFlow.uploadResult" :items="docFlow.uploadResult" class="mt-3"></kv-display>
|
|
259
|
-
<
|
|
261
|
+
<div class="flex flex-wrap gap-2 mt-4">
|
|
260
262
|
<flow-btn @click="$refs.docFile&&$refs.docFile.click()" :loading="docFlow.loading">Upload</flow-btn>
|
|
261
263
|
<flow-btn variant="secondary" @click="docFlow.step=2" v-if="docFlow.uploadResult">Query →</flow-btn>
|
|
262
|
-
</
|
|
264
|
+
</div>
|
|
263
265
|
</step-card>
|
|
264
266
|
<step-card v-if="docFlow.step===2" title="RAG Query" subtitle="Ask questions about your uploaded documents.">
|
|
265
267
|
<text-field label="Query" v-model="docFlow.query" placeholder="What are the key findings?"></text-field>
|
|
@@ -271,10 +273,10 @@ function buildDashboardHtml(config) {
|
|
|
271
273
|
<div class="text-xs text-gray-500 mb-1 flex items-center gap-2"><span class="mdi mdi-robot"></span> Answer</div>
|
|
272
274
|
<div class="text-sm text-gray-300 whitespace-pre-wrap">{{docFlow.answer}}</div>
|
|
273
275
|
</div>
|
|
274
|
-
<
|
|
276
|
+
<div class="flex flex-wrap gap-2 mt-4">
|
|
275
277
|
<flow-btn @click="docFlowQuery" :loading="docFlow.loading">Ask</flow-btn>
|
|
276
278
|
<flow-btn variant="secondary" @click="docFlow.step=3">Data Chat →</flow-btn>
|
|
277
|
-
</
|
|
279
|
+
</div>
|
|
278
280
|
</step-card>
|
|
279
281
|
<step-card v-if="docFlow.step===3" title="Data Chat" subtitle="Have a conversation with your documents.">
|
|
280
282
|
<div class="bg-bg rounded-xl border border-border overflow-hidden">
|
|
@@ -306,7 +308,7 @@ function buildDashboardHtml(config) {
|
|
|
306
308
|
<span class="mdi text-3xl block mb-1" :class="t.icon"></span><span class="text-sm font-medium">{{t.label}}</span>
|
|
307
309
|
</button>
|
|
308
310
|
</div>
|
|
309
|
-
<
|
|
311
|
+
<div class="flex flex-wrap gap-2 mt-4"><flow-btn @click="genFlow.step=1" :disabled="!genFlow.type||!genFlow.orgId">Configure →</flow-btn></div>
|
|
310
312
|
</step-card>
|
|
311
313
|
<step-card v-if="genFlow.step===1" title="Configure" subtitle="Describe what you want to generate.">
|
|
312
314
|
<text-area label="Prompt" v-model="genFlow.prompt" placeholder="A cinematic drone flyover of a futuristic city…"></text-area>
|
|
@@ -316,7 +318,7 @@ function buildDashboardHtml(config) {
|
|
|
316
318
|
<text-field v-if="genFlow.type==='image'" label="Count" v-model="genFlow.numImages" placeholder="1"></text-field>
|
|
317
319
|
</div>
|
|
318
320
|
<text-field label="Style (optional)" v-model="genFlow.style" placeholder="photorealistic, cinematic"></text-field>
|
|
319
|
-
<
|
|
321
|
+
<div class="flex flex-wrap gap-2 mt-4"><flow-btn @click="genFlowSubmit" :loading="genFlow.loading">Generate</flow-btn></div>
|
|
320
322
|
</step-card>
|
|
321
323
|
<step-card v-if="genFlow.step===2" title="Track Job" subtitle="Monitor generation progress.">
|
|
322
324
|
<div class="bg-bg rounded-lg p-4 border border-border mb-3">
|
|
@@ -332,11 +334,11 @@ function buildDashboardHtml(config) {
|
|
|
332
334
|
</div>
|
|
333
335
|
</div>
|
|
334
336
|
<kv-display v-if="genFlow.jobResult" :items="genFlow.jobResult" class="mt-2"></kv-display>
|
|
335
|
-
<
|
|
337
|
+
<div class="flex flex-wrap gap-2 mt-4">
|
|
336
338
|
<flow-btn @click="genFlowPoll" :loading="genFlow.loading" size="sm">Poll Now</flow-btn>
|
|
337
339
|
<flow-btn v-if="!isPolling('gen')" variant="secondary" size="sm" @click="startPoll('gen',genFlowPoll,3000)"><span class="mdi mdi-sync mr-1"></span>Auto-Poll</flow-btn>
|
|
338
340
|
<flow-btn v-else variant="warn" size="sm" @click="stopPoll('gen')"><span class="mdi mdi-stop mr-1"></span>Stop</flow-btn>
|
|
339
|
-
</
|
|
341
|
+
</div>
|
|
340
342
|
</step-card>
|
|
341
343
|
<flow-result :result="genFlow.lastResult"></flow-result>
|
|
342
344
|
</div>
|
|
@@ -352,16 +354,16 @@ function buildDashboardHtml(config) {
|
|
|
352
354
|
<text-field label="Description" v-model="bpFlow.description" placeholder="Standard HR policy doc"></text-field>
|
|
353
355
|
</div>
|
|
354
356
|
<text-area label="Sections JSON" v-model="bpFlow.sectionsJson" placeholder='[{"title":"Introduction","instructions":"Write an intro"}]'></text-area>
|
|
355
|
-
<
|
|
357
|
+
<div class="flex flex-wrap gap-2 mt-4"><flow-btn @click="bpFlowCreate" :loading="bpFlow.loading">Create Blueprint</flow-btn></div>
|
|
356
358
|
</step-card>
|
|
357
359
|
<step-card v-if="bpFlow.step===1" title="Publish Blueprint" subtitle="Make the blueprint available for document creation.">
|
|
358
360
|
<div class="bg-bg rounded-lg p-3 border border-border text-sm text-gray-400"><span class="mdi mdi-information text-brand mr-1"></span>Blueprint <strong class="text-white">{{bpFlow.blueprintId}}</strong> ready to publish.</div>
|
|
359
|
-
<
|
|
361
|
+
<div class="flex flex-wrap gap-2 mt-4"><flow-btn @click="bpFlowPublish" :loading="bpFlow.loading">Publish</flow-btn></div>
|
|
360
362
|
</step-card>
|
|
361
363
|
<step-card v-if="bpFlow.step===2" title="Create Document" subtitle="Generate a new document from this blueprint.">
|
|
362
364
|
<text-field label="Title" v-model="bpFlow.docTitle" placeholder="Q1 Report 2026"></text-field>
|
|
363
365
|
<text-field label="Description" v-model="bpFlow.docDesc" placeholder="Quarterly report"></text-field>
|
|
364
|
-
<
|
|
366
|
+
<div class="flex flex-wrap gap-2 mt-4"><flow-btn @click="bpFlowCreateDoc" :loading="bpFlow.loading">Create Document</flow-btn></div>
|
|
365
367
|
</step-card>
|
|
366
368
|
<step-card v-if="bpFlow.step===3" title="AI Generate Sections" subtitle="Fill sections with AI-generated content.">
|
|
367
369
|
<div v-if="bpFlow.docSections.length" class="space-y-2 mb-3">
|
|
@@ -377,13 +379,13 @@ function buildDashboardHtml(config) {
|
|
|
377
379
|
<text-field label="Section ID" v-model="bpFlow.manualSectionId" placeholder="sec-1" class="flex-1"></text-field>
|
|
378
380
|
<text-field label="Context JSON" v-model="bpFlow.genContext" placeholder="{}" class="flex-1"></text-field>
|
|
379
381
|
</div>
|
|
380
|
-
<
|
|
382
|
+
<div class="flex flex-wrap gap-2 mt-4"><flow-btn size="sm" @click="bpFlowGenManual" :loading="bpFlow.loading">Generate</flow-btn><flow-btn variant="secondary" size="sm" @click="bpFlow.step=4">Workflow →</flow-btn></div>
|
|
381
383
|
</div>
|
|
382
384
|
</step-card>
|
|
383
385
|
<step-card v-if="bpFlow.step===4" title="Workflow Action" subtitle="Submit the document for review or approval.">
|
|
384
386
|
<select-field label="Action" v-model="bpFlow.wfAction" :options="['submit','approve','reject','request_changes','publish']"></select-field>
|
|
385
387
|
<text-area label="Comment" v-model="bpFlow.wfComment" placeholder="Looks good, approved."></text-area>
|
|
386
|
-
<
|
|
388
|
+
<div class="flex flex-wrap gap-2 mt-4"><flow-btn @click="bpFlowWorkflow" :loading="bpFlow.loading">Execute Workflow</flow-btn></div>
|
|
387
389
|
</step-card>
|
|
388
390
|
<flow-result :result="bpFlow.lastResult"></flow-result>
|
|
389
391
|
</div>
|
|
@@ -396,7 +398,7 @@ function buildDashboardHtml(config) {
|
|
|
396
398
|
<text-field label="Agent Name" v-model="agentFlow.name" placeholder="HR Assistant"></text-field>
|
|
397
399
|
<text-area label="Instructions" v-model="agentFlow.instructions" placeholder="You are an HR assistant…"></text-area>
|
|
398
400
|
<text-field label="Tools (JSON)" v-model="agentFlow.tools" placeholder='["rag_search","web_search"]'></text-field>
|
|
399
|
-
<
|
|
401
|
+
<div class="flex flex-wrap gap-2 mt-4"><flow-btn @click="agentFlowCreate" :loading="agentFlow.loading">Create Agent</flow-btn></div>
|
|
400
402
|
</step-card>
|
|
401
403
|
<step-card v-if="agentFlow.step===1" title="Chat with Agent" subtitle="Talk to your custom agent.">
|
|
402
404
|
<select-field label="Agent Type" v-model="agentFlow.agentType" :options="['auto','custom','rag','data']"></select-field>
|
|
@@ -425,26 +427,26 @@ function buildDashboardHtml(config) {
|
|
|
425
427
|
<text-field label="Site URL" v-model="jiraFlow.siteUrl" placeholder="https://yoursite.atlassian.net"></text-field>
|
|
426
428
|
<text-field label="Email" v-model="jiraFlow.email" placeholder="user@company.com"></text-field>
|
|
427
429
|
<text-field label="API Token" v-model="jiraFlow.apiToken" placeholder="Your Jira API token" type="password"></text-field>
|
|
428
|
-
<
|
|
430
|
+
<div class="flex flex-wrap gap-2 mt-4"><flow-btn @click="jiraFlowConnect" :loading="jiraFlow.loading">Connect</flow-btn></div>
|
|
429
431
|
</step-card>
|
|
430
432
|
<step-card v-if="jiraFlow.step===1" title="Connection Status" subtitle="Verify your Jira connection.">
|
|
431
433
|
<kv-display v-if="jiraFlow.statusData" :items="jiraFlow.statusData"></kv-display>
|
|
432
434
|
<div v-else class="skeleton h-20 w-full"></div>
|
|
433
|
-
<
|
|
435
|
+
<div class="flex flex-wrap gap-2 mt-4">
|
|
434
436
|
<flow-btn @click="jiraFlowStatus" :loading="jiraFlow.loading" size="sm">Refresh</flow-btn>
|
|
435
437
|
<flow-btn variant="secondary" @click="jiraFlow.step=2">Sync →</flow-btn>
|
|
436
|
-
</
|
|
438
|
+
</div>
|
|
437
439
|
</step-card>
|
|
438
440
|
<step-card v-if="jiraFlow.step===2" title="Sync Projects" subtitle="Choose which Jira projects to synchronize.">
|
|
439
441
|
<text-field label="Project Keys (comma-separated)" v-model="jiraFlow.projectKeys" placeholder="PROJ, TEAM, OPS"></text-field>
|
|
440
|
-
<
|
|
442
|
+
<div class="flex flex-wrap gap-2 mt-4"><flow-btn @click="jiraFlowSync" :loading="jiraFlow.loading">Start Sync</flow-btn></div>
|
|
441
443
|
</step-card>
|
|
442
444
|
<step-card v-if="jiraFlow.step===3" title="Manage" subtitle="Manage your Jira integration.">
|
|
443
445
|
<div class="bg-bg rounded-lg p-3 border border-green-900 text-sm text-green-400 mb-3"><span class="mdi mdi-check-circle mr-1"></span>Jira is connected and syncing.</div>
|
|
444
|
-
<
|
|
446
|
+
<div class="flex flex-wrap gap-2 mt-4">
|
|
445
447
|
<flow-btn @click="jiraFlowStatus" :loading="jiraFlow.loading" size="sm">Refresh Status</flow-btn>
|
|
446
448
|
<flow-btn variant="danger" size="sm" @click="confirmAction('Disconnect Jira','This will remove the Jira integration. Are you sure?',jiraFlowDisconnect)">Disconnect</flow-btn>
|
|
447
|
-
</
|
|
449
|
+
</div>
|
|
448
450
|
</step-card>
|
|
449
451
|
<flow-result :result="jiraFlow.lastResult"></flow-result>
|
|
450
452
|
</div>
|
|
@@ -456,7 +458,7 @@ function buildDashboardHtml(config) {
|
|
|
456
458
|
<div class="flex justify-end mb-1"><button @click="scrapeFlowConfig" class="text-[10px] text-gray-500 hover:text-brand transition"><span class="mdi mdi-cog mr-1"></span>View Config</button></div>
|
|
457
459
|
<kv-display v-if="scrapeFlow.configData" :items="scrapeFlow.configData" class="mb-3"></kv-display>
|
|
458
460
|
<text-area label="URLs (one per line)" v-model="scrapeFlow.urls" placeholder="https://example.com\nhttps://docs.example.com"></text-area>
|
|
459
|
-
<
|
|
461
|
+
<div class="flex flex-wrap gap-2 mt-4"><flow-btn @click="scrapeFlowSubmit" :loading="scrapeFlow.loading">Submit</flow-btn></div>
|
|
460
462
|
</step-card>
|
|
461
463
|
<step-card v-if="scrapeFlow.step===1" title="Monitor Progress" subtitle="Track the scraping task.">
|
|
462
464
|
<div class="bg-bg rounded-lg p-4 border border-border mb-3">
|
|
@@ -471,11 +473,11 @@ function buildDashboardHtml(config) {
|
|
|
471
473
|
</div>
|
|
472
474
|
</div>
|
|
473
475
|
<kv-display v-if="scrapeFlow.taskResult" :items="scrapeFlow.taskResult"></kv-display>
|
|
474
|
-
<
|
|
476
|
+
<div class="flex flex-wrap gap-2 mt-4">
|
|
475
477
|
<flow-btn @click="scrapeFlowPoll" :loading="scrapeFlow.loading" size="sm">Poll Now</flow-btn>
|
|
476
478
|
<flow-btn v-if="!isPolling('scrape')" variant="secondary" size="sm" @click="startPoll('scrape',scrapeFlowPoll,3000)"><span class="mdi mdi-sync mr-1"></span>Auto-Poll</flow-btn>
|
|
477
479
|
<flow-btn v-else variant="warn" size="sm" @click="stopPoll('scrape')"><span class="mdi mdi-stop mr-1"></span>Stop</flow-btn>
|
|
478
|
-
</
|
|
480
|
+
</div>
|
|
479
481
|
</step-card>
|
|
480
482
|
<flow-result :result="scrapeFlow.lastResult"></flow-result>
|
|
481
483
|
</div>
|
|
@@ -488,20 +490,20 @@ function buildDashboardHtml(config) {
|
|
|
488
490
|
<text-field label="Target Column" v-model="mlFlow.target" placeholder="churn"></text-field>
|
|
489
491
|
<text-field label="Feature Columns (JSON)" v-model="mlFlow.features" placeholder='["tenure","monthly_charges"]'></text-field>
|
|
490
492
|
<text-area label="Training Rows (JSON)" v-model="mlFlow.rows" placeholder='[{"tenure":12,"monthly_charges":50,"churn":0}]'></text-area>
|
|
491
|
-
<
|
|
493
|
+
<div class="flex flex-wrap gap-2 mt-4"><flow-btn @click="mlFlowTrain" :loading="mlFlow.loading">Train</flow-btn></div>
|
|
492
494
|
</step-card>
|
|
493
495
|
<step-card v-if="mlFlow.step===1" title="Predict" subtitle="Run predictions using the trained model.">
|
|
494
496
|
<div v-if="mlFlow.modelId" class="bg-bg rounded-lg p-3 border border-green-900 text-sm text-green-400 mb-3"><span class="mdi mdi-check-circle mr-1"></span>Model: <code>{{mlFlow.modelId}}</code></div>
|
|
495
497
|
<text-area label="Instances (JSON)" v-model="mlFlow.instances" placeholder='[{"tenure":24,"monthly_charges":80}]'></text-area>
|
|
496
|
-
<
|
|
498
|
+
<div class="flex flex-wrap gap-2 mt-4">
|
|
497
499
|
<flow-btn @click="mlFlowPredict" :loading="mlFlow.loading">Predict</flow-btn>
|
|
498
500
|
<flow-btn variant="secondary" @click="mlFlow.step=2">Forecast →</flow-btn>
|
|
499
|
-
</
|
|
501
|
+
</div>
|
|
500
502
|
</step-card>
|
|
501
503
|
<step-card v-if="mlFlow.step===2" title="Forecast" subtitle="Generate time-series forecasts.">
|
|
502
504
|
<text-field label="Time Series (JSON)" v-model="mlFlow.series" placeholder="[10,20,30,40,50]"></text-field>
|
|
503
505
|
<text-field label="Horizon (days)" v-model="mlFlow.horizon" placeholder="30"></text-field>
|
|
504
|
-
<
|
|
506
|
+
<div class="flex flex-wrap gap-2 mt-4"><flow-btn @click="mlFlowForecast" :loading="mlFlow.loading">Forecast</flow-btn></div>
|
|
505
507
|
</step-card>
|
|
506
508
|
<flow-result :result="mlFlow.lastResult"></flow-result>
|
|
507
509
|
</div>
|
|
@@ -513,12 +515,12 @@ function buildDashboardHtml(config) {
|
|
|
513
515
|
<text-field label="Org ID" v-model="audioFlow.orgId" placeholder="my-org-1"></text-field>
|
|
514
516
|
<text-area label="Audio Text / Base64" v-model="audioFlow.audioText" placeholder="Audio content or base64…"></text-area>
|
|
515
517
|
<select-field label="Language" v-model="audioFlow.lang" :options="['en-US','en-GB','es-ES','fr-FR','de-DE','ja-JP','zh-CN']"></select-field>
|
|
516
|
-
<
|
|
518
|
+
<div class="flex flex-wrap gap-2 mt-4"><flow-btn @click="audioFlowTranscribe" :loading="audioFlow.loading">Transcribe</flow-btn></div>
|
|
517
519
|
</step-card>
|
|
518
520
|
<step-card v-if="audioFlow.step===1" title="Synthesize Speech" subtitle="Convert text to audio.">
|
|
519
521
|
<text-area label="Text" v-model="audioFlow.synthText" placeholder="Hello, welcome to Hivemind."></text-area>
|
|
520
522
|
<text-field label="Voice" v-model="audioFlow.voice" placeholder="en-US-Neural2-J"></text-field>
|
|
521
|
-
<
|
|
523
|
+
<div class="flex flex-wrap gap-2 mt-4"><flow-btn @click="audioFlowSynthesize" :loading="audioFlow.loading">Synthesize</flow-btn></div>
|
|
522
524
|
</step-card>
|
|
523
525
|
<flow-result :result="audioFlow.lastResult"></flow-result>
|
|
524
526
|
</div>
|
|
@@ -725,11 +727,13 @@ function buildDashboardHtml(config) {
|
|
|
725
727
|
</transition-group>
|
|
726
728
|
</div>
|
|
727
729
|
|
|
728
|
-
</div
|
|
730
|
+
</div>
|
|
731
|
+
<\/script>
|
|
729
732
|
|
|
730
733
|
<script>
|
|
731
734
|
const{createApp,ref,reactive,computed,onMounted,watch,nextTick}=Vue;
|
|
732
735
|
createApp({
|
|
736
|
+
template:document.getElementById('app-tpl').innerHTML,
|
|
733
737
|
setup(){
|
|
734
738
|
const cfg=reactive({baseUrl:'${esc(config.baseUrl)}',apiPrefix:'${esc(config.apiPrefix)}',apiKey:'${esc(config.apiKey)}',adminKey:'${esc(config.adminKey)}',webhookSecret:'${esc(config.webhookSecret)}',employeeId:'${esc(config.employeeId)}'});
|
|
735
739
|
const settingsFields=[{key:'baseUrl',label:'Base URL',placeholder:'http://localhost:8000'},{key:'apiPrefix',label:'API Prefix',placeholder:'/api/v1'},{key:'apiKey',label:'API Key',placeholder:'key-…',type:'password'},{key:'adminKey',label:'Admin Key',placeholder:'admin-…',type:'password'},{key:'webhookSecret',label:'Webhook Secret',placeholder:'whsec-…',type:'password'},{key:'employeeId',label:'Employee ID',placeholder:'EMP001'}];
|
|
@@ -870,7 +874,7 @@ createApp({
|
|
|
870
874
|
|
|
871
875
|
// ── Quick Actions ──
|
|
872
876
|
const quickCat=ref('All');
|
|
873
|
-
const quickCategories=['All','Organization','Documents','Generation','Agents','Audio','Analytics','Billing','Audit','Scraping','Webhooks','Jira','Blueprints','Managed Docs','Admin'];
|
|
877
|
+
const quickCategories=['All','Organization','Documents','Search','Generation','Content Creator','Agents','Audio','Analytics','Billing','Audit','Scraping','Webhooks','Jira','Blueprints','Managed Docs','Admin'];
|
|
874
878
|
function qf(key,label,placeholder,type){return{key,label,placeholder,type:type||'text'};}
|
|
875
879
|
const orgF=qf('orgId','Org ID','my-org-1');
|
|
876
880
|
|
|
@@ -884,8 +888,10 @@ createApp({
|
|
|
884
888
|
{id:'q6',cat:'Organization',method:'DELETE',title:'Delete Organization',path:'/organizations/{orgId}',fields:[orgF],values:{},open:false,loading:false,result:null,resultOk:false,timing:0,fn:v=>api('DELETE','/organizations/'+v.orgId)},
|
|
885
889
|
{id:'q7',cat:'Documents',method:'POST',title:'RAG Query',path:'/organizations/{orgId}/query',fields:[orgF,qf('query','Query','key findings?'),qf('model','Model','gemini-pro'),qf('strategy','Strategy','hybrid')],values:{},open:false,loading:false,result:null,resultOk:false,timing:0,fn:v=>api('POST','/organizations/'+v.orgId+'/query',{query:v.query,model_type:v.model||'gemini-pro',retrieval_strategy:v.strategy||'hybrid'})},
|
|
886
890
|
{id:'q8',cat:'Documents',method:'POST',title:'Data Chat',path:'/organizations/{orgId}/data-chat',fields:[orgF,qf('question','Question','active users?')],values:{},open:false,loading:false,result:null,resultOk:false,timing:0,fn:v=>api('POST','/organizations/'+v.orgId+'/data-chat',{question:v.question})},
|
|
891
|
+
{id:'q8a',cat:'Search',method:'POST',title:'Search Sources',path:'/organizations/{orgId}/search',fields:[orgF,qf('query','Query','content marketing 2026'),qf('type','Type','news'),qf('num','Num','10')],values:{},open:false,loading:false,result:null,resultOk:false,timing:0,fn:v=>api('POST','/organizations/'+v.orgId+'/search',{query:v.query,type:v.type||undefined,num:parseInt(v.num||'10')})},
|
|
887
892
|
{id:'q9',cat:'Generation',method:'POST',title:'Generate Video',path:'/organizations/{orgId}/generate/video',fields:[orgF,qf('prompt','Prompt','Drone flyover'),qf('duration','Duration','8'),qf('aspect','Aspect','16:9')],values:{},open:false,loading:false,result:null,resultOk:false,timing:0,fn:v=>api('POST','/organizations/'+v.orgId+'/generate/video',{prompt:v.prompt,duration:parseInt(v.duration||'8'),aspect_ratio:v.aspect||'16:9'})},
|
|
888
893
|
{id:'q10',cat:'Generation',method:'POST',title:'Generate Image',path:'/organizations/{orgId}/generate/image',fields:[orgF,qf('prompt','Prompt','Futuristic city'),qf('aspect','Aspect','1:1'),qf('num','Num','1')],values:{},open:false,loading:false,result:null,resultOk:false,timing:0,fn:v=>api('POST','/organizations/'+v.orgId+'/generate/image',{prompt:v.prompt,aspect_ratio:v.aspect||'1:1',num_images:parseInt(v.num||'1')})},
|
|
894
|
+
{id:'q10a',cat:'Generation',method:'POST',title:'Generate Music',path:'/organizations/{orgId}/generate/music',fields:[orgF,qf('genre','Genre','ambient'),qf('mood','Mood','uplifting'),qf('duration','Duration','30')],values:{},open:false,loading:false,result:null,resultOk:false,timing:0,fn:v=>api('POST','/organizations/'+v.orgId+'/generate/music',{genre:v.genre,mood:v.mood,duration:parseInt(v.duration||'30')})},
|
|
889
895
|
{id:'q11',cat:'Generation',method:'GET',title:'Job Status',path:'/organizations/{orgId}/jobs/{jobId}',fields:[orgF,qf('jobId','Job ID','job-xxx')],values:{},open:false,loading:false,result:null,resultOk:false,timing:0,fn:v=>api('GET','/organizations/'+v.orgId+'/jobs/'+v.jobId)},
|
|
890
896
|
{id:'q12',cat:'Agents',method:'POST',title:'Create Agent',path:'/organizations/{orgId}/agents/custom',fields:[orgF,qf('name','Name','Bot'),qf('instructions','Instructions','','textarea'),qf('tools','Tools','["rag_search"]')],values:{},open:false,loading:false,result:null,resultOk:false,timing:0,fn:v=>api('POST','/organizations/'+v.orgId+'/agents/custom',{name:v.name,instructions:v.instructions,tools:tryJson(v.tools)||[]})},
|
|
891
897
|
{id:'q13',cat:'Agents',method:'POST',title:'Query Agent',path:'/organizations/{orgId}/agents/query',fields:[orgF,qf('query','Query','Help me'),qf('agent_type','Type','auto')],values:{},open:false,loading:false,result:null,resultOk:false,timing:0,fn:v=>api('POST','/organizations/'+v.orgId+'/agents/query',{query:v.query,agent_type:v.agent_type||'auto'})},
|
|
@@ -939,6 +945,11 @@ createApp({
|
|
|
939
945
|
{id:'q61',cat:'Admin',method:'GET',title:'Admin Audit',path:'/admin/audit',fields:[],values:{},open:false,loading:false,result:null,resultOk:false,timing:0,fn:()=>api('GET','/admin/audit')},
|
|
940
946
|
{id:'q62',cat:'Admin',method:'POST',title:'Flush Cache',path:'/admin/cache/flush',fields:[],values:{},open:false,loading:false,result:null,resultOk:false,timing:0,fn:()=>api('POST','/admin/cache/flush')},
|
|
941
947
|
{id:'q63',cat:'Admin',method:'PUT',title:'Update Setting',path:'/admin/settings',fields:[qf('key','Key','log_level'),qf('value','Value','DEBUG')],values:{},open:false,loading:false,result:null,resultOk:false,timing:0,fn:v=>api('PUT','/admin/settings',{key:v.key,value:v.value})},
|
|
948
|
+
{id:'q64',cat:'Content Creator',method:'POST',title:'Create Project',path:'/organizations/{orgId}/projects',fields:[orgF,qf('name','Name','Launch Campaign'),qf('description','Description','Q4 rollout')],values:{},open:false,loading:false,result:null,resultOk:false,timing:0,fn:v=>api('POST','/organizations/'+v.orgId+'/projects',{name:v.name,description:v.description})},
|
|
949
|
+
{id:'q65',cat:'Content Creator',method:'GET',title:'List Projects',path:'/organizations/{orgId}/projects',fields:[orgF],values:{},open:false,loading:false,result:null,resultOk:false,timing:0,fn:v=>api('GET','/organizations/'+v.orgId+'/projects')},
|
|
950
|
+
{id:'q66',cat:'Content Creator',method:'POST',title:'Create Publish Schedule',path:'/organizations/{orgId}/projects/{projectId}/schedules',fields:[orgF,qf('projectId','Project ID','proj-xxx'),qf('contentId','Content ID','cnt-xxx'),qf('platforms','Platforms (comma)','linkedin,x'),qf('publishAt','Publish At','2026-03-17T12:00:00Z')],values:{},open:false,loading:false,result:null,resultOk:false,timing:0,fn:v=>api('POST','/organizations/'+v.orgId+'/projects/'+v.projectId+'/schedules',{content_id:v.contentId,target_platforms:(v.platforms||'').split(',').map(p=>p.trim()).filter(Boolean),publish_at:v.publishAt})},
|
|
951
|
+
{id:'q67',cat:'Content Creator',method:'GET',title:'List Publish Schedules',path:'/organizations/{orgId}/projects/{projectId}/schedules',fields:[orgF,qf('projectId','Project ID','proj-xxx')],values:{},open:false,loading:false,result:null,resultOk:false,timing:0,fn:v=>api('GET','/organizations/'+v.orgId+'/projects/'+v.projectId+'/schedules')},
|
|
952
|
+
{id:'q68',cat:'Content Creator',method:'POST',title:'Run Due Schedules',path:'/admin/content-creator/schedules/run-due',fields:[],values:{},open:false,loading:false,result:null,resultOk:false,timing:0,fn:()=>api('POST','/admin/content-creator/schedules/run-due')},
|
|
942
953
|
]);
|
|
943
954
|
|
|
944
955
|
const filteredQuickActions=computed(()=>{
|
|
@@ -1095,7 +1106,6 @@ createApp({
|
|
|
1095
1106
|
<h3 class="text-lg font-semibold text-white mb-1">{{title}}</h3>
|
|
1096
1107
|
<p class="text-xs text-gray-500 mb-4">{{subtitle}}</p>
|
|
1097
1108
|
<slot></slot>
|
|
1098
|
-
<div class="flex flex-wrap gap-2 mt-4" v-if="$slots.actions"><slot name="actions"></slot></div>
|
|
1099
1109
|
</div>\`})
|
|
1100
1110
|
.component('text-field',{props:['label','modelValue','placeholder','disabled','type'],emits:['update:modelValue'],template:\`
|
|
1101
1111
|
<div class="mt-2">
|
package/dist/web.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;AA4qCH,wCAmCC;AA7sCD,0DAA6B;AAG7B,wEAAwE;AACxE,yEAAyE;AACzE,wEAAwE;AAExE,SAAS,kBAAkB,CAAC,MAO3B;IACC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CACxB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAErE,OAAO,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCA6sBe,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,iBAAiB,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAybzO,CAAC;AACT,CAAC;AAiBD,SAAgB,cAAc,CAAC,IAAqB;IAClD,MAAM,IAAI,GAAG,kBAAkB,CAAC;QAC9B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,mBAAI,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAC7C,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACjB,cAAc,EAAE,0BAA0B;YAC1C,eAAe,EAAE,UAAU;SAC5B,CAAC,CAAC;QACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE;QACzC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAiB,CAAC;QAC7C,MAAM,GAAG,GAAG,oBAAoB,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,sCAAsC,GAAG,IAAI,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAEzC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAwC,CAAC;YACtF,MAAM,GAAG,GACP,OAAO,CAAC,QAAQ,KAAK,QAAQ;gBAC3B,CAAC,CAAC,SAAS,GAAG,GAAG;gBACjB,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;oBAC5B,CAAC,CAAC,aAAa,GAAG,GAAG;oBACrB,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC;YAC5B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|