@burdenoff/cli-sdk 2026.1101.1 → 2026.1102.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/dist/{chunk-REBBLQFS.js → chunk-AYNNSLCL.js} +360 -379
- package/dist/modules/auth/index.cjs +31 -31
- package/dist/modules/auth/index.js +1 -1
- package/dist/modules/billing/index.cjs +18 -18
- package/dist/modules/billing/index.js +22 -22
- package/dist/modules/devportal/index.cjs +40 -34
- package/dist/modules/devportal/index.js +49 -43
- package/dist/modules/sandbox/index.cjs +27 -46
- package/dist/modules/sandbox/index.js +1 -1
- package/dist/modules/store/index.cjs +46 -40
- package/dist/modules/store/index.js +45 -39
- package/dist/modules/vibecontrols/index.cjs +332 -332
- package/dist/modules/vibecontrols/index.js +4 -4
- package/package.json +1 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var et=["workspaceEndpoint","globalEndpoint","oidcIssuer","clientId","defaultFormat","verbose","authServiceEndpoint","productOrigin"];var m=class extends Error{exitCode;hint;constructor(i,n){super(i),this.name="CliUserError",this.exitCode=n?.exitCode??1,this.hint=n?.hint;}},R=class extends m{constructor(i,n){super(i,{exitCode:2,hint:n?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},$=class extends Error{cause;constructor(i,n){super(i),this.name="CliInternalError",this.cause=n;}};var nt=null;function
|
|
1
|
+
'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var et=["workspaceEndpoint","globalEndpoint","oidcIssuer","clientId","defaultFormat","verbose","authServiceEndpoint","productOrigin"];var m=class extends Error{exitCode;hint;constructor(i,n){super(i),this.name="CliUserError",this.exitCode=n?.exitCode??1,this.hint=n?.hint;}},R=class extends m{constructor(i,n){super(i,{exitCode:2,hint:n?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},$=class extends Error{cause;constructor(i,n){super(i),this.name="CliInternalError",this.cause=n;}};var nt=null;function ut(p){nt=p;}function E(){if(!nt)throw new $("vibecontrols module helpers used before setHelpersContext was called");return nt}function Oa(){let p=E();if(!p.auth.isAuthenticated())throw new R("Authentication required.",{hint:`Run \`${p.productName} auth login\` to authenticate.`})}async function r(p,i){return Oa(),E().gql.workspace.request(p,i)}function a(p){let i=p instanceof Error?p.message:String(p);throw new m(i)}function d(p,i,n){E().output.formatAndOutput(p,i,n);}function c(p){E().output.printSuccess(p);}function T(p){E().output.printError(p);}function mt(p){E().output.printJson(p);}function b(p){return E().output.formatStatus(p)}function S(p){return E().output.formatDate(p)}function f(p,i){return E().output.truncate(p,i)}function l(p,i){return E().output.confirm(p,i)}function gt(p,i){E().output.printTable(p,i);}function H(){return E().auth.read()}function lt(){return E().config.read()}function ft(p){return E().config.get(p)}function It(p,i){E().config.set(p,i);}function St(){return E().config.path()}var ot=et;var O=`
|
|
2
2
|
id name hostname platform architecture version
|
|
3
3
|
tunnelUrl tunnelStatus apiUrl isActive lastHeartbeat
|
|
4
4
|
workspaceId createdAt updatedAt
|
|
5
|
-
`,
|
|
5
|
+
`,h=`
|
|
6
6
|
id name description path type status agentId parentId
|
|
7
7
|
gitBranch gitRemote tags metadata
|
|
8
8
|
workspaceId archivedAt createdAt updatedAt
|
|
9
|
-
`,
|
|
9
|
+
`,A=`
|
|
10
10
|
id name command workingDirectory type status agentId vibeId
|
|
11
11
|
providerSessionName pid exitCode ttydUrl lastOutput autoStart
|
|
12
12
|
startedAt stoppedAt workspaceId createdAt updatedAt
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
verificationStatus challengeRecordName challengeToken
|
|
45
45
|
verifiedAt lastCheckedAt lastCheckError isPrimary
|
|
46
46
|
dnsTargetHint createdAt updatedAt
|
|
47
|
-
`,
|
|
47
|
+
`,Et=`
|
|
48
48
|
id workspaceId tunnelId shardId agentId status
|
|
49
49
|
tokenFingerprint issuedAt expiresAt connectedAt disconnectedAt
|
|
50
50
|
revokedAt revokedReason clientIp bytesIn bytesOut
|
|
@@ -75,46 +75,46 @@
|
|
|
75
75
|
id siteId revisionNumber status buildDurationMs artifactSizeBytes
|
|
76
76
|
errorMessage publishedAt
|
|
77
77
|
createdAt updatedAt
|
|
78
|
-
`,
|
|
78
|
+
`,Tt=`
|
|
79
79
|
id action resourceType resourceId actorId actorType
|
|
80
80
|
status description ipAddress userAgent requestId
|
|
81
81
|
workspaceId createdAt
|
|
82
82
|
`,Y=`
|
|
83
83
|
id sessionId sharedWithId permission createdBy
|
|
84
84
|
createdAt updatedAt
|
|
85
|
-
`,
|
|
85
|
+
`,bt=`
|
|
86
86
|
id sessionId token permission expiresAt
|
|
87
87
|
createdAt
|
|
88
88
|
`,ht=`
|
|
89
89
|
query VibecontrolsAgents($filter: VibecontrolsAgentFilterInput) {
|
|
90
90
|
vibecontrolsAgents(filter: $filter) { ${O} }
|
|
91
91
|
}
|
|
92
|
-
`,
|
|
92
|
+
`,At=`
|
|
93
93
|
query VibecontrolsAgent($id: ID!) {
|
|
94
94
|
vibecontrolsAgent(id: $id) { ${O} }
|
|
95
95
|
}
|
|
96
|
-
`,
|
|
96
|
+
`,Ct=`
|
|
97
97
|
mutation UpdateVibecontrolsAgent($id: ID!, $input: UpdateVibecontrolsAgentInput!) {
|
|
98
98
|
updateVibecontrolsAgent(id: $id, input: $input) { ${O} }
|
|
99
99
|
}
|
|
100
|
-
`,
|
|
100
|
+
`,Dt=`
|
|
101
101
|
mutation DeleteVibecontrolsAgent($id: ID!) { deleteVibecontrolsAgent(id: $id) }
|
|
102
|
-
|
|
102
|
+
`,Ot=`
|
|
103
103
|
mutation VibecontrolsAgentHeartbeat($id: ID!) {
|
|
104
104
|
vibecontrolsAgentHeartbeat(id: $id) { id isActive lastHeartbeat }
|
|
105
105
|
}
|
|
106
|
-
|
|
106
|
+
`,$t=`
|
|
107
107
|
query ProbeAgentConnection($id: ID!) {
|
|
108
108
|
probeAgentConnection(id: $id) {
|
|
109
109
|
healthOk healthStatus agentVersion hostname platform architecture uptime
|
|
110
110
|
healthError identityOk identityError
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
|
-
`,
|
|
113
|
+
`,vt=`
|
|
114
114
|
query { vibecontrolsAgentHealthProbes {
|
|
115
115
|
agentId agentName healthy tunnelUrl agentVersion uptime errorMessage
|
|
116
116
|
}}
|
|
117
|
-
`,
|
|
117
|
+
`,wt=`
|
|
118
118
|
query AgentPlugins($agentId: ID!) {
|
|
119
119
|
agentPlugins(agentId: $agentId) {
|
|
120
120
|
installed { pluginName packageName version loaded isCore tags }
|
|
@@ -122,11 +122,11 @@
|
|
|
122
122
|
error
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
|
-
`,
|
|
125
|
+
`,kt=`
|
|
126
126
|
mutation InstallAgentPlugin($agentId: ID!, $packageName: String!) {
|
|
127
127
|
installAgentPlugin(agentId: $agentId, packageName: $packageName) { success error }
|
|
128
128
|
}
|
|
129
|
-
`,
|
|
129
|
+
`,_t=`
|
|
130
130
|
mutation RemoveAgentPlugin($agentId: ID!, $packageName: String!) {
|
|
131
131
|
removeAgentPlugin(agentId: $agentId, packageName: $packageName) { success error }
|
|
132
132
|
}
|
|
@@ -134,296 +134,296 @@
|
|
|
134
134
|
mutation RegisterVibecontrolsAgent($input: CreateVibecontrolsAgentInput!) {
|
|
135
135
|
registerVibecontrolsAgent(input: $input) { ${O} }
|
|
136
136
|
}
|
|
137
|
-
`,
|
|
137
|
+
`,Rt=`
|
|
138
138
|
mutation DeactivateVibecontrolsAgent($id: ID!) {
|
|
139
139
|
deactivateVibecontrolsAgent(id: $id) { ${O} }
|
|
140
140
|
}
|
|
141
|
-
`,
|
|
141
|
+
`,Nt=`
|
|
142
142
|
mutation PushAgentGatewayAuth($input: PushAgentGatewayAuthInput!) {
|
|
143
143
|
pushAgentGatewayAuth(input: $input)
|
|
144
144
|
}
|
|
145
|
-
`,
|
|
145
|
+
`,xt=`
|
|
146
146
|
mutation SetupAgentGatewayAuth($input: SetupAgentGatewayAuthInput!) {
|
|
147
147
|
setupAgentGatewayAuth(input: $input)
|
|
148
148
|
}
|
|
149
|
-
`,
|
|
149
|
+
`,Ut=`
|
|
150
150
|
mutation UpdateAgentVersion($agentId: ID!, $version: String!) {
|
|
151
151
|
updateAgentVersion(agentId: $agentId, version: $version) { ${O} }
|
|
152
152
|
}
|
|
153
|
-
`,
|
|
153
|
+
`,Lt=`
|
|
154
154
|
mutation ConnectAgentToTarget($sourceAgentId: ID!, $targetId: ID!, $protocol: String!) {
|
|
155
155
|
connectAgentToTarget(sourceAgentId: $sourceAgentId, targetId: $targetId, protocol: $protocol) { ${it} }
|
|
156
156
|
}
|
|
157
|
-
`,
|
|
157
|
+
`,Pt=`
|
|
158
158
|
mutation DisconnectAgentFromTarget($connectionId: ID!) {
|
|
159
159
|
disconnectAgentFromTarget(connectionId: $connectionId)
|
|
160
160
|
}
|
|
161
|
-
`,
|
|
161
|
+
`,Vt=`
|
|
162
162
|
query AgentGraph($workspaceId: ID!, $rootAgentId: ID) {
|
|
163
163
|
agentGraph(workspaceId: $workspaceId, rootAgentId: $rootAgentId) {
|
|
164
164
|
agents { ${O} }
|
|
165
165
|
connections { ${it} }
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
|
-
`,
|
|
168
|
+
`,Gt=`
|
|
169
169
|
query Vibes($filter: VibeFilterInput, $pagination: PaginationInput) {
|
|
170
170
|
vibes(filter: $filter, pagination: $pagination) {
|
|
171
|
-
items { ${
|
|
171
|
+
items { ${h} } total hasMore
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
|
+
`,qt=`
|
|
175
|
+
query Vibe($id: ID!) { vibe(id: $id) { ${h} } }
|
|
174
176
|
`,Bt=`
|
|
175
|
-
query Vibe($id: ID!) { vibe(id: $id) { ${A} } }
|
|
176
|
-
`,Ft=`
|
|
177
177
|
mutation CreateVibe($input: CreateVibeInput!) {
|
|
178
|
-
createVibe(input: $input) { ${
|
|
178
|
+
createVibe(input: $input) { ${h} }
|
|
179
179
|
}
|
|
180
|
-
`,
|
|
180
|
+
`,Ft=`
|
|
181
181
|
mutation UpdateVibe($id: ID!, $input: UpdateVibeInput!) {
|
|
182
|
-
updateVibe(id: $id, input: $input) { ${
|
|
182
|
+
updateVibe(id: $id, input: $input) { ${h} }
|
|
183
183
|
}
|
|
184
|
-
`,
|
|
185
|
-
mutation ArchiveVibe($id: ID!) { archiveVibe(id: $id) { ${
|
|
184
|
+
`,Mt="mutation DeleteVibe($id: ID!) { deleteVibe(id: $id) }",Ht=`
|
|
185
|
+
mutation ArchiveVibe($id: ID!) { archiveVibe(id: $id) { ${h} } }
|
|
186
|
+
`,Kt=`
|
|
187
|
+
mutation RestoreVibe($id: ID!) { restoreVibe(id: $id) { ${h} } }
|
|
186
188
|
`,Wt=`
|
|
187
|
-
mutation RestoreVibe($id: ID!) { restoreVibe(id: $id) { ${A} } }
|
|
188
|
-
`,jt=`
|
|
189
189
|
query VibeHierarchy($rootId: ID) {
|
|
190
|
-
vibeHierarchy(rootId: $rootId) { ${
|
|
190
|
+
vibeHierarchy(rootId: $rootId) { ${h} }
|
|
191
191
|
}
|
|
192
|
-
`,
|
|
192
|
+
`,jt=`
|
|
193
193
|
query SearchVibes($query: String!, $limit: Int) {
|
|
194
|
-
searchVibes(query: $query, limit: $limit) { ${
|
|
194
|
+
searchVibes(query: $query, limit: $limit) { ${h} }
|
|
195
195
|
}
|
|
196
|
-
`,
|
|
196
|
+
`,Yt=`
|
|
197
197
|
mutation MoveVibe($id: ID!, $newParentId: ID) {
|
|
198
|
-
moveVibe(id: $id, newParentId: $newParentId) { ${
|
|
198
|
+
moveVibe(id: $id, newParentId: $newParentId) { ${h} }
|
|
199
199
|
}
|
|
200
|
-
`,
|
|
200
|
+
`,Jt=`
|
|
201
201
|
mutation UpdateVibeStatus($id: ID!, $status: VibeStatus!) {
|
|
202
|
-
updateVibeStatus(id: $id, status: $status) { ${
|
|
202
|
+
updateVibeStatus(id: $id, status: $status) { ${h} }
|
|
203
203
|
}
|
|
204
|
-
`,
|
|
204
|
+
`,Xt=`
|
|
205
205
|
mutation UpdateVibeGit($id: ID!, $gitBranch: String, $gitRemote: String, $gitStatus: JSON) {
|
|
206
|
-
updateVibeGit(id: $id, gitBranch: $gitBranch, gitRemote: $gitRemote, gitStatus: $gitStatus) { ${
|
|
206
|
+
updateVibeGit(id: $id, gitBranch: $gitBranch, gitRemote: $gitRemote, gitStatus: $gitStatus) { ${h} }
|
|
207
207
|
}
|
|
208
|
-
`,
|
|
208
|
+
`,zt=`
|
|
209
209
|
query Sessions($filter: SessionFilterInput, $pagination: PaginationInput) {
|
|
210
210
|
sessions(filter: $filter, pagination: $pagination) {
|
|
211
|
-
items { ${
|
|
211
|
+
items { ${A} } total hasMore
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
|
+
`,Qt=`
|
|
215
|
+
query Session($id: ID!) { session(id: $id) { ${A} } }
|
|
214
216
|
`,Zt=`
|
|
215
|
-
query Session($id: ID!) { session(id: $id) { ${h} } }
|
|
216
|
-
`,te=`
|
|
217
217
|
mutation CreateSession($input: CreateSessionInput!) {
|
|
218
|
-
createSession(input: $input) { ${
|
|
218
|
+
createSession(input: $input) { ${A} }
|
|
219
219
|
}
|
|
220
|
+
`,te=`
|
|
221
|
+
mutation StartSession($id: ID!) { startSession(id: $id) { ${A} } }
|
|
220
222
|
`,ee=`
|
|
221
|
-
mutation
|
|
223
|
+
mutation StopSession($id: ID!) { stopSession(id: $id) { ${A} } }
|
|
222
224
|
`,ne=`
|
|
223
|
-
mutation
|
|
225
|
+
mutation RestartSession($id: ID!) { restartSession(id: $id) { ${A} } }
|
|
224
226
|
`,oe=`
|
|
225
|
-
mutation RestartSession($id: ID!) { restartSession(id: $id) { ${h} } }
|
|
226
|
-
`,ie=`
|
|
227
227
|
mutation TerminateSession($id: ID!) { terminateSession(id: $id) }
|
|
228
|
-
`,
|
|
228
|
+
`,ie=`
|
|
229
229
|
query SessionOutput($id: ID!, $lines: Int) { sessionOutput(id: $id, lines: $lines) }
|
|
230
|
-
`,
|
|
230
|
+
`,re=`
|
|
231
231
|
mutation SendSessionInput($id: ID!, $input: String!) {
|
|
232
232
|
sendSessionInput(id: $id, input: $input)
|
|
233
233
|
}
|
|
234
|
-
`,
|
|
234
|
+
`,ae=`
|
|
235
235
|
mutation StartSessionTerminal($id: ID!) {
|
|
236
|
-
startSessionTerminal(id: $id) { ${
|
|
236
|
+
startSessionTerminal(id: $id) { ${A} }
|
|
237
237
|
}
|
|
238
|
-
`,
|
|
238
|
+
`,se=`
|
|
239
239
|
mutation StopSessionTerminal($id: ID!) {
|
|
240
|
-
stopSessionTerminal(id: $id) { ${
|
|
240
|
+
stopSessionTerminal(id: $id) { ${A} }
|
|
241
241
|
}
|
|
242
|
-
`,
|
|
242
|
+
`,ce=`
|
|
243
243
|
mutation RestartSessionTerminal($id: ID!) {
|
|
244
|
-
restartSessionTerminal(id: $id) { ${
|
|
244
|
+
restartSessionTerminal(id: $id) { ${A} }
|
|
245
245
|
}
|
|
246
|
-
`,
|
|
246
|
+
`,de=`
|
|
247
247
|
query ActiveSessions($vibeId: ID) {
|
|
248
|
-
activeSessions(vibeId: $vibeId) { ${
|
|
248
|
+
activeSessions(vibeId: $vibeId) { ${A} }
|
|
249
249
|
}
|
|
250
|
-
`,
|
|
250
|
+
`,pe=`
|
|
251
251
|
mutation CheckSessionHealth {
|
|
252
252
|
checkSessionHealth { checked updated errors }
|
|
253
253
|
}
|
|
254
|
-
`,
|
|
254
|
+
`,ue=`
|
|
255
255
|
mutation ShareSession($input: ShareSessionInput!) {
|
|
256
256
|
shareSession(input: $input) { ${Y} }
|
|
257
257
|
}
|
|
258
|
-
`,
|
|
258
|
+
`,me=`
|
|
259
259
|
mutation CreateSessionShareLink($input: CreateSessionShareLinkInput!) {
|
|
260
|
-
createSessionShareLink(input: $input) { ${
|
|
260
|
+
createSessionShareLink(input: $input) { ${bt} }
|
|
261
261
|
}
|
|
262
|
-
`,
|
|
262
|
+
`,ge=`
|
|
263
263
|
mutation RevokeSessionShare($id: ID!) { revokeSessionShare(id: $id) }
|
|
264
|
-
`,
|
|
264
|
+
`,le=`
|
|
265
265
|
mutation RevokeSessionShareLink($id: ID!) { revokeSessionShareLink(id: $id) }
|
|
266
|
-
`,
|
|
266
|
+
`,fe=`
|
|
267
267
|
mutation UpdateSessionShare($id: ID!, $input: UpdateSessionShareInput!) {
|
|
268
268
|
updateSessionShare(id: $id, input: $input) { ${Y} }
|
|
269
269
|
}
|
|
270
|
-
`,
|
|
270
|
+
`,Ie=`
|
|
271
271
|
mutation JoinSharedSession($input: JoinSharedSessionInput!) {
|
|
272
272
|
joinSharedSession(input: $input)
|
|
273
273
|
}
|
|
274
|
-
`,
|
|
274
|
+
`,Se=`
|
|
275
275
|
mutation LeaveSharedSession($sessionId: ID!) { leaveSharedSession(sessionId: $sessionId) }
|
|
276
276
|
`,ye=`
|
|
277
277
|
mutation RequestSessionControl($sessionId: ID!) { requestSessionControl(sessionId: $sessionId) }
|
|
278
|
-
`,
|
|
278
|
+
`,Ee=`
|
|
279
279
|
mutation ReleaseSessionControl($sessionId: ID!) { releaseSessionControl(sessionId: $sessionId) }
|
|
280
|
-
`,
|
|
280
|
+
`,Te=`
|
|
281
281
|
mutation TransferSessionControl($sessionId: ID!, $toUserId: ID!) {
|
|
282
282
|
transferSessionControl(sessionId: $sessionId, toUserId: $toUserId)
|
|
283
283
|
}
|
|
284
|
-
`,
|
|
284
|
+
`,be=`
|
|
285
285
|
query SessionShares($sessionId: ID!) {
|
|
286
286
|
sessionShares(sessionId: $sessionId) { ${Y} }
|
|
287
287
|
}
|
|
288
288
|
`,he=`
|
|
289
289
|
query SessionShareLinks($sessionId: ID!) {
|
|
290
|
-
sessionShareLinks(sessionId: $sessionId) { ${
|
|
290
|
+
sessionShareLinks(sessionId: $sessionId) { ${bt} }
|
|
291
291
|
}
|
|
292
|
-
`,
|
|
292
|
+
`,Ae=`
|
|
293
293
|
query SessionCollaborators($sessionId: ID!) {
|
|
294
294
|
sessionCollaborators(sessionId: $sessionId) { userId hasControl joinedAt }
|
|
295
295
|
}
|
|
296
|
-
`,
|
|
296
|
+
`,Ce=`
|
|
297
297
|
query SessionsSharedWithMe($filter: SessionShareFilterInput, $pagination: PaginationInput) {
|
|
298
298
|
sessionsSharedWithMe(filter: $filter, pagination: $pagination) { ${Y} }
|
|
299
299
|
}
|
|
300
|
-
`,
|
|
300
|
+
`,De=`
|
|
301
301
|
mutation BulkRestartSessions($ids: [ID!]!) {
|
|
302
302
|
bulkRestartSessions(ids: $ids) { succeeded failed }
|
|
303
303
|
}
|
|
304
|
-
|
|
304
|
+
`,Oe=`
|
|
305
305
|
mutation BulkStopSessions($ids: [ID!]!) {
|
|
306
306
|
bulkStopSessions(ids: $ids) { succeeded failed }
|
|
307
307
|
}
|
|
308
|
-
|
|
308
|
+
`,$e=`
|
|
309
309
|
mutation BulkTerminateSessions($ids: [ID!]!) {
|
|
310
310
|
bulkTerminateSessions(ids: $ids) { succeeded failed }
|
|
311
311
|
}
|
|
312
|
-
`,
|
|
312
|
+
`,ve=`
|
|
313
313
|
query Notes($filter: VibecontrolsNoteFilterInput, $pagination: PaginationInput) {
|
|
314
314
|
notes(filter: $filter, pagination: $pagination) {
|
|
315
315
|
items { ${C} } total hasMore
|
|
316
316
|
}
|
|
317
317
|
}
|
|
318
|
-
`,
|
|
318
|
+
`,we=`
|
|
319
319
|
query Note($id: ID!) { note(id: $id) { ${C} } }
|
|
320
|
-
`,
|
|
320
|
+
`,ke=`
|
|
321
321
|
mutation CreateNote($input: CreateVibecontrolsNoteInput!) {
|
|
322
322
|
createNote(input: $input) { ${C} }
|
|
323
323
|
}
|
|
324
|
-
`,
|
|
324
|
+
`,_e=`
|
|
325
325
|
mutation UpdateNote($id: ID!, $input: UpdateVibecontrolsNoteInput!) {
|
|
326
326
|
updateNote(id: $id, input: $input) { ${C} }
|
|
327
327
|
}
|
|
328
|
-
`,
|
|
328
|
+
`,Re="mutation DeleteNote($id: ID!) { deleteNote(id: $id) }",Ne=`
|
|
329
329
|
query SearchNotes($query: String!, $vibeId: ID, $limit: Int) {
|
|
330
330
|
searchNotes(query: $query, vibeId: $vibeId, limit: $limit) { ${C} }
|
|
331
331
|
}
|
|
332
|
-
`,
|
|
332
|
+
`,xe=`
|
|
333
333
|
mutation PinNote($id: ID!) { pinNote(id: $id) { ${C} } }
|
|
334
|
-
`,
|
|
334
|
+
`,Ue=`
|
|
335
335
|
mutation UnpinNote($id: ID!) { unpinNote(id: $id) { ${C} } }
|
|
336
|
-
`,
|
|
336
|
+
`,Le=`
|
|
337
337
|
mutation TagNote($input: TagNoteInput!) {
|
|
338
338
|
tagNote(input: $input) { ${C} }
|
|
339
339
|
}
|
|
340
|
-
`,
|
|
340
|
+
`,Pe=`
|
|
341
341
|
mutation UntagNote($input: UntagNoteInput!) {
|
|
342
342
|
untagNote(input: $input) { ${C} }
|
|
343
343
|
}
|
|
344
|
-
`,
|
|
344
|
+
`,Ve=`
|
|
345
345
|
mutation ReplaceNoteTags($input: ReplaceNoteTagsInput!) {
|
|
346
346
|
replaceNoteTags(input: $input) { ${C} }
|
|
347
347
|
}
|
|
348
|
-
`,
|
|
348
|
+
`,Ge=`
|
|
349
349
|
mutation CreateNoteTag($input: CreateNoteTagInput!) {
|
|
350
350
|
createNoteTag(input: $input) { id name }
|
|
351
351
|
}
|
|
352
|
-
`,
|
|
352
|
+
`,qe=`
|
|
353
353
|
query AvailableNoteTags($query: String, $limit: Int) {
|
|
354
354
|
availableNoteTags(query: $query, limit: $limit) { id name }
|
|
355
355
|
}
|
|
356
|
-
`,
|
|
356
|
+
`,Be=`
|
|
357
357
|
query GetNoteTags($noteId: ID!) { getNoteTags(noteId: $noteId) }
|
|
358
|
-
`,
|
|
358
|
+
`,Fe=`
|
|
359
359
|
query GetRelatedNoteTags($noteId: ID!, $limit: Int) {
|
|
360
360
|
getRelatedNoteTags(noteId: $noteId, limit: $limit) { id name }
|
|
361
361
|
}
|
|
362
|
-
`,
|
|
362
|
+
`,Me=`
|
|
363
363
|
mutation BulkDeleteNotes($ids: [ID!]!) { bulkDeleteNotes(ids: $ids) }
|
|
364
|
-
`,
|
|
364
|
+
`,He=`
|
|
365
365
|
query ConfigurationsByScope($scope: ConfigScope!, $scopeId: ID) {
|
|
366
366
|
configurationsByScope(scope: $scope, scopeId: $scopeId) { ${K} }
|
|
367
367
|
}
|
|
368
|
-
`,
|
|
368
|
+
`,Ke=`
|
|
369
369
|
query Configuration($key: String!, $scope: ConfigScope!, $scopeId: ID) {
|
|
370
370
|
configuration(key: $key, scope: $scope, scopeId: $scopeId) { ${K} }
|
|
371
371
|
}
|
|
372
|
-
`,
|
|
372
|
+
`,We=`
|
|
373
373
|
query ConfigurationValue($key: String!, $scope: ConfigScope!, $scopeId: ID) {
|
|
374
374
|
configurationValue(key: $key, scope: $scope, scopeId: $scopeId)
|
|
375
375
|
}
|
|
376
|
-
`,
|
|
376
|
+
`,je=`
|
|
377
377
|
mutation SetConfiguration($key: String!, $scope: ConfigScope!, $scopeId: ID, $value: JSON!, $isSecret: Boolean) {
|
|
378
378
|
setConfiguration(key: $key, scope: $scope, scopeId: $scopeId, value: $value, isSecret: $isSecret) { ${K} }
|
|
379
379
|
}
|
|
380
|
-
`,
|
|
380
|
+
`,Ye=`
|
|
381
381
|
mutation DeleteConfiguration($key: String!, $scope: ConfigScope!, $scopeId: ID) {
|
|
382
382
|
deleteConfiguration(key: $key, scope: $scope, scopeId: $scopeId)
|
|
383
383
|
}
|
|
384
|
-
`,
|
|
384
|
+
`,Je=`
|
|
385
385
|
mutation BulkSetConfigurations($configurations: [BulkSetConfigurationInput!]!, $scope: ConfigScope!, $scopeId: ID) {
|
|
386
386
|
bulkSetConfigurations(configurations: $configurations, scope: $scope, scopeId: $scopeId) { ${K} }
|
|
387
387
|
}
|
|
388
|
-
`,
|
|
388
|
+
`,Xe=`
|
|
389
389
|
mutation BulkDeleteConfigurations($keys: [String!]!, $scope: ConfigScope!, $scopeId: ID) {
|
|
390
390
|
bulkDeleteConfigurations(keys: $keys, scope: $scope, scopeId: $scopeId)
|
|
391
391
|
}
|
|
392
|
-
`,
|
|
392
|
+
`,ze=`
|
|
393
393
|
query Webhooks($filter: WebhookFilterInput, $pagination: PaginationInput) {
|
|
394
394
|
webhooks(filter: $filter, pagination: $pagination) {
|
|
395
395
|
items { ${v} } total hasMore
|
|
396
396
|
}
|
|
397
397
|
}
|
|
398
|
-
`,
|
|
398
|
+
`,Qe=`
|
|
399
399
|
query Webhook($id: ID!) { webhook(id: $id) { ${v} } }
|
|
400
|
-
`,
|
|
400
|
+
`,Ze=`
|
|
401
401
|
mutation CreateWebhook($input: CreateWebhookInput!) {
|
|
402
402
|
createWebhook(input: $input) { ${v} }
|
|
403
403
|
}
|
|
404
|
-
`,
|
|
404
|
+
`,tn=`
|
|
405
405
|
mutation UpdateWebhook($id: ID!, $input: UpdateWebhookInput!) {
|
|
406
406
|
updateWebhook(id: $id, input: $input) { ${v} }
|
|
407
407
|
}
|
|
408
|
-
`,
|
|
408
|
+
`,en=`
|
|
409
409
|
mutation DeleteWebhook($id: ID!) { deleteWebhook(id: $id) }
|
|
410
|
-
`,
|
|
410
|
+
`,nn=`
|
|
411
411
|
mutation TestWebhook($id: ID!) { testWebhook(id: $id) }
|
|
412
|
-
`,
|
|
412
|
+
`,on=`
|
|
413
413
|
query { activeWebhooks { ${v} } }
|
|
414
|
-
`,
|
|
414
|
+
`,rn=`
|
|
415
415
|
query WebhooksByEvent($event: String!) {
|
|
416
416
|
webhooksByEvent(event: $event) { ${v} }
|
|
417
417
|
}
|
|
418
|
-
`,
|
|
418
|
+
`,an=`
|
|
419
419
|
mutation TriggerWebhook($id: ID!, $payload: JSON) {
|
|
420
420
|
triggerWebhook(id: $id, payload: $payload)
|
|
421
421
|
}
|
|
422
|
-
`,
|
|
422
|
+
`,sn=`
|
|
423
423
|
mutation ResetWebhookFailures($id: ID!) {
|
|
424
424
|
resetWebhookFailures(id: $id) { ${v} }
|
|
425
425
|
}
|
|
426
|
-
`,
|
|
426
|
+
`,cn=`
|
|
427
427
|
query ListTunnels($filter: TunnelFilterInput, $pagination: PaginationInput) {
|
|
428
428
|
tunnels(filter: $filter, pagination: $pagination) {
|
|
429
429
|
items { ${D} }
|
|
@@ -431,42 +431,42 @@
|
|
|
431
431
|
hasMore
|
|
432
432
|
}
|
|
433
433
|
}
|
|
434
|
-
`,
|
|
434
|
+
`,dn=`
|
|
435
435
|
query GetTunnel($id: ID!) {
|
|
436
436
|
tunnel(id: $id) { ${D} }
|
|
437
437
|
}
|
|
438
|
-
`,
|
|
438
|
+
`,pn=`
|
|
439
439
|
query ListTunnelProviders {
|
|
440
440
|
tunnelProviders { ${yt} }
|
|
441
441
|
}
|
|
442
|
-
`,
|
|
442
|
+
`,un=`
|
|
443
443
|
mutation CreateTunnel($input: CreateTunnelInput!) {
|
|
444
444
|
createTunnel(input: $input) { ${D} }
|
|
445
445
|
}
|
|
446
|
-
`,
|
|
446
|
+
`,mn=`
|
|
447
447
|
mutation UpdateTunnel($id: ID!, $input: UpdateTunnelInput!) {
|
|
448
448
|
updateTunnel(id: $id, input: $input) { ${D} }
|
|
449
449
|
}
|
|
450
|
-
`,
|
|
450
|
+
`,gn=`
|
|
451
451
|
mutation DeleteTunnel($id: ID!) {
|
|
452
452
|
deleteTunnel(id: $id)
|
|
453
453
|
}
|
|
454
|
-
`,
|
|
454
|
+
`,ln=`
|
|
455
455
|
mutation StartTunnel($id: ID!) {
|
|
456
456
|
startTunnel(id: $id) { ${D} }
|
|
457
457
|
}
|
|
458
|
-
`,
|
|
458
|
+
`,fn=`
|
|
459
459
|
mutation StopTunnel($id: ID!) {
|
|
460
460
|
stopTunnel(id: $id) { ${D} }
|
|
461
461
|
}
|
|
462
|
-
`,
|
|
462
|
+
`,In=`
|
|
463
463
|
mutation RotateTunnelCredentials($id: ID!) {
|
|
464
464
|
rotateTunnelCredentials(id: $id) { ${D} }
|
|
465
465
|
}
|
|
466
|
-
`,
|
|
466
|
+
`,Sn=`
|
|
467
467
|
mutation IssueTunnelSession($tunnelId: ID!, $ttlSeconds: Int) {
|
|
468
468
|
issueTunnelSession(tunnelId: $tunnelId, ttlSeconds: $ttlSeconds) {
|
|
469
|
-
session { ${
|
|
469
|
+
session { ${Et} }
|
|
470
470
|
token
|
|
471
471
|
agentConfigHint
|
|
472
472
|
}
|
|
@@ -474,20 +474,20 @@
|
|
|
474
474
|
`,yn=`
|
|
475
475
|
query ListTunnelSessions($tunnelId: ID!, $pagination: PaginationInput) {
|
|
476
476
|
tunnelSessions(tunnelId: $tunnelId, pagination: $pagination) {
|
|
477
|
-
items { ${
|
|
477
|
+
items { ${Et} }
|
|
478
478
|
total
|
|
479
479
|
hasMore
|
|
480
480
|
}
|
|
481
481
|
}
|
|
482
|
-
`,
|
|
482
|
+
`,En=`
|
|
483
483
|
mutation RevokeTunnelSession($sessionId: ID!, $reason: String) {
|
|
484
484
|
revokeTunnelSession(sessionId: $sessionId, reason: $reason)
|
|
485
485
|
}
|
|
486
|
-
`,
|
|
486
|
+
`,Tn=`
|
|
487
487
|
mutation ReserveTunnelSubdomain($input: ReserveTunnelSubdomainInput!) {
|
|
488
488
|
reserveTunnelSubdomain(input: $input) { ${P} }
|
|
489
489
|
}
|
|
490
|
-
`,
|
|
490
|
+
`,bn=`
|
|
491
491
|
mutation RegisterCustomTunnelDomain($input: RegisterCustomDomainInput!) {
|
|
492
492
|
registerCustomTunnelDomain(input: $input) { ${P} }
|
|
493
493
|
}
|
|
@@ -497,15 +497,15 @@
|
|
|
497
497
|
${D}
|
|
498
498
|
}
|
|
499
499
|
}
|
|
500
|
-
`,
|
|
500
|
+
`,An=`
|
|
501
501
|
mutation DetachTunnelDomain($tunnelId: ID!, $domainId: ID!) {
|
|
502
502
|
detachTunnelDomain(tunnelId: $tunnelId, domainId: $domainId) { ${D} }
|
|
503
503
|
}
|
|
504
|
-
`,
|
|
504
|
+
`,Cn=`
|
|
505
505
|
mutation VerifyTunnelDomain($domainId: ID!) {
|
|
506
506
|
verifyTunnelDomain(domainId: $domainId) { ${P} }
|
|
507
507
|
}
|
|
508
|
-
`,
|
|
508
|
+
`,Dn=`
|
|
509
509
|
query ListTunnelDomains($tunnelId: ID, $filter: TunnelDomainFilterInput, $pagination: PaginationInput) {
|
|
510
510
|
tunnelDomains(tunnelId: $tunnelId, filter: $filter, pagination: $pagination) {
|
|
511
511
|
items { ${P} }
|
|
@@ -513,32 +513,32 @@
|
|
|
513
513
|
hasMore
|
|
514
514
|
}
|
|
515
515
|
}
|
|
516
|
-
|
|
516
|
+
`,On=`
|
|
517
517
|
query GetTunnelBySlug($slug: String!) {
|
|
518
518
|
tunnelBySlug(slug: $slug) { ${D} }
|
|
519
519
|
}
|
|
520
|
-
|
|
520
|
+
`,$n=`
|
|
521
521
|
query GetTunnelDomain($id: ID!) {
|
|
522
522
|
tunnelDomain(id: $id) { ${P} }
|
|
523
523
|
}
|
|
524
|
-
`,
|
|
524
|
+
`,vn=`
|
|
525
525
|
query GetTunnelProvider($key: TunnelProviderKey!) {
|
|
526
526
|
tunnelProvider(key: $key) { ${yt} }
|
|
527
527
|
}
|
|
528
|
-
`,
|
|
528
|
+
`,wn=`
|
|
529
529
|
query ListTunnelShards($environment: TunnelEnvironment) {
|
|
530
530
|
tunnelShards(environment: $environment) {
|
|
531
531
|
id name providerId environment publicHost controlPort proxyPortRange
|
|
532
532
|
region status capacity currentLoad metadata createdAt updatedAt
|
|
533
533
|
}
|
|
534
534
|
}
|
|
535
|
-
`,
|
|
535
|
+
`,kn=`
|
|
536
536
|
query TunnelUsage($tunnelId: ID!, $from: DateTime!, $to: DateTime!) {
|
|
537
537
|
tunnelUsage(tunnelId: $tunnelId, from: $from, to: $to) {
|
|
538
538
|
tunnelId hourBucket bytesIn bytesOut connections requests
|
|
539
539
|
}
|
|
540
540
|
}
|
|
541
|
-
`,
|
|
541
|
+
`,_n=`
|
|
542
542
|
query TunnelAudit($tunnelId: ID!, $pagination: PaginationInput) {
|
|
543
543
|
tunnelAudit(tunnelId: $tunnelId, pagination: $pagination) {
|
|
544
544
|
items {
|
|
@@ -550,17 +550,17 @@
|
|
|
550
550
|
hasMore
|
|
551
551
|
}
|
|
552
552
|
}
|
|
553
|
-
`,
|
|
553
|
+
`,Rn=`
|
|
554
554
|
mutation DeleteTunnelDomain($domainId: ID!) {
|
|
555
555
|
deleteTunnelDomain(domainId: $domainId)
|
|
556
556
|
}
|
|
557
|
-
`,
|
|
557
|
+
`,Nn=`
|
|
558
558
|
query ProbeAgentTunnel($url: String!, $agentApiKey: String) {
|
|
559
559
|
probeAgentTunnel(url: $url, agentApiKey: $agentApiKey) {
|
|
560
560
|
agentId reachable latencyMs error version tunnelUrl
|
|
561
561
|
}
|
|
562
562
|
}
|
|
563
|
-
`,
|
|
563
|
+
`,xn=`
|
|
564
564
|
mutation AddVibecontrolsAgentFromTunnel($input: AddAgentFromTunnelInput!) {
|
|
565
565
|
addVibecontrolsAgentFromTunnel(input: $input) {
|
|
566
566
|
success
|
|
@@ -571,125 +571,125 @@
|
|
|
571
571
|
agent { id name workspaceId isActive }
|
|
572
572
|
}
|
|
573
573
|
}
|
|
574
|
-
`,
|
|
574
|
+
`,Un=`
|
|
575
575
|
query { uiSession { ${w} } }
|
|
576
|
-
`,
|
|
576
|
+
`,Ln=`
|
|
577
577
|
query UiSessionById($id: ID!) { uiSessionById(id: $id) { ${w} } }
|
|
578
|
-
`,
|
|
578
|
+
`,Pn=`
|
|
579
579
|
mutation { clearUISession }
|
|
580
|
-
`,
|
|
580
|
+
`,Vn=`
|
|
581
581
|
mutation UpdateActiveVibe($vibeId: ID!) {
|
|
582
582
|
updateActiveVibe(vibeId: $vibeId) { ${w} }
|
|
583
583
|
}
|
|
584
|
-
`,
|
|
584
|
+
`,Gn=`
|
|
585
585
|
mutation UpdateActiveSession($sessionId: ID!) {
|
|
586
586
|
updateActiveSession(sessionId: $sessionId) { ${w} }
|
|
587
587
|
}
|
|
588
|
-
`,
|
|
588
|
+
`,qn=`
|
|
589
589
|
mutation AddRecentVibe($vibeId: ID!) {
|
|
590
590
|
addRecentVibe(vibeId: $vibeId) { ${w} }
|
|
591
591
|
}
|
|
592
|
-
`,
|
|
592
|
+
`,Bn=`
|
|
593
593
|
mutation AddRecentSession($sessionId: ID!) {
|
|
594
594
|
addRecentSession(sessionId: $sessionId) { ${w} }
|
|
595
595
|
}
|
|
596
|
-
`,
|
|
596
|
+
`,Fn=`
|
|
597
597
|
query Targets($workspaceId: ID!, $filter: TargetFilterInput, $limit: Int, $offset: Int) {
|
|
598
598
|
targets(workspaceId: $workspaceId, filter: $filter, limit: $limit, offset: $offset) {
|
|
599
599
|
items { ${V} } total hasMore
|
|
600
600
|
}
|
|
601
601
|
}
|
|
602
|
-
`,
|
|
602
|
+
`,Mn=`
|
|
603
603
|
query Target($id: ID!) { target(id: $id) { ${V} } }
|
|
604
|
-
`,
|
|
604
|
+
`,Hn=`
|
|
605
605
|
mutation CreateTarget($workspaceId: ID!, $input: CreateTargetInput!) {
|
|
606
606
|
createTarget(workspaceId: $workspaceId, input: $input) { ${V} }
|
|
607
607
|
}
|
|
608
|
-
`,
|
|
608
|
+
`,Kn=`
|
|
609
609
|
mutation UpdateTarget($id: ID!, $input: UpdateTargetInput!) {
|
|
610
610
|
updateTarget(id: $id, input: $input) { ${V} }
|
|
611
611
|
}
|
|
612
|
-
`,
|
|
612
|
+
`,Wn=`
|
|
613
613
|
mutation DeleteTarget($id: ID!) { deleteTarget(id: $id) }
|
|
614
|
-
`,
|
|
614
|
+
`,jn=`
|
|
615
615
|
mutation TestTarget($id: ID!) {
|
|
616
616
|
testTarget(id: $id) { success error latencyMs }
|
|
617
617
|
}
|
|
618
|
-
`,
|
|
618
|
+
`,Yn=`
|
|
619
619
|
mutation ScanSSHConfig($agentId: ID!, $configPath: String) {
|
|
620
620
|
scanSSHConfig(agentId: $agentId, configPath: $configPath) {
|
|
621
621
|
configPath total hosts { name hostname port user identityFile proxyJump }
|
|
622
622
|
}
|
|
623
623
|
}
|
|
624
|
-
`,
|
|
624
|
+
`,Jn=`
|
|
625
625
|
mutation InstallAgentOnTarget($sourceAgentId: ID!, $targetId: ID!, $agentPort: Int) {
|
|
626
626
|
installAgentOnTarget(sourceAgentId: $sourceAgentId, targetId: $targetId, agentPort: $agentPort) { success error }
|
|
627
627
|
}
|
|
628
|
-
`,
|
|
628
|
+
`,Xn=`
|
|
629
629
|
mutation UninstallAgentFromTarget($targetId: ID!) {
|
|
630
630
|
uninstallAgentFromTarget(targetId: $targetId) { success error }
|
|
631
631
|
}
|
|
632
|
-
`,
|
|
632
|
+
`,zn=`
|
|
633
633
|
mutation StartTerminal($targetId: ID!, $shell: String) {
|
|
634
634
|
startTerminal(targetId: $targetId, shell: $shell) { sessionId ttydUrl }
|
|
635
635
|
}
|
|
636
|
-
`,
|
|
636
|
+
`,Qn=`
|
|
637
637
|
mutation StopTerminal($sessionId: ID!) { stopTerminal(sessionId: $sessionId) }
|
|
638
|
-
`,
|
|
638
|
+
`,Zn=`
|
|
639
639
|
query VibeDecks($filter: VibeDeckFilterInput, $pagination: PaginationInput) {
|
|
640
640
|
vibeDecks(filter: $filter, pagination: $pagination) {
|
|
641
641
|
items { ${k} } total hasMore
|
|
642
642
|
}
|
|
643
643
|
}
|
|
644
|
-
`,
|
|
644
|
+
`,to=`
|
|
645
645
|
query VibeDeck($id: ID!) { vibeDeck(id: $id) { ${k} } }
|
|
646
|
-
`,
|
|
646
|
+
`,eo=`
|
|
647
647
|
query { defaultVibeDeck { ${k} } }
|
|
648
|
-
`,
|
|
648
|
+
`,no=`
|
|
649
649
|
mutation CreateVibeDeck($input: CreateVibeDeckInput!) {
|
|
650
650
|
createVibeDeck(input: $input) { ${k} }
|
|
651
651
|
}
|
|
652
|
-
`,
|
|
652
|
+
`,oo=`
|
|
653
653
|
mutation UpdateVibeDeck($id: ID!, $input: UpdateVibeDeckInput!) {
|
|
654
654
|
updateVibeDeck(id: $id, input: $input) { ${k} }
|
|
655
655
|
}
|
|
656
|
-
`,
|
|
656
|
+
`,io=`
|
|
657
657
|
mutation DuplicateVibeDeck($id: ID!, $name: String) {
|
|
658
658
|
duplicateVibeDeck(id: $id, name: $name) { ${k} }
|
|
659
659
|
}
|
|
660
|
-
`,
|
|
660
|
+
`,ro=`
|
|
661
661
|
mutation DeleteVibeDeck($id: ID!) { deleteVibeDeck(id: $id) }
|
|
662
|
-
`,
|
|
662
|
+
`,ao=`
|
|
663
663
|
mutation SetDefaultVibeDeck($id: ID!) {
|
|
664
664
|
setDefaultVibeDeck(id: $id) { ${k} }
|
|
665
665
|
}
|
|
666
|
-
`,
|
|
666
|
+
`,so=`
|
|
667
667
|
query VibeDeckButtons($filter: VibeDeckButtonFilterInput, $pagination: PaginationInput) {
|
|
668
668
|
vibeDeckButtons(filter: $filter, pagination: $pagination) {
|
|
669
669
|
items { ${N} } total hasMore
|
|
670
670
|
}
|
|
671
671
|
}
|
|
672
|
-
`,
|
|
672
|
+
`,co=`
|
|
673
673
|
query VibeDeckButton($id: ID!) { vibeDeckButton(id: $id) { ${N} } }
|
|
674
|
-
`,
|
|
674
|
+
`,po=`
|
|
675
675
|
mutation CreateVibeDeckButton($input: CreateVibeDeckButtonInput!) {
|
|
676
676
|
createVibeDeckButton(input: $input) { ${N} }
|
|
677
677
|
}
|
|
678
|
-
`,
|
|
678
|
+
`,uo=`
|
|
679
679
|
mutation UpdateVibeDeckButton($id: ID!, $input: UpdateVibeDeckButtonInput!) {
|
|
680
680
|
updateVibeDeckButton(id: $id, input: $input) { ${N} }
|
|
681
681
|
}
|
|
682
|
-
`,
|
|
682
|
+
`,mo=`
|
|
683
683
|
mutation DeleteVibeDeckButton($id: ID!) { deleteVibeDeckButton(id: $id) }
|
|
684
|
-
`,
|
|
684
|
+
`,go=`
|
|
685
685
|
mutation MoveVibeDeckButton($id: ID!, $input: MoveVibeDeckButtonInput!) {
|
|
686
686
|
moveVibeDeckButton(id: $id, input: $input) { ${N} }
|
|
687
687
|
}
|
|
688
|
-
`,
|
|
688
|
+
`,lo=`
|
|
689
689
|
mutation ReorderVibeDeckButtons($vibeDeckId: ID!, $positions: [VibeDeckButtonPositionInput!]!) {
|
|
690
690
|
reorderVibeDeckButtons(vibeDeckId: $vibeDeckId, positions: $positions) { ${N} }
|
|
691
691
|
}
|
|
692
|
-
`,
|
|
692
|
+
`,fo=`
|
|
693
693
|
mutation ExecuteVibeDeckButton($id: ID!, $agentId: ID!) {
|
|
694
694
|
executeVibeDeckButton(id: $id, agentId: $agentId) { success output error }
|
|
695
695
|
}
|
|
@@ -709,25 +709,25 @@
|
|
|
709
709
|
webhookStatusCode errorMessage metadata
|
|
710
710
|
startedAt completedAt durationMs
|
|
711
711
|
createdAt
|
|
712
|
-
`,
|
|
712
|
+
`,Io=`
|
|
713
713
|
query Actions($filter: ActionFilterInput, $pagination: PaginationInput) {
|
|
714
714
|
actions(filter: $filter, pagination: $pagination) {
|
|
715
715
|
items { ${U} } total hasMore
|
|
716
716
|
}
|
|
717
717
|
}
|
|
718
|
-
`,
|
|
718
|
+
`,So=`
|
|
719
719
|
query Action($id: ID!) { action(id: $id) { ${U} } }
|
|
720
720
|
`,yo=`
|
|
721
721
|
mutation CreateAction($input: CreateActionInput!) {
|
|
722
722
|
createAction(input: $input) { ${U} }
|
|
723
723
|
}
|
|
724
|
-
`,
|
|
724
|
+
`,Eo=`
|
|
725
725
|
mutation UpdateAction($id: ID!, $input: UpdateActionInput!) {
|
|
726
726
|
updateAction(id: $id, input: $input) { ${U} }
|
|
727
727
|
}
|
|
728
|
-
`,
|
|
728
|
+
`,To=`
|
|
729
729
|
mutation DeleteAction($id: ID!) { deleteAction(id: $id) }
|
|
730
|
-
`,
|
|
730
|
+
`,bo=`
|
|
731
731
|
mutation DuplicateAction($id: ID!, $name: String) {
|
|
732
732
|
duplicateAction(id: $id, name: $name) { ${U} }
|
|
733
733
|
}
|
|
@@ -735,138 +735,138 @@
|
|
|
735
735
|
mutation ExecuteAction($id: ID!, $input: ExecuteActionInput) {
|
|
736
736
|
executeAction(id: $id, input: $input) { ${J} }
|
|
737
737
|
}
|
|
738
|
-
`,
|
|
738
|
+
`,Ao=`
|
|
739
739
|
mutation InstallActionFromStore($storeItemId: ID!, $version: String, $name: String) {
|
|
740
740
|
installActionFromStore(storeItemId: $storeItemId, version: $version, name: $name) { ${U} }
|
|
741
741
|
}
|
|
742
|
-
`,
|
|
742
|
+
`,Co=`
|
|
743
743
|
mutation CancelActionExecution($id: ID!) {
|
|
744
744
|
cancelActionExecution(id: $id) { ${J} }
|
|
745
745
|
}
|
|
746
|
-
`,
|
|
746
|
+
`,Do=`
|
|
747
747
|
query ActionExecutions($filter: ActionExecutionFilterInput, $pagination: PaginationInput) {
|
|
748
748
|
actionExecutions(filter: $filter, pagination: $pagination) {
|
|
749
749
|
items { ${J} } total hasMore
|
|
750
750
|
}
|
|
751
751
|
}
|
|
752
|
-
|
|
752
|
+
`,Oo=`
|
|
753
753
|
query ActionExecution($id: ID!) { actionExecution(id: $id) { ${J} } }
|
|
754
|
-
|
|
754
|
+
`,$o=`
|
|
755
755
|
id name scheduleType status actionId
|
|
756
756
|
cronExpression timezone scheduledAt
|
|
757
757
|
interval intervalUnit startDate endDate
|
|
758
758
|
nextExecutionAt lastExecutionAt
|
|
759
759
|
priority tags
|
|
760
|
-
`,
|
|
760
|
+
`,vo=`
|
|
761
761
|
mutation CreateScheduledJob($workspaceId: ID!, $input: CreateScheduledJobInput!) {
|
|
762
|
-
createScheduledJob(workspaceId: $workspaceId, input: $input) { ${
|
|
762
|
+
createScheduledJob(workspaceId: $workspaceId, input: $input) { ${$o} }
|
|
763
763
|
}
|
|
764
|
-
`,
|
|
764
|
+
`,wo=`
|
|
765
765
|
mutation DeleteScheduledJob($id: ID!) { deleteScheduledJob(id: $id) }
|
|
766
|
-
`,
|
|
766
|
+
`,ko=`
|
|
767
767
|
query ScheduledJobs($workspaceId: ID!, $filter: JobFilterInput, $pagination: SchedulerPaginationInput) {
|
|
768
768
|
scheduledJobs(workspaceId: $workspaceId, filter: $filter, pagination: $pagination) {
|
|
769
|
-
jobs { ${
|
|
769
|
+
jobs { ${$o} }
|
|
770
770
|
total hasMore
|
|
771
771
|
}
|
|
772
772
|
}
|
|
773
|
-
`,
|
|
773
|
+
`,_o=`
|
|
774
774
|
query AiToolEvents($filter: AiToolEventFilterInput, $pagination: PaginationInput) {
|
|
775
775
|
aiToolEvents(filter: $filter, pagination: $pagination) {
|
|
776
776
|
items { ${W} } total hasMore
|
|
777
777
|
}
|
|
778
778
|
}
|
|
779
|
-
`,
|
|
779
|
+
`,Ro=`
|
|
780
780
|
query AiToolEvent($id: ID!) { aiToolEvent(id: $id) { ${W} } }
|
|
781
|
-
`,
|
|
781
|
+
`,No=`
|
|
782
782
|
query RecentAiToolEvents($agentId: ID!, $limit: Int) {
|
|
783
783
|
recentAiToolEvents(agentId: $agentId, limit: $limit) { ${W} }
|
|
784
784
|
}
|
|
785
|
-
`,
|
|
785
|
+
`,xo=`
|
|
786
786
|
mutation CreateAiToolEvent($input: CreateAiToolEventInput!) {
|
|
787
787
|
createAiToolEvent(input: $input) { ${W} }
|
|
788
788
|
}
|
|
789
|
-
`,
|
|
789
|
+
`,Uo=`
|
|
790
790
|
mutation DeleteOldAiToolEvents($beforeDate: DateTime!) {
|
|
791
791
|
deleteOldAiToolEvents(beforeDate: $beforeDate)
|
|
792
792
|
}
|
|
793
|
-
`,
|
|
793
|
+
`,Lo=`
|
|
794
794
|
query DocsSites($filter: VibecontrolsDocsSiteFilterInput, $pagination: PaginationInput) {
|
|
795
795
|
docsSites(filter: $filter, pagination: $pagination) {
|
|
796
796
|
items { ${x} } total hasMore
|
|
797
797
|
}
|
|
798
798
|
}
|
|
799
|
-
`,
|
|
799
|
+
`,Po=`
|
|
800
800
|
query DocsSite($vibeId: ID!) { docsSite(vibeId: $vibeId) { ${x} } }
|
|
801
|
-
`,
|
|
801
|
+
`,Vo=`
|
|
802
802
|
mutation CreateDocsSite($input: CreateVibecontrolsDocsSiteInput!) {
|
|
803
803
|
createDocsSite(input: $input) { ${x} }
|
|
804
804
|
}
|
|
805
|
-
`,
|
|
805
|
+
`,Go=`
|
|
806
806
|
mutation UpdateDocsSite($id: ID!, $input: UpdateVibecontrolsDocsSiteInput!) {
|
|
807
807
|
updateDocsSite(id: $id, input: $input) { ${x} }
|
|
808
808
|
}
|
|
809
|
-
`,
|
|
809
|
+
`,qo=`
|
|
810
810
|
mutation UpdateDocsSiteVisibility($id: ID!, $visibility: VibecontrolsDocsSiteVisibility!) {
|
|
811
811
|
updateDocsSiteVisibility(id: $id, visibility: $visibility) { ${x} }
|
|
812
812
|
}
|
|
813
|
-
`,
|
|
813
|
+
`,Bo=`
|
|
814
814
|
mutation DeleteDocsSite($id: ID!) { deleteDocsSite(id: $id) }
|
|
815
|
-
`,
|
|
815
|
+
`,Fo=`
|
|
816
816
|
query DocsPages($siteId: ID!, $filter: VibecontrolsDocsPageFilterInput) {
|
|
817
817
|
docsPages(siteId: $siteId, filter: $filter) { ${G} }
|
|
818
818
|
}
|
|
819
|
-
`,
|
|
819
|
+
`,Mo=`
|
|
820
820
|
query DocsPage($id: ID!) { docsPage(id: $id) { ${G} } }
|
|
821
|
-
`,
|
|
821
|
+
`,Ho=`
|
|
822
822
|
mutation CreateDocsPage($input: CreateVibecontrolsDocsPageInput!) {
|
|
823
823
|
createDocsPage(input: $input) { ${G} }
|
|
824
824
|
}
|
|
825
|
-
`,
|
|
825
|
+
`,Ko=`
|
|
826
826
|
mutation UpdateDocsPage($id: ID!, $input: UpdateVibecontrolsDocsPageInput!) {
|
|
827
827
|
updateDocsPage(id: $id, input: $input) { ${G} }
|
|
828
828
|
}
|
|
829
|
-
`,
|
|
829
|
+
`,Wo=`
|
|
830
830
|
mutation DeleteDocsPage($id: ID!) { deleteDocsPage(id: $id) }
|
|
831
|
-
`,
|
|
831
|
+
`,jo=`
|
|
832
832
|
mutation ReorderDocsPages($siteId: ID!, $input: ReorderVibecontrolsDocsPagesInput!) {
|
|
833
833
|
reorderDocsPages(siteId: $siteId, input: $input) { ${G} }
|
|
834
834
|
}
|
|
835
|
-
`,
|
|
835
|
+
`,Yo=`
|
|
836
836
|
query DocsRevisions($siteId: ID!, $pagination: PaginationInput) {
|
|
837
837
|
docsRevisions(siteId: $siteId, pagination: $pagination) {
|
|
838
838
|
items { ${j} } total hasMore
|
|
839
839
|
}
|
|
840
840
|
}
|
|
841
|
-
`,
|
|
841
|
+
`,Jo=`
|
|
842
842
|
query DocsRevision($id: ID!) { docsRevision(id: $id) { ${j} } }
|
|
843
|
-
`,
|
|
843
|
+
`,Xo=`
|
|
844
844
|
query DocsContent($siteId: ID!, $path: String) { docsContent(siteId: $siteId, path: $path) { html contentType } }
|
|
845
|
-
`,
|
|
845
|
+
`,zo=`
|
|
846
846
|
mutation CompileDocsSite($siteId: ID!, $publish: Boolean) {
|
|
847
847
|
compileDocsSite(siteId: $siteId, publish: $publish) { ${j} }
|
|
848
848
|
}
|
|
849
|
-
`,
|
|
849
|
+
`,Qo=`
|
|
850
850
|
mutation PublishDocsRevision($revisionId: ID!) {
|
|
851
851
|
publishDocsRevision(revisionId: $revisionId) { ${j} }
|
|
852
852
|
}
|
|
853
|
-
`,
|
|
853
|
+
`,Zo=`
|
|
854
854
|
mutation RollbackDocsRevision($siteId: ID!, $revisionId: ID!) {
|
|
855
855
|
rollbackDocsRevision(siteId: $siteId, revisionId: $revisionId) { ${x} }
|
|
856
856
|
}
|
|
857
|
-
`,
|
|
857
|
+
`,ti=`
|
|
858
858
|
mutation GenerateDocsSignedUrl($siteId: ID!) {
|
|
859
859
|
generateDocsSignedUrl(siteId: $siteId) { url expiresAt }
|
|
860
860
|
}
|
|
861
|
-
`,
|
|
861
|
+
`,ei=`
|
|
862
862
|
query VibeAuditLogs($filter: VibeAuditLogFilterInput, $pagination: PaginationInput) {
|
|
863
863
|
vibeAuditLogs(filter: $filter, pagination: $pagination) {
|
|
864
|
-
items { ${
|
|
864
|
+
items { ${Tt} } total hasMore
|
|
865
865
|
}
|
|
866
866
|
}
|
|
867
|
+
`,ni=`
|
|
868
|
+
query VibeAuditLog($id: ID!) { vibeAuditLog(id: $id) { ${Tt} } }
|
|
867
869
|
`,oi=`
|
|
868
|
-
query VibeAuditLog($id: ID!) { vibeAuditLog(id: $id) { ${bt} } }
|
|
869
|
-
`,ii=`
|
|
870
870
|
query VibeAuditLogStats($filter: VibeAuditLogFilterInput) {
|
|
871
871
|
vibeAuditLogStats(filter: $filter) {
|
|
872
872
|
totalLogs
|
|
@@ -875,11 +875,11 @@
|
|
|
875
875
|
logsByStatus { status count }
|
|
876
876
|
}
|
|
877
877
|
}
|
|
878
|
-
`,
|
|
878
|
+
`,ii=`
|
|
879
879
|
mutation DeleteVibeAuditLog($id: ID!, $reason: String) { deleteVibeAuditLog(id: $id, reason: $reason) }
|
|
880
|
-
`,
|
|
880
|
+
`,ri=`
|
|
881
881
|
mutation BulkDeleteVibeAuditLogs($ids: [ID!]!, $reason: String) { bulkDeleteVibeAuditLogs(ids: $ids, reason: $reason) }
|
|
882
|
-
`,
|
|
882
|
+
`,ai=`
|
|
883
883
|
mutation ExportVibeAuditLogs($filter: VibeAuditLogFilterInput, $format: String) {
|
|
884
884
|
exportVibeAuditLogs(filter: $filter, format: $format)
|
|
885
885
|
}
|
|
@@ -920,14 +920,14 @@
|
|
|
920
920
|
fileTree variables componentSnapshot
|
|
921
921
|
cloneCount tags metadata
|
|
922
922
|
createdAt updatedAt
|
|
923
|
-
`,
|
|
923
|
+
`,at=`
|
|
924
924
|
id name description type status value threshold unit
|
|
925
925
|
iframeUrl iframeHeight lastUpdatedAt createdAt updatedAt
|
|
926
|
-
`,
|
|
926
|
+
`,si=`
|
|
927
927
|
id ownerId ownerType overallScore lastEvaluatedAt
|
|
928
|
-
metrics { ${
|
|
928
|
+
metrics { ${at} }
|
|
929
929
|
metadata workspaceId createdAt updatedAt
|
|
930
|
-
`,
|
|
930
|
+
`,ci=`
|
|
931
931
|
query VibecontrolsCatalogs($filter: CatalogFilterInput, $pagination: PaginationInput) {
|
|
932
932
|
vibecontrolsCatalogs(filter: $filter, pagination: $pagination) {
|
|
933
933
|
items { ${z} }
|
|
@@ -935,45 +935,45 @@
|
|
|
935
935
|
hasMore
|
|
936
936
|
}
|
|
937
937
|
}
|
|
938
|
-
`,
|
|
938
|
+
`,di=`
|
|
939
939
|
query VibecontrolsCatalog($id: ID!) {
|
|
940
940
|
vibecontrolsCatalog(id: $id) { ${z} }
|
|
941
941
|
}
|
|
942
|
-
`,
|
|
942
|
+
`,pi=`
|
|
943
943
|
query VibecontrolsCatalogDependencyGraph($catalogId: ID!) {
|
|
944
944
|
vibecontrolsCatalogDependencyGraph(catalogId: $catalogId) {
|
|
945
945
|
nodes { id name type version }
|
|
946
946
|
edges { source target version dependencyType }
|
|
947
947
|
}
|
|
948
948
|
}
|
|
949
|
-
`,
|
|
949
|
+
`,ui=`
|
|
950
950
|
query VibecontrolsCatalogSBOM($catalogId: ID!) {
|
|
951
951
|
vibecontrolsCatalogSBOM(catalogId: $catalogId) {
|
|
952
952
|
format generatedAt totalCount
|
|
953
953
|
components { name version type license }
|
|
954
954
|
}
|
|
955
955
|
}
|
|
956
|
-
`,
|
|
956
|
+
`,mi=`
|
|
957
957
|
mutation CreateVibecontrolsCatalog($input: CreateCatalogInput!) {
|
|
958
958
|
createVibecontrolsCatalog(input: $input) { ${z} }
|
|
959
959
|
}
|
|
960
|
-
`,
|
|
960
|
+
`,gi=`
|
|
961
961
|
mutation UpdateVibecontrolsCatalog($id: ID!, $input: UpdateCatalogInput!) {
|
|
962
962
|
updateVibecontrolsCatalog(id: $id, input: $input) { ${z} }
|
|
963
963
|
}
|
|
964
|
-
`,
|
|
964
|
+
`,li=`
|
|
965
965
|
mutation DeleteVibecontrolsCatalog($id: ID!) { deleteVibecontrolsCatalog(id: $id) }
|
|
966
|
-
`,
|
|
966
|
+
`,fi=`
|
|
967
967
|
mutation AddComponentToVibecontrolsCatalog($catalogId: ID!, $componentId: ID!) {
|
|
968
968
|
addComponentToVibecontrolsCatalog(catalogId: $catalogId, componentId: $componentId) {
|
|
969
969
|
id catalogId componentId addedAt addedBy metadata workspaceId
|
|
970
970
|
}
|
|
971
971
|
}
|
|
972
|
-
`,
|
|
972
|
+
`,Ii=`
|
|
973
973
|
mutation RemoveComponentFromVibecontrolsCatalog($catalogId: ID!, $componentId: ID!) {
|
|
974
974
|
removeComponentFromVibecontrolsCatalog(catalogId: $catalogId, componentId: $componentId)
|
|
975
975
|
}
|
|
976
|
-
`,
|
|
976
|
+
`,Si=`
|
|
977
977
|
mutation AddVibeToVibecontrolsCatalog($catalogId: ID!, $vibeId: ID!) {
|
|
978
978
|
addVibeToVibecontrolsCatalog(catalogId: $catalogId, vibeId: $vibeId) {
|
|
979
979
|
id catalogId vibeId addedAt addedBy metadata workspaceId
|
|
@@ -983,7 +983,7 @@
|
|
|
983
983
|
mutation RemoveVibeFromVibecontrolsCatalog($catalogId: ID!, $vibeId: ID!) {
|
|
984
984
|
removeVibeFromVibecontrolsCatalog(catalogId: $catalogId, vibeId: $vibeId)
|
|
985
985
|
}
|
|
986
|
-
`,
|
|
986
|
+
`,Ei=`
|
|
987
987
|
query VibecontrolsComponents($filter: ComponentFilterInput, $pagination: PaginationInput) {
|
|
988
988
|
vibecontrolsComponents(filter: $filter, pagination: $pagination) {
|
|
989
989
|
items { ${B} }
|
|
@@ -991,11 +991,11 @@
|
|
|
991
991
|
hasMore
|
|
992
992
|
}
|
|
993
993
|
}
|
|
994
|
-
`,
|
|
994
|
+
`,Ti=`
|
|
995
995
|
query VibecontrolsComponent($id: ID!) {
|
|
996
996
|
vibecontrolsComponent(id: $id) { ${B} }
|
|
997
997
|
}
|
|
998
|
-
`,
|
|
998
|
+
`,bi=`
|
|
999
999
|
mutation CreateVibecontrolsComponent($input: CreateComponentInput!) {
|
|
1000
1000
|
createVibecontrolsComponent(input: $input) { ${B} }
|
|
1001
1001
|
}
|
|
@@ -1003,13 +1003,13 @@
|
|
|
1003
1003
|
mutation UpdateVibecontrolsComponent($id: ID!, $input: UpdateComponentInput!) {
|
|
1004
1004
|
updateVibecontrolsComponent(id: $id, input: $input) { ${B} }
|
|
1005
1005
|
}
|
|
1006
|
-
`,
|
|
1006
|
+
`,Ai=`
|
|
1007
1007
|
mutation DeleteVibecontrolsComponent($id: ID!) { deleteVibecontrolsComponent(id: $id) }
|
|
1008
|
-
`,
|
|
1008
|
+
`,Ci=`
|
|
1009
1009
|
mutation ForkVibecontrolsGitHubRepo($input: VibecontrolsForkGitHubRepoInput!) {
|
|
1010
1010
|
forkVibecontrolsGitHubRepo(input: $input) { isForked repoFullName repoUrl }
|
|
1011
1011
|
}
|
|
1012
|
-
`,
|
|
1012
|
+
`,Di=`
|
|
1013
1013
|
mutation PublishVibecontrolsComponentAsTemplate(
|
|
1014
1014
|
$componentId: ID!
|
|
1015
1015
|
$input: VibecontrolsPublishTemplateInput!
|
|
@@ -1018,7 +1018,7 @@
|
|
|
1018
1018
|
${Q}
|
|
1019
1019
|
}
|
|
1020
1020
|
}
|
|
1021
|
-
|
|
1021
|
+
`,Oi=`
|
|
1022
1022
|
query VibecontrolsTemplates(
|
|
1023
1023
|
$filter: VibecontrolsTemplateFilterInput
|
|
1024
1024
|
$pagination: PaginationInput
|
|
@@ -1029,17 +1029,17 @@
|
|
|
1029
1029
|
hasMore
|
|
1030
1030
|
}
|
|
1031
1031
|
}
|
|
1032
|
-
|
|
1032
|
+
`,$i=`
|
|
1033
1033
|
query VibecontrolsTemplate($id: ID!) {
|
|
1034
1034
|
vibecontrolsTemplate(id: $id) { ${Q} }
|
|
1035
1035
|
}
|
|
1036
|
-
`,
|
|
1036
|
+
`,vi=`
|
|
1037
1037
|
mutation UpdateVibecontrolsTemplate($id: ID!, $input: VibecontrolsUpdateTemplateInput!) {
|
|
1038
1038
|
updateVibecontrolsTemplate(id: $id, input: $input) { ${Q} }
|
|
1039
1039
|
}
|
|
1040
|
-
`,
|
|
1040
|
+
`,wi=`
|
|
1041
1041
|
mutation DeleteVibecontrolsTemplate($id: ID!) { deleteVibecontrolsTemplate(id: $id) }
|
|
1042
|
-
`,
|
|
1042
|
+
`,ki=`
|
|
1043
1043
|
mutation InstantiateVibecontrolsTemplate(
|
|
1044
1044
|
$templateId: ID!
|
|
1045
1045
|
$input: VibecontrolsCloneTemplateInput!
|
|
@@ -1048,33 +1048,33 @@
|
|
|
1048
1048
|
${B}
|
|
1049
1049
|
}
|
|
1050
1050
|
}
|
|
1051
|
-
`,
|
|
1051
|
+
`,_i=`
|
|
1052
1052
|
query VibecontrolsScorecard($ownerId: ID!, $ownerType: ScorecardOwnerType!) {
|
|
1053
1053
|
vibecontrolsScorecard(ownerId: $ownerId, ownerType: $ownerType) {
|
|
1054
|
-
${
|
|
1054
|
+
${si}
|
|
1055
1055
|
}
|
|
1056
1056
|
}
|
|
1057
|
-
`,
|
|
1057
|
+
`,Ri=`
|
|
1058
1058
|
mutation UpsertVibecontrolsScorecard($input: UpsertScorecardInput!) {
|
|
1059
|
-
upsertVibecontrolsScorecard(input: $input) { ${
|
|
1059
|
+
upsertVibecontrolsScorecard(input: $input) { ${si} }
|
|
1060
1060
|
}
|
|
1061
|
-
`,
|
|
1061
|
+
`,Ni=`
|
|
1062
1062
|
mutation AddVibecontrolsScorecardMetric($scorecardId: ID!, $input: AddScorecardMetricInput!) {
|
|
1063
1063
|
addVibecontrolsScorecardMetric(scorecardId: $scorecardId, input: $input) {
|
|
1064
|
-
${
|
|
1064
|
+
${at}
|
|
1065
1065
|
}
|
|
1066
1066
|
}
|
|
1067
|
-
`,
|
|
1067
|
+
`,xi=`
|
|
1068
1068
|
mutation UpdateVibecontrolsScorecardMetric($id: ID!, $input: UpdateScorecardMetricInput!) {
|
|
1069
1069
|
updateVibecontrolsScorecardMetric(id: $id, input: $input) {
|
|
1070
|
-
${
|
|
1070
|
+
${at}
|
|
1071
1071
|
}
|
|
1072
1072
|
}
|
|
1073
|
-
`,
|
|
1073
|
+
`,Ui=`
|
|
1074
1074
|
mutation RemoveVibecontrolsScorecardMetric($id: ID!) {
|
|
1075
1075
|
removeVibecontrolsScorecardMetric(id: $id)
|
|
1076
1076
|
}
|
|
1077
|
-
`,
|
|
1077
|
+
`,Li=`
|
|
1078
1078
|
mutation ExportSessions($input: SessionExportInput!) {
|
|
1079
1079
|
exportSessions(input: $input) { count data format generatedAt }
|
|
1080
1080
|
}
|
|
@@ -1083,34 +1083,34 @@
|
|
|
1083
1083
|
tags variables metadata createdBy onBehalfOf updatedBy
|
|
1084
1084
|
workspaceId usageCount lastUsedAt
|
|
1085
1085
|
createdAt updatedAt deletedAt
|
|
1086
|
-
`,
|
|
1086
|
+
`,Pi=`
|
|
1087
1087
|
query AiPrompts($filter: AIPromptFilterInput, $pagination: PaginationInput) {
|
|
1088
1088
|
aiPrompts(filter: $filter, pagination: $pagination) {
|
|
1089
1089
|
items { ${L} }
|
|
1090
1090
|
total hasMore
|
|
1091
1091
|
}
|
|
1092
1092
|
}
|
|
1093
|
-
`,
|
|
1093
|
+
`,Vi=`
|
|
1094
1094
|
query AiPrompt($id: ID!) { aiPrompt(id: $id) { ${L} } }
|
|
1095
|
-
`,
|
|
1095
|
+
`,Gi=`
|
|
1096
1096
|
mutation CreateAIPrompt($input: CreateAIPromptInput!) {
|
|
1097
1097
|
createAIPrompt(input: $input) { ${L} }
|
|
1098
1098
|
}
|
|
1099
|
-
`,
|
|
1099
|
+
`,qi=`
|
|
1100
1100
|
mutation UpdateAIPrompt($id: ID!, $input: UpdateAIPromptInput!) {
|
|
1101
1101
|
updateAIPrompt(id: $id, input: $input) { ${L} }
|
|
1102
1102
|
}
|
|
1103
|
-
`,
|
|
1103
|
+
`,Bi=`
|
|
1104
1104
|
mutation DeleteAIPrompt($id: ID!) { deleteAIPrompt(id: $id) }
|
|
1105
|
-
`,
|
|
1105
|
+
`,Fi=`
|
|
1106
1106
|
mutation DuplicateAIPrompt($id: ID!, $name: String!) {
|
|
1107
1107
|
duplicateAIPrompt(id: $id, name: $name) { ${L} }
|
|
1108
1108
|
}
|
|
1109
|
-
`,
|
|
1109
|
+
`,Mi=`
|
|
1110
1110
|
mutation RenderAIPrompt($id: ID!, $variables: JSON) {
|
|
1111
1111
|
renderAIPrompt(id: $id, variables: $variables) { promptId rendered }
|
|
1112
1112
|
}
|
|
1113
|
-
`,
|
|
1113
|
+
`,Hi=`
|
|
1114
1114
|
mutation RecordAIPromptUsage($id: ID!) {
|
|
1115
1115
|
recordAIPromptUsage(id: $id) { ${L} }
|
|
1116
1116
|
}
|
|
@@ -1118,30 +1118,30 @@
|
|
|
1118
1118
|
id vibeDeckId token shareUrl name permission status visibility
|
|
1119
1119
|
hasPassword allowIframe maxUses useCount expiresAt lastUsedAt
|
|
1120
1120
|
createdBy createdAt
|
|
1121
|
-
`,
|
|
1121
|
+
`,Ki=`
|
|
1122
1122
|
query VibeDeckShareLinks($vibeDeckId: ID!) {
|
|
1123
1123
|
vibeDeckShareLinks(vibeDeckId: $vibeDeckId) { ${Z} }
|
|
1124
1124
|
}
|
|
1125
|
-
`,
|
|
1125
|
+
`,Wi=`
|
|
1126
1126
|
mutation CreateVibeDeckShareLink($input: CreateVibeDeckShareLinkInput!) {
|
|
1127
1127
|
createVibeDeckShareLink(input: $input) { ${Z} }
|
|
1128
1128
|
}
|
|
1129
|
-
`,
|
|
1129
|
+
`,ji=`
|
|
1130
1130
|
mutation UpdateVibeDeckShareLink($id: ID!, $input: UpdateVibeDeckShareLinkInput!) {
|
|
1131
1131
|
updateVibeDeckShareLink(id: $id, input: $input) { ${Z} }
|
|
1132
1132
|
}
|
|
1133
|
-
`,
|
|
1133
|
+
`,Yi=`
|
|
1134
1134
|
mutation RevokeVibeDeckShareLink($id: ID!) {
|
|
1135
1135
|
revokeVibeDeckShareLink(id: $id) { ${Z} }
|
|
1136
1136
|
}
|
|
1137
|
-
`,
|
|
1137
|
+
`,Ji=`
|
|
1138
1138
|
query ValidateVibeDeckShareLink($token: String!) {
|
|
1139
1139
|
validateVibeDeckShareLink(token: $token) {
|
|
1140
1140
|
isValid error requiresPassword permission allowIframe
|
|
1141
1141
|
expiresAt vibeDeckId vibeDeckName ownerName
|
|
1142
1142
|
}
|
|
1143
1143
|
}
|
|
1144
|
-
`,
|
|
1144
|
+
`,Xi=`
|
|
1145
1145
|
query SharedVibeDeck($token: String!, $password: String) {
|
|
1146
1146
|
sharedVibeDeck(token: $token, password: $password) {
|
|
1147
1147
|
id name description icon buttonSize colorTheme gridColumns gridRows
|
|
@@ -1149,13 +1149,13 @@
|
|
|
1149
1149
|
buttons { id label actionType row column rowSpan colSpan icon color category confirmationRequired }
|
|
1150
1150
|
}
|
|
1151
1151
|
}
|
|
1152
|
-
`,
|
|
1152
|
+
`,zi=`
|
|
1153
1153
|
mutation ExecuteSharedVibeDeckButton($token: String!, $buttonId: ID!, $password: String) {
|
|
1154
1154
|
executeSharedVibeDeckButton(token: $token, buttonId: $buttonId, password: $password) {
|
|
1155
1155
|
success output error
|
|
1156
1156
|
}
|
|
1157
1157
|
}
|
|
1158
|
-
|
|
1158
|
+
`,$a="summary { critical high medium low info }",Qi=`
|
|
1159
1159
|
id workspaceId vibeId scanRunId fingerprint
|
|
1160
1160
|
category severity status ruleId title description
|
|
1161
1161
|
file line col cve cwe packageName packageVersion fixedVersion
|
|
@@ -1164,86 +1164,86 @@
|
|
|
1164
1164
|
id workspaceId vibeId agentId createdBy providerName
|
|
1165
1165
|
stage status conclusion policyLevel repoUrl commit
|
|
1166
1166
|
durationMs errorReason startedAt finishedAt createdAt
|
|
1167
|
-
${
|
|
1168
|
-
`,
|
|
1167
|
+
${$a}
|
|
1168
|
+
`,Zi=`
|
|
1169
1169
|
id workspaceId providerName pluginName stage toolVersion
|
|
1170
1170
|
enabled isDefault config createdAt updatedAt
|
|
1171
|
-
`,
|
|
1171
|
+
`,tr=`
|
|
1172
1172
|
id workspaceId vibeId policyLevel enabledStages
|
|
1173
1173
|
pluginAssignments profile configYamlEquivalent createdAt updatedAt
|
|
1174
|
+
`,er=`
|
|
1175
|
+
query SecurityProviders { securityProviders { ${Zi} } }
|
|
1174
1176
|
`,nr=`
|
|
1175
|
-
query SecurityProviders { securityProviders { ${tr} } }
|
|
1176
|
-
`,or=`
|
|
1177
1177
|
query SecurityScan($id: ID!) {
|
|
1178
1178
|
securityScan(id: $id) { ${F} }
|
|
1179
1179
|
}
|
|
1180
|
-
`,
|
|
1180
|
+
`,or=`
|
|
1181
1181
|
query MySecurityScans($filter: SecurityScanFilterInput, $pagination: SecurityPaginationInput) {
|
|
1182
1182
|
mySecurityScans(filter: $filter, pagination: $pagination) {
|
|
1183
1183
|
items { ${F} } total hasMore
|
|
1184
1184
|
}
|
|
1185
1185
|
}
|
|
1186
|
-
`,
|
|
1186
|
+
`,ir=`
|
|
1187
1187
|
query AllSecurityScans($filter: SecurityScanFilterInput, $pagination: SecurityPaginationInput) {
|
|
1188
1188
|
allSecurityScans(filter: $filter, pagination: $pagination) {
|
|
1189
1189
|
items { ${F} } total hasMore
|
|
1190
1190
|
}
|
|
1191
1191
|
}
|
|
1192
|
-
`,
|
|
1192
|
+
`,rr=`
|
|
1193
1193
|
query SecurityFindings($filter: SecurityFindingFilterInput, $pagination: SecurityPaginationInput) {
|
|
1194
1194
|
securityFindings(filter: $filter, pagination: $pagination) {
|
|
1195
|
-
items { ${
|
|
1195
|
+
items { ${Qi} } total hasMore
|
|
1196
1196
|
}
|
|
1197
1197
|
}
|
|
1198
|
-
`,
|
|
1198
|
+
`,ar=`
|
|
1199
1199
|
query SecurityPolicyDecision($scanRunId: ID!) {
|
|
1200
1200
|
securityPolicyDecision(scanRunId: $scanRunId) {
|
|
1201
1201
|
scanRunId allow denyReasons policyVersion evaluatedAt
|
|
1202
1202
|
}
|
|
1203
1203
|
}
|
|
1204
|
-
`,
|
|
1204
|
+
`,sr=`
|
|
1205
1205
|
query SecurityStatus($vibeId: ID!) {
|
|
1206
1206
|
securityStatus(vibeId: $vibeId) {
|
|
1207
1207
|
vibeId policyLevel perStage lastScanAt
|
|
1208
1208
|
totals { critical high medium low info }
|
|
1209
1209
|
}
|
|
1210
1210
|
}
|
|
1211
|
-
`,
|
|
1211
|
+
`,cr=`
|
|
1212
1212
|
query RepositorySecurityConfig($vibeId: ID!) {
|
|
1213
|
-
repositorySecurityConfig(vibeId: $vibeId) { ${
|
|
1213
|
+
repositorySecurityConfig(vibeId: $vibeId) { ${tr} }
|
|
1214
1214
|
}
|
|
1215
|
-
`,
|
|
1215
|
+
`,dr=`
|
|
1216
1216
|
mutation RunSecurityScan($vibeId: ID!, $stage: SecurityStage!) {
|
|
1217
1217
|
runSecurityScan(vibeId: $vibeId, stage: $stage) { ${F} }
|
|
1218
1218
|
}
|
|
1219
|
-
`,
|
|
1219
|
+
`,pr=`
|
|
1220
1220
|
mutation CancelSecurityScan($id: ID!) {
|
|
1221
1221
|
cancelSecurityScan(id: $id) { ${F} }
|
|
1222
1222
|
}
|
|
1223
|
-
`,
|
|
1223
|
+
`,ur=`
|
|
1224
1224
|
mutation CreateSecurityException($input: CreateSecurityExceptionInput!) {
|
|
1225
1225
|
createSecurityException(input: $input) {
|
|
1226
1226
|
id workspaceId vibeId findingId reason compensatingControls
|
|
1227
1227
|
approvedBy expiresAt status createdAt
|
|
1228
1228
|
}
|
|
1229
1229
|
}
|
|
1230
|
-
`,
|
|
1230
|
+
`,mr=`
|
|
1231
1231
|
mutation RevokeSecurityException($id: ID!) { revokeSecurityException(id: $id) }
|
|
1232
|
-
`,
|
|
1232
|
+
`,gr=`
|
|
1233
1233
|
mutation SetSecurityProvider($input: SetSecurityProviderInput!) {
|
|
1234
|
-
setSecurityProvider(input: $input) { ${
|
|
1234
|
+
setSecurityProvider(input: $input) { ${Zi} }
|
|
1235
1235
|
}
|
|
1236
|
-
`,
|
|
1236
|
+
`,lr=`
|
|
1237
1237
|
mutation UpdateSecurityFindingStatus($id: ID!, $status: SecurityFindingStatus!) {
|
|
1238
|
-
updateSecurityFindingStatus(id: $id, status: $status) { ${
|
|
1238
|
+
updateSecurityFindingStatus(id: $id, status: $status) { ${Qi} }
|
|
1239
1239
|
}
|
|
1240
|
-
`,
|
|
1240
|
+
`,fr=`
|
|
1241
1241
|
mutation UpdateRepositorySecurityConfig(
|
|
1242
1242
|
$vibeId: ID!, $input: UpdateRepositorySecurityConfigInput!
|
|
1243
1243
|
) {
|
|
1244
|
-
updateRepositorySecurityConfig(vibeId: $vibeId, input: $input) { ${
|
|
1244
|
+
updateRepositorySecurityConfig(vibeId: $vibeId, input: $input) { ${tr} }
|
|
1245
1245
|
}
|
|
1246
|
-
`,
|
|
1246
|
+
`,Ir=`
|
|
1247
1247
|
mutation PresignSecurityEvidence(
|
|
1248
1248
|
$scanRunId: ID!, $sha256: String!, $sizeBytes: Int!, $type: SecurityEvidenceType!
|
|
1249
1249
|
) {
|
|
@@ -1253,32 +1253,32 @@
|
|
|
1253
1253
|
evidenceId uploadUrl method requiredHeaders s3Bucket s3Key expiresAt
|
|
1254
1254
|
}
|
|
1255
1255
|
}
|
|
1256
|
-
`,
|
|
1256
|
+
`,st=`
|
|
1257
1257
|
id status conclusion workflowName branch event actor url
|
|
1258
1258
|
startedAt completedAt durationSeconds
|
|
1259
|
-
`,
|
|
1260
|
-
recentRuns { ${
|
|
1259
|
+
`,Sr=`
|
|
1260
|
+
recentRuns { ${st} }
|
|
1261
1261
|
workflows { id name path state }
|
|
1262
1262
|
averageDurationSeconds successRate totalRunsLast30Days
|
|
1263
1263
|
`,yr=`
|
|
1264
1264
|
query GetCIStatus($providerId: ID!, $agentId: ID!, $limit: Int) {
|
|
1265
|
-
getCIStatus(providerId: $providerId, agentId: $agentId, limit: $limit) { ${
|
|
1265
|
+
getCIStatus(providerId: $providerId, agentId: $agentId, limit: $limit) { ${Sr} }
|
|
1266
1266
|
}
|
|
1267
|
-
`,
|
|
1267
|
+
`,Er=`
|
|
1268
1268
|
query GetCIPipelineRuns($providerId: ID!, $agentId: ID!, $branch: String, $limit: Int) {
|
|
1269
1269
|
getCIPipelineRuns(providerId: $providerId, agentId: $agentId, branch: $branch, limit: $limit) {
|
|
1270
|
-
${
|
|
1270
|
+
${st}
|
|
1271
1271
|
}
|
|
1272
1272
|
}
|
|
1273
|
-
`,
|
|
1273
|
+
`,Tr=`
|
|
1274
1274
|
query GetCIPipelineDetails($providerId: ID!, $agentId: ID!, $runId: ID!) {
|
|
1275
1275
|
getCIPipelineDetails(providerId: $providerId, agentId: $agentId, runId: $runId) {
|
|
1276
|
-
${
|
|
1276
|
+
${st}
|
|
1277
1277
|
commitSha commitMessage
|
|
1278
1278
|
jobs { id name status conclusion startedAt completedAt durationSeconds }
|
|
1279
1279
|
}
|
|
1280
1280
|
}
|
|
1281
|
-
`,
|
|
1281
|
+
`,br=`
|
|
1282
1282
|
query GetRepoStats($providerId: ID!, $agentId: ID!) {
|
|
1283
1283
|
getRepoStats(providerId: $providerId, agentId: $agentId) {
|
|
1284
1284
|
name fullName owner defaultBranch visibility
|
|
@@ -1288,9 +1288,9 @@
|
|
|
1288
1288
|
}
|
|
1289
1289
|
`,hr=`
|
|
1290
1290
|
mutation RefreshCIStatus($providerId: ID!, $agentId: ID!) {
|
|
1291
|
-
refreshCIStatus(providerId: $providerId, agentId: $agentId) { ${
|
|
1291
|
+
refreshCIStatus(providerId: $providerId, agentId: $agentId) { ${Sr} }
|
|
1292
1292
|
}
|
|
1293
|
-
`,
|
|
1293
|
+
`,Ar=`
|
|
1294
1294
|
mutation RefreshRepoStats($providerId: ID!, $agentId: ID!) {
|
|
1295
1295
|
refreshRepoStats(providerId: $providerId, agentId: $agentId) {
|
|
1296
1296
|
name fullName owner stargazerCount forkCount
|
|
@@ -1299,70 +1299,70 @@
|
|
|
1299
1299
|
`,tt=`
|
|
1300
1300
|
id workspaceId createdBy name providerType repoUrl
|
|
1301
1301
|
isActive vibeId metadata createdAt updatedAt deletedAt
|
|
1302
|
-
`,
|
|
1302
|
+
`,Cr=`
|
|
1303
1303
|
query ListGitopsProviders($filter: GitopsProviderFilterInput, $pagination: PaginationInput) {
|
|
1304
1304
|
listGitopsProviders(filter: $filter, pagination: $pagination) {
|
|
1305
1305
|
items { ${tt} } total hasMore
|
|
1306
1306
|
}
|
|
1307
1307
|
}
|
|
1308
|
-
`,
|
|
1308
|
+
`,Dr=`
|
|
1309
1309
|
query GetGitopsProvider($id: ID!) { getGitopsProvider(id: $id) { ${tt} } }
|
|
1310
|
-
|
|
1310
|
+
`,Or=`
|
|
1311
1311
|
mutation CreateGitopsProvider($input: CreateGitopsProviderInput!) {
|
|
1312
1312
|
createGitopsProvider(input: $input) { ${tt} }
|
|
1313
1313
|
}
|
|
1314
|
-
|
|
1314
|
+
`,$r=`
|
|
1315
1315
|
mutation UpdateGitopsProvider($id: ID!, $input: UpdateGitopsProviderInput!) {
|
|
1316
1316
|
updateGitopsProvider(id: $id, input: $input) { ${tt} }
|
|
1317
1317
|
}
|
|
1318
|
-
`,
|
|
1318
|
+
`,vr=`
|
|
1319
1319
|
mutation DeleteGitopsProvider($id: ID!) { deleteGitopsProvider(id: $id) }
|
|
1320
|
-
`,
|
|
1320
|
+
`,wr=`
|
|
1321
1321
|
theme uiDensity sidebarCollapsed codeFont codeFontSize
|
|
1322
1322
|
preferredIdeCommand defaultAgentForVibe vibeIdeOverrides vibeDetailTabOrder
|
|
1323
|
-
`,
|
|
1323
|
+
`,kr=`
|
|
1324
1324
|
emailDigest digestFrequency agentOffline sessionError vibeStatusChange
|
|
1325
|
-
`,
|
|
1325
|
+
`,_r=`
|
|
1326
1326
|
defaultAgent defaultSessionType defaultVibeType defaultEnvironmentVariables
|
|
1327
1327
|
autoStartSessions autoGitSync agentHeartbeatInterval agentMaxSessions
|
|
1328
1328
|
agentAutoReconnect autoUpdate telemetryEnabled logLevel
|
|
1329
|
-
`,
|
|
1329
|
+
`,Rr="id key value isSecret createdAt updatedAt",Nr=`
|
|
1330
1330
|
query MySettings {
|
|
1331
1331
|
mySettings {
|
|
1332
|
-
preferences { ${
|
|
1333
|
-
notifications { ${
|
|
1334
|
-
workspaceDefaults { ${
|
|
1332
|
+
preferences { ${wr} }
|
|
1333
|
+
notifications { ${kr} }
|
|
1334
|
+
workspaceDefaults { ${_r} }
|
|
1335
1335
|
profile { displayName avatar bio language timezone }
|
|
1336
1336
|
security { mfaEnabled sessionTimeout activeSessions }
|
|
1337
1337
|
}
|
|
1338
1338
|
}
|
|
1339
|
-
`,
|
|
1339
|
+
`,xr=`
|
|
1340
1340
|
query MySettingsByCategory($category: SettingsCategory!) {
|
|
1341
1341
|
mySettingsByCategory(category: $category)
|
|
1342
1342
|
}
|
|
1343
|
+
`,Ur=`
|
|
1344
|
+
query ListSettingsSecrets { listSettingsSecrets { ${Rr} } }
|
|
1343
1345
|
`,Lr=`
|
|
1344
|
-
query ListSettingsSecrets { listSettingsSecrets { ${Nr} } }
|
|
1345
|
-
`,Pr=`
|
|
1346
1346
|
mutation SetSettingsSecret($input: SetSettingsSecretInput!) {
|
|
1347
|
-
setSettingsSecret(input: $input) { ${
|
|
1347
|
+
setSettingsSecret(input: $input) { ${Rr} }
|
|
1348
1348
|
}
|
|
1349
|
-
`,
|
|
1349
|
+
`,Pr=`
|
|
1350
1350
|
mutation DeleteSettingsSecret($key: String!) { deleteSettingsSecret(key: $key) }
|
|
1351
|
-
`,
|
|
1351
|
+
`,Vr=`
|
|
1352
1352
|
mutation ResetSettings($category: SettingsCategory!) { resetSettings(category: $category) }
|
|
1353
|
-
`,
|
|
1353
|
+
`,Gr=`
|
|
1354
1354
|
mutation UpdatePreferences($input: UpdatePreferencesInput!) {
|
|
1355
|
-
updatePreferences(input: $input) { ${
|
|
1355
|
+
updatePreferences(input: $input) { ${wr} }
|
|
1356
1356
|
}
|
|
1357
|
-
`,
|
|
1357
|
+
`,qr=`
|
|
1358
1358
|
mutation UpdateNotificationPreferences($input: UpdateNotificationPreferencesInput!) {
|
|
1359
|
-
updateNotificationPreferences(input: $input) { ${
|
|
1359
|
+
updateNotificationPreferences(input: $input) { ${kr} }
|
|
1360
1360
|
}
|
|
1361
|
-
`,
|
|
1361
|
+
`,Br=`
|
|
1362
1362
|
mutation UpdateWorkspaceDefaults($input: UpdateWorkspaceDefaultsInput!) {
|
|
1363
|
-
updateWorkspaceDefaults(input: $input) { ${
|
|
1363
|
+
updateWorkspaceDefaults(input: $input) { ${_r} }
|
|
1364
1364
|
}
|
|
1365
|
-
`,
|
|
1365
|
+
`,Fr=`
|
|
1366
1366
|
mutation VibecontrolsResolveIntegrationToken($connectionId: ID!) {
|
|
1367
1367
|
vibecontrolsResolveIntegrationToken(connectionId: $connectionId) {
|
|
1368
1368
|
success connectionStatus wasRefreshed error
|
|
@@ -1371,9 +1371,9 @@
|
|
|
1371
1371
|
}
|
|
1372
1372
|
}
|
|
1373
1373
|
}
|
|
1374
|
-
`;function Hr(p){let i=p.command("agents").description("Agent management");i.command("list").description("List agents").option("--active","Only active agents").option("--platform <p>","Filter by platform").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.active&&(t.isActive=!0),n.platform&&(t.platform=n.platform);let e=await r(ht,{filter:Object.keys(t).length?t:void 0});d(n,e.vibecontrolsAgents,{headers:["ID","Name","Hostname","Platform","Status","Last Heartbeat"],rows:e.vibecontrolsAgents.map(o=>[f(o.id,12),o.name,o.hostname,o.platform,b(o.isActive?"ACTIVE":"INACTIVE"),S(o.lastHeartbeat)])});}catch(t){a(t);}}),i.command("get").description("Get agent by ID").argument("<id>","Agent ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Ct,{id:n});if(!e.vibecontrolsAgent)throw new m("Agent not found");d(t,e.vibecontrolsAgent);}catch(e){a(e);}}),i.command("create").description("Create agent").requiredOption("--name <n>","Name").requiredOption("--hostname <h>","Hostname").requiredOption("--platform <p>","Platform").requiredOption("--arch <a>","Architecture").requiredOption("--agent-version <v>","Agent version").option("--tunnel-url <u>","Tunnel URL").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(rt,{input:{name:n.name,hostname:n.hostname,platform:n.platform,architecture:n.arch,version:n.agentVersion,tunnelUrl:n.tunnelUrl}});c("Agent created"),d(n,t.registerVibecontrolsAgent);}catch(t){a(t);}}),i.command("update").description("Update agent").argument("<id>","Agent ID").option("--name <n>","Name").option("--tunnel-url <u>","Tunnel URL").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e={};if(t.name&&(e.name=t.name),t.tunnelUrl&&(e.tunnelUrl=t.tunnelUrl),!Object.keys(e).length)throw new m("No updates specified");let o=await r(Dt,{id:n,input:e});c("Agent updated"),d(t,o.updateVibecontrolsAgent);}catch(e){a(e);}}),i.command("delete").description("Delete agent").argument("<id>","Agent ID").option("--force","Skip confirmation").action(async(n,t)=>{try{if(!await l("Delete this agent?",t.force))return;await r(Ot,{id:n}),c("Agent deleted");}catch(e){a(e);}}),i.command("probe").description("Probe agent connectivity").argument("<id>","Agent ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(vt,{id:n});d(t,e.probeAgentConnection);}catch(e){a(e);}}),i.command("health").description("Health check all agents").option("-f, --format <format>","Output format").action(async n=>{try{let e=(await r(wt)).vibecontrolsAgentHealthProbes;d(n,e,{headers:["Agent","Name","Healthy","Version","Uptime"],rows:e.map(o=>[f(o.agentId,12),o.agentName,b(o.healthy?"HEALTHY":"ERROR"),o.agentVersion??"-",o.uptime!=null?Math.round(o.uptime)+"s":"-"])});}catch(t){a(t);}}),i.command("heartbeat").description("Send heartbeat").argument("<id>","Agent ID").action(async n=>{try{await r($t,{id:n}),c("Heartbeat sent");}catch(t){a(t);}}),i.command("plugins").description("List plugins").argument("<id>","Agent ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(kt,{agentId:n});d(t,e.agentPlugins);}catch(e){a(e);}}),i.command("install-plugin").description("Install plugin").argument("<agentId>").argument("<packageName>").action(async(n,t)=>{try{let e=await r(_t,{agentId:n,packageName:t});e.installAgentPlugin.success?c(`Plugin ${t} installed`):T(e.installAgentPlugin.error??"Failed");}catch(e){a(e);}}),i.command("remove-plugin").description("Remove plugin").argument("<agentId>").argument("<packageName>").action(async(n,t)=>{try{let e=await r(Rt,{agentId:n,packageName:t});e.removeAgentPlugin.success?c(`Plugin ${t} removed`):T(e.removeAgentPlugin.error??"Failed");}catch(e){a(e);}}),i.command("register").description("Register a new agent").requiredOption("--hostname <h>","Hostname").requiredOption("--name <n>","Name").option("--platform <p>","Platform").option("--arch <a>","Architecture").option("--agent-version <v>","Agent version").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(rt,{input:{hostname:n.hostname,name:n.name,platform:n.platform,architecture:n.arch,version:n.agentVersion}});c("Agent registered"),d(n,t.registerAgent);}catch(t){a(t);}}),i.command("deactivate").description("Deactivate agent").argument("<id>","Agent ID").action(async n=>{try{await r(Nt,{id:n}),c("Agent deactivated");}catch(t){a(t);}}),i.command("push-gateway-auth").description("Push gateway auth credentials").requiredOption("--agent-id <id>","Agent ID").requiredOption("--client-id <cid>","Client ID").requiredOption("--client-secret <cs>","Client secret").action(async n=>{try{await r(xt,{input:{agentId:n.agentId,clientId:n.clientId,clientSecret:n.clientSecret}}),c("Gateway auth pushed");}catch(t){a(t);}}),i.command("setup-gateway-auth").description("Setup gateway auth for agent").requiredOption("--agent-id <id>","Agent ID").action(async n=>{try{await r(Ut,{input:{agentId:n.agentId}}),c("Gateway auth setup complete");}catch(t){a(t);}}),i.command("update-version").description("Update agent version").argument("<agentId>","Agent ID").argument("<version>","Version").action(async(n,t)=>{try{await r(Lt,{agentId:n,version:t}),c("Agent version updated");}catch(e){a(e);}}),i.command("connect-target").description("Connect agent to target").argument("<sourceAgentId>","Source agent ID").argument("<targetId>","Target ID").requiredOption("--protocol <p>","Protocol").action(async(n,t,e)=>{try{await r(Pt,{sourceAgentId:n,targetId:t,protocol:e.protocol}),c("Agent connected to target");}catch(o){a(o);}}),i.command("disconnect-target").description("Disconnect agent from target").argument("<connectionId>","Connection ID").action(async n=>{try{await r(Vt,{connectionId:n}),c("Agent disconnected from target");}catch(t){a(t);}}),i.command("graph").description("Get agent graph").option("--root-agent-id <id>","Root agent ID").option("-f, --format <format>","Output format").action(async n=>{try{let t=H(),e=await r(Gt,{rootAgentId:n.rootAgentId,workspaceId:t?.workspaceId});d(n,e.agentGraph);}catch(t){a(t);}});}function Kr(p){let i=p.command("vibes").description("Vibe management");i.command("list").description("List vibes").option("--status <s>","Filter by status").option("--type <t>","Filter by type").option("--agent <id>","Filter by agent").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.status&&(t.status=n.status.toUpperCase()),n.type&&(t.type=n.type.toUpperCase()),n.agent&&(t.agentId=n.agent);let o=(await r(qt,{filter:Object.keys(t).length?t:void 0})).vibes.items;d(n,o,{headers:["ID","Name","Type","Status","Path","Created"],rows:o.map(s=>[f(s.id,12),s.name,s.type,b(s.status),f(s.path,30),S(s.createdAt)])});}catch(t){a(t);}}),i.command("get").description("Get vibe by ID").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Bt,{id:n});if(!e.vibe)throw new m("Vibe not found");d(t,e.vibe);}catch(e){a(e);}}),i.command("create").description("Create vibe").requiredOption("--name <n>","Name").requiredOption("--path <p>","Path").requiredOption("--type <t>","Type (PROJECT, REPOSITORY, etc.)").option("--agent <id>","Agent ID").option("--description <d>","Description").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(Ft,{input:{name:n.name,path:n.path,type:n.type.toUpperCase(),agentId:n.agent,description:n.description}});c("Vibe created"),d(n,t.createVibe);}catch(t){a(t);}}),i.command("update").description("Update vibe").argument("<id>").option("--name <n>","Name").option("--description <d>","Description").option("--status <s>","Status").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e={};if(t.name&&(e.name=t.name),t.description&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),!Object.keys(e).length)throw new m("No updates specified");let o=await r(Mt,{id:n,input:e});c("Vibe updated"),d(t,o.updateVibe);}catch(e){a(e);}}),i.command("delete").description("Delete vibe").argument("<id>").option("--force","Skip confirmation").action(async(n,t)=>{try{if(!await l("Delete this vibe?",t.force))return;await r(Ht,{id:n}),c("Vibe deleted");}catch(e){a(e);}}),i.command("archive").description("Archive vibe").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Kt,{id:n});c("Vibe archived"),d(t,e.archiveVibe);}catch(e){a(e);}}),i.command("restore").description("Restore archived vibe").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Wt,{id:n});c("Vibe restored"),d(t,e.restoreVibe);}catch(e){a(e);}}),i.command("hierarchy").description("Get vibe hierarchy").option("--root <id>","Root vibe ID").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(jt,{rootId:n.root});d(n,t.vibeHierarchy);}catch(t){a(t);}}),i.command("search").description("Search vibes").argument("<query>").option("--limit <n>","Max results",parseInt).option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Yt,{query:n,limit:t.limit});d(t,e.searchVibes);}catch(e){a(e);}}),i.command("move").description("Move vibe to new parent").argument("<id>","Vibe ID").option("--parent <parentId>","New parent ID (omit to remove parent)").action(async(n,t)=>{try{let e=await r(Jt,{id:n,newParentId:t.parent||null});c("Vibe moved"),d({},e.moveVibe);}catch(e){a(e);}}),i.command("set-status").description("Set vibe status").argument("<id>","Vibe ID").argument("<status>","New status").action(async(n,t)=>{try{await r(Xt,{id:n,status:t.toUpperCase()}),c("Vibe status updated");}catch(e){a(e);}}),i.command("update-git").description("Update vibe git info").argument("<id>","Vibe ID").option("--branch <b>","Branch").option("--remote <r>","Remote").option("--status <s>","Status").action(async(n,t)=>{try{let e={};t.branch&&(e.branch=t.branch),t.remote&&(e.remote=t.remote),t.status&&(e.status=t.status);let o=await r(zt,{id:n,input:e});c("Vibe git info updated"),d({},o.updateVibeGit);}catch(e){a(e);}});}function Wr(p){let i=p.command("sessions").description("Session management");i.command("list").description("List sessions").option("--status <s>","Filter by status").option("--type <t>","Filter by type").option("--vibe <id>","Filter by vibe").option("--agent <id>","Filter by agent").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.status&&(t.status=n.status.toUpperCase()),n.type&&(t.type=n.type.toUpperCase()),n.vibe&&(t.vibeId=n.vibe),n.agent&&(t.agentId=n.agent);let o=(await r(Qt,{filter:Object.keys(t).length?t:void 0})).sessions.items;d(n,o,{headers:["ID","Name","Type","Status","Agent","Started"],rows:o.map(s=>[f(s.id,12),s.name,s.type,b(s.status),f(s.agentId,12),S(s.startedAt)])});}catch(t){a(t);}}),i.command("get").description("Get session").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Zt,{id:n});if(!e.session)throw new m("Session not found");d(t,e.session);}catch(e){a(e);}}),i.command("create").description("Create session").requiredOption("--name <n>","Name").requiredOption("--agent <id>","Agent ID").requiredOption("--type <t>","Type (TMUX, SSH, TERMINAL, SCRIPT, CUSTOM)").option("--vibe <id>","Vibe ID").option("--command <c>","Command").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(te,{input:{name:n.name,agentId:n.agent,type:n.type.toUpperCase(),vibeId:n.vibe,command:n.command}});c("Session created"),d(n,t.createSession);}catch(t){a(t);}}),i.command("start").description("Start session").argument("<id>").action(async n=>{try{await r(ee,{id:n}),c("Session started");}catch(t){a(t);}}),i.command("stop").description("Stop session").argument("<id>").action(async n=>{try{await r(ne,{id:n}),c("Session stopped");}catch(t){a(t);}}),i.command("restart").description("Restart session").argument("<id>").action(async n=>{try{await r(oe,{id:n}),c("Session restarted");}catch(t){a(t);}}),i.command("terminate").description("Terminate session").argument("<id>").option("--force","Skip confirmation").action(async(n,t)=>{try{if(!await l("Terminate this session?",t.force))return;await r(ie,{id:n}),c("Session terminated");}catch(e){a(e);}}),i.command("output").description("Get session output").argument("<id>").option("--lines <n>","Number of lines",parseInt).option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(re,{id:n,lines:t.lines});e.sessionOutput?console.log(e.sessionOutput):T("No output");}catch(e){a(e);}}),i.command("send-input").description("Send input to session").argument("<id>").argument("<input>").action(async(n,t)=>{try{await r(ae,{id:n,input:t}),c("Input sent");}catch(e){a(e);}}),i.command("start-terminal").description("Start web terminal").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(se,{id:n});c("Terminal started"),d(t,e.startSessionTerminal);}catch(e){a(e);}}),i.command("stop-terminal").description("Stop web terminal").argument("<id>").action(async n=>{try{await r(ce,{id:n}),c("Terminal stopped");}catch(t){a(t);}}),i.command("active").description("List active sessions").option("--vibe <id>","Filter by vibe").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(pe,{vibeId:n.vibe});d(n,t.activeSessions);}catch(t){a(t);}}),i.command("health-check").description("Check health of all sessions").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(ue);c("Health check complete"),d(n,t.checkSessionHealth);}catch(t){a(t);}}),i.command("share").description("Share session with user").argument("<sessionId>","Session ID").requiredOption("--user-id <uid>","User ID").option("--permission <p>","Permission (VIEW/INTERACT)","VIEW").action(async(n,t)=>{try{await r(me,{input:{sessionId:n,sharedWithId:t.userId,permission:t.permission}}),c("Session shared");}catch(e){a(e);}}),i.command("create-share-link").description("Create share link").argument("<sessionId>","Session ID").option("--permission <p>","Permission (VIEW/INTERACT)","VIEW").action(async(n,t)=>{try{let e=await r(ge,{input:{sessionId:n,permission:t.permission}});c("Share link created"),d({},e.createSessionShareLink);}catch(e){a(e);}}),i.command("revoke-share").description("Revoke session share").argument("<id>","Share ID").action(async n=>{try{await r(le,{id:n}),c("Session share revoked");}catch(t){a(t);}}),i.command("revoke-share-link").description("Revoke session share link").argument("<id>","Share link ID").action(async n=>{try{await r(fe,{id:n}),c("Share link revoked");}catch(t){a(t);}}),i.command("update-share").description("Update session share permission").argument("<id>","Share ID").requiredOption("--permission <p>","Permission (VIEW/INTERACT)").action(async(n,t)=>{try{await r(Ie,{id:n,input:{permission:t.permission}}),c("Session share updated");}catch(e){a(e);}}),i.command("join").description("Join shared session").argument("<sessionId>","Session ID").action(async n=>{try{await r(Se,{input:{sessionId:n}}),c("Joined session");}catch(t){a(t);}}),i.command("leave").description("Leave shared session").argument("<sessionId>","Session ID").action(async n=>{try{await r(Ee,{sessionId:n}),c("Left session");}catch(t){a(t);}}),i.command("request-control").description("Request session control").argument("<sessionId>","Session ID").action(async n=>{try{await r(ye,{sessionId:n}),c("Control requested");}catch(t){a(t);}}),i.command("release-control").description("Release session control").argument("<sessionId>","Session ID").action(async n=>{try{await r(Te,{sessionId:n}),c("Control released");}catch(t){a(t);}}),i.command("transfer-control").description("Transfer session control").argument("<sessionId>","Session ID").requiredOption("--to-user <uid>","Target user ID").action(async(n,t)=>{try{await r(be,{sessionId:n,toUserId:t.toUser}),c("Control transferred");}catch(e){a(e);}}),i.command("shares").description("List session shares").argument("<sessionId>","Session ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Ae,{sessionId:n});d(t,e.sessionShares);}catch(e){a(e);}}),i.command("share-links").description("List session share links").argument("<sessionId>","Session ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(he,{sessionId:n});d(t,e.sessionShareLinks);}catch(e){a(e);}}),i.command("collaborators").description("List session collaborators").argument("<sessionId>","Session ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Ce,{sessionId:n});d(t,e.sessionCollaborators);}catch(e){a(e);}}),i.command("shared-with-me").description("List sessions shared with me").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(De);d(n,t.sessionsSharedWithMe);}catch(t){a(t);}}),i.command("restart-terminal").description("Restart session terminal").argument("<id>","Session ID").action(async n=>{try{await r(de,{id:n}),c("Terminal restarted");}catch(t){a(t);}}),i.command("bulk-restart").description("Bulk restart sessions").requiredOption("--ids <ids>","Session IDs (comma-separated)").option("--force","Skip confirmation").action(async n=>{try{await r(Oe,{ids:n.ids.split(",").map(t=>t.trim()),force:n.force}),c("Sessions restarted");}catch(t){a(t);}}),i.command("bulk-stop").description("Bulk stop sessions").requiredOption("--ids <ids>","Session IDs (comma-separated)").option("--force","Skip confirmation").action(async n=>{try{await r($e,{ids:n.ids.split(",").map(t=>t.trim()),force:n.force}),c("Sessions stopped");}catch(t){a(t);}}),i.command("bulk-terminate").description("Bulk terminate sessions").requiredOption("--ids <ids>","Session IDs (comma-separated)").option("--force","Skip confirmation").action(async n=>{try{if(!await l("Terminate these sessions?",n.force))return;await r(ve,{ids:n.ids.split(",").map(t=>t.trim())}),c("Sessions terminated");}catch(t){a(t);}}),i.command("export").description("Export sessions (CSV or JSON)").option("--format <fmt>","Output format: CSV or JSON","JSON").option("--status <s>","Filter by status").option("--type <t>","Filter by type").option("--vibe <id>","Filter by vibe").option("--agent <id>","Filter by agent").action(async n=>{try{let t={};n.status&&(t.status=n.status.toUpperCase()),n.type&&(t.type=n.type.toUpperCase()),n.vibe&&(t.vibeId=n.vibe),n.agent&&(t.agentId=n.agent);let e=(n.format??"JSON").toUpperCase();if(e!=="CSV"&&e!=="JSON")throw new m("--format must be CSV or JSON");let o=await r(Pi,{input:{filter:Object.keys(t).length?t:void 0,format:e}});process.stdout.write(o.exportSessions.data),o.exportSessions.data.endsWith(`
|
|
1374
|
+
`;function Mr(p){let i=p.command("agents").description("Agent management");i.command("list").description("List agents").option("--active","Only active agents").option("--platform <p>","Filter by platform").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.active&&(t.isActive=!0),n.platform&&(t.platform=n.platform);let e=await r(ht,{filter:Object.keys(t).length?t:void 0});d(n,e.vibecontrolsAgents,{headers:["ID","Name","Hostname","Platform","Status","Last Heartbeat"],rows:e.vibecontrolsAgents.map(o=>[f(o.id,12),o.name,o.hostname,o.platform,b(o.isActive?"ACTIVE":"INACTIVE"),S(o.lastHeartbeat)])});}catch(t){a(t);}}),i.command("get").description("Get agent by ID").argument("<id>","Agent ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(At,{id:n});if(!e.vibecontrolsAgent)throw new m("Agent not found");d(t,e.vibecontrolsAgent);}catch(e){a(e);}}),i.command("create").description("Create agent").requiredOption("--name <n>","Name").requiredOption("--hostname <h>","Hostname").requiredOption("--platform <p>","Platform").requiredOption("--arch <a>","Architecture").requiredOption("--agent-version <v>","Agent version").option("--tunnel-url <u>","Tunnel URL").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(rt,{input:{name:n.name,hostname:n.hostname,platform:n.platform,architecture:n.arch,version:n.agentVersion,tunnelUrl:n.tunnelUrl}});c("Agent created"),d(n,t.registerVibecontrolsAgent);}catch(t){a(t);}}),i.command("update").description("Update agent").argument("<id>","Agent ID").option("--name <n>","Name").option("--tunnel-url <u>","Tunnel URL").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e={};if(t.name&&(e.name=t.name),t.tunnelUrl&&(e.tunnelUrl=t.tunnelUrl),!Object.keys(e).length)throw new m("No updates specified");let o=await r(Ct,{id:n,input:e});c("Agent updated"),d(t,o.updateVibecontrolsAgent);}catch(e){a(e);}}),i.command("delete").description("Delete agent").argument("<id>","Agent ID").option("--force","Skip confirmation").action(async(n,t)=>{try{if(!await l("Delete this agent?",t.force))return;await r(Dt,{id:n}),c("Agent deleted");}catch(e){a(e);}}),i.command("probe").description("Probe agent connectivity").argument("<id>","Agent ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r($t,{id:n});d(t,e.probeAgentConnection);}catch(e){a(e);}}),i.command("health").description("Health check all agents").option("-f, --format <format>","Output format").action(async n=>{try{let e=(await r(vt)).vibecontrolsAgentHealthProbes;d(n,e,{headers:["Agent","Name","Healthy","Version","Uptime"],rows:e.map(o=>[f(o.agentId,12),o.agentName,b(o.healthy?"HEALTHY":"ERROR"),o.agentVersion??"-",o.uptime!=null?Math.round(o.uptime)+"s":"-"])});}catch(t){a(t);}}),i.command("heartbeat").description("Send heartbeat").argument("<id>","Agent ID").action(async n=>{try{await r(Ot,{id:n}),c("Heartbeat sent");}catch(t){a(t);}}),i.command("plugins").description("List plugins").argument("<id>","Agent ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(wt,{agentId:n});d(t,e.agentPlugins);}catch(e){a(e);}}),i.command("install-plugin").description("Install plugin").argument("<agentId>").argument("<packageName>").action(async(n,t)=>{try{let e=await r(kt,{agentId:n,packageName:t});e.installAgentPlugin.success?c(`Plugin ${t} installed`):T(e.installAgentPlugin.error??"Failed");}catch(e){a(e);}}),i.command("remove-plugin").description("Remove plugin").argument("<agentId>").argument("<packageName>").action(async(n,t)=>{try{let e=await r(_t,{agentId:n,packageName:t});e.removeAgentPlugin.success?c(`Plugin ${t} removed`):T(e.removeAgentPlugin.error??"Failed");}catch(e){a(e);}}),i.command("register").description("Register a new agent").requiredOption("--hostname <h>","Hostname").requiredOption("--name <n>","Name").option("--platform <p>","Platform").option("--arch <a>","Architecture").option("--agent-version <v>","Agent version").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(rt,{input:{hostname:n.hostname,name:n.name,platform:n.platform,architecture:n.arch,version:n.agentVersion}});c("Agent registered"),d(n,t.registerAgent);}catch(t){a(t);}}),i.command("deactivate").description("Deactivate agent").argument("<id>","Agent ID").action(async n=>{try{await r(Rt,{id:n}),c("Agent deactivated");}catch(t){a(t);}}),i.command("push-gateway-auth").description("Push gateway auth credentials").requiredOption("--agent-id <id>","Agent ID").requiredOption("--client-id <cid>","Client ID").requiredOption("--client-secret <cs>","Client secret").action(async n=>{try{await r(Nt,{input:{agentId:n.agentId,clientId:n.clientId,clientSecret:n.clientSecret}}),c("Gateway auth pushed");}catch(t){a(t);}}),i.command("setup-gateway-auth").description("Setup gateway auth for agent").requiredOption("--agent-id <id>","Agent ID").action(async n=>{try{await r(xt,{input:{agentId:n.agentId}}),c("Gateway auth setup complete");}catch(t){a(t);}}),i.command("update-version").description("Update agent version").argument("<agentId>","Agent ID").argument("<version>","Version").action(async(n,t)=>{try{await r(Ut,{agentId:n,version:t}),c("Agent version updated");}catch(e){a(e);}}),i.command("connect-target").description("Connect agent to target").argument("<sourceAgentId>","Source agent ID").argument("<targetId>","Target ID").requiredOption("--protocol <p>","Protocol").action(async(n,t,e)=>{try{await r(Lt,{sourceAgentId:n,targetId:t,protocol:e.protocol}),c("Agent connected to target");}catch(o){a(o);}}),i.command("disconnect-target").description("Disconnect agent from target").argument("<connectionId>","Connection ID").action(async n=>{try{await r(Pt,{connectionId:n}),c("Agent disconnected from target");}catch(t){a(t);}}),i.command("graph").description("Get agent graph").option("--root-agent-id <id>","Root agent ID").option("-f, --format <format>","Output format").action(async n=>{try{let t=H(),e=await r(Vt,{rootAgentId:n.rootAgentId,workspaceId:t?.workspaceId});d(n,e.agentGraph);}catch(t){a(t);}});}function Hr(p){let i=p.command("vibes").description("Vibe management");i.command("list").description("List vibes").option("--status <s>","Filter by status").option("--type <t>","Filter by type").option("--agent <id>","Filter by agent").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.status&&(t.status=n.status.toUpperCase()),n.type&&(t.type=n.type.toUpperCase()),n.agent&&(t.agentId=n.agent);let o=(await r(Gt,{filter:Object.keys(t).length?t:void 0})).vibes.items;d(n,o,{headers:["ID","Name","Type","Status","Path","Created"],rows:o.map(s=>[f(s.id,12),s.name,s.type,b(s.status),f(s.path,30),S(s.createdAt)])});}catch(t){a(t);}}),i.command("get").description("Get vibe by ID").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(qt,{id:n});if(!e.vibe)throw new m("Vibe not found");d(t,e.vibe);}catch(e){a(e);}}),i.command("create").description("Create vibe").requiredOption("--name <n>","Name").requiredOption("--path <p>","Path").requiredOption("--type <t>","Type (PROJECT, REPOSITORY, etc.)").option("--agent <id>","Agent ID").option("--description <d>","Description").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(Bt,{input:{name:n.name,path:n.path,type:n.type.toUpperCase(),agentId:n.agent,description:n.description}});c("Vibe created"),d(n,t.createVibe);}catch(t){a(t);}}),i.command("update").description("Update vibe").argument("<id>").option("--name <n>","Name").option("--description <d>","Description").option("--status <s>","Status").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e={};if(t.name&&(e.name=t.name),t.description&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),!Object.keys(e).length)throw new m("No updates specified");let o=await r(Ft,{id:n,input:e});c("Vibe updated"),d(t,o.updateVibe);}catch(e){a(e);}}),i.command("delete").description("Delete vibe").argument("<id>").option("--force","Skip confirmation").action(async(n,t)=>{try{if(!await l("Delete this vibe?",t.force))return;await r(Mt,{id:n}),c("Vibe deleted");}catch(e){a(e);}}),i.command("archive").description("Archive vibe").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Ht,{id:n});c("Vibe archived"),d(t,e.archiveVibe);}catch(e){a(e);}}),i.command("restore").description("Restore archived vibe").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Kt,{id:n});c("Vibe restored"),d(t,e.restoreVibe);}catch(e){a(e);}}),i.command("hierarchy").description("Get vibe hierarchy").option("--root <id>","Root vibe ID").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(Wt,{rootId:n.root});d(n,t.vibeHierarchy);}catch(t){a(t);}}),i.command("search").description("Search vibes").argument("<query>").option("--limit <n>","Max results",parseInt).option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(jt,{query:n,limit:t.limit});d(t,e.searchVibes);}catch(e){a(e);}}),i.command("move").description("Move vibe to new parent").argument("<id>","Vibe ID").option("--parent <parentId>","New parent ID (omit to remove parent)").action(async(n,t)=>{try{let e=await r(Yt,{id:n,newParentId:t.parent||null});c("Vibe moved"),d({},e.moveVibe);}catch(e){a(e);}}),i.command("set-status").description("Set vibe status").argument("<id>","Vibe ID").argument("<status>","New status").action(async(n,t)=>{try{await r(Jt,{id:n,status:t.toUpperCase()}),c("Vibe status updated");}catch(e){a(e);}}),i.command("update-git").description("Update vibe git info").argument("<id>","Vibe ID").option("--branch <b>","Branch").option("--remote <r>","Remote").option("--status <s>","Status").action(async(n,t)=>{try{let e={};t.branch&&(e.branch=t.branch),t.remote&&(e.remote=t.remote),t.status&&(e.status=t.status);let o=await r(Xt,{id:n,input:e});c("Vibe git info updated"),d({},o.updateVibeGit);}catch(e){a(e);}});}function Kr(p){let i=p.command("sessions").description("Session management");i.command("list").description("List sessions").option("--status <s>","Filter by status").option("--type <t>","Filter by type").option("--vibe <id>","Filter by vibe").option("--agent <id>","Filter by agent").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.status&&(t.status=n.status.toUpperCase()),n.type&&(t.type=n.type.toUpperCase()),n.vibe&&(t.vibeId=n.vibe),n.agent&&(t.agentId=n.agent);let o=(await r(zt,{filter:Object.keys(t).length?t:void 0})).sessions.items;d(n,o,{headers:["ID","Name","Type","Status","Agent","Started"],rows:o.map(s=>[f(s.id,12),s.name,s.type,b(s.status),f(s.agentId,12),S(s.startedAt)])});}catch(t){a(t);}}),i.command("get").description("Get session").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Qt,{id:n});if(!e.session)throw new m("Session not found");d(t,e.session);}catch(e){a(e);}}),i.command("create").description("Create session").requiredOption("--name <n>","Name").requiredOption("--agent <id>","Agent ID").requiredOption("--type <t>","Type (TMUX, SSH, TERMINAL, SCRIPT, CUSTOM)").option("--vibe <id>","Vibe ID").option("--command <c>","Command").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(Zt,{input:{name:n.name,agentId:n.agent,type:n.type.toUpperCase(),vibeId:n.vibe,command:n.command}});c("Session created"),d(n,t.createSession);}catch(t){a(t);}}),i.command("start").description("Start session").argument("<id>").action(async n=>{try{await r(te,{id:n}),c("Session started");}catch(t){a(t);}}),i.command("stop").description("Stop session").argument("<id>").action(async n=>{try{await r(ee,{id:n}),c("Session stopped");}catch(t){a(t);}}),i.command("restart").description("Restart session").argument("<id>").action(async n=>{try{await r(ne,{id:n}),c("Session restarted");}catch(t){a(t);}}),i.command("terminate").description("Terminate session").argument("<id>").option("--force","Skip confirmation").action(async(n,t)=>{try{if(!await l("Terminate this session?",t.force))return;await r(oe,{id:n}),c("Session terminated");}catch(e){a(e);}}),i.command("output").description("Get session output").argument("<id>").option("--lines <n>","Number of lines",parseInt).option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(ie,{id:n,lines:t.lines});e.sessionOutput?console.log(e.sessionOutput):T("No output");}catch(e){a(e);}}),i.command("send-input").description("Send input to session").argument("<id>").argument("<input>").action(async(n,t)=>{try{await r(re,{id:n,input:t}),c("Input sent");}catch(e){a(e);}}),i.command("start-terminal").description("Start web terminal").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(ae,{id:n});c("Terminal started"),d(t,e.startSessionTerminal);}catch(e){a(e);}}),i.command("stop-terminal").description("Stop web terminal").argument("<id>").action(async n=>{try{await r(se,{id:n}),c("Terminal stopped");}catch(t){a(t);}}),i.command("active").description("List active sessions").option("--vibe <id>","Filter by vibe").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(de,{vibeId:n.vibe});d(n,t.activeSessions);}catch(t){a(t);}}),i.command("health-check").description("Check health of all sessions").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(pe);c("Health check complete"),d(n,t.checkSessionHealth);}catch(t){a(t);}}),i.command("share").description("Share session with user").argument("<sessionId>","Session ID").requiredOption("--user-id <uid>","User ID").option("--permission <p>","Permission (VIEW/INTERACT)","VIEW").action(async(n,t)=>{try{await r(ue,{input:{sessionId:n,sharedWithId:t.userId,permission:t.permission}}),c("Session shared");}catch(e){a(e);}}),i.command("create-share-link").description("Create share link").argument("<sessionId>","Session ID").option("--permission <p>","Permission (VIEW/INTERACT)","VIEW").action(async(n,t)=>{try{let e=await r(me,{input:{sessionId:n,permission:t.permission}});c("Share link created"),d({},e.createSessionShareLink);}catch(e){a(e);}}),i.command("revoke-share").description("Revoke session share").argument("<id>","Share ID").action(async n=>{try{await r(ge,{id:n}),c("Session share revoked");}catch(t){a(t);}}),i.command("revoke-share-link").description("Revoke session share link").argument("<id>","Share link ID").action(async n=>{try{await r(le,{id:n}),c("Share link revoked");}catch(t){a(t);}}),i.command("update-share").description("Update session share permission").argument("<id>","Share ID").requiredOption("--permission <p>","Permission (VIEW/INTERACT)").action(async(n,t)=>{try{await r(fe,{id:n,input:{permission:t.permission}}),c("Session share updated");}catch(e){a(e);}}),i.command("join").description("Join shared session").argument("<sessionId>","Session ID").action(async n=>{try{await r(Ie,{input:{sessionId:n}}),c("Joined session");}catch(t){a(t);}}),i.command("leave").description("Leave shared session").argument("<sessionId>","Session ID").action(async n=>{try{await r(Se,{sessionId:n}),c("Left session");}catch(t){a(t);}}),i.command("request-control").description("Request session control").argument("<sessionId>","Session ID").action(async n=>{try{await r(ye,{sessionId:n}),c("Control requested");}catch(t){a(t);}}),i.command("release-control").description("Release session control").argument("<sessionId>","Session ID").action(async n=>{try{await r(Ee,{sessionId:n}),c("Control released");}catch(t){a(t);}}),i.command("transfer-control").description("Transfer session control").argument("<sessionId>","Session ID").requiredOption("--to-user <uid>","Target user ID").action(async(n,t)=>{try{await r(Te,{sessionId:n,toUserId:t.toUser}),c("Control transferred");}catch(e){a(e);}}),i.command("shares").description("List session shares").argument("<sessionId>","Session ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(be,{sessionId:n});d(t,e.sessionShares);}catch(e){a(e);}}),i.command("share-links").description("List session share links").argument("<sessionId>","Session ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(he,{sessionId:n});d(t,e.sessionShareLinks);}catch(e){a(e);}}),i.command("collaborators").description("List session collaborators").argument("<sessionId>","Session ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Ae,{sessionId:n});d(t,e.sessionCollaborators);}catch(e){a(e);}}),i.command("shared-with-me").description("List sessions shared with me").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(Ce);d(n,t.sessionsSharedWithMe);}catch(t){a(t);}}),i.command("restart-terminal").description("Restart session terminal").argument("<id>","Session ID").action(async n=>{try{await r(ce,{id:n}),c("Terminal restarted");}catch(t){a(t);}}),i.command("bulk-restart").description("Bulk restart sessions").requiredOption("--ids <ids>","Session IDs (comma-separated)").option("--force","Skip confirmation").action(async n=>{try{await r(De,{ids:n.ids.split(",").map(t=>t.trim()),force:n.force}),c("Sessions restarted");}catch(t){a(t);}}),i.command("bulk-stop").description("Bulk stop sessions").requiredOption("--ids <ids>","Session IDs (comma-separated)").option("--force","Skip confirmation").action(async n=>{try{await r(Oe,{ids:n.ids.split(",").map(t=>t.trim()),force:n.force}),c("Sessions stopped");}catch(t){a(t);}}),i.command("bulk-terminate").description("Bulk terminate sessions").requiredOption("--ids <ids>","Session IDs (comma-separated)").option("--force","Skip confirmation").action(async n=>{try{if(!await l("Terminate these sessions?",n.force))return;await r($e,{ids:n.ids.split(",").map(t=>t.trim())}),c("Sessions terminated");}catch(t){a(t);}}),i.command("export").description("Export sessions (CSV or JSON)").option("--format <fmt>","Output format: CSV or JSON","JSON").option("--status <s>","Filter by status").option("--type <t>","Filter by type").option("--vibe <id>","Filter by vibe").option("--agent <id>","Filter by agent").action(async n=>{try{let t={};n.status&&(t.status=n.status.toUpperCase()),n.type&&(t.type=n.type.toUpperCase()),n.vibe&&(t.vibeId=n.vibe),n.agent&&(t.agentId=n.agent);let e=(n.format??"JSON").toUpperCase();if(e!=="CSV"&&e!=="JSON")throw new m("--format must be CSV or JSON");let o=await r(Li,{input:{filter:Object.keys(t).length?t:void 0,format:e}});process.stdout.write(o.exportSessions.data),o.exportSessions.data.endsWith(`
|
|
1375
1375
|
`)||process.stdout.write(`
|
|
1376
|
-
`),c(`Exported ${o.exportSessions.count} sessions (${o.exportSessions.format})`);}catch(t){a(t);}});}function jr(p){let i=p.command("notes").description("Note management");i.command("list").description("List notes").option("--vibe <id>","Filter by vibe").option("--pinned","Show only pinned").option("--tags <tags>","Filter by tags (comma-separated)").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.vibe&&(t.vibeId=n.vibe),n.pinned&&(t.isPinned=!0),n.tags&&(t.tags=n.tags.split(",").map(o=>o.trim()));let e=await r(we,{filter:Object.keys(t).length?t:void 0});d(n,e.notes.items,{headers:["ID","Title","Pinned","Tags","Created"],rows:e.notes.items.map(o=>[f(o.id,12),o.title,o.isPinned?"Yes":"No",(o.tags??[]).join(", "),S(o.createdAt)])});}catch(t){a(t);}}),i.command("get").description("Get note").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(ke,{id:n});if(!e.note)throw new m("Note not found");d(t,e.note);}catch(e){a(e);}}),i.command("create").description("Create note").requiredOption("--title <t>","Title").requiredOption("--content <c>","Content").option("--vibe <id>","Vibe ID").option("--tags <tags>","Tags (comma-separated)").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(_e,{input:{title:n.title,content:n.content,vibeId:n.vibe,tags:n.tags?.split(",").map(e=>e.trim())}});c("Note created"),d(n,t.createNote);}catch(t){a(t);}}),i.command("update").description("Update note").argument("<id>").option("--title <t>","Title").option("--content <c>","Content").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e={};if(t.title&&(e.title=t.title),t.content&&(e.content=t.content),!Object.keys(e).length)throw new m("No updates specified");let o=await r(Re,{id:n,input:e});c("Note updated"),d(t,o.updateNote);}catch(e){a(e);}}),i.command("delete").description("Delete note").argument("<id>").option("--force","Skip confirmation").action(async(n,t)=>{try{if(!await l("Delete this note?",t.force))return;await r(Ne,{id:n}),c("Note deleted");}catch(e){a(e);}}),i.command("search").description("Search notes").argument("<query>").option("--vibe <id>","Scope to vibe").option("--limit <n>","Max results",parseInt).option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(xe,{query:n,vibeId:t.vibe,limit:t.limit});d(t,e.searchNotes);}catch(e){a(e);}}),i.command("pin").description("Pin a note").argument("<id>").action(async n=>{try{await r(Ue,{id:n}),c("Note pinned");}catch(t){a(t);}}),i.command("unpin").description("Unpin a note").argument("<id>").action(async n=>{try{await r(Le,{id:n}),c("Note unpinned");}catch(t){a(t);}}),i.command("tag").description("Tag a note").argument("<noteId>","Note ID").argument("<tag>","Tag").action(async(n,t)=>{try{await r(Pe,{input:{noteId:n,tag:t}}),c("Note tagged");}catch(e){a(e);}}),i.command("untag").description("Remove tag from note").argument("<noteId>","Note ID").argument("<tag>","Tag").action(async(n,t)=>{try{await r(Ve,{input:{noteId:n,tag:t}}),c("Tag removed");}catch(e){a(e);}}),i.command("replace-tags").description("Replace all tags on a note").argument("<noteId>","Note ID").requiredOption("--tags <tags>","Tags (comma-separated)").action(async(n,t)=>{try{await r(Ge,{input:{noteId:n,tags:t.tags.split(",").map(e=>e.trim())}}),c("Tags replaced");}catch(e){a(e);}}),i.command("create-tag").description("Create a note tag").argument("<name>","Tag name").action(async n=>{try{await r(qe,{input:{name:n}}),c("Tag created");}catch(t){a(t);}}),i.command("available-tags").description("List available note tags").option("--query <q>","Search query").option("--limit <n>","Max results",parseInt).option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(Be,{query:n.query,limit:n.limit});d(n,t.availableNoteTags);}catch(t){a(t);}}),i.command("get-tags").description("Get tags for a note").argument("<noteId>","Note ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Fe,{noteId:n});d(t,e.noteTags);}catch(e){a(e);}}),i.command("related-tags").description("Get related tags for a note").argument("<noteId>","Note ID").option("--limit <n>","Max results",parseInt).option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Me,{noteId:n,limit:t.limit});d(t,e.relatedNoteTags);}catch(e){a(e);}}),i.command("bulk-delete").description("Bulk delete notes").requiredOption("--ids <ids>","Note IDs (comma-separated)").option("--force","Skip confirmation").action(async n=>{try{if(!await l("Delete these notes?",n.force))return;await r(He,{ids:n.ids.split(",").map(t=>t.trim())}),c("Notes deleted");}catch(t){a(t);}});}function Yr(p){let i={};return p.limit!==void 0&&(i.limit=Number(p.limit)),p.offset!==void 0&&(i.offset=Number(p.offset)),Object.keys(i).length>0?i:void 0}function Jr(p){let i=p.command("security").description("Security scans, findings, providers, exceptions");i.command("providers").description("List configured security providers").option("-f, --format <format>","Output format").action(async s=>{try{let u=await r(nr);d(s,u.securityProviders);}catch(u){a(u);}}),i.command("set-provider").description("Configure a security provider for a vibe + stage").requiredOption("--vibe-id <id>").requiredOption("--stage <stage>").requiredOption("--provider-key <key>").option("--config <json>","Provider-specific config as JSON").option("-f, --format <format>","Output format").action(async s=>{try{let u={vibeId:s.vibeId,stage:s.stage.toUpperCase(),providerKey:s.providerKey};s.config&&(u.config=JSON.parse(s.config));let g=await r(lr,{input:u});c("Security provider set"),d(s,g.setSecurityProvider);}catch(u){a(u);}});let n=i.command("scans").description("Security scan runs");n.command("list").description("List my (default) or all scans").option("--scope <scope>","mine | all","mine").option("--vibe-id <id>").option("--status <status>").option("--stage <stage>").option("--conclusion <conclusion>").option("--limit <n>").option("--offset <n>").option("-f, --format <format>","Output format").action(async s=>{try{let u={};s.vibeId&&(u.vibeId=s.vibeId),s.status&&(u.status=s.status.toUpperCase()),s.stage&&(u.stage=s.stage.toUpperCase()),s.conclusion&&(u.conclusion=s.conclusion.toUpperCase());let g=s.scope==="all"?rr:ir,M=await r(g,{filter:Object.keys(u).length>0?u:void 0,pagination:Yr(s)});d(s,s.scope==="all"?M.allSecurityScans:M.mySecurityScans);}catch(u){a(u);}}),n.command("get").description("Get a security scan run").argument("<id>").option("-f, --format <format>","Output format").action(async(s,u)=>{try{let g=await r(or,{id:s});if(!g.securityScan)throw new m("Scan not found");d(u,g.securityScan);}catch(g){a(g);}}),n.command("run").description("Run a security scan for a vibe at a stage").requiredOption("--vibe-id <id>").requiredOption("--stage <stage>").option("-f, --format <format>","Output format").action(async s=>{try{let u=await r(pr,{vibeId:s.vibeId,stage:s.stage.toUpperCase()});c("Scan triggered"),d(s,u.runSecurityScan);}catch(u){a(u);}}),n.command("cancel").description("Cancel an in-flight security scan").argument("<id>").option("-f, --format <format>","Output format").action(async(s,u)=>{try{let g=await r(ur,{id:s});c("Scan cancelled"),d(u,g.cancelSecurityScan);}catch(g){a(g);}});let t=i.command("findings").description("Security findings");t.command("list").description("List security findings").option("--vibe-id <id>").option("--status <status>").option("--severity <severity>").option("--category <category>").option("--search <text>").option("--limit <n>").option("--offset <n>").option("-f, --format <format>","Output format").action(async s=>{try{let u={};s.vibeId&&(u.vibeId=s.vibeId),s.status&&(u.status=s.status.toUpperCase()),s.severity&&(u.severity=s.severity.toUpperCase()),s.category&&(u.category=s.category.toUpperCase()),s.search&&(u.search=s.search);let g=await r(ar,{filter:Object.keys(u).length>0?u:void 0,pagination:Yr(s)});d(s,g.securityFindings);}catch(u){a(u);}}),t.command("update-status").description("Update finding workflow status").argument("<id>").requiredOption("--status <status>","OPEN | ACCEPTED | SUPPRESSED | FIXED | FALSE_POSITIVE").option("-f, --format <format>","Output format").action(async(s,u)=>{try{let g=await r(fr,{id:s,status:u.status.toUpperCase()});c("Finding status updated"),d(u,g.updateSecurityFindingStatus);}catch(g){a(g);}}),i.command("policy-decision").description("Fetch OPA policy decision for a scan run").requiredOption("--scan-run-id <id>").option("-f, --format <format>","Output format").action(async s=>{try{let u=await r(sr,{scanRunId:s.scanRunId});d(s,u.securityPolicyDecision);}catch(u){a(u);}}),i.command("status").description("Security posture for a vibe").argument("<vibeId>").option("-f, --format <format>","Output format").action(async(s,u)=>{try{let g=await r(cr,{vibeId:s});d(u,g.securityStatus);}catch(g){a(g);}});let e=i.command("repo-config").description("Repository security policy config");e.command("get").argument("<vibeId>").option("-f, --format <format>","Output format").action(async(s,u)=>{try{let g=await r(dr,{vibeId:s});d(u,g.repositorySecurityConfig);}catch(g){a(g);}}),e.command("update").argument("<vibeId>").option("--policy-level <level>","ADVISORY | WARN | BLOCK").option("--enabled-stages <csv>","Comma-separated stages").option("--plugin-assignments <json>").option("--config-yaml-equivalent <json>").option("-f, --format <format>","Output format").action(async(s,u)=>{try{let g={};u.policyLevel&&(g.policyLevel=u.policyLevel.toUpperCase()),u.enabledStages&&(g.enabledStages=u.enabledStages.split(",").map(Ia=>Ia.trim().toUpperCase())),u.pluginAssignments&&(g.pluginAssignments=JSON.parse(u.pluginAssignments)),u.configYamlEquivalent&&(g.configYamlEquivalent=JSON.parse(u.configYamlEquivalent));let M=await r(Ir,{vibeId:s,input:g});c("Repository security config updated"),d(u,M.updateRepositorySecurityConfig);}catch(g){a(g);}});let o=i.command("exceptions").description("Security exception waivers");o.command("create").requiredOption("--vibe-id <id>").requiredOption("--finding-fingerprint <fp>").requiredOption("--reason <reason>").requiredOption("--expires-at <iso>").option("--compensating-controls <text>").option("-f, --format <format>","Output format").action(async s=>{try{let u={vibeId:s.vibeId,findingFingerprint:s.findingFingerprint,reason:s.reason,expiresAt:s.expiresAt};s.compensatingControls&&(u.compensatingControls=s.compensatingControls);let g=await r(mr,{input:u});c("Exception created"),d(s,g.createSecurityException);}catch(u){a(u);}}),o.command("revoke").argument("<id>").option("--force").action(async(s,u)=>{try{if(!await l(`Revoke exception ${s}?`,u.force))return;await r(gr,{id:s}),c("Exception revoked");}catch(g){a(g);}}),i.command("evidence-presign").description("Get a presigned URL for evidence upload").requiredOption("--scan-run-id <id>").requiredOption("--sha256 <hex>").requiredOption("--size-bytes <n>").requiredOption("--type <type>","SBOM_CYCLONEDX | SBOM_SPDX | SARIF | GRYPE_JSON | COSIGN_BUNDLE | OPA_DECISION | PROVENANCE").option("-f, --format <format>","Output format").action(async s=>{try{let u=await r(Sr,{scanRunId:s.scanRunId,sha256:s.sha256,sizeBytes:Number(s.sizeBytes),type:s.type.toUpperCase()});d(s,u.presignSecurityEvidence);}catch(u){a(u);}});}function Xr(p){let i=p.command("ci").description("CI/CD pipeline status (via GitOps providers)");i.command("status").description("Get CI status for a provider on an agent").requiredOption("--provider-id <id>").requiredOption("--agent-id <id>").option("--limit <n>").option("-f, --format <format>","Output format").action(async e=>{try{let o=await r(yr,{providerId:e.providerId,agentId:e.agentId,limit:e.limit!==void 0?Number(e.limit):void 0});d(e,o.getCIStatus);}catch(o){a(o);}}),i.command("refresh-status").description("Force refresh CI status snapshot").requiredOption("--provider-id <id>").requiredOption("--agent-id <id>").option("-f, --format <format>","Output format").action(async e=>{try{let o=await r(hr,{providerId:e.providerId,agentId:e.agentId});c("CI status refreshed"),d(e,o.refreshCIStatus);}catch(o){a(o);}});let n=i.command("pipelines").description("CI pipeline runs");n.command("list").requiredOption("--provider-id <id>").requiredOption("--agent-id <id>").option("--branch <branch>").option("--limit <n>").option("-f, --format <format>","Output format").action(async e=>{try{let o=await r(Tr,{providerId:e.providerId,agentId:e.agentId,branch:e.branch,limit:e.limit!==void 0?Number(e.limit):void 0});d(e,o.getCIPipelineRuns);}catch(o){a(o);}}),n.command("details").argument("<runId>").requiredOption("--provider-id <id>").requiredOption("--agent-id <id>").option("-f, --format <format>","Output format").action(async(e,o)=>{try{let s=await r(br,{providerId:o.providerId,agentId:o.agentId,runId:e});d(o,s.getCIPipelineDetails);}catch(s){a(s);}});let t=i.command("repo-stats").description("Repository statistics");t.command("get").requiredOption("--provider-id <id>").requiredOption("--agent-id <id>").option("-f, --format <format>","Output format").action(async e=>{try{let o=await r(Ar,{providerId:e.providerId,agentId:e.agentId});d(e,o.getRepoStats);}catch(o){a(o);}}),t.command("refresh").requiredOption("--provider-id <id>").requiredOption("--agent-id <id>").option("-f, --format <format>","Output format").action(async e=>{try{let o=await r(Cr,{providerId:e.providerId,agentId:e.agentId});c("Repo stats refreshed"),d(e,o.refreshRepoStats);}catch(o){a(o);}});}function zr(p){let i=p.command("gitops").description("GitOps provider connections");i.command("list").description("List GitOps providers").option("--provider-type <t>","GITHUB | GITLAB | BITBUCKET | AZURE_DEVOPS").option("--is-active <bool>").option("--vibe-id <id>").option("--limit <n>").option("--offset <n>").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.providerType&&(t.providerType=n.providerType.toUpperCase()),n.isActive!==void 0&&(t.isActive=n.isActive==="true"),n.vibeId&&(t.vibeId=n.vibeId);let e={};n.limit!==void 0&&(e.limit=Number(n.limit)),n.offset!==void 0&&(e.offset=Number(n.offset));let o=await r(Dr,{filter:Object.keys(t).length>0?t:void 0,pagination:Object.keys(e).length>0?e:void 0});d(n,o.listGitopsProviders);}catch(t){a(t);}}),i.command("get").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Or,{id:n});if(!e.getGitopsProvider)throw new m("Provider not found");d(t,e.getGitopsProvider);}catch(e){a(e);}}),i.command("create").requiredOption("--name <name>").requiredOption("--provider-type <t>","GITHUB | GITLAB | BITBUCKET | AZURE_DEVOPS").requiredOption("--repo-url <url>").option("--vibe-id <id>").option("--is-active <bool>").option("--metadata <json>").option("-f, --format <format>","Output format").action(async n=>{try{let t={name:n.name,providerType:n.providerType.toUpperCase(),repoUrl:n.repoUrl};n.vibeId&&(t.vibeId=n.vibeId),n.isActive!==void 0&&(t.isActive=n.isActive==="true"),n.metadata&&(t.metadata=JSON.parse(n.metadata));let e=await r($r,{input:t});c("GitOps provider created"),d(n,e.createGitopsProvider);}catch(t){a(t);}}),i.command("update").argument("<id>").option("--name <name>").option("--repo-url <url>").option("--vibe-id <id>").option("--is-active <bool>").option("--metadata <json>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e={};t.name&&(e.name=t.name),t.repoUrl&&(e.repoUrl=t.repoUrl),t.vibeId&&(e.vibeId=t.vibeId),t.isActive!==void 0&&(e.isActive=t.isActive==="true"),t.metadata&&(e.metadata=JSON.parse(t.metadata));let o=await r(vr,{id:n,input:e});c("GitOps provider updated"),d(t,o.updateGitopsProvider);}catch(e){a(e);}}),i.command("delete").argument("<id>").option("--force").action(async(n,t)=>{try{if(!await l(`Delete GitOps provider ${n}?`,t.force))return;await r(wr,{id:n}),c("GitOps provider deleted");}catch(e){a(e);}});}function Qr(p){let i=p.command("settings").description("User settings and preferences");i.command("mine").description("Get full settings bundle for the current user").option("-f, --format <format>","Output format").action(async t=>{try{let e=await r(xr);d(t,e.mySettings);}catch(e){a(e);}}),i.command("category").description("Get a single settings category").argument("<category>","PREFERENCES | NOTIFICATIONS | WORKSPACE_DEFAULTS | PROFILE | SECURITY | ADVANCED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(Ur,{category:t.toUpperCase()});d(e,o.mySettingsByCategory);}catch(o){a(o);}}),i.command("reset").description("Reset a settings category to workspace defaults").argument("<category>").option("--force").action(async(t,e)=>{try{if(!await l(`Reset ${t}?`,e.force))return;await r(Gr,{category:t.toUpperCase()}),c("Settings reset");}catch(o){a(o);}}),i.command("update-preferences").description("Update UI preferences").option("--theme <theme>").option("--ui-density <density>").option("--sidebar-collapsed <bool>").option("--code-font <font>").option("--code-font-size <n>").option("--preferred-ide-command <cmd>").option("--default-agent-for-vibe <json>").option("--vibe-ide-overrides <json>").option("--vibe-detail-tab-order <json>").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.theme&&(e.theme=t.theme),t.uiDensity&&(e.uiDensity=t.uiDensity),t.sidebarCollapsed!==void 0&&(e.sidebarCollapsed=t.sidebarCollapsed==="true"),t.codeFont&&(e.codeFont=t.codeFont),t.codeFontSize!==void 0&&(e.codeFontSize=Number(t.codeFontSize)),t.preferredIdeCommand&&(e.preferredIdeCommand=t.preferredIdeCommand),t.defaultAgentForVibe&&(e.defaultAgentForVibe=JSON.parse(t.defaultAgentForVibe)),t.vibeIdeOverrides&&(e.vibeIdeOverrides=JSON.parse(t.vibeIdeOverrides)),t.vibeDetailTabOrder&&(e.vibeDetailTabOrder=JSON.parse(t.vibeDetailTabOrder));let o=await r(qr,{input:e});c("Preferences updated"),d(t,o.updatePreferences);}catch(e){a(e);}}),i.command("update-notifications").description("Update notification preferences").option("--email-digest <bool>").option("--digest-frequency <freq>","daily | weekly | none").option("--agent-offline <bool>").option("--session-error <bool>").option("--vibe-status-change <bool>").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.emailDigest!==void 0&&(e.emailDigest=t.emailDigest==="true"),t.digestFrequency&&(e.digestFrequency=t.digestFrequency),t.agentOffline!==void 0&&(e.agentOffline=t.agentOffline==="true"),t.sessionError!==void 0&&(e.sessionError=t.sessionError==="true"),t.vibeStatusChange!==void 0&&(e.vibeStatusChange=t.vibeStatusChange==="true");let o=await r(Br,{input:e});c("Notification preferences updated"),d(t,o.updateNotificationPreferences);}catch(e){a(e);}}),i.command("update-workspace-defaults").description("Update workspace defaults (admin)").option("--default-agent <id>").option("--default-session-type <t>").option("--default-vibe-type <t>").option("--default-env-vars <text>").option("--auto-start-sessions <bool>").option("--auto-git-sync <bool>").option("--agent-heartbeat-interval <n>").option("--agent-max-sessions <n>").option("--agent-auto-reconnect <bool>").option("--auto-update <bool>").option("--telemetry-enabled <bool>").option("--log-level <level>").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.defaultAgent&&(e.defaultAgent=t.defaultAgent),t.defaultSessionType&&(e.defaultSessionType=t.defaultSessionType),t.defaultVibeType&&(e.defaultVibeType=t.defaultVibeType),t.defaultEnvVars&&(e.defaultEnvironmentVariables=t.defaultEnvVars),t.autoStartSessions!==void 0&&(e.autoStartSessions=t.autoStartSessions==="true"),t.autoGitSync!==void 0&&(e.autoGitSync=t.autoGitSync==="true"),t.agentHeartbeatInterval!==void 0&&(e.agentHeartbeatInterval=Number(t.agentHeartbeatInterval)),t.agentMaxSessions!==void 0&&(e.agentMaxSessions=Number(t.agentMaxSessions)),t.agentAutoReconnect!==void 0&&(e.agentAutoReconnect=t.agentAutoReconnect==="true"),t.autoUpdate!==void 0&&(e.autoUpdate=t.autoUpdate==="true"),t.telemetryEnabled!==void 0&&(e.telemetryEnabled=t.telemetryEnabled==="true"),t.logLevel&&(e.logLevel=t.logLevel);let o=await r(Fr,{input:e});c("Workspace defaults updated"),d(t,o.updateWorkspaceDefaults);}catch(e){a(e);}});let n=i.command("secrets").description("Settings secrets (encrypted KV)");n.command("list").option("-f, --format <format>","Output format").action(async t=>{try{let e=await r(Lr);d(t,e.listSettingsSecrets);}catch(e){a(e);}}),n.command("set").argument("<key>").argument("<value>").option("-f, --format <format>","Output format").action(async(t,e,o)=>{try{let s=await r(Pr,{input:{key:t,value:e}});c("Secret set"),d(o,s.setSettingsSecret);}catch(s){a(s);}}),n.command("delete").argument("<key>").option("--force").action(async(t,e)=>{try{if(!await l(`Delete secret ${t}?`,e.force))return;await r(Vr,{key:t}),c("Secret deleted");}catch(o){a(o);}}),i.command("resolve-integration-token").description("Resolve a decrypted integration token for an agent").argument("<connectionId>").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(Mr,{connectionId:t});d(e,o.vibecontrolsResolveIntegrationToken);}catch(o){a(o);}});}function Zr(p){let i=p.command("config").description("Backend configuration management");Jr(i),Xr(i),zr(i),Qr(i),i.command("list").description("List configs").requiredOption("--scope <s>","Scope (WORKSPACE, VIBE, SESSION, AGENT, USER, GLOBAL)").option("--scope-id <id>","Scope entity ID").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(Ke,{scope:n.scope.toUpperCase(),scopeId:n.scopeId});d(n,t.configurationsByScope);}catch(t){a(t);}}),i.command("get").description("Get config value").argument("<key>").requiredOption("--scope <s>","Scope").option("--scope-id <id>","Scope ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(We,{key:n,scope:t.scope.toUpperCase(),scopeId:t.scopeId});if(!e.configuration)throw new m("Config not found");d(t,e.configuration);}catch(e){a(e);}}),i.command("set").description("Set config value").argument("<key>").argument("<value>").requiredOption("--scope <s>","Scope").option("--scope-id <id>","Scope ID").option("--secret","Mark as secret").option("-f, --format <format>","Output format").action(async(n,t,e)=>{try{let o;try{o=JSON.parse(t);}catch{o=t;}let s=await r(Ye,{key:n,scope:e.scope.toUpperCase(),scopeId:e.scopeId,value:o,isSecret:e.secret});c("Config set"),d(e,s.setConfiguration);}catch(o){a(o);}}),i.command("delete").description("Delete config").argument("<key>").requiredOption("--scope <s>","Scope").option("--scope-id <id>","Scope ID").action(async(n,t)=>{try{await r(Je,{key:n,scope:t.scope.toUpperCase(),scopeId:t.scopeId}),c("Config deleted");}catch(e){a(e);}}),i.command("value").description("Get raw config value").argument("<key>").requiredOption("--scope <s>","Scope").option("--scope-id <id>","Scope ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(je,{key:n,scope:t.scope.toUpperCase(),scopeId:t.scopeId});console.log(e.configurationValue);}catch(e){a(e);}}),i.command("bulk-set").description("Bulk set configs").requiredOption("--scope <s>","Scope").option("--scope-id <id>","Scope ID").requiredOption("--input <json>","JSON array of [{key,value,isSecret?}]").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(Xe,{configurations:JSON.parse(n.input),scope:n.scope.toUpperCase(),scopeId:n.scopeId});c("Configs set"),d(n,t.bulkSetConfigurations);}catch(t){a(t);}}),i.command("bulk-delete").description("Bulk delete configs").requiredOption("--scope <s>","Scope").option("--scope-id <id>","Scope ID").requiredOption("--keys <keys>","Comma-separated keys").option("--force","Skip confirmation").action(async n=>{try{if(!await l("Delete these configs?",n.force))return;await r(ze,{keys:n.keys.split(",").map(t=>t.trim()),scope:n.scope.toUpperCase(),scopeId:n.scopeId}),c("Configs deleted");}catch(t){a(t);}});}function ta(p){let i=p.command("webhooks").description("Webhook management");i.command("list").description("List webhooks").option("--active","Only active").option("-f, --format <format>","Output format").action(async n=>{try{let t=n.active?{isActive:!0}:void 0,e=await r(Qe,{filter:t});d(n,e.webhooks.items,{headers:["ID","Name","URL","Active","Events","Deliveries"],rows:e.webhooks.items.map(o=>[f(o.id,12),o.name,f(o.url,30),o.isActive?"Yes":"No",(o.events??[]).join(", "),String(o.deliveryCount??0)])});}catch(t){a(t);}}),i.command("get").description("Get webhook").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Ze,{id:n});if(!e.webhook)throw new m("Webhook not found");d(t,e.webhook);}catch(e){a(e);}}),i.command("create").description("Create webhook").requiredOption("--name <n>","Name").requiredOption("--url <u>","URL").requiredOption("--events <events>","Events (comma-separated)").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(tn,{input:{name:n.name,url:n.url,events:n.events.split(",").map(e=>e.trim())}});c("Webhook created"),d(n,t.createWebhook);}catch(t){a(t);}}),i.command("update").description("Update webhook").argument("<id>").option("--name <n>","Name").option("--url <u>","URL").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e={};if(t.name&&(e.name=t.name),t.url&&(e.url=t.url),!Object.keys(e).length)throw new m("No updates specified");let o=await r(en,{id:n,input:e});c("Webhook updated"),d(t,o.updateWebhook);}catch(e){a(e);}}),i.command("delete").description("Delete webhook").argument("<id>").option("--force","Skip confirmation").action(async(n,t)=>{try{if(!await l("Delete this webhook?",t.force))return;await r(nn,{id:n}),c("Webhook deleted");}catch(e){a(e);}}),i.command("test").description("Test webhook").argument("<id>").action(async n=>{try{await r(on,{id:n}),c("Webhook test sent");}catch(t){a(t);}}),i.command("active").description("List active webhooks").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(rn);d(n,t.activeWebhooks);}catch(t){a(t);}}),i.command("by-event").description("List webhooks by event").argument("<event>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(an,{event:n});d(t,e.webhooksByEvent);}catch(e){a(e);}}),i.command("trigger").description("Trigger webhook").argument("<id>").option("--payload <json>","JSON payload").action(async(n,t)=>{try{await r(sn,{id:n,payload:t.payload?JSON.parse(t.payload):void 0}),c("Webhook triggered");}catch(e){a(e);}}),i.command("reset-failures").description("Reset webhook failures").argument("<id>").action(async n=>{try{await r(cn,{id:n}),c("Webhook failures reset");}catch(t){a(t);}});}function wa(p,i="HTTPS"){if(!p)return i;let n=p.toUpperCase();if(n==="HTTP"||n==="HTTPS"||n==="TCP"||n==="UDP")return n;throw new Error(`Invalid protocol: ${p} (expected http|https|tcp|udp)`)}function dt(p){return (p??"PROD").toUpperCase()==="ALPHA"?"ALPHA":"PROD"}function ea(p){let i=p.command("tunnels").description("Tunnel management (VibeTunnels)");i.command("providers").description("List tunnel providers with capabilities").option("-f, --format <format>","Output format").action(async t=>{try{let e=await r(un);d(t,e.tunnelProviders);}catch(e){a(e);}}),i.command("list").description("List tunnels in the workspace").option("--provider <key>","Filter by provider (vibetunnels|cloudflare)").option("--status <status>","Filter by status").option("--search <query>","Search by name/slug").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.provider&&(e.providerKey=t.provider.toUpperCase()),t.status&&(e.status=[t.status.toUpperCase()]),t.search&&(e.search=t.search);let o=await r(dn,{filter:e});if(t.format){d(t,o.tunnels);return}for(let s of o.tunnels.items){let u=s.primaryDomain?.hostname??"(no domain)";console.log(`${s.id} ${s.slug} ${s.providerKey} ${s.status} ${u} ${s.protocol}:${s.localPort}`);}console.log(`
|
|
1377
|
-
${o.tunnels.total} total`);}catch(e){a(e);}}),i.command("get").description("Get a tunnel by ID").argument("<id>").option("-f, --format <format>").action(async(t,e)=>{try{let o=await r(pn,{id:t});if(!o.tunnel)throw new m(`Tunnel ${t} not found`);d(e,o.tunnel);}catch(o){a(o);}}),i.command("create").description("Create a tunnel (DRAFT \u2014 start with `vibe tunnels start`)").requiredOption("--agent <id>","Agent ID").requiredOption("--name <name>","Tunnel name").requiredOption("--port <p>","Local port",parseInt).option("--provider <key>","Provider key (vibetunnels|cloudflare)","VIBETUNNELS").option("--protocol <p>","http|https|tcp|udp","https").option("--host <host>","Local host","127.0.0.1").option("--subdomain <label>","Reserve a *.vibetunnels.com subdomain").option("--env <env>","alpha|prod for managed subdomain","prod").option("--description <text>").option("-f, --format <format>").action(async t=>{try{let e={agentId:t.agent,name:t.name,description:t.description,providerKey:t.provider.toUpperCase(),protocol:wa(t.protocol),localPort:t.port,localHost:t.host,managedSubdomain:t.subdomain,environment:dt(t.env)},o=await r(mn,{input:e});c(`Tunnel created: ${o.createTunnel.slug}`),d(t,o.createTunnel);}catch(e){a(e);}}),i.command("start").description("Start a tunnel").argument("<id>").action(async t=>{try{await r(fn,{id:t}),c("Tunnel started");}catch(e){a(e);}}),i.command("stop").description("Stop a tunnel").argument("<id>").action(async t=>{try{await r(In,{id:t}),c("Tunnel stopped");}catch(e){a(e);}}),i.command("rotate").description("Rotate tunnel credentials").argument("<id>").action(async t=>{try{await r(Sn,{id:t}),c("Tunnel credentials rotated");}catch(e){a(e);}}),i.command("delete").description("Delete a tunnel").argument("<id>").option("--force","Skip confirmation").action(async(t,e)=>{try{if(!await l("Delete this tunnel?",e.force))return;await r(ln,{id:t}),c("Tunnel deleted");}catch(o){a(o);}}),i.command("sessions").description("List sessions for a tunnel").argument("<tunnelId>").option("-f, --format <format>").action(async(t,e)=>{try{let o=await r(yn,{tunnelId:t});d(e,o);}catch(o){a(o);}}),i.command("issue-session").description("Issue a short-lived token for a tunnel (printed once)").argument("<tunnelId>").option("--ttl <seconds>","TTL in seconds",t=>parseInt(t,10)).action(async(t,e)=>{try{let o=await r(En,{tunnelId:t,ttlSeconds:e.ttl});console.log("Session issued. The token below is shown exactly once."),console.log(`Session ID: ${o.issueTunnelSession.session.id}`),console.log(`Token: ${o.issueTunnelSession.token}`),console.log(`Expires: ${o.issueTunnelSession.session.expiresAt}`),console.log(`Agent hint: ${JSON.stringify(o.issueTunnelSession.agentConfigHint,null,2)}`);}catch(o){a(o);}}),i.command("revoke-session").description("Revoke an active tunnel session").argument("<sessionId>").option("--reason <text>").action(async(t,e)=>{try{await r(Tn,{sessionId:t,reason:e.reason??"revoked via CLI"}),c("Session revoked");}catch(o){a(o);}});let n=i.command("domains").description("Manage tunnel domains");n.command("list").description("List domains (optionally scoped to a tunnel)").option("--tunnel <id>","Tunnel ID").option("-f, --format <format>").action(async t=>{try{let e=await r(On,{tunnelId:t.tunnel??null});d(t,e);}catch(e){a(e);}}),n.command("reserve").description("Reserve a managed *.vibetunnels.com subdomain").requiredOption("--label <label>","Subdomain label").option("--env <env>","alpha|prod","prod").action(async t=>{try{let e=await r(bn,{input:{label:t.label,environment:dt(t.env)}});c(`Reserved ${e.reserveTunnelSubdomain.hostname}`);}catch(e){a(e);}}),n.command("add-custom").description("Register a user-owned custom domain (TXT verification required)").argument("<hostname>").action(async t=>{try{let e=await r(An,{input:{hostname:t}});console.log(`Registered ${e.registerCustomTunnelDomain.hostname}.`),console.log(`Create a TXT record at ${e.registerCustomTunnelDomain.challengeRecordName} containing:`),console.log(` ${e.registerCustomTunnelDomain.challengeToken}`);}catch(e){a(e);}}),n.command("attach").description("Attach a (verified) domain to a tunnel").argument("<tunnelId>").argument("<domainId>").option("--primary","Mark as primary domain").action(async(t,e,o)=>{try{await r(hn,{tunnelId:t,domainId:e,makePrimary:!!o.primary}),c("Domain attached");}catch(s){a(s);}}),n.command("detach").description("Detach a domain from a tunnel").argument("<tunnelId>").argument("<domainId>").action(async(t,e)=>{try{await r(Cn,{tunnelId:t,domainId:e}),c("Domain detached");}catch(o){a(o);}}),n.command("verify").description("Force verification check for a custom domain").argument("<domainId>").action(async t=>{try{let e=await r(Dn,{domainId:t});console.log(`Status: ${e.verifyTunnelDomain.verificationStatus}`),e.verifyTunnelDomain.lastCheckError&&console.log(`Error: ${e.verifyTunnelDomain.lastCheckError}`);}catch(e){a(e);}}),n.command("get").description("Get a tunnel domain by ID").argument("<id>").option("-f, --format <format>").action(async(t,e)=>{try{let o=await r(vn,{id:t});d(e,o);}catch(o){a(o);}}),n.command("delete").description("Delete a tunnel domain (detach + drop record)").argument("<domainId>").option("--force","Skip confirmation").action(async(t,e)=>{try{if(!await l("Delete this tunnel domain?",e.force))return;await r(Nn,{domainId:t}),c("Tunnel domain deleted");}catch(o){a(o);}}),i.command("by-slug").description("Get a tunnel by its workspace-unique slug").argument("<slug>").option("-f, --format <format>").action(async(t,e)=>{try{let o=await r($n,{slug:t});if(!o.tunnelBySlug)throw new m(`Tunnel with slug ${t} not found`);d(e,o.tunnelBySlug);}catch(o){a(o);}}),i.command("update").description("Update a tunnel (name, host, port, basic auth, metadata)").argument("<id>").option("--name <name>").option("--description <text>").option("--host <host>").option("--port <port>","Local port",t=>parseInt(t,10)).option("--tls-mode <mode>","FULL|STRICT|NONE").option("--basic-auth-user <user>").option("--basic-auth-password <pw>").action(async(t,e)=>{try{let o={};if(e.name!==void 0&&(o.name=e.name),e.description!==void 0&&(o.description=e.description),e.host!==void 0&&(o.localHost=e.host),e.port!==void 0&&(o.localPort=e.port),e.tlsMode!==void 0&&(o.tlsMode=e.tlsMode.toUpperCase()),e.basicAuthUser!==void 0&&(o.basicAuthUser=e.basicAuthUser),e.basicAuthPassword!==void 0&&(o.basicAuthPassword=e.basicAuthPassword),Object.keys(o).length===0)throw new m("Pass at least one field to update");await r(gn,{id:t,input:o}),c("Tunnel updated");}catch(o){a(o);}}),i.command("provider").description("Get a single tunnel provider by key").argument("<key>","vibetunnels|cloudflare").option("-f, --format <format>").action(async(t,e)=>{try{let o=await r(wn,{key:t.toUpperCase()});d(e,o);}catch(o){a(o);}}),i.command("shards").description("List tunnel server shards (frps instances)").option("--env <env>","alpha|prod").option("-f, --format <format>").action(async t=>{try{let e=await r(kn,{environment:t.env?dt(t.env):null});d(t,e);}catch(e){a(e);}}),i.command("usage").description("Hourly usage buckets for a tunnel in a time range").argument("<tunnelId>").requiredOption("--from <iso>","ISO8601 start").requiredOption("--to <iso>","ISO8601 end").option("-f, --format <format>").action(async(t,e)=>{try{let o=await r(_n,{tunnelId:t,from:e.from,to:e.to});d(e,o);}catch(o){a(o);}}),i.command("audit").description("Audit log entries scoped to a tunnel").argument("<tunnelId>").option("--limit <n>","Pagination limit",t=>parseInt(t,10)).option("--offset <n>","Pagination offset",t=>parseInt(t,10)).option("-f, --format <format>").action(async(t,e)=>{try{let o={};e.limit!==void 0&&(o.limit=e.limit),e.offset!==void 0&&(o.offset=e.offset);let s=await r(Rn,{tunnelId:t,pagination:Object.keys(o).length>0?o:null});d(e,s);}catch(o){a(o);}}),i.command("probe-agent").description("Probe an agent tunnel URL for health + identity").requiredOption("--url <url>","Agent tunnel URL (https://...)").option("--api-key <key>","Agent API key").option("-f, --format <format>").action(async t=>{try{let e=await r(xn,{url:t.url,agentApiKey:t.apiKey??null});d(t,e);}catch(e){a(e);}}),i.command("add-agent-from-tunnel").description("Zero-config: probe a tunnel URL + register an agent in one shot").requiredOption("--url <url>","Public HTTPS tunnel URL").requiredOption("--api-key <key>","Agent inbound API key (x-agent-api-key)").option("--name <name>","Override display name").option("--scopes <list>","Comma-separated OAuth scopes").option("--target <id>","Optional target to attach the agent to").option("--skip-devportal-app","Skip creating DevPortal application").option("-f, --format <format>").action(async t=>{try{let e={tunnelUrl:t.url,apiKey:t.apiKey};t.name!==void 0&&(e.name=t.name),t.scopes!==void 0&&(e.scopes=t.scopes.split(",").map(s=>s.trim()).filter(Boolean)),t.target!==void 0&&(e.targetId=t.target),t.skipDevportalApp&&(e.skipDevportalApp=!0);let o=await r(Un,{input:e});d(t,o);}catch(e){a(e);}});}function na(p){let i=p.command("ui-session").description("UI session state");i.command("get").description("Get current UI session").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(Ln);d(n,t.uiSession);}catch(t){a(t);}}),i.command("clear").description("Clear UI session").action(async()=>{try{await r(Vn),c("UI session cleared");}catch(n){a(n);}}),i.command("get-by-id").description("Get UI session by ID").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Pn,{id:n});d(t,e.uiSessionById);}catch(e){a(e);}}),i.command("set-active-vibe").description("Set active vibe").argument("<vibeId>").action(async n=>{try{await r(Gn,{vibeId:n}),c("Active vibe updated");}catch(t){a(t);}}),i.command("set-active-session").description("Set active session").argument("<sessionId>").action(async n=>{try{await r(qn,{sessionId:n}),c("Active session updated");}catch(t){a(t);}}),i.command("add-recent-vibe").description("Add recent vibe").argument("<vibeId>").action(async n=>{try{await r(Bn,{vibeId:n}),c("Recent vibe added");}catch(t){a(t);}}),i.command("add-recent-session").description("Add recent session").argument("<sessionId>").action(async n=>{try{await r(Fn,{sessionId:n}),c("Recent session added");}catch(t){a(t);}});}function oa(p){let i=p.command("cli-config").description("CLI configuration");i.command("set").description("Set CLI config value").argument("<key>").argument("<value>").action((n,t)=>{if(!ot.includes(n))throw new m(`Unknown key: ${n}. Valid keys: ${ot.join(", ")}`);St(n,t),c(`${n} = ${t}`);}),i.command("get").description("Get CLI config value").argument("<key>").action(n=>{let t=It(n);if(t===void 0)throw new m(`Key not set: ${n}`);console.log(t);}),i.command("list").description("Show all CLI config").option("-f, --format <format>","Output format").action(n=>{let t=ft();if(n.format==="json"){gt(t);return}let e=Object.entries(t).filter(([,o])=>o!==void 0);lt(["Key","Value"],e.map(([o,s])=>[o,String(s)]));}),i.command("path").description("Show config file path").action(()=>{console.log(Et());});}function ia(){let p=H()?.workspaceId;if(!p)throw new m("No workspace set. Run: vibecontrols workspace set <id>");return p}function ra(p){let i=p.command("targets").description("Target management (SSH/RDP/VNC)");i.command("list").description("List targets").option("--type <type>","Filter by type (DIRECT,SSH,RDP,VNC)").option("--limit <n>","Limit results",parseInt).option("--offset <n>","Offset results",parseInt).option("-f, --format <format>","Output format").action(async n=>{try{let t=ia(),e={};n.type&&(e.type=n.type.toUpperCase());let s=(await r(Mn,{workspaceId:t,filter:Object.keys(e).length?e:void 0,limit:n.limit,offset:n.offset})).targets.items;d(n,s,{headers:["ID","Name","Type","Host","Port","Status"],rows:s.map(u=>[f(u.id,12),u.name,u.type,u.host,String(u.port??"-"),b(u.status)])});}catch(t){a(t);}}),i.command("get").description("Get target by ID").argument("<id>","Target ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Hn,{id:n});if(!e.target)throw new m("Target not found");d(t,e.target);}catch(e){a(e);}}),i.command("create").description("Create target").requiredOption("--name <n>","Name").requiredOption("--type <t>","Type (DIRECT,SSH,RDP,VNC)").requiredOption("--host <h>","Host address").requiredOption("--port <p>","Port",parseInt).option("--username <u>","Username").option("--protocol <p>","Protocol").option("--agent-id <id>","Agent ID").option("-f, --format <format>","Output format").action(async n=>{try{let t=ia(),e={name:n.name,type:n.type.toUpperCase(),host:n.host,port:n.port};n.username&&(e.username=n.username),n.protocol&&(e.protocol=n.protocol),n.agentId&&(e.agentId=n.agentId);let o=await r(Kn,{workspaceId:t,input:e});c("Target created"),d(n,o.createTarget);}catch(t){a(t);}}),i.command("update").description("Update target").argument("<id>","Target ID").option("--name <n>","Name").option("--host <h>","Host address").option("--port <p>","Port",parseInt).option("--username <u>","Username").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e={};if(t.name&&(e.name=t.name),t.host&&(e.host=t.host),t.port&&(e.port=t.port),t.username&&(e.username=t.username),!Object.keys(e).length)throw new m("No updates specified");let o=await r(Wn,{id:n,input:e});c("Target updated"),d(t,o.updateTarget);}catch(e){a(e);}}),i.command("delete").description("Delete target").argument("<id>","Target ID").option("--force","Skip confirmation").action(async(n,t)=>{try{if(!await l("Delete this target?",t.force))return;await r(jn,{id:n}),c("Target deleted");}catch(e){a(e);}}),i.command("test").description("Test target connectivity").argument("<id>","Target ID").action(async n=>{try{let t=await r(Yn,{id:n});t.testTarget.success?c(`Connection successful (${t.testTarget.latencyMs??"-"}ms)`):T(t.testTarget.error??"Connection failed");}catch(t){a(t);}}),i.command("scan-ssh").description("Scan SSH config for targets").requiredOption("--agent-id <id>","Agent ID").option("--config-path <path>","SSH config file path").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(Jn,{agentId:n.agentId,configPath:n.configPath});c(`Found ${t.scanSSHConfig.length} target(s)`),d(n,t.scanSSHConfig);}catch(t){a(t);}}),i.command("install-agent").description("Install agent on target").requiredOption("--source-agent-id <id>","Source agent ID").requiredOption("--target-id <id>","Target ID").option("--agent-port <port>","Agent port",parseInt).action(async n=>{try{let t=await r(Xn,{sourceAgentId:n.sourceAgentId,targetId:n.targetId,agentPort:n.agentPort});t.installAgentOnTarget.success?c("Agent installed on target"):T(t.installAgentOnTarget.error??"Installation failed");}catch(t){a(t);}}),i.command("uninstall-agent").description("Uninstall agent from target").argument("<targetId>","Target ID").action(async n=>{try{let t=await r(zn,{targetId:n});t.uninstallAgentFromTarget.success?c("Agent uninstalled from target"):T(t.uninstallAgentFromTarget.error??"Uninstall failed");}catch(t){a(t);}}),i.command("start-terminal").description("Start terminal on target").argument("<targetId>","Target ID").option("--shell <shell>","Shell to use").action(async(n,t)=>{try{let e=await r(Qn,{targetId:n,shell:t.shell});c("Terminal started"),console.log(`Session ID: ${e.startTerminal.sessionId}`),console.log(`ttyd URL: ${e.startTerminal.ttydUrl}`);}catch(e){a(e);}}),i.command("stop-terminal").description("Stop terminal session").argument("<sessionId>","Session ID").action(async n=>{try{await r(Zn,{sessionId:n}),c("Terminal stopped");}catch(t){a(t);}});}function aa(p){let i=p.command("vibedeck").description("VibeDeck management");i.command("list").description("List vibedecks").option("-f, --format <format>","Output format").action(async t=>{try{let o=(await r(to)).vibeDecks.items;d(t,o,{headers:["ID","Name","Default","Created"],rows:o.map(s=>[f(s.id,12),s.name,s.isDefault?"Yes":"No",S(s.createdAt)])});}catch(e){a(e);}}),i.command("get").description("Get vibedeck").argument("<id>").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(eo,{id:t});if(!o.vibeDeck)throw new m("VibeDeck not found");d(e,o.vibeDeck);}catch(o){a(o);}}),i.command("default").description("Get default vibedeck").option("-f, --format <format>","Output format").action(async t=>{try{let e=await r(no);if(!e.defaultVibeDeck)throw new m("No default VibeDeck found");d(t,e.defaultVibeDeck);}catch(e){a(e);}}),i.command("create").description("Create vibedeck").requiredOption("--name <n>","Name").option("--description <d>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e=await r(oo,{input:{name:t.name,description:t.description}});c("VibeDeck created"),d(t,e.createVibeDeck);}catch(e){a(e);}}),i.command("update").description("Update vibedeck").argument("<id>").option("--name <n>","Name").option("--description <d>","Description").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.name&&(o.name=e.name),e.description&&(o.description=e.description),!Object.keys(o).length)throw new m("No updates specified");let s=await r(io,{id:t,input:o});c("VibeDeck updated"),d(e,s.updateVibeDeck);}catch(o){a(o);}}),i.command("duplicate").description("Duplicate vibedeck").argument("<id>").option("--name <n>","New name").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(ro,{id:t,name:e.name});c("VibeDeck duplicated"),d(e,o.duplicateVibeDeck);}catch(o){a(o);}}),i.command("delete").description("Delete vibedeck").argument("<id>").option("--force","Skip confirmation").action(async(t,e)=>{try{if(!await l("Delete this VibeDeck?",e.force))return;await r(ao,{id:t}),c("VibeDeck deleted");}catch(o){a(o);}}),i.command("set-default").description("Set default vibedeck").argument("<id>").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(so,{id:t});c("Default VibeDeck updated"),d(e,o.setDefaultVibeDeck);}catch(o){a(o);}}),i.command("buttons").description("List vibedeck buttons").requiredOption("--deck-id <id>","VibeDeck ID").option("-f, --format <format>","Output format").action(async t=>{try{let o=(await r(co,{filter:{vibeDeckId:t.deckId}})).vibeDeckButtons.items;d(t,o,{headers:["ID","Label","Type","Position","Command"],rows:o.map(s=>[f(s.id,12),s.label,s.type,`${s.row},${s.column}`,f(s.command??"",30)])});}catch(e){a(e);}}),i.command("button").description("Get vibedeck button").argument("<id>").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(po,{id:t});if(!o.vibeDeckButton)throw new m("Button not found");d(e,o.vibeDeckButton);}catch(o){a(o);}}),i.command("create-button").description("Create vibedeck button").requiredOption("--deck-id <id>","VibeDeck ID").requiredOption("--label <l>","Label").requiredOption("--type <t>","Type (COMMAND, SCRIPT, WEBHOOK)").option("--command <c>","Command").option("--script <s>","Script").option("--webhook-url <u>","Webhook URL").option("--icon <i>","Icon").option("--color <c>","Color").option("--row <n>","Row position",parseInt).option("--column <n>","Column position",parseInt).option("--action-id <id>","Link to an Action").option("-f, --format <format>","Output format").action(async t=>{try{let e={vibeDeckId:t.deckId,label:t.label,type:t.type.toUpperCase()};t.command&&(e.command=t.command),t.script&&(e.script=t.script),t.webhookUrl&&(e.webhookUrl=t.webhookUrl),t.icon&&(e.icon=t.icon),t.color&&(e.color=t.color),t.row!==void 0&&(e.row=t.row),t.column!==void 0&&(e.column=t.column),t.actionId&&(e.actionId=t.actionId);let o=await r(uo,{input:e});c("Button created"),d(t,o.createVibeDeckButton);}catch(e){a(e);}}),i.command("update-button").description("Update vibedeck button").argument("<id>").option("--label <l>","Label").option("--command <c>","Command").option("--icon <i>","Icon").option("--color <c>","Color").option("--action-id <id>","Link to an Action").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.label&&(o.label=e.label),e.command&&(o.command=e.command),e.icon&&(o.icon=e.icon),e.color&&(o.color=e.color),e.actionId&&(o.actionId=e.actionId),!Object.keys(o).length)throw new m("No updates specified");let s=await r(mo,{id:t,input:o});c("Button updated"),d(e,s.updateVibeDeckButton);}catch(o){a(o);}}),i.command("delete-button").description("Delete vibedeck button").argument("<id>").option("--force","Skip confirmation").action(async(t,e)=>{try{if(!await l("Delete this button?",e.force))return;await r(go,{id:t}),c("Button deleted");}catch(o){a(o);}}),i.command("move-button").description("Move vibedeck button").argument("<id>").requiredOption("--row <n>","Row position",parseInt).requiredOption("--column <n>","Column position",parseInt).option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(lo,{id:t,input:{row:e.row,column:e.column}});c("Button moved"),d(e,o.moveVibeDeckButton);}catch(o){a(o);}}),i.command("reorder-buttons").description("Reorder vibedeck buttons").argument("<vibeDeckId>").requiredOption("--positions <json>","Positions as JSON array").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o;try{o=JSON.parse(e.positions);}catch{throw new m("Invalid JSON for --positions")}let s=await r(fo,{vibeDeckId:t,positions:o});c("Buttons reordered"),d(e,s.reorderVibeDeckButtons);}catch(o){a(o);}}),i.command("execute-button").description("Execute vibedeck button").argument("<id>").requiredOption("--agent-id <id>","Agent ID").action(async(t,e)=>{try{let s=(await r(Io,{id:t,agentId:e.agentId})).executeVibeDeckButton;if(s.success)c(s.output??"Button executed successfully");else throw new m(s.error??"Execution failed")}catch(o){a(o);}});let n=i.command("share-links").description("VibeDeck share-link management");n.command("list").description("List share-links for a vibedeck").argument("<vibeDeckId>","VibeDeck ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(Wi,{vibeDeckId:t});d(e,o.vibeDeckShareLinks,{headers:["ID","Name","Permission","Status","Visibility","Uses","Expires"],rows:o.vibeDeckShareLinks.map(s=>[f(s.id,12),s.name??"-",s.permission,s.status,s.visibility,String(s.useCount??0),s.expiresAt?S(s.expiresAt):"-"])});}catch(o){a(o);}}),n.command("create").description("Create a share-link").requiredOption("--vibe-deck-id <id>","VibeDeck ID").option("--name <name>","Friendly name").option("--permission <p>","EXECUTE or VIEW","EXECUTE").option("--visibility <v>","SIGNED_LINK | PUBLIC | RESTRICTED","SIGNED_LINK").option("--password <pwd>","Password protect").option("--max-uses <n>","Max uses",t=>parseInt(t,10)).option("--expires-in-hours <n>","Hours until expiry",t=>parseInt(t,10)).option("--allow-iframe","Allow iframe embedding").action(async t=>{try{let e={vibeDeckId:t.vibeDeckId,permission:(t.permission??"EXECUTE").toUpperCase(),visibility:(t.visibility??"SIGNED_LINK").toUpperCase()};t.name&&(e.name=t.name),t.password&&(e.password=t.password),t.maxUses!==void 0&&(e.maxUses=t.maxUses),t.expiresInHours!==void 0&&(e.expiresInHours=t.expiresInHours),t.allowIframe&&(e.allowIframe=!0);let o=await r(ji,{input:e});c(`Created share-link ${o.createVibeDeckShareLink.id} \u2014 ${o.createVibeDeckShareLink.shareUrl}`);}catch(e){a(e);}}),n.command("update").description("Update a share-link").argument("<id>","Share-link ID").option("--name <name>").option("--permission <p>").option("--visibility <v>").option("--password <pwd>").option("--max-uses <n>","",t=>parseInt(t,10)).option("--expires-at <iso>").option("--allow-iframe <bool>").action(async(t,e)=>{try{let o={};e.name&&(o.name=e.name),e.permission&&(o.permission=e.permission.toUpperCase()),e.visibility&&(o.visibility=e.visibility.toUpperCase()),e.password&&(o.password=e.password),e.maxUses!==void 0&&(o.maxUses=e.maxUses),e.expiresAt&&(o.expiresAt=e.expiresAt),e.allowIframe!==void 0&&(o.allowIframe=e.allowIframe==="true"),await r(Yi,{id:t,input:o}),c("Share-link updated");}catch(o){a(o);}}),n.command("revoke").description("Revoke a share-link").argument("<id>","Share-link ID").option("--force","Skip confirmation").action(async(t,e)=>{try{if(!await l("Revoke this share-link?",e.force))return;await r(Ji,{id:t}),c("Share-link revoked");}catch(o){a(o);}}),n.command("validate").description("Validate a share-link token").argument("<token>").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(Xi,{token:t});d(e,o.validateVibeDeckShareLink);}catch(o){a(o);}}),n.command("get-shared").description("Fetch the public shared vibedeck via a token").argument("<token>").option("--password <pwd>").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(zi,{token:t,password:e.password});d(e,o.sharedVibeDeck);}catch(o){a(o);}}),n.command("execute-shared-button").description("Execute a button on a shared vibedeck").argument("<token>").requiredOption("--button-id <id>","Button ID").option("--password <pwd>").action(async(t,e)=>{try{let s=(await r(Qi,{token:t,buttonId:e.buttonId,password:e.password})).executeSharedVibeDeckButton;if(s.success)c(s.output??"Executed");else throw new m(s.error??"Execution failed")}catch(o){a(o);}});}function sa(p){let i=p.command("ai-tool-events").description("AI tool event tracking");i.command("list").description("List AI tool events").option("--agent-id <id>","Filter by agent").option("--tool-name <name>","Filter by tool name").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.agentId&&(t.agentId=n.agentId),n.toolName&&(t.toolName=n.toolName);let o=(await r(Ro,{filter:Object.keys(t).length?t:void 0})).aiToolEvents.items;d(n,o,{headers:["ID","Tool","Event Type","Model","Tokens","Duration","Created"],rows:o.map(s=>[f(s.id,12),s.toolName,s.eventType,s.model??"-",String(s.tokenCount??"-"),String(s.duration??"-"),S(s.createdAt)])});}catch(t){a(t);}}),i.command("get").description("Get AI tool event").argument("<id>","Event ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(No,{id:n});if(!e.aiToolEvent)throw new m("AI tool event not found");d(t,e.aiToolEvent);}catch(e){a(e);}}),i.command("recent").description("Recent AI tool events").requiredOption("--agent-id <id>","Filter by agent").option("--limit <n>","Max results",parseInt).option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(xo,{agentId:n.agentId,limit:n.limit});d(n,t.recentAiToolEvents);}catch(t){a(t);}}),i.command("create").description("Create AI tool event").requiredOption("--agent-id <id>","Agent ID").requiredOption("--tool-name <name>","Tool name").requiredOption("--event-type <type>","Event type").option("--model <model>","Model name").option("--input <input>","Input data").option("--output <output>","Output data").option("--token-count <n>","Token count",parseInt).option("--duration <ms>","Duration in ms",parseInt).option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(Uo,{input:{agentId:n.agentId,toolName:n.toolName,eventType:n.eventType,model:n.model,input:n.input,output:n.output,tokenCount:n.tokenCount,duration:n.duration}});c("AI tool event created"),d(n,t.createAiToolEvent);}catch(t){a(t);}}),i.command("cleanup").description("Delete old AI tool events").requiredOption("--before-date <date>","Delete events before this date").option("--force","Skip confirmation").action(async n=>{try{if(!await l(`Delete all AI tool events before ${n.beforeDate}?`,n.force))return;let t=await r(Lo,{beforeDate:n.beforeDate});c("Old AI tool events deleted"),d({},t.deleteOldAiToolEvents);}catch(t){a(t);}});}function ca(p){let i=p.command("docs").description("Documentation site management");i.command("sites").description("List documentation sites").option("-f, --format <format>","Output format").action(async n=>{try{let e=(await r(Po)).docsSites.items;d(n,e,{headers:["ID","Vibe ID","Name","Visibility","Created"],rows:e.map(o=>[f(o.id,12),f(o.vibeId,12),o.name,o.visibility,S(o.createdAt)])});}catch(t){a(t);}}),i.command("site").description("Get documentation site").argument("<vibeId>","Vibe ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Vo,{vibeId:n});if(!e.docsSite)throw new m("Docs site not found");d(t,e.docsSite);}catch(e){a(e);}}),i.command("create-site").description("Create documentation site").requiredOption("--vibe-id <id>","Vibe ID").requiredOption("--name <name>","Site name").option("--description <desc>","Description").option("--visibility <v>","Visibility (PRIVATE/PUBLIC)").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(Go,{input:{vibeId:n.vibeId,name:n.name,description:n.description,visibility:n.visibility}});c("Docs site created"),d(n,t.createDocsSite);}catch(t){a(t);}}),i.command("update-site").description("Update documentation site").argument("<id>","Site ID").option("--name <name>","Name").option("--description <desc>","Description").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e={};if(t.name&&(e.name=t.name),t.description&&(e.description=t.description),!Object.keys(e).length)throw new m("No updates specified");let o=await r(qo,{id:n,input:e});c("Docs site updated"),d(t,o.updateDocsSite);}catch(e){a(e);}}),i.command("set-visibility").description("Set site visibility").argument("<id>","Site ID").argument("<visibility>","PRIVATE or PUBLIC").option("-f, --format <format>","Output format").action(async(n,t,e)=>{try{let o=await r(Bo,{id:n,visibility:t});c(`Visibility set to ${t}`),d(e,o.updateDocsSiteVisibility);}catch(o){a(o);}}),i.command("delete-site").description("Delete documentation site").argument("<id>","Site ID").option("--force","Skip confirmation").action(async(n,t)=>{try{if(!await l("Delete this docs site?",t.force))return;await r(Fo,{id:n}),c("Docs site deleted");}catch(e){a(e);}}),i.command("pages").description("List pages for a site").argument("<siteId>","Site ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Mo,{siteId:n});d(t,e.docsPages);}catch(e){a(e);}}),i.command("page").description("Get a page").argument("<id>","Page ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Ho,{id:n});if(!e.docsPage)throw new m("Page not found");d(t,e.docsPage);}catch(e){a(e);}}),i.command("create-page").description("Create a page").requiredOption("--site-id <id>","Site ID").requiredOption("--title <title>","Page title").option("--slug <slug>","Page slug").option("--content <content>","Page content").option("--parent-id <id>","Parent page ID").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(Ko,{input:{siteId:n.siteId,title:n.title,slug:n.slug,content:n.content,parentId:n.parentId}});c("Page created"),d(n,t.createDocsPage);}catch(t){a(t);}}),i.command("update-page").description("Update a page").argument("<id>","Page ID").option("--title <title>","Title").option("--content <content>","Content").option("--slug <slug>","Slug").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e={};if(t.title&&(e.title=t.title),t.content&&(e.content=t.content),t.slug&&(e.slug=t.slug),!Object.keys(e).length)throw new m("No updates specified");let o=await r(Wo,{id:n,input:e});c("Page updated"),d(t,o.updateDocsPage);}catch(e){a(e);}}),i.command("delete-page").description("Delete a page").argument("<id>","Page ID").option("--force","Skip confirmation").action(async(n,t)=>{try{if(!await l("Delete this page?",t.force))return;await r(jo,{id:n}),c("Page deleted");}catch(e){a(e);}}),i.command("reorder-pages").description("Reorder pages").argument("<siteId>","Site ID").requiredOption("--pages <json>","Page order as JSON array").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=JSON.parse(t.pages),o=await r(Yo,{siteId:n,pages:e});c("Pages reordered"),d(t,o.reorderDocsPages);}catch(e){a(e);}}),i.command("revisions").description("List revisions for a site").argument("<siteId>","Site ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Jo,{siteId:n});d(t,e.docsRevisions);}catch(e){a(e);}}),i.command("revision").description("Get a revision").argument("<id>","Revision ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Xo,{id:n});if(!e.docsRevision)throw new m("Revision not found");d(t,e.docsRevision);}catch(e){a(e);}}),i.command("content").description("Get docs content").argument("<siteId>","Site ID").option("--path <path>","Content path").action(async(n,t)=>{try{let e=await r(zo,{siteId:n,path:t.path});e.docsContent?console.log(e.docsContent):T("No content found");}catch(e){a(e);}}),i.command("compile").description("Compile documentation site").argument("<siteId>","Site ID").option("--publish","Publish after compile").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Qo,{siteId:n,publish:t.publish??!1});c("Docs site compiled"),d(t,e.compileDocsSite);}catch(e){a(e);}}),i.command("publish").description("Publish a revision").argument("<revisionId>","Revision ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Zo,{revisionId:n});c("Revision published"),d(t,e.publishDocsRevision);}catch(e){a(e);}}),i.command("rollback").description("Rollback to a revision").argument("<siteId>","Site ID").argument("<revisionId>","Revision ID").option("--force","Skip confirmation").action(async(n,t,e)=>{try{if(!await l(`Rollback site to revision ${t}?`,e.force))return;let o=await r(ti,{siteId:n,revisionId:t});c("Rollback complete"),d({},o.rollbackDocsRevision);}catch(o){a(o);}}),i.command("signed-url").description("Generate signed URL for a site").argument("<siteId>","Site ID").action(async n=>{try{let t=await r(ei,{siteId:n});console.log(t.generateDocsSignedUrl);}catch(t){a(t);}});}function da(p){let i=p.command("audit").description("Audit log management");i.command("list").description("List audit logs").option("--action <action>","Filter by action").option("--resource-type <type>","Filter by resource type").option("--status <status>","Filter by status").option("--actor-id <id>","Filter by actor").option("--from <date>","From date").option("--to <date>","To date").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.action&&(t.action=n.action),n.resourceType&&(t.resourceType=n.resourceType),n.status&&(t.status=n.status),n.actorId&&(t.actorId=n.actorId),n.from&&(t.from=n.from),n.to&&(t.to=n.to);let o=(await r(ni,{filter:Object.keys(t).length?t:void 0})).vibeAuditLogs.items;d(n,o,{headers:["ID","Action","Resource","Resource ID","Actor","Status","Created"],rows:o.map(s=>[f(s.id,12),s.action,s.resourceType,f(s.resourceId,12),f(s.actorId,12),s.status,S(s.createdAt)])});}catch(t){a(t);}}),i.command("get").description("Get audit log").argument("<id>","Audit log ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(oi,{id:n});if(!e.vibeAuditLog)throw new m("Audit log not found");d(t,e.vibeAuditLog);}catch(e){a(e);}}),i.command("stats").description("Get audit log statistics").option("--action <action>","Filter by action").option("--resource-type <type>","Filter by resource type").option("--status <status>","Filter by status").option("--actor-id <id>","Filter by actor").option("--from <date>","From date").option("--to <date>","To date").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.action&&(t.action=n.action),n.resourceType&&(t.resourceType=n.resourceType),n.status&&(t.status=n.status),n.actorId&&(t.actorId=n.actorId),n.from&&(t.from=n.from),n.to&&(t.to=n.to);let e=await r(ii,{filter:Object.keys(t).length?t:void 0});d(n,e.vibeAuditLogStats);}catch(t){a(t);}}),i.command("delete").description("Delete audit log").argument("<id>","Audit log ID").option("--reason <reason>","Deletion reason").option("--force","Skip confirmation").action(async(n,t)=>{try{if(!await l("Delete this audit log?",t.force))return;await r(ri,{id:n,reason:t.reason}),c("Audit log deleted");}catch(e){a(e);}}),i.command("bulk-delete").description("Bulk delete audit logs").requiredOption("--ids <ids>","Comma-separated IDs").option("--reason <reason>","Deletion reason").option("--force","Skip confirmation").action(async n=>{try{let t=n.ids.split(",").map(e=>e.trim());if(!await l(`Delete ${t.length} audit logs?`,n.force))return;await r(ai,{ids:t,reason:n.reason}),c(`${t.length} audit logs deleted`);}catch(t){a(t);}}),i.command("export").description("Export audit logs").option("--action <action>","Filter by action").option("--resource-type <type>","Filter by resource type").option("--status <status>","Filter by status").option("--actor-id <id>","Filter by actor").option("--from <date>","From date").option("--to <date>","To date").option("--export-format <fmt>","Export format (csv/json)","json").action(async n=>{try{let t={};n.action&&(t.action=n.action),n.resourceType&&(t.resourceType=n.resourceType),n.status&&(t.status=n.status),n.actorId&&(t.actorId=n.actorId),n.from&&(t.from=n.from),n.to&&(t.to=n.to);let e=await r(si,{filter:Object.keys(t).length?t:void 0,exportFormat:n.exportFormat});console.log(e.exportVibeAuditLogs);}catch(t){a(t);}});}function pa(p){let i=p.command("action").description("Vibe Actions management");i.command("list").description("List actions").option("--type <type>","Filter by action type (COMMAND, SCRIPT, WEBHOOK, WORKFLOW)").option("--trigger <trigger>","Filter by trigger type (MANUAL, SCHEDULED, EVENT, ON_DEMAND)").option("--category <category>","Filter by category").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.type&&(e.actionType=t.type.toUpperCase()),t.trigger&&(e.triggerType=t.trigger.toUpperCase()),t.category&&(e.category=t.category);let s=(await r(So,{filter:Object.keys(e).length?e:void 0})).actions.items;d(t,s,{headers:["ID","Name","Type","Trigger","Source","Category"],rows:s.map(u=>[f(u.id,12),u.displayName??u.name,u.actionType,u.triggerType,u.sourceType,u.category??"-"])});}catch(e){a(e);}}),i.command("get").description("Get action details").argument("<id>").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(Eo,{id:t});if(!o.action)throw new m("Action not found");d(e,o.action);}catch(o){a(o);}}),i.command("create").description("Create action").requiredOption("--name <n>","Name").option("--display-name <n>","Display name").option("--description <d>","Description").option("--type <t>","Action type (COMMAND, SCRIPT, WEBHOOK, WORKFLOW)","COMMAND").option("--trigger <t>","Trigger type (MANUAL, SCHEDULED, EVENT, ON_DEMAND)","MANUAL").option("--command <c>","Command to execute").option("--working-directory <d>","Working directory for command").option("--script <s>","Script content").option("--script-interpreter <i>","Script interpreter (e.g. bash, python)").option("--webhook-url <u>","Webhook URL").option("--webhook-method <m>","Webhook HTTP method").option("--schedule <s>","Cron schedule expression").option("--category <c>","Category").option("--tags <t>","Comma-separated tags").option("--target-agent-id <id>","Target agent ID").option("--timeout <ms>","Timeout in milliseconds",parseInt).option("--retry-count <n>","Retry count",parseInt).option("--confirmation-required","Require confirmation before execution").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,actionType:(t.type??"COMMAND").toUpperCase(),triggerType:(t.trigger??"MANUAL").toUpperCase()};t.displayName&&(e.displayName=t.displayName),t.description&&(e.description=t.description),t.command&&(e.command=t.command),t.workingDirectory&&(e.workingDirectory=t.workingDirectory),t.script&&(e.script=t.script),t.scriptInterpreter&&(e.scriptInterpreter=t.scriptInterpreter),t.webhookUrl&&(e.webhookUrl=t.webhookUrl),t.webhookMethod&&(e.webhookMethod=t.webhookMethod),t.schedule&&(e.schedule=t.schedule),t.category&&(e.category=t.category),t.tags&&(e.tags=t.tags.split(",").map(s=>s.trim())),t.targetAgentId&&(e.targetAgentId=t.targetAgentId),t.timeout!==void 0&&(e.timeoutMs=t.timeout),t.retryCount!==void 0&&(e.retryCount=t.retryCount),t.confirmationRequired&&(e.confirmationRequired=!0);let o=await r(yo,{input:e});c("Action created"),d(t,o.createAction);}catch(e){a(e);}}),i.command("update").description("Update action").argument("<id>").option("--name <n>","Name").option("--display-name <n>","Display name").option("--description <d>","Description").option("--type <t>","Action type (COMMAND, SCRIPT, WEBHOOK, WORKFLOW)").option("--trigger <t>","Trigger type (MANUAL, SCHEDULED, EVENT, ON_DEMAND)").option("--command <c>","Command to execute").option("--working-directory <d>","Working directory for command").option("--script <s>","Script content").option("--script-interpreter <i>","Script interpreter").option("--webhook-url <u>","Webhook URL").option("--webhook-method <m>","Webhook HTTP method").option("--schedule <s>","Cron schedule expression").option("--category <c>","Category").option("--tags <t>","Comma-separated tags").option("--target-agent-id <id>","Target agent ID").option("--timeout <ms>","Timeout in milliseconds",parseInt).option("--retry-count <n>","Retry count",parseInt).option("--confirmation-required","Require confirmation before execution").option("--no-confirmation-required","Disable confirmation requirement").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.name&&(o.name=e.name),e.displayName&&(o.displayName=e.displayName),e.description&&(o.description=e.description),e.type&&(o.actionType=e.type.toUpperCase()),e.trigger&&(o.triggerType=e.trigger.toUpperCase()),e.command&&(o.command=e.command),e.workingDirectory&&(o.workingDirectory=e.workingDirectory),e.script&&(o.script=e.script),e.scriptInterpreter&&(o.scriptInterpreter=e.scriptInterpreter),e.webhookUrl&&(o.webhookUrl=e.webhookUrl),e.webhookMethod&&(o.webhookMethod=e.webhookMethod),e.schedule&&(o.schedule=e.schedule),e.category&&(o.category=e.category),e.tags&&(o.tags=e.tags.split(",").map(u=>u.trim())),e.targetAgentId&&(o.targetAgentId=e.targetAgentId),e.timeout!==void 0&&(o.timeoutMs=e.timeout),e.retryCount!==void 0&&(o.retryCount=e.retryCount),e.confirmationRequired!==void 0&&(o.confirmationRequired=e.confirmationRequired),!Object.keys(o).length)throw new m("No updates specified");let s=await r(To,{id:t,input:o});c("Action updated"),d(e,s.updateAction);}catch(o){a(o);}}),i.command("delete").description("Delete action").argument("<id>").option("--force","Skip confirmation").action(async(t,e)=>{try{if(!await l("Delete this action?",e.force))return;await r(bo,{id:t}),c("Action deleted");}catch(o){a(o);}}),i.command("duplicate").description("Duplicate action").argument("<id>").argument("[name]").option("-f, --format <format>","Output format").action(async(t,e,o)=>{try{let s=await r(Ao,{id:t,name:e});c("Action duplicated"),d(o,s.duplicateAction);}catch(s){a(s);}}),i.command("execute").description("Execute action").argument("<id>").option("--agent-id <id>","Target agent ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};e.agentId&&(o.agentId=e.agentId);let u=(await r(ho,{id:t,input:Object.keys(o).length?o:void 0})).executeAction,g=u.status;g==="SUCCESS"?c(`Action executed successfully${u.durationMs?` (${u.durationMs}ms)`:""}`):g==="RUNNING"||g==="PENDING"?c(`Action execution started (${g})`):T(u.errorMessage??`Execution ${g}`),d(e,u);}catch(o){a(o);}}),i.command("install").description("Install action from store").argument("<storeItemId>").option("--version <v>","Version to install").option("--name <n>","Custom name for installed action").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(Co,{storeItemId:t,version:e.version,name:e.name});c("Action installed from store"),d(e,o.installActionFromStore);}catch(o){a(o);}}),i.command("history").description("List action execution history").argument("[actionId]").option("--status <s>","Filter by status (PENDING, RUNNING, SUCCESS, FAILURE, TIMEOUT, CANCELLED)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};t&&(o.actionId=t),e.status&&(o.status=e.status.toUpperCase());let u=(await r(Oo,{filter:Object.keys(o).length?o:void 0})).actionExecutions.items;d(e,u,{headers:["ID","Action ID","Status","Trigger","Duration","Started"],rows:u.map(g=>[f(g.id,12),f(g.actionId,12),b(g.status),g.triggerType,g.durationMs?`${g.durationMs}ms`:"-",S(g.startedAt)])});}catch(o){a(o);}}),i.command("cancel-execution").description("Cancel a running action execution").argument("<id>").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(Do,{id:t});c("Action execution cancelled"),d(e,o.cancelActionExecution);}catch(o){a(o);}}),i.command("execution").description("Get action execution details").argument("<id>").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r($o,{id:t});if(!o.actionExecution)throw new m("Action execution not found");d(e,o.actionExecution);}catch(o){a(o);}}),i.command("schedule").description("Create a scheduled job for an action").argument("<actionId>","Action ID to schedule").option("--cron <expr>","Cron expression (for CRON schedule type)").option("--timezone <tz>","Timezone for the schedule","UTC").option("--schedule-type <type>","Schedule type (CRON, ONE_TIME, FIXED_INTERVAL)","CRON").option("--scheduled-at <date>","ISO date for ONE_TIME schedule").option("--interval <n>","Interval value (for FIXED_INTERVAL)",parseInt).option("--interval-unit <unit>","Interval unit (MINUTES, HOURS, DAYS)").option("--start-date <date>","Schedule start date (ISO)").option("--end-date <date>","Schedule end date (ISO)").option("--name <name>","Name for the scheduled job").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={actionId:t,scheduleType:(e.scheduleType??"CRON").toUpperCase()};e.cron&&(o.cronExpression=e.cron),e.timezone&&(o.timezone=e.timezone),e.scheduledAt&&(o.scheduledAt=e.scheduledAt),e.interval!==void 0&&(o.interval=e.interval),e.intervalUnit&&(o.intervalUnit=e.intervalUnit.toUpperCase()),e.startDate&&(o.startDate=e.startDate),e.endDate&&(o.endDate=e.endDate),e.name&&(o.name=e.name);let s=await r(wo,{input:o});c("Scheduled job created"),d(e,s.createScheduledJob);}catch(o){a(o);}}),i.command("unschedule").description("Delete a scheduled job").argument("<scheduledJobId>","Scheduled job ID to delete").option("--force","Skip confirmation").action(async(t,e)=>{try{if(!await l("Delete this scheduled job?",e.force))return;await r(ko,{id:t}),c("Scheduled job deleted");}catch(o){a(o);}}),i.command("schedules").description("List scheduled jobs").option("--action-id <id>","Filter by action ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.actionId&&(e.actionId=t.actionId);let s=(await r(_o,{filter:Object.keys(e).length?e:void 0})).scheduledJobs.jobs;d(t,s,{headers:["ID","Name","Type","Status","Action ID","Cron","Next Run"],rows:s.map(u=>[f(u.id,12),u.name??"-",u.scheduleType,b(u.status),f(u.actionId,12),u.cronExpression??"-",u.nextExecutionAt?S(u.nextExecutionAt):"-"])});}catch(e){a(e);}});let n=i.command("ai-prompts").description("AI prompt templates");n.command("list").description("List AI prompts").option("--category <c>","Filter by category").option("--status <s>","Filter by status (ACTIVE, ARCHIVED, DRAFT)").option("--shared","Only shared prompts").option("--search <q>","Search text").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.category&&(e.category=t.category.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.shared&&(e.isShared=!0),t.search&&(e.search=t.search);let s=(await r(Vi,{filter:Object.keys(e).length?e:void 0})).aiPrompts.items;d(t,s,{headers:["ID","Name","Category","Status","Shared","Uses","Updated"],rows:s.map(u=>[f(u.id,12),u.name,u.category,b(u.status),u.isShared?"yes":"no",String(u.usageCount??0),S(u.updatedAt)])});}catch(e){a(e);}}),n.command("get").description("Get an AI prompt").argument("<id>","Prompt ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(Gi,{id:t});if(!o.aiPrompt){T("Prompt not found");return}d(e,o.aiPrompt);}catch(o){a(o);}}),n.command("create").description("Create a new AI prompt").requiredOption("--name <name>","Prompt name").requiredOption("--content <content>","Prompt content/template").option("--description <desc>","Description").option("--category <cat>","Category","GENERAL").option("--status <s>","Status","ACTIVE").option("--shared","Share with workspace").option("--tags <tags>","Comma-separated tags").option("--variables <json>","Variables (JSON)").action(async t=>{try{let e={name:t.name,content:t.content,category:(t.category??"GENERAL").toUpperCase(),status:(t.status??"ACTIVE").toUpperCase()};if(t.description&&(e.description=t.description),t.shared&&(e.isShared=!0),t.tags&&(e.tags=t.tags.split(",").map(s=>s.trim())),t.variables)try{e.variables=JSON.parse(t.variables);}catch{throw new m("--variables must be valid JSON")}let o=await r(qi,{input:e});c(`Created prompt ${o.createAIPrompt.id}`);}catch(e){a(e);}}),n.command("update").description("Update an AI prompt").argument("<id>","Prompt ID").option("--name <name>").option("--content <content>").option("--description <desc>").option("--category <cat>").option("--status <s>").option("--shared <bool>").option("--tags <tags>","Comma-separated tags").option("--variables <json>").action(async(t,e)=>{try{let o={};if(e.name&&(o.name=e.name),e.content&&(o.content=e.content),e.description&&(o.description=e.description),e.category&&(o.category=e.category.toUpperCase()),e.status&&(o.status=e.status.toUpperCase()),e.shared!==void 0&&(o.isShared=e.shared==="true"),e.tags&&(o.tags=e.tags.split(",").map(s=>s.trim())),e.variables)try{o.variables=JSON.parse(e.variables);}catch{throw new m("--variables must be valid JSON")}await r(Bi,{id:t,input:o}),c("Prompt updated");}catch(o){a(o);}}),n.command("delete").description("Delete an AI prompt").argument("<id>","Prompt ID").option("--force","Skip confirmation").action(async(t,e)=>{try{if(!await l("Delete this prompt?",e.force))return;await r(Fi,{id:t}),c("Prompt deleted");}catch(o){a(o);}}),n.command("duplicate").description("Duplicate an AI prompt").argument("<id>","Prompt ID").requiredOption("--name <name>","Name for the duplicate").action(async(t,e)=>{try{let o=await r(Mi,{id:t,name:e.name});c(`Duplicated to ${o.duplicateAIPrompt.id}`);}catch(o){a(o);}}),n.command("render").description("Render an AI prompt with variables").argument("<id>","Prompt ID").option("--variables <json>","Variables (JSON)").action(async(t,e)=>{try{let o;if(e.variables)try{o=JSON.parse(e.variables);}catch{throw new m("--variables must be valid JSON")}let s=await r(Hi,{id:t,variables:o});process.stdout.write(s.renderAIPrompt.rendered),s.renderAIPrompt.rendered.endsWith(`
|
|
1376
|
+
`),c(`Exported ${o.exportSessions.count} sessions (${o.exportSessions.format})`);}catch(t){a(t);}});}function Wr(p){let i=p.command("notes").description("Note management");i.command("list").description("List notes").option("--vibe <id>","Filter by vibe").option("--pinned","Show only pinned").option("--tags <tags>","Filter by tags (comma-separated)").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.vibe&&(t.vibeId=n.vibe),n.pinned&&(t.isPinned=!0),n.tags&&(t.tags=n.tags.split(",").map(o=>o.trim()));let e=await r(ve,{filter:Object.keys(t).length?t:void 0});d(n,e.notes.items,{headers:["ID","Title","Pinned","Tags","Created"],rows:e.notes.items.map(o=>[f(o.id,12),o.title,o.isPinned?"Yes":"No",(o.tags??[]).join(", "),S(o.createdAt)])});}catch(t){a(t);}}),i.command("get").description("Get note").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(we,{id:n});if(!e.note)throw new m("Note not found");d(t,e.note);}catch(e){a(e);}}),i.command("create").description("Create note").requiredOption("--title <t>","Title").requiredOption("--content <c>","Content").option("--vibe <id>","Vibe ID").option("--tags <tags>","Tags (comma-separated)").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(ke,{input:{title:n.title,content:n.content,vibeId:n.vibe,tags:n.tags?.split(",").map(e=>e.trim())}});c("Note created"),d(n,t.createNote);}catch(t){a(t);}}),i.command("update").description("Update note").argument("<id>").option("--title <t>","Title").option("--content <c>","Content").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e={};if(t.title&&(e.title=t.title),t.content&&(e.content=t.content),!Object.keys(e).length)throw new m("No updates specified");let o=await r(_e,{id:n,input:e});c("Note updated"),d(t,o.updateNote);}catch(e){a(e);}}),i.command("delete").description("Delete note").argument("<id>").option("--force","Skip confirmation").action(async(n,t)=>{try{if(!await l("Delete this note?",t.force))return;await r(Re,{id:n}),c("Note deleted");}catch(e){a(e);}}),i.command("search").description("Search notes").argument("<query>").option("--vibe <id>","Scope to vibe").option("--limit <n>","Max results",parseInt).option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Ne,{query:n,vibeId:t.vibe,limit:t.limit});d(t,e.searchNotes);}catch(e){a(e);}}),i.command("pin").description("Pin a note").argument("<id>").action(async n=>{try{await r(xe,{id:n}),c("Note pinned");}catch(t){a(t);}}),i.command("unpin").description("Unpin a note").argument("<id>").action(async n=>{try{await r(Ue,{id:n}),c("Note unpinned");}catch(t){a(t);}}),i.command("tag").description("Tag a note").argument("<noteId>","Note ID").argument("<tag>","Tag").action(async(n,t)=>{try{await r(Le,{input:{noteId:n,tag:t}}),c("Note tagged");}catch(e){a(e);}}),i.command("untag").description("Remove tag from note").argument("<noteId>","Note ID").argument("<tag>","Tag").action(async(n,t)=>{try{await r(Pe,{input:{noteId:n,tag:t}}),c("Tag removed");}catch(e){a(e);}}),i.command("replace-tags").description("Replace all tags on a note").argument("<noteId>","Note ID").requiredOption("--tags <tags>","Tags (comma-separated)").action(async(n,t)=>{try{await r(Ve,{input:{noteId:n,tags:t.tags.split(",").map(e=>e.trim())}}),c("Tags replaced");}catch(e){a(e);}}),i.command("create-tag").description("Create a note tag").argument("<name>","Tag name").action(async n=>{try{await r(Ge,{input:{name:n}}),c("Tag created");}catch(t){a(t);}}),i.command("available-tags").description("List available note tags").option("--query <q>","Search query").option("--limit <n>","Max results",parseInt).option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(qe,{query:n.query,limit:n.limit});d(n,t.availableNoteTags);}catch(t){a(t);}}),i.command("get-tags").description("Get tags for a note").argument("<noteId>","Note ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Be,{noteId:n});d(t,e.noteTags);}catch(e){a(e);}}),i.command("related-tags").description("Get related tags for a note").argument("<noteId>","Note ID").option("--limit <n>","Max results",parseInt).option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Fe,{noteId:n,limit:t.limit});d(t,e.relatedNoteTags);}catch(e){a(e);}}),i.command("bulk-delete").description("Bulk delete notes").requiredOption("--ids <ids>","Note IDs (comma-separated)").option("--force","Skip confirmation").action(async n=>{try{if(!await l("Delete these notes?",n.force))return;await r(Me,{ids:n.ids.split(",").map(t=>t.trim())}),c("Notes deleted");}catch(t){a(t);}});}function jr(p){let i={};return p.limit!==void 0&&(i.limit=Number(p.limit)),p.offset!==void 0&&(i.offset=Number(p.offset)),Object.keys(i).length>0?i:void 0}function Yr(p){let i=p.command("security").description("Security scans, findings, providers, exceptions");i.command("providers").description("List configured security providers").option("-f, --format <format>","Output format").action(async s=>{try{let u=await r(er);d(s,u.securityProviders);}catch(u){a(u);}}),i.command("set-provider").description("Configure a security provider for a vibe + stage").requiredOption("--vibe-id <id>").requiredOption("--stage <stage>").requiredOption("--provider-key <key>").option("--config <json>","Provider-specific config as JSON").option("-f, --format <format>","Output format").action(async s=>{try{let u={vibeId:s.vibeId,stage:s.stage.toUpperCase(),providerKey:s.providerKey};s.config&&(u.config=JSON.parse(s.config));let g=await r(gr,{input:u});c("Security provider set"),d(s,g.setSecurityProvider);}catch(u){a(u);}});let n=i.command("scans").description("Security scan runs");n.command("list").description("List my (default) or all scans").option("--scope <scope>","mine | all","mine").option("--vibe-id <id>").option("--status <status>").option("--stage <stage>").option("--conclusion <conclusion>").option("--limit <n>").option("--offset <n>").option("-f, --format <format>","Output format").action(async s=>{try{let u={};s.vibeId&&(u.vibeId=s.vibeId),s.status&&(u.status=s.status.toUpperCase()),s.stage&&(u.stage=s.stage.toUpperCase()),s.conclusion&&(u.conclusion=s.conclusion.toUpperCase());let g=s.scope==="all"?ir:or,M=await r(g,{filter:Object.keys(u).length>0?u:void 0,pagination:jr(s)});d(s,s.scope==="all"?M.allSecurityScans:M.mySecurityScans);}catch(u){a(u);}}),n.command("get").description("Get a security scan run").argument("<id>").option("-f, --format <format>","Output format").action(async(s,u)=>{try{let g=await r(nr,{id:s});if(!g.securityScan)throw new m("Scan not found");d(u,g.securityScan);}catch(g){a(g);}}),n.command("run").description("Run a security scan for a vibe at a stage").requiredOption("--vibe-id <id>").requiredOption("--stage <stage>").option("-f, --format <format>","Output format").action(async s=>{try{let u=await r(dr,{vibeId:s.vibeId,stage:s.stage.toUpperCase()});c("Scan triggered"),d(s,u.runSecurityScan);}catch(u){a(u);}}),n.command("cancel").description("Cancel an in-flight security scan").argument("<id>").option("-f, --format <format>","Output format").action(async(s,u)=>{try{let g=await r(pr,{id:s});c("Scan cancelled"),d(u,g.cancelSecurityScan);}catch(g){a(g);}});let t=i.command("findings").description("Security findings");t.command("list").description("List security findings").option("--vibe-id <id>").option("--status <status>").option("--severity <severity>").option("--category <category>").option("--search <text>").option("--limit <n>").option("--offset <n>").option("-f, --format <format>","Output format").action(async s=>{try{let u={};s.vibeId&&(u.vibeId=s.vibeId),s.status&&(u.status=s.status.toUpperCase()),s.severity&&(u.severity=s.severity.toUpperCase()),s.category&&(u.category=s.category.toUpperCase()),s.search&&(u.search=s.search);let g=await r(rr,{filter:Object.keys(u).length>0?u:void 0,pagination:jr(s)});d(s,g.securityFindings);}catch(u){a(u);}}),t.command("update-status").description("Update finding workflow status").argument("<id>").requiredOption("--status <status>","OPEN | ACCEPTED | SUPPRESSED | FIXED | FALSE_POSITIVE").option("-f, --format <format>","Output format").action(async(s,u)=>{try{let g=await r(lr,{id:s,status:u.status.toUpperCase()});c("Finding status updated"),d(u,g.updateSecurityFindingStatus);}catch(g){a(g);}}),i.command("policy-decision").description("Fetch OPA policy decision for a scan run").requiredOption("--scan-run-id <id>").option("-f, --format <format>","Output format").action(async s=>{try{let u=await r(ar,{scanRunId:s.scanRunId});d(s,u.securityPolicyDecision);}catch(u){a(u);}}),i.command("status").description("Security posture for a vibe").argument("<vibeId>").option("-f, --format <format>","Output format").action(async(s,u)=>{try{let g=await r(sr,{vibeId:s});d(u,g.securityStatus);}catch(g){a(g);}});let e=i.command("repo-config").description("Repository security policy config");e.command("get").argument("<vibeId>").option("-f, --format <format>","Output format").action(async(s,u)=>{try{let g=await r(cr,{vibeId:s});d(u,g.repositorySecurityConfig);}catch(g){a(g);}}),e.command("update").argument("<vibeId>").option("--policy-level <level>","ADVISORY | WARN | BLOCK").option("--enabled-stages <csv>","Comma-separated stages").option("--plugin-assignments <json>").option("--config-yaml-equivalent <json>").option("-f, --format <format>","Output format").action(async(s,u)=>{try{let g={};u.policyLevel&&(g.policyLevel=u.policyLevel.toUpperCase()),u.enabledStages&&(g.enabledStages=u.enabledStages.split(",").map(fa=>fa.trim().toUpperCase())),u.pluginAssignments&&(g.pluginAssignments=JSON.parse(u.pluginAssignments)),u.configYamlEquivalent&&(g.configYamlEquivalent=JSON.parse(u.configYamlEquivalent));let M=await r(fr,{vibeId:s,input:g});c("Repository security config updated"),d(u,M.updateRepositorySecurityConfig);}catch(g){a(g);}});let o=i.command("exceptions").description("Security exception waivers");o.command("create").requiredOption("--vibe-id <id>").requiredOption("--finding-fingerprint <fp>").requiredOption("--reason <reason>").requiredOption("--expires-at <iso>").option("--compensating-controls <text>").option("-f, --format <format>","Output format").action(async s=>{try{let u={vibeId:s.vibeId,findingFingerprint:s.findingFingerprint,reason:s.reason,expiresAt:s.expiresAt};s.compensatingControls&&(u.compensatingControls=s.compensatingControls);let g=await r(ur,{input:u});c("Exception created"),d(s,g.createSecurityException);}catch(u){a(u);}}),o.command("revoke").argument("<id>").option("--force").action(async(s,u)=>{try{if(!await l(`Revoke exception ${s}?`,u.force))return;await r(mr,{id:s}),c("Exception revoked");}catch(g){a(g);}}),i.command("evidence-presign").description("Get a presigned URL for evidence upload").requiredOption("--scan-run-id <id>").requiredOption("--sha256 <hex>").requiredOption("--size-bytes <n>").requiredOption("--type <type>","SBOM_CYCLONEDX | SBOM_SPDX | SARIF | GRYPE_JSON | COSIGN_BUNDLE | OPA_DECISION | PROVENANCE").option("-f, --format <format>","Output format").action(async s=>{try{let u=await r(Ir,{scanRunId:s.scanRunId,sha256:s.sha256,sizeBytes:Number(s.sizeBytes),type:s.type.toUpperCase()});d(s,u.presignSecurityEvidence);}catch(u){a(u);}});}function Jr(p){let i=p.command("ci").description("CI/CD pipeline status (via GitOps providers)");i.command("status").description("Get CI status for a provider on an agent").requiredOption("--provider-id <id>").requiredOption("--agent-id <id>").option("--limit <n>").option("-f, --format <format>","Output format").action(async e=>{try{let o=await r(yr,{providerId:e.providerId,agentId:e.agentId,limit:e.limit!==void 0?Number(e.limit):void 0});d(e,o.getCIStatus);}catch(o){a(o);}}),i.command("refresh-status").description("Force refresh CI status snapshot").requiredOption("--provider-id <id>").requiredOption("--agent-id <id>").option("-f, --format <format>","Output format").action(async e=>{try{let o=await r(hr,{providerId:e.providerId,agentId:e.agentId});c("CI status refreshed"),d(e,o.refreshCIStatus);}catch(o){a(o);}});let n=i.command("pipelines").description("CI pipeline runs");n.command("list").requiredOption("--provider-id <id>").requiredOption("--agent-id <id>").option("--branch <branch>").option("--limit <n>").option("-f, --format <format>","Output format").action(async e=>{try{let o=await r(Er,{providerId:e.providerId,agentId:e.agentId,branch:e.branch,limit:e.limit!==void 0?Number(e.limit):void 0});d(e,o.getCIPipelineRuns);}catch(o){a(o);}}),n.command("details").argument("<runId>").requiredOption("--provider-id <id>").requiredOption("--agent-id <id>").option("-f, --format <format>","Output format").action(async(e,o)=>{try{let s=await r(Tr,{providerId:o.providerId,agentId:o.agentId,runId:e});d(o,s.getCIPipelineDetails);}catch(s){a(s);}});let t=i.command("repo-stats").description("Repository statistics");t.command("get").requiredOption("--provider-id <id>").requiredOption("--agent-id <id>").option("-f, --format <format>","Output format").action(async e=>{try{let o=await r(br,{providerId:e.providerId,agentId:e.agentId});d(e,o.getRepoStats);}catch(o){a(o);}}),t.command("refresh").requiredOption("--provider-id <id>").requiredOption("--agent-id <id>").option("-f, --format <format>","Output format").action(async e=>{try{let o=await r(Ar,{providerId:e.providerId,agentId:e.agentId});c("Repo stats refreshed"),d(e,o.refreshRepoStats);}catch(o){a(o);}});}function Xr(p){let i=p.command("gitops").description("GitOps provider connections");i.command("list").description("List GitOps providers").option("--provider-type <t>","GITHUB | GITLAB | BITBUCKET | AZURE_DEVOPS").option("--is-active <bool>").option("--vibe-id <id>").option("--limit <n>").option("--offset <n>").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.providerType&&(t.providerType=n.providerType.toUpperCase()),n.isActive!==void 0&&(t.isActive=n.isActive==="true"),n.vibeId&&(t.vibeId=n.vibeId);let e={};n.limit!==void 0&&(e.limit=Number(n.limit)),n.offset!==void 0&&(e.offset=Number(n.offset));let o=await r(Cr,{filter:Object.keys(t).length>0?t:void 0,pagination:Object.keys(e).length>0?e:void 0});d(n,o.listGitopsProviders);}catch(t){a(t);}}),i.command("get").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Dr,{id:n});if(!e.getGitopsProvider)throw new m("Provider not found");d(t,e.getGitopsProvider);}catch(e){a(e);}}),i.command("create").requiredOption("--name <name>").requiredOption("--provider-type <t>","GITHUB | GITLAB | BITBUCKET | AZURE_DEVOPS").requiredOption("--repo-url <url>").option("--vibe-id <id>").option("--is-active <bool>").option("--metadata <json>").option("-f, --format <format>","Output format").action(async n=>{try{let t={name:n.name,providerType:n.providerType.toUpperCase(),repoUrl:n.repoUrl};n.vibeId&&(t.vibeId=n.vibeId),n.isActive!==void 0&&(t.isActive=n.isActive==="true"),n.metadata&&(t.metadata=JSON.parse(n.metadata));let e=await r(Or,{input:t});c("GitOps provider created"),d(n,e.createGitopsProvider);}catch(t){a(t);}}),i.command("update").argument("<id>").option("--name <name>").option("--repo-url <url>").option("--vibe-id <id>").option("--is-active <bool>").option("--metadata <json>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e={};t.name&&(e.name=t.name),t.repoUrl&&(e.repoUrl=t.repoUrl),t.vibeId&&(e.vibeId=t.vibeId),t.isActive!==void 0&&(e.isActive=t.isActive==="true"),t.metadata&&(e.metadata=JSON.parse(t.metadata));let o=await r($r,{id:n,input:e});c("GitOps provider updated"),d(t,o.updateGitopsProvider);}catch(e){a(e);}}),i.command("delete").argument("<id>").option("--force").action(async(n,t)=>{try{if(!await l(`Delete GitOps provider ${n}?`,t.force))return;await r(vr,{id:n}),c("GitOps provider deleted");}catch(e){a(e);}});}function zr(p){let i=p.command("settings").description("User settings and preferences");i.command("mine").description("Get full settings bundle for the current user").option("-f, --format <format>","Output format").action(async t=>{try{let e=await r(Nr);d(t,e.mySettings);}catch(e){a(e);}}),i.command("category").description("Get a single settings category").argument("<category>","PREFERENCES | NOTIFICATIONS | WORKSPACE_DEFAULTS | PROFILE | SECURITY | ADVANCED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(xr,{category:t.toUpperCase()});d(e,o.mySettingsByCategory);}catch(o){a(o);}}),i.command("reset").description("Reset a settings category to workspace defaults").argument("<category>").option("--force").action(async(t,e)=>{try{if(!await l(`Reset ${t}?`,e.force))return;await r(Vr,{category:t.toUpperCase()}),c("Settings reset");}catch(o){a(o);}}),i.command("update-preferences").description("Update UI preferences").option("--theme <theme>").option("--ui-density <density>").option("--sidebar-collapsed <bool>").option("--code-font <font>").option("--code-font-size <n>").option("--preferred-ide-command <cmd>").option("--default-agent-for-vibe <json>").option("--vibe-ide-overrides <json>").option("--vibe-detail-tab-order <json>").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.theme&&(e.theme=t.theme),t.uiDensity&&(e.uiDensity=t.uiDensity),t.sidebarCollapsed!==void 0&&(e.sidebarCollapsed=t.sidebarCollapsed==="true"),t.codeFont&&(e.codeFont=t.codeFont),t.codeFontSize!==void 0&&(e.codeFontSize=Number(t.codeFontSize)),t.preferredIdeCommand&&(e.preferredIdeCommand=t.preferredIdeCommand),t.defaultAgentForVibe&&(e.defaultAgentForVibe=JSON.parse(t.defaultAgentForVibe)),t.vibeIdeOverrides&&(e.vibeIdeOverrides=JSON.parse(t.vibeIdeOverrides)),t.vibeDetailTabOrder&&(e.vibeDetailTabOrder=JSON.parse(t.vibeDetailTabOrder));let o=await r(Gr,{input:e});c("Preferences updated"),d(t,o.updatePreferences);}catch(e){a(e);}}),i.command("update-notifications").description("Update notification preferences").option("--email-digest <bool>").option("--digest-frequency <freq>","daily | weekly | none").option("--agent-offline <bool>").option("--session-error <bool>").option("--vibe-status-change <bool>").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.emailDigest!==void 0&&(e.emailDigest=t.emailDigest==="true"),t.digestFrequency&&(e.digestFrequency=t.digestFrequency),t.agentOffline!==void 0&&(e.agentOffline=t.agentOffline==="true"),t.sessionError!==void 0&&(e.sessionError=t.sessionError==="true"),t.vibeStatusChange!==void 0&&(e.vibeStatusChange=t.vibeStatusChange==="true");let o=await r(qr,{input:e});c("Notification preferences updated"),d(t,o.updateNotificationPreferences);}catch(e){a(e);}}),i.command("update-workspace-defaults").description("Update workspace defaults (admin)").option("--default-agent <id>").option("--default-session-type <t>").option("--default-vibe-type <t>").option("--default-env-vars <text>").option("--auto-start-sessions <bool>").option("--auto-git-sync <bool>").option("--agent-heartbeat-interval <n>").option("--agent-max-sessions <n>").option("--agent-auto-reconnect <bool>").option("--auto-update <bool>").option("--telemetry-enabled <bool>").option("--log-level <level>").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.defaultAgent&&(e.defaultAgent=t.defaultAgent),t.defaultSessionType&&(e.defaultSessionType=t.defaultSessionType),t.defaultVibeType&&(e.defaultVibeType=t.defaultVibeType),t.defaultEnvVars&&(e.defaultEnvironmentVariables=t.defaultEnvVars),t.autoStartSessions!==void 0&&(e.autoStartSessions=t.autoStartSessions==="true"),t.autoGitSync!==void 0&&(e.autoGitSync=t.autoGitSync==="true"),t.agentHeartbeatInterval!==void 0&&(e.agentHeartbeatInterval=Number(t.agentHeartbeatInterval)),t.agentMaxSessions!==void 0&&(e.agentMaxSessions=Number(t.agentMaxSessions)),t.agentAutoReconnect!==void 0&&(e.agentAutoReconnect=t.agentAutoReconnect==="true"),t.autoUpdate!==void 0&&(e.autoUpdate=t.autoUpdate==="true"),t.telemetryEnabled!==void 0&&(e.telemetryEnabled=t.telemetryEnabled==="true"),t.logLevel&&(e.logLevel=t.logLevel);let o=await r(Br,{input:e});c("Workspace defaults updated"),d(t,o.updateWorkspaceDefaults);}catch(e){a(e);}});let n=i.command("secrets").description("Settings secrets (encrypted KV)");n.command("list").option("-f, --format <format>","Output format").action(async t=>{try{let e=await r(Ur);d(t,e.listSettingsSecrets);}catch(e){a(e);}}),n.command("set").argument("<key>").argument("<value>").option("-f, --format <format>","Output format").action(async(t,e,o)=>{try{let s=await r(Lr,{input:{key:t,value:e}});c("Secret set"),d(o,s.setSettingsSecret);}catch(s){a(s);}}),n.command("delete").argument("<key>").option("--force").action(async(t,e)=>{try{if(!await l(`Delete secret ${t}?`,e.force))return;await r(Pr,{key:t}),c("Secret deleted");}catch(o){a(o);}}),i.command("resolve-integration-token").description("Resolve a decrypted integration token for an agent").argument("<connectionId>").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(Fr,{connectionId:t});d(e,o.vibecontrolsResolveIntegrationToken);}catch(o){a(o);}});}function Qr(p){let i=p.command("config").description("Backend configuration management");Yr(i),Jr(i),Xr(i),zr(i),i.command("list").description("List configs").requiredOption("--scope <s>","Scope (WORKSPACE, VIBE, SESSION, AGENT, USER, GLOBAL)").option("--scope-id <id>","Scope entity ID").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(He,{scope:n.scope.toUpperCase(),scopeId:n.scopeId});d(n,t.configurationsByScope);}catch(t){a(t);}}),i.command("get").description("Get config value").argument("<key>").requiredOption("--scope <s>","Scope").option("--scope-id <id>","Scope ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Ke,{key:n,scope:t.scope.toUpperCase(),scopeId:t.scopeId});if(!e.configuration)throw new m("Config not found");d(t,e.configuration);}catch(e){a(e);}}),i.command("set").description("Set config value").argument("<key>").argument("<value>").requiredOption("--scope <s>","Scope").option("--scope-id <id>","Scope ID").option("--secret","Mark as secret").option("-f, --format <format>","Output format").action(async(n,t,e)=>{try{let o;try{o=JSON.parse(t);}catch{o=t;}let s=await r(je,{key:n,scope:e.scope.toUpperCase(),scopeId:e.scopeId,value:o,isSecret:e.secret});c("Config set"),d(e,s.setConfiguration);}catch(o){a(o);}}),i.command("delete").description("Delete config").argument("<key>").requiredOption("--scope <s>","Scope").option("--scope-id <id>","Scope ID").action(async(n,t)=>{try{await r(Ye,{key:n,scope:t.scope.toUpperCase(),scopeId:t.scopeId}),c("Config deleted");}catch(e){a(e);}}),i.command("value").description("Get raw config value").argument("<key>").requiredOption("--scope <s>","Scope").option("--scope-id <id>","Scope ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(We,{key:n,scope:t.scope.toUpperCase(),scopeId:t.scopeId});console.log(e.configurationValue);}catch(e){a(e);}}),i.command("bulk-set").description("Bulk set configs").requiredOption("--scope <s>","Scope").option("--scope-id <id>","Scope ID").requiredOption("--input <json>","JSON array of [{key,value,isSecret?}]").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(Je,{configurations:JSON.parse(n.input),scope:n.scope.toUpperCase(),scopeId:n.scopeId});c("Configs set"),d(n,t.bulkSetConfigurations);}catch(t){a(t);}}),i.command("bulk-delete").description("Bulk delete configs").requiredOption("--scope <s>","Scope").option("--scope-id <id>","Scope ID").requiredOption("--keys <keys>","Comma-separated keys").option("--force","Skip confirmation").action(async n=>{try{if(!await l("Delete these configs?",n.force))return;await r(Xe,{keys:n.keys.split(",").map(t=>t.trim()),scope:n.scope.toUpperCase(),scopeId:n.scopeId}),c("Configs deleted");}catch(t){a(t);}});}function Zr(p){let i=p.command("webhooks").description("Webhook management");i.command("list").description("List webhooks").option("--active","Only active").option("-f, --format <format>","Output format").action(async n=>{try{let t=n.active?{isActive:!0}:void 0,e=await r(ze,{filter:t});d(n,e.webhooks.items,{headers:["ID","Name","URL","Active","Events","Deliveries"],rows:e.webhooks.items.map(o=>[f(o.id,12),o.name,f(o.url,30),o.isActive?"Yes":"No",(o.events??[]).join(", "),String(o.deliveryCount??0)])});}catch(t){a(t);}}),i.command("get").description("Get webhook").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Qe,{id:n});if(!e.webhook)throw new m("Webhook not found");d(t,e.webhook);}catch(e){a(e);}}),i.command("create").description("Create webhook").requiredOption("--name <n>","Name").requiredOption("--url <u>","URL").requiredOption("--events <events>","Events (comma-separated)").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(Ze,{input:{name:n.name,url:n.url,events:n.events.split(",").map(e=>e.trim())}});c("Webhook created"),d(n,t.createWebhook);}catch(t){a(t);}}),i.command("update").description("Update webhook").argument("<id>").option("--name <n>","Name").option("--url <u>","URL").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e={};if(t.name&&(e.name=t.name),t.url&&(e.url=t.url),!Object.keys(e).length)throw new m("No updates specified");let o=await r(tn,{id:n,input:e});c("Webhook updated"),d(t,o.updateWebhook);}catch(e){a(e);}}),i.command("delete").description("Delete webhook").argument("<id>").option("--force","Skip confirmation").action(async(n,t)=>{try{if(!await l("Delete this webhook?",t.force))return;await r(en,{id:n}),c("Webhook deleted");}catch(e){a(e);}}),i.command("test").description("Test webhook").argument("<id>").action(async n=>{try{await r(nn,{id:n}),c("Webhook test sent");}catch(t){a(t);}}),i.command("active").description("List active webhooks").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(on);d(n,t.activeWebhooks);}catch(t){a(t);}}),i.command("by-event").description("List webhooks by event").argument("<event>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(rn,{event:n});d(t,e.webhooksByEvent);}catch(e){a(e);}}),i.command("trigger").description("Trigger webhook").argument("<id>").option("--payload <json>","JSON payload").action(async(n,t)=>{try{await r(an,{id:n,payload:t.payload?JSON.parse(t.payload):void 0}),c("Webhook triggered");}catch(e){a(e);}}),i.command("reset-failures").description("Reset webhook failures").argument("<id>").action(async n=>{try{await r(sn,{id:n}),c("Webhook failures reset");}catch(t){a(t);}});}function va(p,i="HTTPS"){if(!p)return i;let n=p.toUpperCase();if(n==="HTTP"||n==="HTTPS"||n==="TCP"||n==="UDP")return n;throw new Error(`Invalid protocol: ${p} (expected http|https|tcp|udp)`)}function ct(p){return (p??"PROD").toUpperCase()==="ALPHA"?"ALPHA":"PROD"}function ta(p){let i=p.command("tunnels").description("Tunnel management (VibeTunnels)");i.command("providers").description("List tunnel providers with capabilities").option("-f, --format <format>","Output format").action(async t=>{try{let e=await r(pn);d(t,e.tunnelProviders);}catch(e){a(e);}}),i.command("list").description("List tunnels in the workspace").option("--provider <key>","Filter by provider (vibetunnels|cloudflare)").option("--status <status>","Filter by status").option("--search <query>","Search by name/slug").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.provider&&(e.providerKey=t.provider.toUpperCase()),t.status&&(e.status=[t.status.toUpperCase()]),t.search&&(e.search=t.search);let o=await r(cn,{filter:e});if(t.format){d(t,o.tunnels);return}for(let s of o.tunnels.items){let u=s.primaryDomain?.hostname??"(no domain)";console.log(`${s.id} ${s.slug} ${s.providerKey} ${s.status} ${u} ${s.protocol}:${s.localPort}`);}console.log(`
|
|
1377
|
+
${o.tunnels.total} total`);}catch(e){a(e);}}),i.command("get").description("Get a tunnel by ID").argument("<id>").option("-f, --format <format>").action(async(t,e)=>{try{let o=await r(dn,{id:t});if(!o.tunnel)throw new m(`Tunnel ${t} not found`);d(e,o.tunnel);}catch(o){a(o);}}),i.command("create").description("Create a tunnel (DRAFT \u2014 start with `vibe tunnels start`)").requiredOption("--agent <id>","Agent ID").requiredOption("--name <name>","Tunnel name").requiredOption("--port <p>","Local port",parseInt).option("--provider <key>","Provider key (vibetunnels|cloudflare)","VIBETUNNELS").option("--protocol <p>","http|https|tcp|udp","https").option("--host <host>","Local host","127.0.0.1").option("--subdomain <label>","Reserve a *.vibetunnels.com subdomain").option("--env <env>","alpha|prod for managed subdomain","prod").option("--description <text>").option("-f, --format <format>").action(async t=>{try{let e={agentId:t.agent,name:t.name,description:t.description,providerKey:t.provider.toUpperCase(),protocol:va(t.protocol),localPort:t.port,localHost:t.host,managedSubdomain:t.subdomain,environment:ct(t.env)},o=await r(un,{input:e});c(`Tunnel created: ${o.createTunnel.slug}`),d(t,o.createTunnel);}catch(e){a(e);}}),i.command("start").description("Start a tunnel").argument("<id>").action(async t=>{try{await r(ln,{id:t}),c("Tunnel started");}catch(e){a(e);}}),i.command("stop").description("Stop a tunnel").argument("<id>").action(async t=>{try{await r(fn,{id:t}),c("Tunnel stopped");}catch(e){a(e);}}),i.command("rotate").description("Rotate tunnel credentials").argument("<id>").action(async t=>{try{await r(In,{id:t}),c("Tunnel credentials rotated");}catch(e){a(e);}}),i.command("delete").description("Delete a tunnel").argument("<id>").option("--force","Skip confirmation").action(async(t,e)=>{try{if(!await l("Delete this tunnel?",e.force))return;await r(gn,{id:t}),c("Tunnel deleted");}catch(o){a(o);}}),i.command("sessions").description("List sessions for a tunnel").argument("<tunnelId>").option("-f, --format <format>").action(async(t,e)=>{try{let o=await r(yn,{tunnelId:t});d(e,o);}catch(o){a(o);}}),i.command("issue-session").description("Issue a short-lived token for a tunnel (printed once)").argument("<tunnelId>").option("--ttl <seconds>","TTL in seconds",t=>parseInt(t,10)).action(async(t,e)=>{try{let o=await r(Sn,{tunnelId:t,ttlSeconds:e.ttl});console.log("Session issued. The token below is shown exactly once."),console.log(`Session ID: ${o.issueTunnelSession.session.id}`),console.log(`Token: ${o.issueTunnelSession.token}`),console.log(`Expires: ${o.issueTunnelSession.session.expiresAt}`),console.log(`Agent hint: ${JSON.stringify(o.issueTunnelSession.agentConfigHint,null,2)}`);}catch(o){a(o);}}),i.command("revoke-session").description("Revoke an active tunnel session").argument("<sessionId>").option("--reason <text>").action(async(t,e)=>{try{await r(En,{sessionId:t,reason:e.reason??"revoked via CLI"}),c("Session revoked");}catch(o){a(o);}});let n=i.command("domains").description("Manage tunnel domains");n.command("list").description("List domains (optionally scoped to a tunnel)").option("--tunnel <id>","Tunnel ID").option("-f, --format <format>").action(async t=>{try{let e=await r(Dn,{tunnelId:t.tunnel??null});d(t,e);}catch(e){a(e);}}),n.command("reserve").description("Reserve a managed *.vibetunnels.com subdomain").requiredOption("--label <label>","Subdomain label").option("--env <env>","alpha|prod","prod").action(async t=>{try{let e=await r(Tn,{input:{label:t.label,environment:ct(t.env)}});c(`Reserved ${e.reserveTunnelSubdomain.hostname}`);}catch(e){a(e);}}),n.command("add-custom").description("Register a user-owned custom domain (TXT verification required)").argument("<hostname>").action(async t=>{try{let e=await r(bn,{input:{hostname:t}});console.log(`Registered ${e.registerCustomTunnelDomain.hostname}.`),console.log(`Create a TXT record at ${e.registerCustomTunnelDomain.challengeRecordName} containing:`),console.log(` ${e.registerCustomTunnelDomain.challengeToken}`);}catch(e){a(e);}}),n.command("attach").description("Attach a (verified) domain to a tunnel").argument("<tunnelId>").argument("<domainId>").option("--primary","Mark as primary domain").action(async(t,e,o)=>{try{await r(hn,{tunnelId:t,domainId:e,makePrimary:!!o.primary}),c("Domain attached");}catch(s){a(s);}}),n.command("detach").description("Detach a domain from a tunnel").argument("<tunnelId>").argument("<domainId>").action(async(t,e)=>{try{await r(An,{tunnelId:t,domainId:e}),c("Domain detached");}catch(o){a(o);}}),n.command("verify").description("Force verification check for a custom domain").argument("<domainId>").action(async t=>{try{let e=await r(Cn,{domainId:t});console.log(`Status: ${e.verifyTunnelDomain.verificationStatus}`),e.verifyTunnelDomain.lastCheckError&&console.log(`Error: ${e.verifyTunnelDomain.lastCheckError}`);}catch(e){a(e);}}),n.command("get").description("Get a tunnel domain by ID").argument("<id>").option("-f, --format <format>").action(async(t,e)=>{try{let o=await r($n,{id:t});d(e,o);}catch(o){a(o);}}),n.command("delete").description("Delete a tunnel domain (detach + drop record)").argument("<domainId>").option("--force","Skip confirmation").action(async(t,e)=>{try{if(!await l("Delete this tunnel domain?",e.force))return;await r(Rn,{domainId:t}),c("Tunnel domain deleted");}catch(o){a(o);}}),i.command("by-slug").description("Get a tunnel by its workspace-unique slug").argument("<slug>").option("-f, --format <format>").action(async(t,e)=>{try{let o=await r(On,{slug:t});if(!o.tunnelBySlug)throw new m(`Tunnel with slug ${t} not found`);d(e,o.tunnelBySlug);}catch(o){a(o);}}),i.command("update").description("Update a tunnel (name, host, port, basic auth, metadata)").argument("<id>").option("--name <name>").option("--description <text>").option("--host <host>").option("--port <port>","Local port",t=>parseInt(t,10)).option("--tls-mode <mode>","FULL|STRICT|NONE").option("--basic-auth-user <user>").option("--basic-auth-password <pw>").action(async(t,e)=>{try{let o={};if(e.name!==void 0&&(o.name=e.name),e.description!==void 0&&(o.description=e.description),e.host!==void 0&&(o.localHost=e.host),e.port!==void 0&&(o.localPort=e.port),e.tlsMode!==void 0&&(o.tlsMode=e.tlsMode.toUpperCase()),e.basicAuthUser!==void 0&&(o.basicAuthUser=e.basicAuthUser),e.basicAuthPassword!==void 0&&(o.basicAuthPassword=e.basicAuthPassword),Object.keys(o).length===0)throw new m("Pass at least one field to update");await r(mn,{id:t,input:o}),c("Tunnel updated");}catch(o){a(o);}}),i.command("provider").description("Get a single tunnel provider by key").argument("<key>","vibetunnels|cloudflare").option("-f, --format <format>").action(async(t,e)=>{try{let o=await r(vn,{key:t.toUpperCase()});d(e,o);}catch(o){a(o);}}),i.command("shards").description("List tunnel server shards (frps instances)").option("--env <env>","alpha|prod").option("-f, --format <format>").action(async t=>{try{let e=await r(wn,{environment:t.env?ct(t.env):null});d(t,e);}catch(e){a(e);}}),i.command("usage").description("Hourly usage buckets for a tunnel in a time range").argument("<tunnelId>").requiredOption("--from <iso>","ISO8601 start").requiredOption("--to <iso>","ISO8601 end").option("-f, --format <format>").action(async(t,e)=>{try{let o=await r(kn,{tunnelId:t,from:e.from,to:e.to});d(e,o);}catch(o){a(o);}}),i.command("audit").description("Audit log entries scoped to a tunnel").argument("<tunnelId>").option("--limit <n>","Pagination limit",t=>parseInt(t,10)).option("--offset <n>","Pagination offset",t=>parseInt(t,10)).option("-f, --format <format>").action(async(t,e)=>{try{let o={};e.limit!==void 0&&(o.limit=e.limit),e.offset!==void 0&&(o.offset=e.offset);let s=await r(_n,{tunnelId:t,pagination:Object.keys(o).length>0?o:null});d(e,s);}catch(o){a(o);}}),i.command("probe-agent").description("Probe an agent tunnel URL for health + identity").requiredOption("--url <url>","Agent tunnel URL (https://...)").option("--api-key <key>","Agent API key").option("-f, --format <format>").action(async t=>{try{let e=await r(Nn,{url:t.url,agentApiKey:t.apiKey??null});d(t,e);}catch(e){a(e);}}),i.command("add-agent-from-tunnel").description("Zero-config: probe a tunnel URL + register an agent in one shot").requiredOption("--url <url>","Public HTTPS tunnel URL").requiredOption("--api-key <key>","Agent inbound API key (x-agent-api-key)").option("--name <name>","Override display name").option("--scopes <list>","Comma-separated OAuth scopes").option("--target <id>","Optional target to attach the agent to").option("--skip-devportal-app","Skip creating DevPortal application").option("-f, --format <format>").action(async t=>{try{let e={tunnelUrl:t.url,apiKey:t.apiKey};t.name!==void 0&&(e.name=t.name),t.scopes!==void 0&&(e.scopes=t.scopes.split(",").map(s=>s.trim()).filter(Boolean)),t.target!==void 0&&(e.targetId=t.target),t.skipDevportalApp&&(e.skipDevportalApp=!0);let o=await r(xn,{input:e});d(t,o);}catch(e){a(e);}});}function ea(p){let i=p.command("ui-session").description("UI session state");i.command("get").description("Get current UI session").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(Un);d(n,t.uiSession);}catch(t){a(t);}}),i.command("clear").description("Clear UI session").action(async()=>{try{await r(Pn),c("UI session cleared");}catch(n){a(n);}}),i.command("get-by-id").description("Get UI session by ID").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Ln,{id:n});d(t,e.uiSessionById);}catch(e){a(e);}}),i.command("set-active-vibe").description("Set active vibe").argument("<vibeId>").action(async n=>{try{await r(Vn,{vibeId:n}),c("Active vibe updated");}catch(t){a(t);}}),i.command("set-active-session").description("Set active session").argument("<sessionId>").action(async n=>{try{await r(Gn,{sessionId:n}),c("Active session updated");}catch(t){a(t);}}),i.command("add-recent-vibe").description("Add recent vibe").argument("<vibeId>").action(async n=>{try{await r(qn,{vibeId:n}),c("Recent vibe added");}catch(t){a(t);}}),i.command("add-recent-session").description("Add recent session").argument("<sessionId>").action(async n=>{try{await r(Bn,{sessionId:n}),c("Recent session added");}catch(t){a(t);}});}function na(p){let i=p.command("cli-config").description("CLI configuration");i.command("set").description("Set CLI config value").argument("<key>").argument("<value>").action((n,t)=>{if(!ot.includes(n))throw new m(`Unknown key: ${n}. Valid keys: ${ot.join(", ")}`);It(n,t),c(`${n} = ${t}`);}),i.command("get").description("Get CLI config value").argument("<key>").action(n=>{let t=ft(n);if(t===void 0)throw new m(`Key not set: ${n}`);console.log(t);}),i.command("list").description("Show all CLI config").option("-f, --format <format>","Output format").action(n=>{let t=lt();if(n.format==="json"){mt(t);return}let e=Object.entries(t).filter(([,o])=>o!==void 0);gt(["Key","Value"],e.map(([o,s])=>[o,String(s)]));}),i.command("path").description("Show config file path").action(()=>{console.log(St());});}function oa(){let p=H()?.workspaceId;if(!p)throw new m("No workspace set. Run: vibecontrols workspace set <id>");return p}function ia(p){let i=p.command("targets").description("Target management (SSH/RDP/VNC)");i.command("list").description("List targets").option("--type <type>","Filter by type (DIRECT,SSH,RDP,VNC)").option("--limit <n>","Limit results",parseInt).option("--offset <n>","Offset results",parseInt).option("-f, --format <format>","Output format").action(async n=>{try{let t=oa(),e={};n.type&&(e.type=n.type.toUpperCase());let s=(await r(Fn,{workspaceId:t,filter:Object.keys(e).length?e:void 0,limit:n.limit,offset:n.offset})).targets.items;d(n,s,{headers:["ID","Name","Type","Host","Port","Status"],rows:s.map(u=>[f(u.id,12),u.name,u.type,u.host,String(u.port??"-"),b(u.status)])});}catch(t){a(t);}}),i.command("get").description("Get target by ID").argument("<id>","Target ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Mn,{id:n});if(!e.target)throw new m("Target not found");d(t,e.target);}catch(e){a(e);}}),i.command("create").description("Create target").requiredOption("--name <n>","Name").requiredOption("--type <t>","Type (DIRECT,SSH,RDP,VNC)").requiredOption("--host <h>","Host address").requiredOption("--port <p>","Port",parseInt).option("--username <u>","Username").option("--protocol <p>","Protocol").option("--agent-id <id>","Agent ID").option("-f, --format <format>","Output format").action(async n=>{try{let t=oa(),e={name:n.name,type:n.type.toUpperCase(),host:n.host,port:n.port};n.username&&(e.username=n.username),n.protocol&&(e.protocol=n.protocol),n.agentId&&(e.agentId=n.agentId);let o=await r(Hn,{workspaceId:t,input:e});c("Target created"),d(n,o.createTarget);}catch(t){a(t);}}),i.command("update").description("Update target").argument("<id>","Target ID").option("--name <n>","Name").option("--host <h>","Host address").option("--port <p>","Port",parseInt).option("--username <u>","Username").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e={};if(t.name&&(e.name=t.name),t.host&&(e.host=t.host),t.port&&(e.port=t.port),t.username&&(e.username=t.username),!Object.keys(e).length)throw new m("No updates specified");let o=await r(Kn,{id:n,input:e});c("Target updated"),d(t,o.updateTarget);}catch(e){a(e);}}),i.command("delete").description("Delete target").argument("<id>","Target ID").option("--force","Skip confirmation").action(async(n,t)=>{try{if(!await l("Delete this target?",t.force))return;await r(Wn,{id:n}),c("Target deleted");}catch(e){a(e);}}),i.command("test").description("Test target connectivity").argument("<id>","Target ID").action(async n=>{try{let t=await r(jn,{id:n});t.testTarget.success?c(`Connection successful (${t.testTarget.latencyMs??"-"}ms)`):T(t.testTarget.error??"Connection failed");}catch(t){a(t);}}),i.command("scan-ssh").description("Scan SSH config for targets").requiredOption("--agent-id <id>","Agent ID").option("--config-path <path>","SSH config file path").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(Yn,{agentId:n.agentId,configPath:n.configPath});c(`Found ${t.scanSSHConfig.length} target(s)`),d(n,t.scanSSHConfig);}catch(t){a(t);}}),i.command("install-agent").description("Install agent on target").requiredOption("--source-agent-id <id>","Source agent ID").requiredOption("--target-id <id>","Target ID").option("--agent-port <port>","Agent port",parseInt).action(async n=>{try{let t=await r(Jn,{sourceAgentId:n.sourceAgentId,targetId:n.targetId,agentPort:n.agentPort});t.installAgentOnTarget.success?c("Agent installed on target"):T(t.installAgentOnTarget.error??"Installation failed");}catch(t){a(t);}}),i.command("uninstall-agent").description("Uninstall agent from target").argument("<targetId>","Target ID").action(async n=>{try{let t=await r(Xn,{targetId:n});t.uninstallAgentFromTarget.success?c("Agent uninstalled from target"):T(t.uninstallAgentFromTarget.error??"Uninstall failed");}catch(t){a(t);}}),i.command("start-terminal").description("Start terminal on target").argument("<targetId>","Target ID").option("--shell <shell>","Shell to use").action(async(n,t)=>{try{let e=await r(zn,{targetId:n,shell:t.shell});c("Terminal started"),console.log(`Session ID: ${e.startTerminal.sessionId}`),console.log(`ttyd URL: ${e.startTerminal.ttydUrl}`);}catch(e){a(e);}}),i.command("stop-terminal").description("Stop terminal session").argument("<sessionId>","Session ID").action(async n=>{try{await r(Qn,{sessionId:n}),c("Terminal stopped");}catch(t){a(t);}});}function ra(p){let i=p.command("vibedeck").description("VibeDeck management");i.command("list").description("List vibedecks").option("-f, --format <format>","Output format").action(async t=>{try{let o=(await r(Zn)).vibeDecks.items;d(t,o,{headers:["ID","Name","Default","Created"],rows:o.map(s=>[f(s.id,12),s.name,s.isDefault?"Yes":"No",S(s.createdAt)])});}catch(e){a(e);}}),i.command("get").description("Get vibedeck").argument("<id>").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(to,{id:t});if(!o.vibeDeck)throw new m("VibeDeck not found");d(e,o.vibeDeck);}catch(o){a(o);}}),i.command("default").description("Get default vibedeck").option("-f, --format <format>","Output format").action(async t=>{try{let e=await r(eo);if(!e.defaultVibeDeck)throw new m("No default VibeDeck found");d(t,e.defaultVibeDeck);}catch(e){a(e);}}),i.command("create").description("Create vibedeck").requiredOption("--name <n>","Name").option("--description <d>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e=await r(no,{input:{name:t.name,description:t.description}});c("VibeDeck created"),d(t,e.createVibeDeck);}catch(e){a(e);}}),i.command("update").description("Update vibedeck").argument("<id>").option("--name <n>","Name").option("--description <d>","Description").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.name&&(o.name=e.name),e.description&&(o.description=e.description),!Object.keys(o).length)throw new m("No updates specified");let s=await r(oo,{id:t,input:o});c("VibeDeck updated"),d(e,s.updateVibeDeck);}catch(o){a(o);}}),i.command("duplicate").description("Duplicate vibedeck").argument("<id>").option("--name <n>","New name").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(io,{id:t,name:e.name});c("VibeDeck duplicated"),d(e,o.duplicateVibeDeck);}catch(o){a(o);}}),i.command("delete").description("Delete vibedeck").argument("<id>").option("--force","Skip confirmation").action(async(t,e)=>{try{if(!await l("Delete this VibeDeck?",e.force))return;await r(ro,{id:t}),c("VibeDeck deleted");}catch(o){a(o);}}),i.command("set-default").description("Set default vibedeck").argument("<id>").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(ao,{id:t});c("Default VibeDeck updated"),d(e,o.setDefaultVibeDeck);}catch(o){a(o);}}),i.command("buttons").description("List vibedeck buttons").requiredOption("--deck-id <id>","VibeDeck ID").option("-f, --format <format>","Output format").action(async t=>{try{let o=(await r(so,{filter:{vibeDeckId:t.deckId}})).vibeDeckButtons.items;d(t,o,{headers:["ID","Label","Type","Position","Command"],rows:o.map(s=>[f(s.id,12),s.label,s.type,`${s.row},${s.column}`,f(s.command??"",30)])});}catch(e){a(e);}}),i.command("button").description("Get vibedeck button").argument("<id>").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(co,{id:t});if(!o.vibeDeckButton)throw new m("Button not found");d(e,o.vibeDeckButton);}catch(o){a(o);}}),i.command("create-button").description("Create vibedeck button").requiredOption("--deck-id <id>","VibeDeck ID").requiredOption("--label <l>","Label").requiredOption("--type <t>","Type (COMMAND, SCRIPT, WEBHOOK)").option("--command <c>","Command").option("--script <s>","Script").option("--webhook-url <u>","Webhook URL").option("--icon <i>","Icon").option("--color <c>","Color").option("--row <n>","Row position",parseInt).option("--column <n>","Column position",parseInt).option("--action-id <id>","Link to an Action").option("-f, --format <format>","Output format").action(async t=>{try{let e={vibeDeckId:t.deckId,label:t.label,type:t.type.toUpperCase()};t.command&&(e.command=t.command),t.script&&(e.script=t.script),t.webhookUrl&&(e.webhookUrl=t.webhookUrl),t.icon&&(e.icon=t.icon),t.color&&(e.color=t.color),t.row!==void 0&&(e.row=t.row),t.column!==void 0&&(e.column=t.column),t.actionId&&(e.actionId=t.actionId);let o=await r(po,{input:e});c("Button created"),d(t,o.createVibeDeckButton);}catch(e){a(e);}}),i.command("update-button").description("Update vibedeck button").argument("<id>").option("--label <l>","Label").option("--command <c>","Command").option("--icon <i>","Icon").option("--color <c>","Color").option("--action-id <id>","Link to an Action").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.label&&(o.label=e.label),e.command&&(o.command=e.command),e.icon&&(o.icon=e.icon),e.color&&(o.color=e.color),e.actionId&&(o.actionId=e.actionId),!Object.keys(o).length)throw new m("No updates specified");let s=await r(uo,{id:t,input:o});c("Button updated"),d(e,s.updateVibeDeckButton);}catch(o){a(o);}}),i.command("delete-button").description("Delete vibedeck button").argument("<id>").option("--force","Skip confirmation").action(async(t,e)=>{try{if(!await l("Delete this button?",e.force))return;await r(mo,{id:t}),c("Button deleted");}catch(o){a(o);}}),i.command("move-button").description("Move vibedeck button").argument("<id>").requiredOption("--row <n>","Row position",parseInt).requiredOption("--column <n>","Column position",parseInt).option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(go,{id:t,input:{row:e.row,column:e.column}});c("Button moved"),d(e,o.moveVibeDeckButton);}catch(o){a(o);}}),i.command("reorder-buttons").description("Reorder vibedeck buttons").argument("<vibeDeckId>").requiredOption("--positions <json>","Positions as JSON array").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o;try{o=JSON.parse(e.positions);}catch{throw new m("Invalid JSON for --positions")}let s=await r(lo,{vibeDeckId:t,positions:o});c("Buttons reordered"),d(e,s.reorderVibeDeckButtons);}catch(o){a(o);}}),i.command("execute-button").description("Execute vibedeck button").argument("<id>").requiredOption("--agent-id <id>","Agent ID").action(async(t,e)=>{try{let s=(await r(fo,{id:t,agentId:e.agentId})).executeVibeDeckButton;if(s.success)c(s.output??"Button executed successfully");else throw new m(s.error??"Execution failed")}catch(o){a(o);}});let n=i.command("share-links").description("VibeDeck share-link management");n.command("list").description("List share-links for a vibedeck").argument("<vibeDeckId>","VibeDeck ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(Ki,{vibeDeckId:t});d(e,o.vibeDeckShareLinks,{headers:["ID","Name","Permission","Status","Visibility","Uses","Expires"],rows:o.vibeDeckShareLinks.map(s=>[f(s.id,12),s.name??"-",s.permission,s.status,s.visibility,String(s.useCount??0),s.expiresAt?S(s.expiresAt):"-"])});}catch(o){a(o);}}),n.command("create").description("Create a share-link").requiredOption("--vibe-deck-id <id>","VibeDeck ID").option("--name <name>","Friendly name").option("--permission <p>","EXECUTE or VIEW","EXECUTE").option("--visibility <v>","SIGNED_LINK | PUBLIC | RESTRICTED","SIGNED_LINK").option("--password <pwd>","Password protect").option("--max-uses <n>","Max uses",t=>parseInt(t,10)).option("--expires-in-hours <n>","Hours until expiry",t=>parseInt(t,10)).option("--allow-iframe","Allow iframe embedding").action(async t=>{try{let e={vibeDeckId:t.vibeDeckId,permission:(t.permission??"EXECUTE").toUpperCase(),visibility:(t.visibility??"SIGNED_LINK").toUpperCase()};t.name&&(e.name=t.name),t.password&&(e.password=t.password),t.maxUses!==void 0&&(e.maxUses=t.maxUses),t.expiresInHours!==void 0&&(e.expiresInHours=t.expiresInHours),t.allowIframe&&(e.allowIframe=!0);let o=await r(Wi,{input:e});c(`Created share-link ${o.createVibeDeckShareLink.id} \u2014 ${o.createVibeDeckShareLink.shareUrl}`);}catch(e){a(e);}}),n.command("update").description("Update a share-link").argument("<id>","Share-link ID").option("--name <name>").option("--permission <p>").option("--visibility <v>").option("--password <pwd>").option("--max-uses <n>","",t=>parseInt(t,10)).option("--expires-at <iso>").option("--allow-iframe <bool>").action(async(t,e)=>{try{let o={};e.name&&(o.name=e.name),e.permission&&(o.permission=e.permission.toUpperCase()),e.visibility&&(o.visibility=e.visibility.toUpperCase()),e.password&&(o.password=e.password),e.maxUses!==void 0&&(o.maxUses=e.maxUses),e.expiresAt&&(o.expiresAt=e.expiresAt),e.allowIframe!==void 0&&(o.allowIframe=e.allowIframe==="true"),await r(ji,{id:t,input:o}),c("Share-link updated");}catch(o){a(o);}}),n.command("revoke").description("Revoke a share-link").argument("<id>","Share-link ID").option("--force","Skip confirmation").action(async(t,e)=>{try{if(!await l("Revoke this share-link?",e.force))return;await r(Yi,{id:t}),c("Share-link revoked");}catch(o){a(o);}}),n.command("validate").description("Validate a share-link token").argument("<token>").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(Ji,{token:t});d(e,o.validateVibeDeckShareLink);}catch(o){a(o);}}),n.command("get-shared").description("Fetch the public shared vibedeck via a token").argument("<token>").option("--password <pwd>").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(Xi,{token:t,password:e.password});d(e,o.sharedVibeDeck);}catch(o){a(o);}}),n.command("execute-shared-button").description("Execute a button on a shared vibedeck").argument("<token>").requiredOption("--button-id <id>","Button ID").option("--password <pwd>").action(async(t,e)=>{try{let s=(await r(zi,{token:t,buttonId:e.buttonId,password:e.password})).executeSharedVibeDeckButton;if(s.success)c(s.output??"Executed");else throw new m(s.error??"Execution failed")}catch(o){a(o);}});}function aa(p){let i=p.command("ai-tool-events").description("AI tool event tracking");i.command("list").description("List AI tool events").option("--agent-id <id>","Filter by agent").option("--tool-name <name>","Filter by tool name").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.agentId&&(t.agentId=n.agentId),n.toolName&&(t.toolName=n.toolName);let o=(await r(_o,{filter:Object.keys(t).length?t:void 0})).aiToolEvents.items;d(n,o,{headers:["ID","Tool","Event Type","Model","Tokens","Duration","Created"],rows:o.map(s=>[f(s.id,12),s.toolName,s.eventType,s.model??"-",String(s.tokenCount??"-"),String(s.duration??"-"),S(s.createdAt)])});}catch(t){a(t);}}),i.command("get").description("Get AI tool event").argument("<id>","Event ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Ro,{id:n});if(!e.aiToolEvent)throw new m("AI tool event not found");d(t,e.aiToolEvent);}catch(e){a(e);}}),i.command("recent").description("Recent AI tool events").requiredOption("--agent-id <id>","Filter by agent").option("--limit <n>","Max results",parseInt).option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(No,{agentId:n.agentId,limit:n.limit});d(n,t.recentAiToolEvents);}catch(t){a(t);}}),i.command("create").description("Create AI tool event").requiredOption("--agent-id <id>","Agent ID").requiredOption("--tool-name <name>","Tool name").requiredOption("--event-type <type>","Event type").option("--model <model>","Model name").option("--input <input>","Input data").option("--output <output>","Output data").option("--token-count <n>","Token count",parseInt).option("--duration <ms>","Duration in ms",parseInt).option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(xo,{input:{agentId:n.agentId,toolName:n.toolName,eventType:n.eventType,model:n.model,input:n.input,output:n.output,tokenCount:n.tokenCount,duration:n.duration}});c("AI tool event created"),d(n,t.createAiToolEvent);}catch(t){a(t);}}),i.command("cleanup").description("Delete old AI tool events").requiredOption("--before-date <date>","Delete events before this date").option("--force","Skip confirmation").action(async n=>{try{if(!await l(`Delete all AI tool events before ${n.beforeDate}?`,n.force))return;let t=await r(Uo,{beforeDate:n.beforeDate});c("Old AI tool events deleted"),d({},t.deleteOldAiToolEvents);}catch(t){a(t);}});}function sa(p){let i=p.command("docs").description("Documentation site management");i.command("sites").description("List documentation sites").option("-f, --format <format>","Output format").action(async n=>{try{let e=(await r(Lo)).docsSites.items;d(n,e,{headers:["ID","Vibe ID","Name","Visibility","Created"],rows:e.map(o=>[f(o.id,12),f(o.vibeId,12),o.name,o.visibility,S(o.createdAt)])});}catch(t){a(t);}}),i.command("site").description("Get documentation site").argument("<vibeId>","Vibe ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Po,{vibeId:n});if(!e.docsSite)throw new m("Docs site not found");d(t,e.docsSite);}catch(e){a(e);}}),i.command("create-site").description("Create documentation site").requiredOption("--vibe-id <id>","Vibe ID").requiredOption("--name <name>","Site name").option("--description <desc>","Description").option("--visibility <v>","Visibility (PRIVATE/PUBLIC)").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(Vo,{input:{vibeId:n.vibeId,name:n.name,description:n.description,visibility:n.visibility}});c("Docs site created"),d(n,t.createDocsSite);}catch(t){a(t);}}),i.command("update-site").description("Update documentation site").argument("<id>","Site ID").option("--name <name>","Name").option("--description <desc>","Description").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e={};if(t.name&&(e.name=t.name),t.description&&(e.description=t.description),!Object.keys(e).length)throw new m("No updates specified");let o=await r(Go,{id:n,input:e});c("Docs site updated"),d(t,o.updateDocsSite);}catch(e){a(e);}}),i.command("set-visibility").description("Set site visibility").argument("<id>","Site ID").argument("<visibility>","PRIVATE or PUBLIC").option("-f, --format <format>","Output format").action(async(n,t,e)=>{try{let o=await r(qo,{id:n,visibility:t});c(`Visibility set to ${t}`),d(e,o.updateDocsSiteVisibility);}catch(o){a(o);}}),i.command("delete-site").description("Delete documentation site").argument("<id>","Site ID").option("--force","Skip confirmation").action(async(n,t)=>{try{if(!await l("Delete this docs site?",t.force))return;await r(Bo,{id:n}),c("Docs site deleted");}catch(e){a(e);}}),i.command("pages").description("List pages for a site").argument("<siteId>","Site ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Fo,{siteId:n});d(t,e.docsPages);}catch(e){a(e);}}),i.command("page").description("Get a page").argument("<id>","Page ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Mo,{id:n});if(!e.docsPage)throw new m("Page not found");d(t,e.docsPage);}catch(e){a(e);}}),i.command("create-page").description("Create a page").requiredOption("--site-id <id>","Site ID").requiredOption("--title <title>","Page title").option("--slug <slug>","Page slug").option("--content <content>","Page content").option("--parent-id <id>","Parent page ID").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(Ho,{input:{siteId:n.siteId,title:n.title,slug:n.slug,content:n.content,parentId:n.parentId}});c("Page created"),d(n,t.createDocsPage);}catch(t){a(t);}}),i.command("update-page").description("Update a page").argument("<id>","Page ID").option("--title <title>","Title").option("--content <content>","Content").option("--slug <slug>","Slug").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e={};if(t.title&&(e.title=t.title),t.content&&(e.content=t.content),t.slug&&(e.slug=t.slug),!Object.keys(e).length)throw new m("No updates specified");let o=await r(Ko,{id:n,input:e});c("Page updated"),d(t,o.updateDocsPage);}catch(e){a(e);}}),i.command("delete-page").description("Delete a page").argument("<id>","Page ID").option("--force","Skip confirmation").action(async(n,t)=>{try{if(!await l("Delete this page?",t.force))return;await r(Wo,{id:n}),c("Page deleted");}catch(e){a(e);}}),i.command("reorder-pages").description("Reorder pages").argument("<siteId>","Site ID").requiredOption("--pages <json>","Page order as JSON array").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=JSON.parse(t.pages),o=await r(jo,{siteId:n,pages:e});c("Pages reordered"),d(t,o.reorderDocsPages);}catch(e){a(e);}}),i.command("revisions").description("List revisions for a site").argument("<siteId>","Site ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Yo,{siteId:n});d(t,e.docsRevisions);}catch(e){a(e);}}),i.command("revision").description("Get a revision").argument("<id>","Revision ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Jo,{id:n});if(!e.docsRevision)throw new m("Revision not found");d(t,e.docsRevision);}catch(e){a(e);}}),i.command("content").description("Get docs content").argument("<siteId>","Site ID").option("--path <path>","Content path").action(async(n,t)=>{try{let e=await r(Xo,{siteId:n,path:t.path});e.docsContent?console.log(e.docsContent):T("No content found");}catch(e){a(e);}}),i.command("compile").description("Compile documentation site").argument("<siteId>","Site ID").option("--publish","Publish after compile").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(zo,{siteId:n,publish:t.publish??!1});c("Docs site compiled"),d(t,e.compileDocsSite);}catch(e){a(e);}}),i.command("publish").description("Publish a revision").argument("<revisionId>","Revision ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Qo,{revisionId:n});c("Revision published"),d(t,e.publishDocsRevision);}catch(e){a(e);}}),i.command("rollback").description("Rollback to a revision").argument("<siteId>","Site ID").argument("<revisionId>","Revision ID").option("--force","Skip confirmation").action(async(n,t,e)=>{try{if(!await l(`Rollback site to revision ${t}?`,e.force))return;let o=await r(Zo,{siteId:n,revisionId:t});c("Rollback complete"),d({},o.rollbackDocsRevision);}catch(o){a(o);}}),i.command("signed-url").description("Generate signed URL for a site").argument("<siteId>","Site ID").action(async n=>{try{let t=await r(ti,{siteId:n});console.log(t.generateDocsSignedUrl);}catch(t){a(t);}});}function ca(p){let i=p.command("audit").description("Audit log management");i.command("list").description("List audit logs").option("--action <action>","Filter by action").option("--resource-type <type>","Filter by resource type").option("--status <status>","Filter by status").option("--actor-id <id>","Filter by actor").option("--from <date>","From date").option("--to <date>","To date").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.action&&(t.action=n.action),n.resourceType&&(t.resourceType=n.resourceType),n.status&&(t.status=n.status),n.actorId&&(t.actorId=n.actorId),n.from&&(t.from=n.from),n.to&&(t.to=n.to);let o=(await r(ei,{filter:Object.keys(t).length?t:void 0})).vibeAuditLogs.items;d(n,o,{headers:["ID","Action","Resource","Resource ID","Actor","Status","Created"],rows:o.map(s=>[f(s.id,12),s.action,s.resourceType,f(s.resourceId,12),f(s.actorId,12),s.status,S(s.createdAt)])});}catch(t){a(t);}}),i.command("get").description("Get audit log").argument("<id>","Audit log ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(ni,{id:n});if(!e.vibeAuditLog)throw new m("Audit log not found");d(t,e.vibeAuditLog);}catch(e){a(e);}}),i.command("stats").description("Get audit log statistics").option("--action <action>","Filter by action").option("--resource-type <type>","Filter by resource type").option("--status <status>","Filter by status").option("--actor-id <id>","Filter by actor").option("--from <date>","From date").option("--to <date>","To date").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.action&&(t.action=n.action),n.resourceType&&(t.resourceType=n.resourceType),n.status&&(t.status=n.status),n.actorId&&(t.actorId=n.actorId),n.from&&(t.from=n.from),n.to&&(t.to=n.to);let e=await r(oi,{filter:Object.keys(t).length?t:void 0});d(n,e.vibeAuditLogStats);}catch(t){a(t);}}),i.command("delete").description("Delete audit log").argument("<id>","Audit log ID").option("--reason <reason>","Deletion reason").option("--force","Skip confirmation").action(async(n,t)=>{try{if(!await l("Delete this audit log?",t.force))return;await r(ii,{id:n,reason:t.reason}),c("Audit log deleted");}catch(e){a(e);}}),i.command("bulk-delete").description("Bulk delete audit logs").requiredOption("--ids <ids>","Comma-separated IDs").option("--reason <reason>","Deletion reason").option("--force","Skip confirmation").action(async n=>{try{let t=n.ids.split(",").map(e=>e.trim());if(!await l(`Delete ${t.length} audit logs?`,n.force))return;await r(ri,{ids:t,reason:n.reason}),c(`${t.length} audit logs deleted`);}catch(t){a(t);}}),i.command("export").description("Export audit logs").option("--action <action>","Filter by action").option("--resource-type <type>","Filter by resource type").option("--status <status>","Filter by status").option("--actor-id <id>","Filter by actor").option("--from <date>","From date").option("--to <date>","To date").option("--export-format <fmt>","Export format (csv/json)","json").action(async n=>{try{let t={};n.action&&(t.action=n.action),n.resourceType&&(t.resourceType=n.resourceType),n.status&&(t.status=n.status),n.actorId&&(t.actorId=n.actorId),n.from&&(t.from=n.from),n.to&&(t.to=n.to);let e=await r(ai,{filter:Object.keys(t).length?t:void 0,exportFormat:n.exportFormat});console.log(e.exportVibeAuditLogs);}catch(t){a(t);}});}function da(p){let i=p.command("action").description("Vibe Actions management");i.command("list").description("List actions").option("--type <type>","Filter by action type (COMMAND, SCRIPT, WEBHOOK, WORKFLOW)").option("--trigger <trigger>","Filter by trigger type (MANUAL, SCHEDULED, EVENT, ON_DEMAND)").option("--category <category>","Filter by category").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.type&&(e.actionType=t.type.toUpperCase()),t.trigger&&(e.triggerType=t.trigger.toUpperCase()),t.category&&(e.category=t.category);let s=(await r(Io,{filter:Object.keys(e).length?e:void 0})).actions.items;d(t,s,{headers:["ID","Name","Type","Trigger","Source","Category"],rows:s.map(u=>[f(u.id,12),u.displayName??u.name,u.actionType,u.triggerType,u.sourceType,u.category??"-"])});}catch(e){a(e);}}),i.command("get").description("Get action details").argument("<id>").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(So,{id:t});if(!o.action)throw new m("Action not found");d(e,o.action);}catch(o){a(o);}}),i.command("create").description("Create action").requiredOption("--name <n>","Name").option("--display-name <n>","Display name").option("--description <d>","Description").option("--type <t>","Action type (COMMAND, SCRIPT, WEBHOOK, WORKFLOW)","COMMAND").option("--trigger <t>","Trigger type (MANUAL, SCHEDULED, EVENT, ON_DEMAND)","MANUAL").option("--command <c>","Command to execute").option("--working-directory <d>","Working directory for command").option("--script <s>","Script content").option("--script-interpreter <i>","Script interpreter (e.g. bash, python)").option("--webhook-url <u>","Webhook URL").option("--webhook-method <m>","Webhook HTTP method").option("--schedule <s>","Cron schedule expression").option("--category <c>","Category").option("--tags <t>","Comma-separated tags").option("--target-agent-id <id>","Target agent ID").option("--timeout <ms>","Timeout in milliseconds",parseInt).option("--retry-count <n>","Retry count",parseInt).option("--confirmation-required","Require confirmation before execution").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,actionType:(t.type??"COMMAND").toUpperCase(),triggerType:(t.trigger??"MANUAL").toUpperCase()};t.displayName&&(e.displayName=t.displayName),t.description&&(e.description=t.description),t.command&&(e.command=t.command),t.workingDirectory&&(e.workingDirectory=t.workingDirectory),t.script&&(e.script=t.script),t.scriptInterpreter&&(e.scriptInterpreter=t.scriptInterpreter),t.webhookUrl&&(e.webhookUrl=t.webhookUrl),t.webhookMethod&&(e.webhookMethod=t.webhookMethod),t.schedule&&(e.schedule=t.schedule),t.category&&(e.category=t.category),t.tags&&(e.tags=t.tags.split(",").map(s=>s.trim())),t.targetAgentId&&(e.targetAgentId=t.targetAgentId),t.timeout!==void 0&&(e.timeoutMs=t.timeout),t.retryCount!==void 0&&(e.retryCount=t.retryCount),t.confirmationRequired&&(e.confirmationRequired=!0);let o=await r(yo,{input:e});c("Action created"),d(t,o.createAction);}catch(e){a(e);}}),i.command("update").description("Update action").argument("<id>").option("--name <n>","Name").option("--display-name <n>","Display name").option("--description <d>","Description").option("--type <t>","Action type (COMMAND, SCRIPT, WEBHOOK, WORKFLOW)").option("--trigger <t>","Trigger type (MANUAL, SCHEDULED, EVENT, ON_DEMAND)").option("--command <c>","Command to execute").option("--working-directory <d>","Working directory for command").option("--script <s>","Script content").option("--script-interpreter <i>","Script interpreter").option("--webhook-url <u>","Webhook URL").option("--webhook-method <m>","Webhook HTTP method").option("--schedule <s>","Cron schedule expression").option("--category <c>","Category").option("--tags <t>","Comma-separated tags").option("--target-agent-id <id>","Target agent ID").option("--timeout <ms>","Timeout in milliseconds",parseInt).option("--retry-count <n>","Retry count",parseInt).option("--confirmation-required","Require confirmation before execution").option("--no-confirmation-required","Disable confirmation requirement").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.name&&(o.name=e.name),e.displayName&&(o.displayName=e.displayName),e.description&&(o.description=e.description),e.type&&(o.actionType=e.type.toUpperCase()),e.trigger&&(o.triggerType=e.trigger.toUpperCase()),e.command&&(o.command=e.command),e.workingDirectory&&(o.workingDirectory=e.workingDirectory),e.script&&(o.script=e.script),e.scriptInterpreter&&(o.scriptInterpreter=e.scriptInterpreter),e.webhookUrl&&(o.webhookUrl=e.webhookUrl),e.webhookMethod&&(o.webhookMethod=e.webhookMethod),e.schedule&&(o.schedule=e.schedule),e.category&&(o.category=e.category),e.tags&&(o.tags=e.tags.split(",").map(u=>u.trim())),e.targetAgentId&&(o.targetAgentId=e.targetAgentId),e.timeout!==void 0&&(o.timeoutMs=e.timeout),e.retryCount!==void 0&&(o.retryCount=e.retryCount),e.confirmationRequired!==void 0&&(o.confirmationRequired=e.confirmationRequired),!Object.keys(o).length)throw new m("No updates specified");let s=await r(Eo,{id:t,input:o});c("Action updated"),d(e,s.updateAction);}catch(o){a(o);}}),i.command("delete").description("Delete action").argument("<id>").option("--force","Skip confirmation").action(async(t,e)=>{try{if(!await l("Delete this action?",e.force))return;await r(To,{id:t}),c("Action deleted");}catch(o){a(o);}}),i.command("duplicate").description("Duplicate action").argument("<id>").argument("[name]").option("-f, --format <format>","Output format").action(async(t,e,o)=>{try{let s=await r(bo,{id:t,name:e});c("Action duplicated"),d(o,s.duplicateAction);}catch(s){a(s);}}),i.command("execute").description("Execute action").argument("<id>").option("--agent-id <id>","Target agent ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};e.agentId&&(o.agentId=e.agentId);let u=(await r(ho,{id:t,input:Object.keys(o).length?o:void 0})).executeAction,g=u.status;g==="SUCCESS"?c(`Action executed successfully${u.durationMs?` (${u.durationMs}ms)`:""}`):g==="RUNNING"||g==="PENDING"?c(`Action execution started (${g})`):T(u.errorMessage??`Execution ${g}`),d(e,u);}catch(o){a(o);}}),i.command("install").description("Install action from store").argument("<storeItemId>").option("--version <v>","Version to install").option("--name <n>","Custom name for installed action").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(Ao,{storeItemId:t,version:e.version,name:e.name});c("Action installed from store"),d(e,o.installActionFromStore);}catch(o){a(o);}}),i.command("history").description("List action execution history").argument("[actionId]").option("--status <s>","Filter by status (PENDING, RUNNING, SUCCESS, FAILURE, TIMEOUT, CANCELLED)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};t&&(o.actionId=t),e.status&&(o.status=e.status.toUpperCase());let u=(await r(Do,{filter:Object.keys(o).length?o:void 0})).actionExecutions.items;d(e,u,{headers:["ID","Action ID","Status","Trigger","Duration","Started"],rows:u.map(g=>[f(g.id,12),f(g.actionId,12),b(g.status),g.triggerType,g.durationMs?`${g.durationMs}ms`:"-",S(g.startedAt)])});}catch(o){a(o);}}),i.command("cancel-execution").description("Cancel a running action execution").argument("<id>").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(Co,{id:t});c("Action execution cancelled"),d(e,o.cancelActionExecution);}catch(o){a(o);}}),i.command("execution").description("Get action execution details").argument("<id>").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(Oo,{id:t});if(!o.actionExecution)throw new m("Action execution not found");d(e,o.actionExecution);}catch(o){a(o);}}),i.command("schedule").description("Create a scheduled job for an action").argument("<actionId>","Action ID to schedule").option("--cron <expr>","Cron expression (for CRON schedule type)").option("--timezone <tz>","Timezone for the schedule","UTC").option("--schedule-type <type>","Schedule type (CRON, ONE_TIME, FIXED_INTERVAL)","CRON").option("--scheduled-at <date>","ISO date for ONE_TIME schedule").option("--interval <n>","Interval value (for FIXED_INTERVAL)",parseInt).option("--interval-unit <unit>","Interval unit (MINUTES, HOURS, DAYS)").option("--start-date <date>","Schedule start date (ISO)").option("--end-date <date>","Schedule end date (ISO)").option("--name <name>","Name for the scheduled job").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={actionId:t,scheduleType:(e.scheduleType??"CRON").toUpperCase()};e.cron&&(o.cronExpression=e.cron),e.timezone&&(o.timezone=e.timezone),e.scheduledAt&&(o.scheduledAt=e.scheduledAt),e.interval!==void 0&&(o.interval=e.interval),e.intervalUnit&&(o.intervalUnit=e.intervalUnit.toUpperCase()),e.startDate&&(o.startDate=e.startDate),e.endDate&&(o.endDate=e.endDate),e.name&&(o.name=e.name);let s=await r(vo,{input:o});c("Scheduled job created"),d(e,s.createScheduledJob);}catch(o){a(o);}}),i.command("unschedule").description("Delete a scheduled job").argument("<scheduledJobId>","Scheduled job ID to delete").option("--force","Skip confirmation").action(async(t,e)=>{try{if(!await l("Delete this scheduled job?",e.force))return;await r(wo,{id:t}),c("Scheduled job deleted");}catch(o){a(o);}}),i.command("schedules").description("List scheduled jobs").option("--action-id <id>","Filter by action ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.actionId&&(e.actionId=t.actionId);let s=(await r(ko,{filter:Object.keys(e).length?e:void 0})).scheduledJobs.jobs;d(t,s,{headers:["ID","Name","Type","Status","Action ID","Cron","Next Run"],rows:s.map(u=>[f(u.id,12),u.name??"-",u.scheduleType,b(u.status),f(u.actionId,12),u.cronExpression??"-",u.nextExecutionAt?S(u.nextExecutionAt):"-"])});}catch(e){a(e);}});let n=i.command("ai-prompts").description("AI prompt templates");n.command("list").description("List AI prompts").option("--category <c>","Filter by category").option("--status <s>","Filter by status (ACTIVE, ARCHIVED, DRAFT)").option("--shared","Only shared prompts").option("--search <q>","Search text").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.category&&(e.category=t.category.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.shared&&(e.isShared=!0),t.search&&(e.search=t.search);let s=(await r(Pi,{filter:Object.keys(e).length?e:void 0})).aiPrompts.items;d(t,s,{headers:["ID","Name","Category","Status","Shared","Uses","Updated"],rows:s.map(u=>[f(u.id,12),u.name,u.category,b(u.status),u.isShared?"yes":"no",String(u.usageCount??0),S(u.updatedAt)])});}catch(e){a(e);}}),n.command("get").description("Get an AI prompt").argument("<id>","Prompt ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await r(Vi,{id:t});if(!o.aiPrompt){T("Prompt not found");return}d(e,o.aiPrompt);}catch(o){a(o);}}),n.command("create").description("Create a new AI prompt").requiredOption("--name <name>","Prompt name").requiredOption("--content <content>","Prompt content/template").option("--description <desc>","Description").option("--category <cat>","Category","GENERAL").option("--status <s>","Status","ACTIVE").option("--shared","Share with workspace").option("--tags <tags>","Comma-separated tags").option("--variables <json>","Variables (JSON)").action(async t=>{try{let e={name:t.name,content:t.content,category:(t.category??"GENERAL").toUpperCase(),status:(t.status??"ACTIVE").toUpperCase()};if(t.description&&(e.description=t.description),t.shared&&(e.isShared=!0),t.tags&&(e.tags=t.tags.split(",").map(s=>s.trim())),t.variables)try{e.variables=JSON.parse(t.variables);}catch{throw new m("--variables must be valid JSON")}let o=await r(Gi,{input:e});c(`Created prompt ${o.createAIPrompt.id}`);}catch(e){a(e);}}),n.command("update").description("Update an AI prompt").argument("<id>","Prompt ID").option("--name <name>").option("--content <content>").option("--description <desc>").option("--category <cat>").option("--status <s>").option("--shared <bool>").option("--tags <tags>","Comma-separated tags").option("--variables <json>").action(async(t,e)=>{try{let o={};if(e.name&&(o.name=e.name),e.content&&(o.content=e.content),e.description&&(o.description=e.description),e.category&&(o.category=e.category.toUpperCase()),e.status&&(o.status=e.status.toUpperCase()),e.shared!==void 0&&(o.isShared=e.shared==="true"),e.tags&&(o.tags=e.tags.split(",").map(s=>s.trim())),e.variables)try{o.variables=JSON.parse(e.variables);}catch{throw new m("--variables must be valid JSON")}await r(qi,{id:t,input:o}),c("Prompt updated");}catch(o){a(o);}}),n.command("delete").description("Delete an AI prompt").argument("<id>","Prompt ID").option("--force","Skip confirmation").action(async(t,e)=>{try{if(!await l("Delete this prompt?",e.force))return;await r(Bi,{id:t}),c("Prompt deleted");}catch(o){a(o);}}),n.command("duplicate").description("Duplicate an AI prompt").argument("<id>","Prompt ID").requiredOption("--name <name>","Name for the duplicate").action(async(t,e)=>{try{let o=await r(Fi,{id:t,name:e.name});c(`Duplicated to ${o.duplicateAIPrompt.id}`);}catch(o){a(o);}}),n.command("render").description("Render an AI prompt with variables").argument("<id>","Prompt ID").option("--variables <json>","Variables (JSON)").action(async(t,e)=>{try{let o;if(e.variables)try{o=JSON.parse(e.variables);}catch{throw new m("--variables must be valid JSON")}let s=await r(Mi,{id:t,variables:o});process.stdout.write(s.renderAIPrompt.rendered),s.renderAIPrompt.rendered.endsWith(`
|
|
1378
1378
|
`)||process.stdout.write(`
|
|
1379
|
-
`);}catch(o){a(o);}}),n.command("record-usage").description("Increment usage counter for a prompt").argument("<id>","Prompt ID").action(async t=>{try{await r(Ki,{id:t}),c("Usage recorded");}catch(e){a(e);}});}function ua(p){let i=p.command("analytics").description("VibeControls analytics");i.command("overview").description("Show analytics overview for all entities").option("--start-date <date>","Start date (ISO format)",new Date(Date.now()-10080*60*1e3).toISOString()).option("--end-date <date>","End date (ISO format)",new Date().toISOString()).option("--granularity <g>","Granularity (HOUR, DAY, WEEK, MONTH)","DAY").option("--agent-id <id>","Filter by agent ID").option("--vibe-id <id>","Filter by vibe ID").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(q,{input:{startDate:n.startDate,endDate:n.endDate,granularity:n.granularity,agentId:n.agentId||void 0,vibeId:n.vibeId||void 0}});d(n,t.vibecontrolsAnalytics);}catch(t){a(t);}}),i.command("agents").description("Show agent analytics").option("--start-date <date>","Start date (ISO format)",new Date(Date.now()-10080*60*1e3).toISOString()).option("--end-date <date>","End date (ISO format)",new Date().toISOString()).option("--granularity <g>","Granularity","DAY").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(q,{input:{startDate:n.startDate,endDate:n.endDate,granularity:n.granularity,entityTypes:["AGENT"]}});d(n,t.vibecontrolsAnalytics.agents);}catch(t){a(t);}}),i.command("sessions").description("Show session analytics").option("--start-date <date>","Start date (ISO format)",new Date(Date.now()-10080*60*1e3).toISOString()).option("--end-date <date>","End date (ISO format)",new Date().toISOString()).option("--granularity <g>","Granularity","DAY").option("--agent-id <id>","Filter by agent ID").option("--vibe-id <id>","Filter by vibe ID").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(q,{input:{startDate:n.startDate,endDate:n.endDate,granularity:n.granularity,entityTypes:["SESSION"],agentId:n.agentId||void 0,vibeId:n.vibeId||void 0}});d(n,t.vibecontrolsAnalytics.sessions);}catch(t){a(t);}}),i.command("actions").description("Show action analytics").option("--start-date <date>","Start date (ISO format)",new Date(Date.now()-10080*60*1e3).toISOString()).option("--end-date <date>","End date (ISO format)",new Date().toISOString()).option("--granularity <g>","Granularity","DAY").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(q,{input:{startDate:n.startDate,endDate:n.endDate,granularity:n.granularity,entityTypes:["ACTION"]}});d(n,t.vibecontrolsAnalytics.actions);}catch(t){a(t);}});}function ma(p){let i=p.command("catalogs").description("Service catalog (component + vibe groupings)");i.command("list").description("List catalogs").option("--search <q>","Search query").option("--visibility <v>","Filter by visibility (PUBLIC|PRIVATE|INTERNAL)").option("--tags <tags>","Comma-separated tags").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.search&&(t.search=n.search),n.visibility&&(t.visibility=n.visibility.toUpperCase()),n.tags&&(t.tags=n.tags.split(",").map(s=>s.trim()));let o=(await r(di,{filter:Object.keys(t).length?t:void 0})).vibecontrolsCatalogs.items;d(n,o,{headers:["ID","Name","Visibility","Components","Vibes","Created"],rows:o.map(s=>[f(s.id,12),s.name,s.visibility,String(s.componentCount??0),String(s.vibeCount??0),S(s.createdAt)])});}catch(t){a(t);}}),i.command("get").description("Get catalog").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(pi,{id:n});if(!e.vibecontrolsCatalog)throw new m("Catalog not found");d(t,e.vibecontrolsCatalog);}catch(e){a(e);}}),i.command("dependency-graph").description("Dependency graph for a catalog").argument("<catalogId>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(ui,{catalogId:n});d(t,e.vibecontrolsCatalogDependencyGraph);}catch(e){a(e);}}),i.command("sbom").description("SBOM for a catalog").argument("<catalogId>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(mi,{catalogId:n});d(t,e.vibecontrolsCatalogSBOM);}catch(e){a(e);}}),i.command("create").description("Create catalog").requiredOption("--name <n>","Catalog name").option("--description <d>","Description").option("--visibility <v>","Visibility (PUBLIC|PRIVATE|INTERNAL)","PRIVATE").option("--owner-id <id>","Owner actor ID").option("--owner-name <n>","Owner display name").option("--tags <tags>","Comma-separated tags").action(async n=>{try{let t={name:n.name};n.description&&(t.description=n.description),n.visibility&&(t.visibility=n.visibility.toUpperCase()),n.ownerId&&(t.ownerId=n.ownerId),n.ownerName&&(t.ownerName=n.ownerName),n.tags&&(t.tags=n.tags.split(",").map(o=>o.trim()));let e=await r(gi,{input:t});c(`Catalog created: ${e.createVibecontrolsCatalog.name} (${e.createVibecontrolsCatalog.id})`);}catch(t){a(t);}}),i.command("update").description("Update catalog").argument("<id>").option("--name <n>","Name").option("--description <d>","Description").option("--visibility <v>","Visibility").option("--tags <tags>","Comma-separated tags").action(async(n,t)=>{try{let e={};t.name&&(e.name=t.name),t.description!==void 0&&(e.description=t.description),t.visibility&&(e.visibility=t.visibility.toUpperCase()),t.tags&&(e.tags=t.tags.split(",").map(o=>o.trim())),await r(li,{id:n,input:e}),c(`Catalog ${n} updated`);}catch(e){a(e);}}),i.command("delete").description("Delete catalog (soft)").argument("<id>").option("-y, --yes","Skip confirmation").action(async(n,t)=>{try{if(!t.yes&&!await l(`Delete catalog ${n}?`))return;await r(fi,{id:n}),c(`Catalog ${n} deleted`);}catch(e){a(e);}}),i.command("add-component").description("Add a component to a catalog").requiredOption("--catalog <id>","Catalog ID").requiredOption("--component <id>","Component ID").action(async n=>{try{await r(Ii,{catalogId:n.catalog,componentId:n.component}),c(`Component ${n.component} added to catalog ${n.catalog}`);}catch(t){a(t);}}),i.command("remove-component").description("Remove a component from a catalog").requiredOption("--catalog <id>","Catalog ID").requiredOption("--component <id>","Component ID").action(async n=>{try{await r(Si,{catalogId:n.catalog,componentId:n.component}),c(`Component ${n.component} removed from catalog ${n.catalog}`);}catch(t){a(t);}}),i.command("add-vibe").description("Add a vibe to a catalog").requiredOption("--catalog <id>","Catalog ID").requiredOption("--vibe <id>","Vibe ID").action(async n=>{try{await r(Ei,{catalogId:n.catalog,vibeId:n.vibe}),c(`Vibe ${n.vibe} added to catalog ${n.catalog}`);}catch(t){a(t);}}),i.command("remove-vibe").description("Remove a vibe from a catalog").requiredOption("--catalog <id>","Catalog ID").requiredOption("--vibe <id>","Vibe ID").action(async n=>{try{await r(yi,{catalogId:n.catalog,vibeId:n.vibe}),c(`Vibe ${n.vibe} removed from catalog ${n.catalog}`);}catch(t){a(t);}});}function ga(p){let i=p.command("components").description("Software components registry");i.command("list").description("List components").option("--search <q>","Search query").option("--type <t>","Filter by type").option("--lifecycle <l>","Filter by lifecycle").option("--team <id>","Filter by team ID").option("--tags <tags>","Comma-separated tags").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.search&&(t.search=n.search),n.type&&(t.type=n.type.toUpperCase()),n.lifecycle&&(t.lifecycle=n.lifecycle.toUpperCase()),n.team&&(t.teamId=n.team),n.tags&&(t.tags=n.tags.split(",").map(s=>s.trim()));let o=(await r(Ti,{filter:Object.keys(t).length?t:void 0})).vibecontrolsComponents.items;d(n,o,{headers:["ID","Name","Type","Lifecycle","Version","Created"],rows:o.map(s=>[f(s.id,12),s.name,s.type,s.lifecycle,s.version??"",S(s.createdAt)])});}catch(t){a(t);}}),i.command("get").description("Get component").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(bi,{id:n});if(!e.vibecontrolsComponent)throw new m("Component not found");d(t,e.vibecontrolsComponent);}catch(e){a(e);}}),i.command("create").description("Create component").requiredOption("--name <n>","Component name").option("--description <d>","Description").option("--type <t>","Component type").option("--lifecycle <l>","Lifecycle stage").option("--version <v>","Version").option("--language <l>","Primary language").option("--framework <f>","Primary framework").option("--repository-url <u>","Repository URL").option("--documentation-url <u>","Documentation URL").option("--owner-id <id>","Owner ID").option("--owner-name <n>","Owner display name").option("--team-id <id>","Team ID").option("--tags <tags>","Comma-separated tags").action(async n=>{try{let t={name:n.name};n.description&&(t.description=n.description),n.type&&(t.type=n.type.toUpperCase()),n.lifecycle&&(t.lifecycle=n.lifecycle.toUpperCase()),n.version&&(t.version=n.version),n.language&&(t.language=n.language),n.framework&&(t.framework=n.framework),n.repositoryUrl&&(t.repositoryUrl=n.repositoryUrl),n.documentationUrl&&(t.documentationUrl=n.documentationUrl),n.ownerId&&(t.ownerId=n.ownerId),n.ownerName&&(t.ownerName=n.ownerName),n.teamId&&(t.teamId=n.teamId),n.tags&&(t.tags=n.tags.split(",").map(o=>o.trim()));let e=await r(Ai,{input:t});c(`Component created: ${e.createVibecontrolsComponent.name} (${e.createVibecontrolsComponent.id})`);}catch(t){a(t);}}),i.command("update").description("Update component").argument("<id>").option("--name <n>","Name").option("--description <d>","Description").option("--lifecycle <l>","Lifecycle").option("--version <v>","Version").option("--repository-url <u>","Repository URL").option("--documentation-url <u>","Documentation URL").option("--tags <tags>","Comma-separated tags").action(async(n,t)=>{try{let e={};t.name&&(e.name=t.name),t.description!==void 0&&(e.description=t.description),t.lifecycle&&(e.lifecycle=t.lifecycle.toUpperCase()),t.version&&(e.version=t.version),t.repositoryUrl&&(e.repositoryUrl=t.repositoryUrl),t.documentationUrl&&(e.documentationUrl=t.documentationUrl),t.tags&&(e.tags=t.tags.split(",").map(o=>o.trim())),await r(hi,{id:n,input:e}),c(`Component ${n} updated`);}catch(e){a(e);}}),i.command("delete").description("Delete component (soft)").argument("<id>").option("-y, --yes","Skip confirmation").action(async(n,t)=>{try{if(!t.yes&&!await l(`Delete component ${n}?`))return;await r(Ci,{id:n}),c(`Component ${n} deleted`);}catch(e){a(e);}}),i.command("fork-github-repo").description("Fork or create a GitHub repo for this workspace").requiredOption("--repo-name <n>","Name of the new repository").requiredOption("--scope <s>","USER or ORG").option("--org-name <n>","GitHub org (required when scope=ORG)").option("--source-repo-url <u>","Source repo URL to fork").option("--description <d>","Description").option("--connection-id <id>","OAuth connection ID").option("--token <t>","Personal access token (if no connection)").action(async n=>{try{let t={repoName:n.repoName,scope:n.scope.toUpperCase()};n.orgName&&(t.orgName=n.orgName),n.sourceRepoUrl&&(t.sourceRepoUrl=n.sourceRepoUrl),n.description&&(t.description=n.description),n.connectionId&&(t.connectionId=n.connectionId),n.token&&(t.token=n.token);let e=await r(Di,{input:t});c(`${e.forkVibecontrolsGitHubRepo.isForked?"Forked":"Created"}: ${e.forkVibecontrolsGitHubRepo.repoUrl}`);}catch(t){a(t);}}),i.command("publish-as-template").description("Publish a component as a reusable template").requiredOption("--component <id>","Component ID").requiredOption("--name <n>","Template name").option("--description <d>","Description").option("--category <c>","Template category").option("--version <v>","Version").option("--setup-instructions <s>","Markdown setup instructions").option("--source-repository-url <u>","Source repository URL").option("--tags <tags>","Comma-separated tags").action(async n=>{try{let t={name:n.name};n.description&&(t.description=n.description),n.category&&(t.category=n.category.toUpperCase()),n.version&&(t.version=n.version),n.setupInstructions&&(t.setupInstructions=n.setupInstructions),n.sourceRepositoryUrl&&(t.sourceRepositoryUrl=n.sourceRepositoryUrl),n.tags&&(t.tags=n.tags.split(",").map(o=>o.trim()));let e=await r(Oi,{componentId:n.component,input:t});c(`Template published: ${e.publishVibecontrolsComponentAsTemplate.name} (${e.publishVibecontrolsComponentAsTemplate.id})`);}catch(t){a(t);}});}function la(p){let i=p.command("templates").description("Reusable component templates");i.command("list").description("List templates").option("--search <q>","Search query").option("--category <c>","Filter by category").option("--status <s>","Filter by status").option("--tags <tags>","Comma-separated tags").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.search&&(t.search=n.search),n.category&&(t.category=n.category.toUpperCase()),n.status&&(t.status=n.status.toUpperCase()),n.tags&&(t.tags=n.tags.split(",").map(s=>s.trim()));let o=(await r($i,{filter:Object.keys(t).length?t:void 0})).vibecontrolsTemplates.items;d(n,o,{headers:["ID","Name","Category","Status","Clones","Created"],rows:o.map(s=>[f(s.id,12),s.name,s.category,s.status,String(s.cloneCount??0),S(s.createdAt)])});}catch(t){a(t);}}),i.command("get").description("Get template").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(vi,{id:n});if(!e.vibecontrolsTemplate)throw new m("Template not found");d(t,e.vibecontrolsTemplate);}catch(e){a(e);}}),i.command("update").description("Update template").argument("<id>").option("--name <n>","Name").option("--description <d>","Description").option("--category <c>","Category").option("--status <s>","Status").option("--version <v>","Version").option("--setup-instructions <s>","Markdown setup instructions").option("--source-repository-url <u>","Source repository URL").option("--tags <tags>","Comma-separated tags").action(async(n,t)=>{try{let e={};t.name&&(e.name=t.name),t.description!==void 0&&(e.description=t.description),t.category&&(e.category=t.category.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.version&&(e.version=t.version),t.setupInstructions&&(e.setupInstructions=t.setupInstructions),t.sourceRepositoryUrl&&(e.sourceRepositoryUrl=t.sourceRepositoryUrl),t.tags&&(e.tags=t.tags.split(",").map(o=>o.trim())),await r(wi,{id:n,input:e}),c(`Template ${n} updated`);}catch(e){a(e);}}),i.command("delete").description("Delete template (soft)").argument("<id>").option("-y, --yes","Skip confirmation").action(async(n,t)=>{try{if(!t.yes&&!await l(`Delete template ${n}?`))return;await r(ki,{id:n}),c(`Template ${n} deleted`);}catch(e){a(e);}}),i.command("instantiate").description("Instantiate template into a new component").requiredOption("--template <id>","Template ID").requiredOption("--name <n>","Name of the new component").option("--description <d>","Description of the new component").option("--workspace-id <id>","Target workspace (defaults to current)").option("--variable-values <json>","JSON for variableValues override").action(async n=>{try{let t={name:n.name};if(n.description&&(t.description=n.description),n.workspaceId&&(t.workspaceId=n.workspaceId),n.variableValues)try{t.variableValues=JSON.parse(n.variableValues);}catch{throw new m("--variable-values must be valid JSON")}let e=await r(_i,{templateId:n.template,input:t});c(`Component created: ${e.instantiateVibecontrolsTemplate.name} (${e.instantiateVibecontrolsTemplate.id})`);}catch(t){a(t);}});}function fa(p){let i=p.command("scorecards").description("Scorecards (polymorphic \u2014 vibe/catalog/component)");i.command("get").description("Get scorecard for an owner").requiredOption("--owner-id <id>","Owner entity ID").requiredOption("--owner-type <t>","CATALOG | COMPONENT | VIBE").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(Ri,{ownerId:n.ownerId,ownerType:n.ownerType.toUpperCase()});d(n,t.vibecontrolsScorecard??{});}catch(t){a(t);}}),i.command("upsert").description("Create or update a scorecard for an owner").requiredOption("--owner-id <id>","Owner entity ID").requiredOption("--owner-type <t>","CATALOG | COMPONENT | VIBE").action(async n=>{try{let t={ownerId:n.ownerId,ownerType:n.ownerType.toUpperCase()},e=await r(Ni,{input:t});c(`Scorecard upserted: ${e.upsertVibecontrolsScorecard.id}`);}catch(t){a(t);}}),i.command("add-metric").description("Add a metric to a scorecard").requiredOption("--scorecard <id>","Scorecard ID").requiredOption("--name <n>","Metric name").option("--description <d>","Description").option("--type <t>","Metric type").option("--status <s>","Status").option("--value <v>","Current value",parseFloat).option("--threshold <t>","Target threshold",parseFloat).option("--unit <u>","Unit").option("--iframe-url <u>","Iframe embed URL").option("--iframe-height <h>","Iframe height (px)",n=>parseInt(n,10)).action(async n=>{try{let t={name:n.name};n.description&&(t.description=n.description),n.type&&(t.type=n.type.toUpperCase()),n.status&&(t.status=n.status.toUpperCase()),n.value!==void 0&&(t.value=n.value),n.threshold!==void 0&&(t.threshold=n.threshold),n.unit&&(t.unit=n.unit),n.iframeUrl&&(t.iframeUrl=n.iframeUrl),n.iframeHeight!==void 0&&(t.iframeHeight=n.iframeHeight);let e=await r(xi,{scorecardId:n.scorecard,input:t});c(`Metric added: ${e.addVibecontrolsScorecardMetric.name} (${e.addVibecontrolsScorecardMetric.id})`);}catch(t){a(t);}}),i.command("update-metric").description("Update a scorecard metric").argument("<id>").option("--name <n>","Name").option("--description <d>","Description").option("--status <s>","Status").option("--value <v>","Current value",parseFloat).option("--threshold <t>","Threshold",parseFloat).option("--unit <u>","Unit").action(async(n,t)=>{try{let e={};t.name&&(e.name=t.name),t.description!==void 0&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),t.value!==void 0&&(e.value=t.value),t.threshold!==void 0&&(e.threshold=t.threshold),t.unit&&(e.unit=t.unit),await r(Ui,{id:n,input:e}),c(`Metric ${n} updated`);}catch(e){a(e);}}),i.command("remove-metric").description("Remove a scorecard metric (soft)").argument("<id>").action(async n=>{try{await r(Li,{id:n}),c(`Metric ${n} removed`);}catch(t){a(t);}});}var ka={id:"vibecontrols",version:"1.0.0",displayName:"VibeControls",dependsOn:["auth","workspaces"],register(p,i){mt(i),Hr(p),Kr(p),Wr(p),jr(p),Zr(p),ta(p),ea(p),na(p),oa(p),ra(p),aa(p),sa(p),ca(p),da(p),pa(p),ua(p),ma(p),ga(p),la(p),fa(p);}},dp=ka;module.exports=dp;
|
|
1379
|
+
`);}catch(o){a(o);}}),n.command("record-usage").description("Increment usage counter for a prompt").argument("<id>","Prompt ID").action(async t=>{try{await r(Hi,{id:t}),c("Usage recorded");}catch(e){a(e);}});}function pa(p){let i=p.command("analytics").description("VibeControls analytics");i.command("overview").description("Show analytics overview for all entities").option("--start-date <date>","Start date (ISO format)",new Date(Date.now()-10080*60*1e3).toISOString()).option("--end-date <date>","End date (ISO format)",new Date().toISOString()).option("--granularity <g>","Granularity (HOUR, DAY, WEEK, MONTH)","DAY").option("--agent-id <id>","Filter by agent ID").option("--vibe-id <id>","Filter by vibe ID").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(q,{input:{startDate:n.startDate,endDate:n.endDate,granularity:n.granularity,agentId:n.agentId||void 0,vibeId:n.vibeId||void 0}});d(n,t.vibecontrolsAnalytics);}catch(t){a(t);}}),i.command("agents").description("Show agent analytics").option("--start-date <date>","Start date (ISO format)",new Date(Date.now()-10080*60*1e3).toISOString()).option("--end-date <date>","End date (ISO format)",new Date().toISOString()).option("--granularity <g>","Granularity","DAY").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(q,{input:{startDate:n.startDate,endDate:n.endDate,granularity:n.granularity,entityTypes:["AGENT"]}});d(n,t.vibecontrolsAnalytics.agents);}catch(t){a(t);}}),i.command("sessions").description("Show session analytics").option("--start-date <date>","Start date (ISO format)",new Date(Date.now()-10080*60*1e3).toISOString()).option("--end-date <date>","End date (ISO format)",new Date().toISOString()).option("--granularity <g>","Granularity","DAY").option("--agent-id <id>","Filter by agent ID").option("--vibe-id <id>","Filter by vibe ID").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(q,{input:{startDate:n.startDate,endDate:n.endDate,granularity:n.granularity,entityTypes:["SESSION"],agentId:n.agentId||void 0,vibeId:n.vibeId||void 0}});d(n,t.vibecontrolsAnalytics.sessions);}catch(t){a(t);}}),i.command("actions").description("Show action analytics").option("--start-date <date>","Start date (ISO format)",new Date(Date.now()-10080*60*1e3).toISOString()).option("--end-date <date>","End date (ISO format)",new Date().toISOString()).option("--granularity <g>","Granularity","DAY").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(q,{input:{startDate:n.startDate,endDate:n.endDate,granularity:n.granularity,entityTypes:["ACTION"]}});d(n,t.vibecontrolsAnalytics.actions);}catch(t){a(t);}});}function ua(p){let i=p.command("catalogs").description("Service catalog (component + vibe groupings)");i.command("list").description("List catalogs").option("--search <q>","Search query").option("--visibility <v>","Filter by visibility (PUBLIC|PRIVATE|INTERNAL)").option("--tags <tags>","Comma-separated tags").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.search&&(t.search=n.search),n.visibility&&(t.visibility=n.visibility.toUpperCase()),n.tags&&(t.tags=n.tags.split(",").map(s=>s.trim()));let o=(await r(ci,{filter:Object.keys(t).length?t:void 0})).vibecontrolsCatalogs.items;d(n,o,{headers:["ID","Name","Visibility","Components","Vibes","Created"],rows:o.map(s=>[f(s.id,12),s.name,s.visibility,String(s.componentCount??0),String(s.vibeCount??0),S(s.createdAt)])});}catch(t){a(t);}}),i.command("get").description("Get catalog").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(di,{id:n});if(!e.vibecontrolsCatalog)throw new m("Catalog not found");d(t,e.vibecontrolsCatalog);}catch(e){a(e);}}),i.command("dependency-graph").description("Dependency graph for a catalog").argument("<catalogId>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(pi,{catalogId:n});d(t,e.vibecontrolsCatalogDependencyGraph);}catch(e){a(e);}}),i.command("sbom").description("SBOM for a catalog").argument("<catalogId>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(ui,{catalogId:n});d(t,e.vibecontrolsCatalogSBOM);}catch(e){a(e);}}),i.command("create").description("Create catalog").requiredOption("--name <n>","Catalog name").option("--description <d>","Description").option("--visibility <v>","Visibility (PUBLIC|PRIVATE|INTERNAL)","PRIVATE").option("--owner-id <id>","Owner actor ID").option("--owner-name <n>","Owner display name").option("--tags <tags>","Comma-separated tags").action(async n=>{try{let t={name:n.name};n.description&&(t.description=n.description),n.visibility&&(t.visibility=n.visibility.toUpperCase()),n.ownerId&&(t.ownerId=n.ownerId),n.ownerName&&(t.ownerName=n.ownerName),n.tags&&(t.tags=n.tags.split(",").map(o=>o.trim()));let e=await r(mi,{input:t});c(`Catalog created: ${e.createVibecontrolsCatalog.name} (${e.createVibecontrolsCatalog.id})`);}catch(t){a(t);}}),i.command("update").description("Update catalog").argument("<id>").option("--name <n>","Name").option("--description <d>","Description").option("--visibility <v>","Visibility").option("--tags <tags>","Comma-separated tags").action(async(n,t)=>{try{let e={};t.name&&(e.name=t.name),t.description!==void 0&&(e.description=t.description),t.visibility&&(e.visibility=t.visibility.toUpperCase()),t.tags&&(e.tags=t.tags.split(",").map(o=>o.trim())),await r(gi,{id:n,input:e}),c(`Catalog ${n} updated`);}catch(e){a(e);}}),i.command("delete").description("Delete catalog (soft)").argument("<id>").option("-y, --yes","Skip confirmation").action(async(n,t)=>{try{if(!t.yes&&!await l(`Delete catalog ${n}?`))return;await r(li,{id:n}),c(`Catalog ${n} deleted`);}catch(e){a(e);}}),i.command("add-component").description("Add a component to a catalog").requiredOption("--catalog <id>","Catalog ID").requiredOption("--component <id>","Component ID").action(async n=>{try{await r(fi,{catalogId:n.catalog,componentId:n.component}),c(`Component ${n.component} added to catalog ${n.catalog}`);}catch(t){a(t);}}),i.command("remove-component").description("Remove a component from a catalog").requiredOption("--catalog <id>","Catalog ID").requiredOption("--component <id>","Component ID").action(async n=>{try{await r(Ii,{catalogId:n.catalog,componentId:n.component}),c(`Component ${n.component} removed from catalog ${n.catalog}`);}catch(t){a(t);}}),i.command("add-vibe").description("Add a vibe to a catalog").requiredOption("--catalog <id>","Catalog ID").requiredOption("--vibe <id>","Vibe ID").action(async n=>{try{await r(Si,{catalogId:n.catalog,vibeId:n.vibe}),c(`Vibe ${n.vibe} added to catalog ${n.catalog}`);}catch(t){a(t);}}),i.command("remove-vibe").description("Remove a vibe from a catalog").requiredOption("--catalog <id>","Catalog ID").requiredOption("--vibe <id>","Vibe ID").action(async n=>{try{await r(yi,{catalogId:n.catalog,vibeId:n.vibe}),c(`Vibe ${n.vibe} removed from catalog ${n.catalog}`);}catch(t){a(t);}});}function ma(p){let i=p.command("components").description("Software components registry");i.command("list").description("List components").option("--search <q>","Search query").option("--type <t>","Filter by type").option("--lifecycle <l>","Filter by lifecycle").option("--team <id>","Filter by team ID").option("--tags <tags>","Comma-separated tags").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.search&&(t.search=n.search),n.type&&(t.type=n.type.toUpperCase()),n.lifecycle&&(t.lifecycle=n.lifecycle.toUpperCase()),n.team&&(t.teamId=n.team),n.tags&&(t.tags=n.tags.split(",").map(s=>s.trim()));let o=(await r(Ei,{filter:Object.keys(t).length?t:void 0})).vibecontrolsComponents.items;d(n,o,{headers:["ID","Name","Type","Lifecycle","Version","Created"],rows:o.map(s=>[f(s.id,12),s.name,s.type,s.lifecycle,s.version??"",S(s.createdAt)])});}catch(t){a(t);}}),i.command("get").description("Get component").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r(Ti,{id:n});if(!e.vibecontrolsComponent)throw new m("Component not found");d(t,e.vibecontrolsComponent);}catch(e){a(e);}}),i.command("create").description("Create component").requiredOption("--name <n>","Component name").option("--description <d>","Description").option("--type <t>","Component type").option("--lifecycle <l>","Lifecycle stage").option("--version <v>","Version").option("--language <l>","Primary language").option("--framework <f>","Primary framework").option("--repository-url <u>","Repository URL").option("--documentation-url <u>","Documentation URL").option("--owner-id <id>","Owner ID").option("--owner-name <n>","Owner display name").option("--team-id <id>","Team ID").option("--tags <tags>","Comma-separated tags").action(async n=>{try{let t={name:n.name};n.description&&(t.description=n.description),n.type&&(t.type=n.type.toUpperCase()),n.lifecycle&&(t.lifecycle=n.lifecycle.toUpperCase()),n.version&&(t.version=n.version),n.language&&(t.language=n.language),n.framework&&(t.framework=n.framework),n.repositoryUrl&&(t.repositoryUrl=n.repositoryUrl),n.documentationUrl&&(t.documentationUrl=n.documentationUrl),n.ownerId&&(t.ownerId=n.ownerId),n.ownerName&&(t.ownerName=n.ownerName),n.teamId&&(t.teamId=n.teamId),n.tags&&(t.tags=n.tags.split(",").map(o=>o.trim()));let e=await r(bi,{input:t});c(`Component created: ${e.createVibecontrolsComponent.name} (${e.createVibecontrolsComponent.id})`);}catch(t){a(t);}}),i.command("update").description("Update component").argument("<id>").option("--name <n>","Name").option("--description <d>","Description").option("--lifecycle <l>","Lifecycle").option("--version <v>","Version").option("--repository-url <u>","Repository URL").option("--documentation-url <u>","Documentation URL").option("--tags <tags>","Comma-separated tags").action(async(n,t)=>{try{let e={};t.name&&(e.name=t.name),t.description!==void 0&&(e.description=t.description),t.lifecycle&&(e.lifecycle=t.lifecycle.toUpperCase()),t.version&&(e.version=t.version),t.repositoryUrl&&(e.repositoryUrl=t.repositoryUrl),t.documentationUrl&&(e.documentationUrl=t.documentationUrl),t.tags&&(e.tags=t.tags.split(",").map(o=>o.trim())),await r(hi,{id:n,input:e}),c(`Component ${n} updated`);}catch(e){a(e);}}),i.command("delete").description("Delete component (soft)").argument("<id>").option("-y, --yes","Skip confirmation").action(async(n,t)=>{try{if(!t.yes&&!await l(`Delete component ${n}?`))return;await r(Ai,{id:n}),c(`Component ${n} deleted`);}catch(e){a(e);}}),i.command("fork-github-repo").description("Fork or create a GitHub repo for this workspace").requiredOption("--repo-name <n>","Name of the new repository").requiredOption("--scope <s>","USER or ORG").option("--org-name <n>","GitHub org (required when scope=ORG)").option("--source-repo-url <u>","Source repo URL to fork").option("--description <d>","Description").option("--connection-id <id>","OAuth connection ID").option("--token <t>","Personal access token (if no connection)").action(async n=>{try{let t={repoName:n.repoName,scope:n.scope.toUpperCase()};n.orgName&&(t.orgName=n.orgName),n.sourceRepoUrl&&(t.sourceRepoUrl=n.sourceRepoUrl),n.description&&(t.description=n.description),n.connectionId&&(t.connectionId=n.connectionId),n.token&&(t.token=n.token);let e=await r(Ci,{input:t});c(`${e.forkVibecontrolsGitHubRepo.isForked?"Forked":"Created"}: ${e.forkVibecontrolsGitHubRepo.repoUrl}`);}catch(t){a(t);}}),i.command("publish-as-template").description("Publish a component as a reusable template").requiredOption("--component <id>","Component ID").requiredOption("--name <n>","Template name").option("--description <d>","Description").option("--category <c>","Template category").option("--version <v>","Version").option("--setup-instructions <s>","Markdown setup instructions").option("--source-repository-url <u>","Source repository URL").option("--tags <tags>","Comma-separated tags").action(async n=>{try{let t={name:n.name};n.description&&(t.description=n.description),n.category&&(t.category=n.category.toUpperCase()),n.version&&(t.version=n.version),n.setupInstructions&&(t.setupInstructions=n.setupInstructions),n.sourceRepositoryUrl&&(t.sourceRepositoryUrl=n.sourceRepositoryUrl),n.tags&&(t.tags=n.tags.split(",").map(o=>o.trim()));let e=await r(Di,{componentId:n.component,input:t});c(`Template published: ${e.publishVibecontrolsComponentAsTemplate.name} (${e.publishVibecontrolsComponentAsTemplate.id})`);}catch(t){a(t);}});}function ga(p){let i=p.command("templates").description("Reusable component templates");i.command("list").description("List templates").option("--search <q>","Search query").option("--category <c>","Filter by category").option("--status <s>","Filter by status").option("--tags <tags>","Comma-separated tags").option("-f, --format <format>","Output format").action(async n=>{try{let t={};n.search&&(t.search=n.search),n.category&&(t.category=n.category.toUpperCase()),n.status&&(t.status=n.status.toUpperCase()),n.tags&&(t.tags=n.tags.split(",").map(s=>s.trim()));let o=(await r(Oi,{filter:Object.keys(t).length?t:void 0})).vibecontrolsTemplates.items;d(n,o,{headers:["ID","Name","Category","Status","Clones","Created"],rows:o.map(s=>[f(s.id,12),s.name,s.category,s.status,String(s.cloneCount??0),S(s.createdAt)])});}catch(t){a(t);}}),i.command("get").description("Get template").argument("<id>").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await r($i,{id:n});if(!e.vibecontrolsTemplate)throw new m("Template not found");d(t,e.vibecontrolsTemplate);}catch(e){a(e);}}),i.command("update").description("Update template").argument("<id>").option("--name <n>","Name").option("--description <d>","Description").option("--category <c>","Category").option("--status <s>","Status").option("--version <v>","Version").option("--setup-instructions <s>","Markdown setup instructions").option("--source-repository-url <u>","Source repository URL").option("--tags <tags>","Comma-separated tags").action(async(n,t)=>{try{let e={};t.name&&(e.name=t.name),t.description!==void 0&&(e.description=t.description),t.category&&(e.category=t.category.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.version&&(e.version=t.version),t.setupInstructions&&(e.setupInstructions=t.setupInstructions),t.sourceRepositoryUrl&&(e.sourceRepositoryUrl=t.sourceRepositoryUrl),t.tags&&(e.tags=t.tags.split(",").map(o=>o.trim())),await r(vi,{id:n,input:e}),c(`Template ${n} updated`);}catch(e){a(e);}}),i.command("delete").description("Delete template (soft)").argument("<id>").option("-y, --yes","Skip confirmation").action(async(n,t)=>{try{if(!t.yes&&!await l(`Delete template ${n}?`))return;await r(wi,{id:n}),c(`Template ${n} deleted`);}catch(e){a(e);}}),i.command("instantiate").description("Instantiate template into a new component").requiredOption("--template <id>","Template ID").requiredOption("--name <n>","Name of the new component").option("--description <d>","Description of the new component").option("--workspace-id <id>","Target workspace (defaults to current)").option("--variable-values <json>","JSON for variableValues override").action(async n=>{try{let t={name:n.name};if(n.description&&(t.description=n.description),n.workspaceId&&(t.workspaceId=n.workspaceId),n.variableValues)try{t.variableValues=JSON.parse(n.variableValues);}catch{throw new m("--variable-values must be valid JSON")}let e=await r(ki,{templateId:n.template,input:t});c(`Component created: ${e.instantiateVibecontrolsTemplate.name} (${e.instantiateVibecontrolsTemplate.id})`);}catch(t){a(t);}});}function la(p){let i=p.command("scorecards").description("Scorecards (polymorphic \u2014 vibe/catalog/component)");i.command("get").description("Get scorecard for an owner").requiredOption("--owner-id <id>","Owner entity ID").requiredOption("--owner-type <t>","CATALOG | COMPONENT | VIBE").option("-f, --format <format>","Output format").action(async n=>{try{let t=await r(_i,{ownerId:n.ownerId,ownerType:n.ownerType.toUpperCase()});d(n,t.vibecontrolsScorecard??{});}catch(t){a(t);}}),i.command("upsert").description("Create or update a scorecard for an owner").requiredOption("--owner-id <id>","Owner entity ID").requiredOption("--owner-type <t>","CATALOG | COMPONENT | VIBE").action(async n=>{try{let t={ownerId:n.ownerId,ownerType:n.ownerType.toUpperCase()},e=await r(Ri,{input:t});c(`Scorecard upserted: ${e.upsertVibecontrolsScorecard.id}`);}catch(t){a(t);}}),i.command("add-metric").description("Add a metric to a scorecard").requiredOption("--scorecard <id>","Scorecard ID").requiredOption("--name <n>","Metric name").option("--description <d>","Description").option("--type <t>","Metric type").option("--status <s>","Status").option("--value <v>","Current value",parseFloat).option("--threshold <t>","Target threshold",parseFloat).option("--unit <u>","Unit").option("--iframe-url <u>","Iframe embed URL").option("--iframe-height <h>","Iframe height (px)",n=>parseInt(n,10)).action(async n=>{try{let t={name:n.name};n.description&&(t.description=n.description),n.type&&(t.type=n.type.toUpperCase()),n.status&&(t.status=n.status.toUpperCase()),n.value!==void 0&&(t.value=n.value),n.threshold!==void 0&&(t.threshold=n.threshold),n.unit&&(t.unit=n.unit),n.iframeUrl&&(t.iframeUrl=n.iframeUrl),n.iframeHeight!==void 0&&(t.iframeHeight=n.iframeHeight);let e=await r(Ni,{scorecardId:n.scorecard,input:t});c(`Metric added: ${e.addVibecontrolsScorecardMetric.name} (${e.addVibecontrolsScorecardMetric.id})`);}catch(t){a(t);}}),i.command("update-metric").description("Update a scorecard metric").argument("<id>").option("--name <n>","Name").option("--description <d>","Description").option("--status <s>","Status").option("--value <v>","Current value",parseFloat).option("--threshold <t>","Threshold",parseFloat).option("--unit <u>","Unit").action(async(n,t)=>{try{let e={};t.name&&(e.name=t.name),t.description!==void 0&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),t.value!==void 0&&(e.value=t.value),t.threshold!==void 0&&(e.threshold=t.threshold),t.unit&&(e.unit=t.unit),await r(xi,{id:n,input:e}),c(`Metric ${n} updated`);}catch(e){a(e);}}),i.command("remove-metric").description("Remove a scorecard metric (soft)").argument("<id>").action(async n=>{try{await r(Ui,{id:n}),c(`Metric ${n} removed`);}catch(t){a(t);}});}var wa={id:"vibecontrols",version:"1.0.0",displayName:"VibeControls",dependsOn:["auth","workspaces"],register(p,i){ut(i),Mr(p),Hr(p),Kr(p),Wr(p),Qr(p),Zr(p),ta(p),ea(p),na(p),ia(p),ra(p),aa(p),sa(p),ca(p),da(p),pa(p),ua(p),ma(p),ga(p),la(p);}},rp=wa;module.exports=rp;
|