@ai2aim.ai/hivemind-sdk 1.0.7 → 1.0.9

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.
Files changed (2) hide show
  1. package/dist/web.js +43 -43
  2. package/package.json +1 -1
package/dist/web.js CHANGED
@@ -26,7 +26,7 @@ function buildDashboardHtml(config) {
26
26
  <script src="https://unpkg.com/vue@3/dist/vue.global.js"><\/script>
27
27
  <link href="https://cdn.jsdelivr.net/npm/@mdi/font@7/css/materialdesignicons.min.css" rel="stylesheet">
28
28
  <script src="https://cdn.tailwindcss.com"><\/script>
29
- <script>tailwindcss.config={theme:{extend:{colors:{brand:'#6366f1',bg:'#0f1117',surface:'#1a1d25',border:'#2a2d35'}}}}<\/script>
29
+ <script>tailwind.config={theme:{extend:{colors:{brand:'#6366f1',bg:'#0f1117',surface:'#1a1d25',border:'#2a2d35'}}}}<\/script>
30
30
  <style>
31
31
  *{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,0.1) transparent}
32
32
  ::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.1);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,0.2)}
@@ -77,7 +77,7 @@ function buildDashboardHtml(config) {
77
77
  </div>
78
78
  </div>
79
79
  <nav class="flex-1 overflow-y-auto py-2">
80
- <template v-for="sec in navSections" :key="sec.name">
80
+ <div v-for="sec in navSections" :key="sec.name" style="display:contents">
81
81
  <div v-if="sidebarOpen" class="px-4 pt-3 pb-1 text-[10px] uppercase tracking-wider text-gray-600 font-semibold">{{sec.name}}</div>
82
82
  <button v-for="item in sec.items" :key="item.view" @click="navigate(item.view)"
83
83
  class="w-full flex items-center gap-3 px-4 py-2 text-sm transition-all hover:bg-white/5 group relative"
@@ -86,12 +86,12 @@ function buildDashboardHtml(config) {
86
86
  <span v-if="sidebarOpen" class="truncate">{{item.label}}</span>
87
87
  <span v-if="!sidebarOpen" class="absolute left-full ml-2 px-2 py-1 bg-surface border border-border rounded text-xs whitespace-nowrap opacity-0 group-hover:opacity-100 pointer-events-none transition-opacity z-50">{{item.label}}</span>
88
88
  </button>
89
- </template>
89
+ </div>
90
90
  </nav>
91
91
  <div class="border-t border-border p-3" :class="sidebarOpen?'':'flex justify-center'">
92
92
  <button @click="showShortcuts=true" class="text-gray-500 hover:text-white transition text-sm flex items-center gap-2 w-full" :title="sidebarOpen?'Keyboard shortcuts':'?'">
93
93
  <span class="mdi mdi-keyboard"></span>
94
- <template v-if="sidebarOpen"><span class="text-xs">Shortcuts</span><kbd class="ml-auto text-[10px] bg-bg px-1.5 py-0.5 rounded border border-border text-gray-500">?</kbd></template>
94
+ <span v-if="sidebarOpen" class="contents"><span class="text-xs">Shortcuts</span><kbd class="ml-auto text-[10px] bg-bg px-1.5 py-0.5 rounded border border-border text-gray-500">?</kbd></span>
95
95
  </button>
96
96
  </div>
97
97
  </aside>
@@ -102,7 +102,7 @@ function buildDashboardHtml(config) {
102
102
  <header class="h-14 border-b border-border flex items-center gap-3 px-4 bg-surface/50 backdrop-blur-sm flex-shrink-0 z-10">
103
103
  <nav class="flex items-center gap-1 text-sm">
104
104
  <button @click="navigate('home')" class="text-gray-500 hover:text-white transition"><span class="mdi mdi-home"></span></button>
105
- <template v-if="breadcrumb"><span class="text-gray-600 mdi mdi-chevron-right text-xs"></span><span class="text-gray-300 text-xs">{{breadcrumb}}</span></template>
105
+ <span v-if="breadcrumb" class="contents"><span class="text-gray-600 mdi mdi-chevron-right text-xs"></span><span class="text-gray-300 text-xs">{{breadcrumb}}</span></span>
106
106
  </nav>
107
107
  <div class="flex-1"></div>
108
108
  <button @click="cmdOpen=true" class="flex items-center gap-2 bg-bg border border-border rounded-lg px-3 py-1.5 text-xs text-gray-500 hover:text-gray-300 hover:border-gray-500 transition min-w-[200px]">
@@ -122,7 +122,7 @@ function buildDashboardHtml(config) {
122
122
  <div :key="currentView" class="animate-slide-up max-w-5xl mx-auto">
123
123
 
124
124
  <!-- ▸ HOME ──────────────────────── -->
125
- <template v-if="currentView==='home'">
125
+ <div v-if="currentView==='home'">
126
126
  <div class="mb-6"><h1 class="text-3xl font-bold text-white mb-1">Welcome to Hivemind</h1>
127
127
  <p class="text-gray-400">Choose a flow or press <kbd class="text-[10px] bg-surface px-1.5 py-0.5 rounded border border-border">Ctrl+K</kbd> to search.</p></div>
128
128
  <div class="grid grid-cols-2 sm:grid-cols-4 gap-4 mb-6 stagger">
@@ -144,10 +144,10 @@ function buildDashboardHtml(config) {
144
144
  <div class="flex flex-wrap gap-1"><span v-for="t in f.tags" :key="t" class="text-[9px] bg-white/5 text-gray-500 rounded-full px-2 py-0.5">{{t}}</span></div>
145
145
  </button>
146
146
  </div>
147
- </template>
147
+ </div>
148
148
 
149
149
  <!-- ▸ SETTINGS ──────────────────── -->
150
- <template v-if="currentView==='settings'">
150
+ <div v-if="currentView==='settings'">
151
151
  <div class="max-w-lg animate-slide-up">
152
152
  <h1 class="text-2xl font-bold text-white mb-1">Settings</h1><p class="text-gray-400 text-sm mb-6">Configure your API connection.</p>
153
153
  <div class="bg-surface border border-border rounded-xl p-6 card-hover">
@@ -162,10 +162,10 @@ function buildDashboardHtml(config) {
162
162
  </div>
163
163
  </div>
164
164
  </div>
165
- </template>
165
+ </div>
166
166
 
167
167
  <!-- ▸ QUICK ACTIONS ─────────────── -->
168
- <template v-if="currentView==='quick'">
168
+ <div v-if="currentView==='quick'">
169
169
  <div class="mb-4 flex items-center gap-3 flex-wrap">
170
170
  <h1 class="text-2xl font-bold text-white">Quick Actions</h1>
171
171
  <span class="text-xs text-gray-500 bg-surface border border-border rounded-full px-2 py-0.5">{{filteredQuickActions.length}} actions</span>
@@ -206,10 +206,10 @@ function buildDashboardHtml(config) {
206
206
  </div>
207
207
  </div>
208
208
  </div>
209
- </template>
209
+ </div>
210
210
 
211
211
  <!-- ▸ ORG SETUP FLOW ────────────── -->
212
- <template v-if="currentView==='flow-org'">
212
+ <div v-if="currentView==='flow-org'">
213
213
  <flow-header title="Organization Setup" desc="Create an organization, provision API keys, verify and rotate." :step="orgFlow.step" :steps="orgFlow.steps"></flow-header>
214
214
  <step-card v-if="orgFlow.step===0" title="Create Organization" subtitle="Provision a new tenant with API keys.">
215
215
  <text-field label="Org ID" v-model="orgFlow.orgId" placeholder="my-org-1"></text-field>
@@ -239,10 +239,10 @@ function buildDashboardHtml(config) {
239
239
  <template #actions><flow-btn @click="orgFlowRotate" :loading="orgFlow.loading" variant="warn">Rotate Key</flow-btn></template>
240
240
  </step-card>
241
241
  <flow-result :result="orgFlow.lastResult"></flow-result>
242
- </template>
242
+ </div>
243
243
 
244
244
  <!-- ▸ DOCUMENT PIPELINE FLOW ────── -->
245
- <template v-if="currentView==='flow-docs'">
245
+ <div v-if="currentView==='flow-docs'">
246
246
  <flow-header title="Document Pipeline" desc="Upload documents, query via RAG, chat with your data." :step="docFlow.step" :steps="docFlow.steps"></flow-header>
247
247
  <step-card v-if="docFlow.step===0" title="Select Organization" subtitle="Which org should own the documents?">
248
248
  <text-field label="Org ID" v-model="docFlow.orgId" placeholder="my-org-1"></text-field>
@@ -292,10 +292,10 @@ function buildDashboardHtml(config) {
292
292
  </div>
293
293
  </step-card>
294
294
  <flow-result :result="docFlow.lastResult"></flow-result>
295
- </template>
295
+ </div>
296
296
 
297
297
  <!-- ▸ CONTENT GENERATION FLOW ───── -->
298
- <template v-if="currentView==='flow-gen'">
298
+ <div v-if="currentView==='flow-gen'">
299
299
  <flow-header title="Content Generation" desc="Generate videos or images with AI, track job progress." :step="genFlow.step" :steps="genFlow.steps"></flow-header>
300
300
  <step-card v-if="genFlow.step===0" title="Select Type" subtitle="What do you want to generate?">
301
301
  <text-field label="Org ID" v-model="genFlow.orgId" placeholder="my-org-1"></text-field>
@@ -339,10 +339,10 @@ function buildDashboardHtml(config) {
339
339
  </template>
340
340
  </step-card>
341
341
  <flow-result :result="genFlow.lastResult"></flow-result>
342
- </template>
342
+ </div>
343
343
 
344
344
  <!-- ▸ BLUEPRINT→DOCUMENT FLOW ───── -->
345
- <template v-if="currentView==='flow-blueprint'">
345
+ <div v-if="currentView==='flow-blueprint'">
346
346
  <flow-header title="Blueprint → Document" desc="Create blueprints, generate documents, AI-fill sections, manage workflow." :step="bpFlow.step" :steps="bpFlow.steps"></flow-header>
347
347
  <step-card v-if="bpFlow.step===0" title="Create Blueprint" subtitle="Define a reusable document template.">
348
348
  <text-field label="Org ID" v-model="bpFlow.orgId" placeholder="my-org-1"></text-field>
@@ -386,10 +386,10 @@ function buildDashboardHtml(config) {
386
386
  <template #actions><flow-btn @click="bpFlowWorkflow" :loading="bpFlow.loading">Execute Workflow</flow-btn></template>
387
387
  </step-card>
388
388
  <flow-result :result="bpFlow.lastResult"></flow-result>
389
- </template>
389
+ </div>
390
390
 
391
391
  <!-- ▸ AI AGENTS FLOW ────────────── -->
392
- <template v-if="currentView==='flow-agents'">
392
+ <div v-if="currentView==='flow-agents'">
393
393
  <flow-header title="AI Agents" desc="Create custom agents and chat in real-time." :step="agentFlow.step" :steps="agentFlow.steps"></flow-header>
394
394
  <step-card v-if="agentFlow.step===0" title="Create Agent" subtitle="Define a custom AI agent with specific tools and instructions.">
395
395
  <text-field label="Org ID" v-model="agentFlow.orgId" placeholder="my-org-1"></text-field>
@@ -415,10 +415,10 @@ function buildDashboardHtml(config) {
415
415
  </div>
416
416
  </step-card>
417
417
  <flow-result :result="agentFlow.lastResult"></flow-result>
418
- </template>
418
+ </div>
419
419
 
420
420
  <!-- ▸ JIRA INTEGRATION FLOW ─────── -->
421
- <template v-if="currentView==='flow-jira'">
421
+ <div v-if="currentView==='flow-jira'">
422
422
  <flow-header title="Jira Integration" desc="Connect, verify, sync projects and manage your Jira integration." :step="jiraFlow.step" :steps="jiraFlow.steps"></flow-header>
423
423
  <step-card v-if="jiraFlow.step===0" title="Connect Jira" subtitle="Enter your Atlassian credentials to link Jira.">
424
424
  <text-field label="Org ID" v-model="jiraFlow.orgId" placeholder="my-org-1"></text-field>
@@ -447,10 +447,10 @@ function buildDashboardHtml(config) {
447
447
  </template>
448
448
  </step-card>
449
449
  <flow-result :result="jiraFlow.lastResult"></flow-result>
450
- </template>
450
+ </div>
451
451
 
452
452
  <!-- ▸ WEB SCRAPING FLOW ─────────── -->
453
- <template v-if="currentView==='flow-scrape'">
453
+ <div v-if="currentView==='flow-scrape'">
454
454
  <flow-header title="Web Scraping" desc="Submit URLs and monitor scraping progress." :step="scrapeFlow.step" :steps="scrapeFlow.steps"></flow-header>
455
455
  <step-card v-if="scrapeFlow.step===0" title="Submit URLs" subtitle="Enter URLs to scrape (one per line).">
456
456
  <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>
@@ -478,10 +478,10 @@ function buildDashboardHtml(config) {
478
478
  </template>
479
479
  </step-card>
480
480
  <flow-result :result="scrapeFlow.lastResult"></flow-result>
481
- </template>
481
+ </div>
482
482
 
483
483
  <!-- ▸ ANALYTICS & ML FLOW ─────── -->
484
- <template v-if="currentView==='flow-analytics'">
484
+ <div v-if="currentView==='flow-analytics'">
485
485
  <flow-header title="Analytics & ML" desc="Train models, make predictions, run forecasts." :step="mlFlow.step" :steps="mlFlow.steps"></flow-header>
486
486
  <step-card v-if="mlFlow.step===0" title="Train Model" subtitle="Provide training data and configure the model.">
487
487
  <text-field label="Org ID" v-model="mlFlow.orgId" placeholder="my-org-1"></text-field>
@@ -504,10 +504,10 @@ function buildDashboardHtml(config) {
504
504
  <template #actions><flow-btn @click="mlFlowForecast" :loading="mlFlow.loading">Forecast</flow-btn></template>
505
505
  </step-card>
506
506
  <flow-result :result="mlFlow.lastResult"></flow-result>
507
- </template>
507
+ </div>
508
508
 
509
509
  <!-- ▸ AUDIO FLOW ────────────────── -->
510
- <template v-if="currentView==='flow-audio'">
510
+ <div v-if="currentView==='flow-audio'">
511
511
  <flow-header title="Audio Processing" desc="Transcribe audio and synthesize speech." :step="audioFlow.step" :steps="audioFlow.steps"></flow-header>
512
512
  <step-card v-if="audioFlow.step===0" title="Transcribe" subtitle="Convert audio to text.">
513
513
  <text-field label="Org ID" v-model="audioFlow.orgId" placeholder="my-org-1"></text-field>
@@ -521,10 +521,10 @@ function buildDashboardHtml(config) {
521
521
  <template #actions><flow-btn @click="audioFlowSynthesize" :loading="audioFlow.loading">Synthesize</flow-btn></template>
522
522
  </step-card>
523
523
  <flow-result :result="audioFlow.lastResult"></flow-result>
524
- </template>
524
+ </div>
525
525
 
526
526
  <!-- ▸ BILLING & AUDIT ───────────── -->
527
- <template v-if="currentView==='flow-billing'">
527
+ <div v-if="currentView==='flow-billing'">
528
528
  <h1 class="text-2xl font-bold text-white mb-1">Billing & Audit</h1><p class="text-gray-400 text-sm mb-6">View usage, invoices and audit logs.</p>
529
529
  <text-field label="Org ID" v-model="billingFlow.orgId" placeholder="my-org-1"></text-field>
530
530
  <text-field label="Month (optional)" v-model="billingFlow.month" placeholder="2026-03"></text-field>
@@ -548,10 +548,10 @@ function buildDashboardHtml(config) {
548
548
  <div v-else-if="billingFlow.loadingA" class="skeleton h-16 w-full mt-2"></div>
549
549
  </div>
550
550
  </div>
551
- </template>
551
+ </div>
552
552
 
553
553
  <!-- ▸ ADMIN DASHBOARD ───────────── -->
554
- <template v-if="currentView==='flow-admin'">
554
+ <div v-if="currentView==='flow-admin'">
555
555
  <div class="flex items-center gap-3 mb-6">
556
556
  <h1 class="text-2xl font-bold text-white">Admin Dashboard</h1>
557
557
  <flow-btn size="sm" variant="secondary" @click="adminWidgets.forEach(w=>adminFetch(w))"><span class="mdi mdi-refresh mr-1"></span>Refresh All</flow-btn>
@@ -595,7 +595,7 @@ function buildDashboardHtml(config) {
595
595
  </div>
596
596
  </div>
597
597
  </div>
598
- </template>
598
+ </div>
599
599
 
600
600
  </div><!-- /animate-slide-up -->
601
601
  </main>
@@ -1078,7 +1078,7 @@ createApp({
1078
1078
  </div>
1079
1079
  <p class="text-gray-400 text-sm mb-4 ml-8">{{desc}}</p>
1080
1080
  <div class="flex items-center gap-1 mb-2 ml-8">
1081
- <template v-for="(s,i) in steps" :key="i">
1081
+ <div v-for="(s,i) in steps" :key="i" style="display:contents">
1082
1082
  <div class="flex items-center gap-1 cursor-pointer" @click="$emit('jump',i)">
1083
1083
  <div class="w-8 h-8 rounded-full flex items-center justify-center text-xs font-bold transition-all"
1084
1084
  :class="i<step?'bg-green-500 text-white scale-90':i===step?'bg-brand text-white ring-2 ring-brand/30 scale-110':'bg-gray-700 text-gray-500'">
@@ -1087,7 +1087,7 @@ createApp({
1087
1087
  <span class="text-xs hidden sm:inline transition-colors" :class="i===step?'text-white font-semibold':'text-gray-500'">{{s}}</span>
1088
1088
  </div>
1089
1089
  <div v-if="i<steps.length-1" class="flex-1 h-0.5 mx-1 rounded transition-all" :class="i<step?'bg-green-500':'bg-gray-700'"></div>
1090
- </template>
1090
+ </div>
1091
1091
  </div>
1092
1092
  </div>\`})
1093
1093
  .component('step-card',{props:['title','subtitle'],template:\`
@@ -1141,27 +1141,27 @@ createApp({
1141
1141
  </div>\`})
1142
1142
  .component('json-tree',{props:['data','depth'],template:\`
1143
1143
  <div :style="{paddingLeft:(depth*16)+'px'}" class="text-xs font-mono">
1144
- <template v-if="typeof data==='object'&&data!==null">
1144
+ <div v-if="typeof data==='object'&&data!==null">
1145
1145
  <div v-for="(v,k) in data" :key="k" class="py-0.5">
1146
- <template v-if="typeof v==='object'&&v!==null">
1146
+ <div v-if="typeof v==='object'&&v!==null">
1147
1147
  <details :open="depth<2">
1148
1148
  <summary class="cursor-pointer hover:bg-white/5 rounded px-1 -mx-1 transition select-none">
1149
1149
  <span class="jt-key">"{{k}}"</span><span class="text-gray-600">: {{Array.isArray(v)?'['+v.length+']':'{'+Object.keys(v).length+'}'}}</span>
1150
1150
  </summary>
1151
1151
  <json-tree :data="v" :depth="depth+1"></json-tree>
1152
1152
  </details>
1153
- </template>
1154
- <template v-else>
1153
+ </div>
1154
+ <div v-else>
1155
1155
  <div class="hover:bg-white/5 rounded px-1 -mx-1 transition cursor-default">
1156
1156
  <span class="jt-key">"{{k}}"</span><span class="text-gray-600">: </span>
1157
1157
  <span :class="typeof v==='string'?'jt-str':typeof v==='number'?'jt-num':typeof v==='boolean'?'jt-bool':'jt-null'">{{typeof v==='string'?'"'+v+'"':String(v)}}</span>
1158
1158
  </div>
1159
- </template>
1159
+ </div>
1160
1160
  </div>
1161
- </template>
1162
- <template v-else>
1161
+ </div>
1162
+ <div v-else>
1163
1163
  <span :class="typeof data==='string'?'jt-str':typeof data==='number'?'jt-num':typeof data==='boolean'?'jt-bool':'jt-null'">{{typeof data==='string'?'"'+data+'"':String(data)}}</span>
1164
- </template>
1164
+ </div>
1165
1165
  </div>\`})
1166
1166
  .mount('#app');
1167
1167
  <\/script>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai2aim.ai/hivemind-sdk",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "description": "Node.js/TypeScript SDK for the Hivemind API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",