@burdenoff/cli-sdk 2026.1102.3 → 2026.1107.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.
@@ -1,4 +1,4 @@
1
- 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var g=class extends Error{exitCode;hint;constructor(i,t){super(i),this.name="CliUserError",this.exitCode=t?.exitCode??1,this.hint=t?.hint;}},w=class extends g{constructor(i,t){super(i,{exitCode:2,hint:t?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},f=class extends Error{cause;constructor(i,t){super(i),this.name="CliInternalError",this.cause=t;}};var T=null;function E(r){T=r;}function I(){if(!T)throw new f("vibecontrols module helpers used before setHelpersContext was called");return T}function St(){let r=I();if(!r.auth.isAuthenticated())throw new w("Authentication required.",{hint:`Run \`${r.productName} auth login\` to authenticate.`})}async function o(r,i){return St(),I().gql.workspace.request(r,i)}function s(r){let i=r instanceof Error?r.message:String(r);throw new g(i)}function a(r,i,t){I().output.formatAndOutput(r,i,t);}function m(r){I().output.printSuccess(r);}function h(r){return I().output.formatDate(r)}function c(r,i){return I().output.truncate(r,i)}var S=`
1
+ 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var g=class extends Error{exitCode;hint;constructor(o,t){super(o),this.name="CliUserError",this.exitCode=t?.exitCode??1,this.hint=t?.hint;}},w=class extends g{constructor(o,t){super(o,{exitCode:2,hint:t?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},f=class extends Error{cause;constructor(o,t){super(o),this.name="CliInternalError",this.cause=t;}};var h=null;function E(r){h=r;}function I(){if(!h)throw new f("vibecontrols module helpers used before setHelpersContext was called");return h}function ht(){let r=I();if(!r.auth.isAuthenticated())throw new w("Authentication required.",{hint:`Run \`${r.productName} auth login\` to authenticate.`})}async function i(r,o){return ht(),I().gql.workspace.request(r,o)}function s(r){let o=r instanceof Error?r.message:String(r);throw new g(o)}function a(r,o,t){I().output.formatAndOutput(r,o,t);}function m(r){I().output.printSuccess(r);}function T(r){return I().output.formatDate(r)}function c(r,o){return I().output.truncate(r,o)}var b=`
2
2
  query AssetHandlerGetAsset($id: ID!) {
3
3
  asset(id: $id) {
4
4
  id assetNumber name description category status condition
@@ -6,7 +6,7 @@
6
6
  createdAt updatedAt workspaceId
7
7
  }
8
8
  }
9
- `,b=`
9
+ `,x=`
10
10
  query AssetHandlerListAssets($pagination: AssetHandlerPaginationInput) {
11
11
  assets(pagination: $pagination) {
12
12
  id assetNumber name category status condition serialNumber
@@ -21,7 +21,7 @@
21
21
  createdAt updatedAt workspaceId
22
22
  }
23
23
  }
24
- `,x=`
24
+ `,S=`
25
25
  query AssetHandlerListSoftwareAssets($pagination: AssetHandlerPaginationInput) {
26
26
  softwareAssets(pagination: $pagination) {
27
27
  id name vendor version licenseType seatsPurchased seatsUsed
@@ -42,21 +42,21 @@
42
42
  createdAt updatedAt workspaceId
43
43
  }
44
44
  }
45
- `,P=`
45
+ `,N=`
46
46
  mutation AssetHandlerCreateDigitalTwin($input: CreateDigitalTwinInput!) {
47
47
  createDigitalTwin(input: $input) {
48
48
  id assetId fidelityLevel modelRef geometryRef properties
49
49
  createdAt updatedAt workspaceId
50
50
  }
51
51
  }
52
- `,N=`
52
+ `,L=`
53
53
  query AssetHandlerListConfigurationItems($pagination: AssetHandlerPaginationInput) {
54
54
  configurationItems(pagination: $pagination) {
55
55
  id ciNumber name ciType status environment owner attributes
56
56
  createdAt updatedAt workspaceId
57
57
  }
58
58
  }
59
- `,L=`
59
+ `,P=`
60
60
  mutation AssetHandlerUpsertConfigurationItem($input: UpsertConfigurationItemInput!) {
61
61
  upsertConfigurationItem(input: $input) {
62
62
  id ciNumber name ciType status environment owner attributes
@@ -106,14 +106,14 @@
106
106
  createdAt updatedAt workspaceId
107
107
  }
108
108
  }
109
- `,U=`
109
+ `,G=`
110
110
  query AssetHandlerListWorkOrders($pagination: AssetHandlerPaginationInput) {
111
111
  workOrders(pagination: $pagination) {
112
112
  id title description type priority status assetId assignedTo
113
113
  createdAt updatedAt workspaceId
114
114
  }
115
115
  }
116
- `,G=`
116
+ `,U=`
117
117
  mutation AssetHandlerCreateWorkOrder($input: CreateWorkOrderInput!) {
118
118
  createWorkOrder(input: $input) {
119
119
  id title description type priority status assetId assignedTo
@@ -149,10 +149,10 @@
149
149
  }
150
150
  }
151
151
  `,J=`
152
- mutation AssetHandlerCreateTransaction($input: CreateTransactionInput!) {
152
+ mutation AssetHandlerCreateTransaction($input: CreateAssetTransactionInput!) {
153
153
  createTransaction(input: $input) {
154
- id type category description amount currency vendor department
155
- status occurredAt workspaceId
154
+ id type category description amount currency vendor department status occurredAt
155
+ workspaceId
156
156
  }
157
157
  }
158
158
  `,K=`
@@ -170,86 +170,51 @@
170
170
  }
171
171
  }
172
172
  `,Y=`
173
- query AssetHandlerListComplianceFrameworks($pagination: AssetHandlerPaginationInput) {
174
- complianceFrameworks(pagination: $pagination) {
175
- id name version status score totalControls passedControls
176
- failedControls lastAssessment nextAssessment createdAt updatedAt workspaceId
177
- }
178
- }
179
- `,Q=`
180
- query AssetHandlerListSecurityPolicies($pagination: AssetHandlerPaginationInput) {
181
- assetSecurityPolicies(pagination: $pagination) {
182
- id name version category status owner description applicableTo
183
- effectiveDate reviewDate createdAt updatedAt workspaceId
184
- }
185
- }
186
- `,X=`
187
- query AssetHandlerListSecurityEvents($pagination: AssetHandlerPaginationInput) {
188
- securityEvents(pagination: $pagination) {
189
- id title description eventType severity source resolved
190
- ipAddress userId occurredAt createdAt workspaceId
191
- }
192
- }
193
- `,Z=`
194
173
  query AssetHandlerListEsgMetrics($pagination: AssetHandlerPaginationInput) {
195
174
  esgMetrics(pagination: $pagination) {
196
- id category metricKey metricName value unit target trend
197
- periodStart periodEnd updatedBy createdAt updatedAt workspaceId
175
+ id category metricKey metricName value unit target trend periodStart periodEnd createdAt
176
+ updatedAt workspaceId
198
177
  }
199
178
  }
200
- `,tt=`
179
+ `,Q=`
201
180
  mutation AssetHandlerUpsertEsgMetric($input: UpsertEsgMetricInput!) {
202
181
  upsertEsgMetric(input: $input) {
203
- id category metricKey metricName value unit target trend
204
- periodStart periodEnd updatedBy createdAt updatedAt workspaceId
205
- }
206
- }
207
- `,et=`
208
- query AssetHandlerListAiPredictions($pagination: AssetHandlerPaginationInput) {
209
- aiPredictions(pagination: $pagination) {
210
- id assetId predictionType modelVersion score confidence
211
- recommendation status features generatedAt createdAt workspaceId
182
+ id category metricKey metricName value unit target trend periodStart periodEnd createdAt
183
+ updatedAt workspaceId
212
184
  }
213
185
  }
214
- `,nt=`
215
- mutation AssetHandlerRequestAiPrediction($input: RequestAIPredictionInput!) {
216
- requestAIPrediction(input: $input) {
217
- id assetId predictionType modelVersion score confidence
218
- recommendation status features generatedAt createdAt workspaceId
219
- }
220
- }
221
- `,rt=`
186
+ `,X=`
222
187
  query AssetHandlerListProvenanceRecords($pagination: AssetHandlerPaginationInput) {
223
188
  provenanceRecords(pagination: $pagination) {
224
189
  id assetId chainNetwork txHash blockNumber hash attestedBy
225
190
  attestedAt metadata createdAt workspaceId
226
191
  }
227
192
  }
228
- `,it=`
193
+ `,Z=`
229
194
  mutation AssetHandlerRecordProvenance($input: RecordProvenanceInput!) {
230
195
  recordProvenance(input: $input) {
231
196
  id assetId chainNetwork txHash blockNumber hash attestedBy
232
197
  attestedAt metadata createdAt workspaceId
233
198
  }
234
199
  }
235
- `,ot=`
200
+ `,tt=`
236
201
  query AssetHandlerListDiscoveryJobs($pagination: AssetHandlerPaginationInput) {
237
202
  discoveryJobs(pagination: $pagination) {
238
203
  id name source status assetsDiscovered createdBy errorSummary
239
204
  startedAt completedAt createdAt updatedAt workspaceId
240
205
  }
241
206
  }
242
- `,st=`
207
+ `,et=`
243
208
  mutation AssetHandlerStartDiscoveryJob($input: StartDiscoveryJobInput!) {
244
209
  startDiscoveryJob(input: $input) {
245
210
  id name source status assetsDiscovered createdBy errorSummary
246
211
  startedAt completedAt createdAt updatedAt workspaceId
247
212
  }
248
213
  }
249
- `,at=`
214
+ `,nt=`
250
215
  query AssetHandlerDashboardOverview {
251
216
  dashboardOverview {
252
217
  totalAssets totalTransactions openIncidents openWorkOrders
253
218
  }
254
219
  }
255
- `;function l(r,i){try{return JSON.parse(i)}catch{throw new g(`--${r} must be valid JSON`)}}function d(r){let i=Number.parseInt(r,10);if(Number.isNaN(i))throw new g(`Expected an integer but got "${r}"`);return i}function C(r){let i=Number.parseFloat(r);if(Number.isNaN(i))throw new g(`Expected a number but got "${r}"`);return i}function A(r){return r.split(",").map(i=>i.trim()).filter(i=>i.length>0)}function u(r,i){let t={};return r!==void 0&&(t.limit=r),i&&(t.cursor=i),Object.keys(t).length?t:void 0}function ct(r){let i=r.command("assets").description("Assethandler assets");i.command("list").description("List assets").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(b,{pagination:u(t.limit,t.cursor)});a(t,e.assets,{headers:["ID","Asset #","Name","Category","Status","Condition"],rows:e.assets.map(n=>[c(n.id,12),n.assetNumber,n.name,n.category,n.status,n.condition])});}catch(e){s(e);}}),i.command("get").description("Get an asset by id").argument("<id>","Asset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await o(S,{id:t});if(!n.asset)throw new g(`Asset ${t} not found`);a(e,n.asset);}catch(n){s(n);}}),i.command("create").description("Create an asset").requiredOption("--asset-number <s>","Asset number").requiredOption("--name <name>","Asset name").requiredOption("--category <c>","Category").option("--description <s>","Description").option("--status <s>","ACTIVE|INACTIVE|MAINTENANCE|RETIRED|DISPOSED").option("--condition <c>","EXCELLENT|GOOD|FAIR|POOR|DAMAGED").option("--serial-number <s>","Serial number").option("--location-name <s>","Location name").option("--assigned-to <s>","Assignee").option("--tags <csv>","Comma-separated tags").option("--custom-attributes <json>","Custom attributes JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetNumber:t.assetNumber,name:t.name,category:t.category};t.description&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),t.condition&&(e.condition=t.condition.toUpperCase()),t.serialNumber&&(e.serialNumber=t.serialNumber),t.locationName&&(e.locationName=t.locationName),t.assignedTo&&(e.assignedTo=t.assignedTo),t.tags&&(e.tags=A(t.tags)),t.customAttributes&&(e.customAttributes=l("custom-attributes",t.customAttributes));let n=await o(O,{input:e});m(`Asset created: ${n.createAsset.assetNumber}`),a(t,n.createAsset);}catch(e){s(e);}});}function dt(r){bt(r),Ot(r),xt(r),Rt(r);}function bt(r){let i=r.command("software-assets").description("Assethandler software assets & licenses");i.command("list").description("List software assets").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(x,{pagination:u(t.limit,t.cursor)});a(t,e.softwareAssets,{headers:["ID","Name","Vendor","Version","License","Seats","Compliance %"],rows:e.softwareAssets.map(n=>[c(n.id,12),n.name,n.vendor,n.version,n.licenseType,`${n.seatsUsed??0}/${n.seatsPurchased??0}`,String(n.compliancePercent)])});}catch(e){s(e);}}),i.command("upsert").description("Create or update a software asset").requiredOption("--name <name>","Name").requiredOption("--vendor <v>","Vendor").requiredOption("--version <v>","Version").requiredOption("--license-type <t>","License type").option("--id <id>","Existing software asset ID (update)").option("--seats-purchased <n>","Seats purchased",d).option("--seats-used <n>","Seats used",d).option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,vendor:t.vendor,version:t.version,licenseType:t.licenseType};t.id&&(e.id=t.id),t.seatsPurchased!==void 0&&(e.seatsPurchased=t.seatsPurchased),t.seatsUsed!==void 0&&(e.seatsUsed=t.seatsUsed);let n=await o(R,{input:e});m(`Software asset saved: ${n.upsertSoftwareAsset.name}`),a(t,n.upsertSoftwareAsset);}catch(e){s(e);}});}function Ot(r){let i=r.command("digital-twins").description("Assethandler digital twins");i.command("list").description("List digital twins").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(D,{pagination:u(t.limit,t.cursor)});a(t,e.digitalTwins,{headers:["ID","Asset","Fidelity","Model Ref"],rows:e.digitalTwins.map(n=>[c(n.id,12),c(n.assetId,12),n.fidelityLevel,n.modelRef])});}catch(e){s(e);}}),i.command("create").description("Create a digital twin for an asset").requiredOption("--asset <id>","Asset ID").requiredOption("--fidelity-level <l>","Fidelity level").requiredOption("--model-ref <ref>","Model reference").option("--geometry-ref <ref>","Geometry reference").option("--properties <json>","Properties JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetId:t.asset,fidelityLevel:t.fidelityLevel,modelRef:t.modelRef};t.geometryRef&&(e.geometryRef=t.geometryRef),t.properties&&(e.properties=l("properties",t.properties));let n=await o(P,{input:e});m(`Digital twin created for asset ${n.createDigitalTwin.assetId}`),a(t,n.createDigitalTwin);}catch(e){s(e);}});}function xt(r){let i=r.command("config-items").description("Assethandler configuration items (CMDB)");i.command("list").description("List configuration items").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(N,{pagination:u(t.limit,t.cursor)});a(t,e.configurationItems,{headers:["ID","CI #","Name","Type","Status","Environment"],rows:e.configurationItems.map(n=>[c(n.id,12),n.ciNumber,n.name,n.ciType,n.status,n.environment??"-"])});}catch(e){s(e);}}),i.command("upsert").description("Create or update a configuration item").requiredOption("--ci-number <s>","CI number").requiredOption("--name <name>","Name").requiredOption("--ci-type <t>","CI type").requiredOption("--status <s>","Status").option("--id <id>","Existing CI ID (update)").option("--environment <e>","Environment").option("--owner <o>","Owner").option("--attributes <json>","Attributes JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={ciNumber:t.ciNumber,name:t.name,ciType:t.ciType,status:t.status};t.id&&(e.id=t.id),t.environment&&(e.environment=t.environment),t.owner&&(e.owner=t.owner),t.attributes&&(e.attributes=l("attributes",t.attributes));let n=await o(L,{input:e});m(`Configuration item saved: ${n.upsertConfigurationItem.ciNumber}`),a(t,n.upsertConfigurationItem);}catch(e){s(e);}});}function Rt(r){let i=r.command("iot-devices").description("Assethandler IoT devices");i.command("list").description("List IoT devices").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(q,{pagination:u(t.limit,t.cursor)});a(t,e.iotDevices,{headers:["ID","Device","Name","Type","Protocol","Status"],rows:e.iotDevices.map(n=>[c(n.id,12),c(n.deviceId,16),n.name,n.type,n.protocol,n.status])});}catch(e){s(e);}}),i.command("register").description("Register an IoT device").requiredOption("--device-id <s>","Device ID").requiredOption("--name <name>","Name").requiredOption("--type <t>","Type").requiredOption("--protocol <p>","Protocol").option("--status <s>","Status").option("--asset <id>","Linked asset ID").option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={deviceId:t.deviceId,name:t.name,type:t.type,protocol:t.protocol};t.status&&(e.status=t.status),t.asset&&(e.assetId=t.asset),t.metadata&&(e.metadata=l("metadata",t.metadata));let n=await o(_,{input:e});m(`IoT device registered: ${n.registerIoTDevice.deviceId}`),a(t,n.registerIoTDevice);}catch(e){s(e);}});}function ut(r){Dt(r),Pt(r),Nt(r),Lt(r),qt(r),_t(r);}function Dt(r){let i=r.command("incidents").description("Assethandler ITSM incidents");i.command("list").description("List incidents").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o($,{pagination:u(t.limit,t.cursor)});a(t,e.incidents,{headers:["ID","Title","Category","Priority","Status","SLA"],rows:e.incidents.map(n=>[c(n.id,12),n.title,n.category,n.priority,n.status,n.slaBreached?"breached":"ok"])});}catch(e){s(e);}}),i.command("create").description("Create an incident").requiredOption("--title <t>","Title").requiredOption("--description <s>","Description").requiredOption("--category <c>","Category").option("--priority <p>","LOW|MEDIUM|HIGH|CRITICAL").option("--asset <id>","Related asset ID").option("--assigned-to <s>","Assignee").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title,description:t.description,category:t.category};t.priority&&(e.priority=t.priority.toUpperCase()),t.asset&&(e.assetId=t.asset),t.assignedTo&&(e.assignedTo=t.assignedTo);let n=await o(H,{input:e});m(`Incident created: ${n.createIncident.title}`),a(t,n.createIncident);}catch(e){s(e);}});}function Pt(r){r.command("problems").description("Assethandler ITSM problems").command("list").description("List problems").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(M,{pagination:u(t.limit,t.cursor)});a(t,e.problems,{headers:["ID","Title","Category","Priority","Status"],rows:e.problems.map(n=>[c(n.id,12),n.title,n.category,n.priority,n.status])});}catch(e){s(e);}});}function Nt(r){r.command("change-requests").description("Assethandler change requests").command("list").description("List change requests").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(W,{pagination:u(t.limit,t.cursor)});a(t,e.changeRequests,{headers:["ID","Title","Type","Risk","Status","Requested By"],rows:e.changeRequests.map(n=>[c(n.id,12),n.title,n.type,n.risk,n.status,c(n.requestedBy,16)])});}catch(e){s(e);}});}function Lt(r){let i=r.command("work-orders").description("Assethandler work orders");i.command("list").description("List work orders").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(U,{pagination:u(t.limit,t.cursor)});a(t,e.workOrders,{headers:["ID","Title","Type","Priority","Status","Asset"],rows:e.workOrders.map(n=>[c(n.id,12),n.title,n.type,n.priority,n.status,n.assetId?c(n.assetId,12):"-"])});}catch(e){s(e);}}),i.command("create").description("Create a work order").requiredOption("--title <t>","Title").requiredOption("--type <t>","PREVENTIVE|CORRECTIVE|PREDICTIVE|EMERGENCY").option("--description <s>","Description").option("--priority <p>","LOW|MEDIUM|HIGH|CRITICAL").option("--status <s>","DRAFT|SCHEDULED|APPROVED|IN_PROGRESS|COMPLETED|CANCELLED").option("--asset <id>","Related asset ID").option("--assigned-to <s>","Assignee").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title,type:t.type.toUpperCase()};t.description&&(e.description=t.description),t.priority&&(e.priority=t.priority.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.asset&&(e.assetId=t.asset),t.assignedTo&&(e.assignedTo=t.assignedTo);let n=await o(G,{input:e});m(`Work order created: ${n.createWorkOrder.title}`),a(t,n.createWorkOrder);}catch(e){s(e);}});}function qt(r){r.command("maintenance").description("Assethandler maintenance records").command("list").description("List maintenance records").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(F,{pagination:u(t.limit,t.cursor)});a(t,e.maintenanceRecords,{headers:["ID","Asset","Title","Type","Priority","Status"],rows:e.maintenanceRecords.map(n=>[c(n.id,12),c(n.assetId,12),n.title,n.type,n.priority,n.status])});}catch(e){s(e);}});}function _t(r){let i=r.command("knowledge-articles").description("Assethandler knowledge base articles");i.command("list").description("List knowledge articles").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(V,{pagination:u(t.limit,t.cursor)});a(t,e.knowledgeArticles,{headers:["ID","Title","Slug","Status","Views"],rows:e.knowledgeArticles.map(n=>[c(n.id,12),n.title,n.slug,n.status,String(n.views)])});}catch(e){s(e);}}),i.command("create").description("Create a knowledge article").requiredOption("--title <t>","Title").requiredOption("--slug <s>","URL slug").requiredOption("--content <s>","Article content").option("--summary <s>","Summary").option("--status <s>","DRAFT|PUBLISHED|ARCHIVED").option("--tags <csv>","Comma-separated tags").option("--related-asset <id>","Related asset ID").option("--related-incident <id>","Related incident ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title,slug:t.slug,content:t.content};t.summary&&(e.summary=t.summary),t.status&&(e.status=t.status.toUpperCase()),t.tags&&(e.tags=A(t.tags)),t.relatedAsset&&(e.relatedAssetId=t.relatedAsset),t.relatedIncident&&(e.relatedIncidentId=t.relatedIncident);let n=await o(B,{input:e});m(`Knowledge article created: ${n.createKnowledgeArticle.slug}`),a(t,n.createKnowledgeArticle);}catch(e){s(e);}});}function pt(r){$t(r),Ht(r),Mt(r);}function $t(r){let i=r.command("transactions").description("Assethandler asset finance transactions");i.command("list").description("List transactions").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(j,{pagination:u(t.limit,t.cursor)});a(t,e.transactions,{headers:["ID","Type","Category","Amount","Currency","Status"],rows:e.transactions.map(n=>[c(n.id,12),n.type,n.category,String(n.amount),n.currency,n.status])});}catch(e){s(e);}}),i.command("create").description("Create a transaction").requiredOption("--type <t>","PURCHASE|LEASE|MAINTENANCE|DISPOSAL|TRANSFER").requiredOption("--category <c>","Category").requiredOption("--description <s>","Description").requiredOption("--amount <n>","Amount",C).option("--currency <c>","Currency code").option("--vendor <v>","Vendor").option("--department <d>","Department").option("--status <s>","PENDING|APPROVED|COMPLETED|REJECTED").option("-f, --format <format>","Output format").action(async t=>{try{let e={type:t.type.toUpperCase(),category:t.category,description:t.description,amount:t.amount};t.currency&&(e.currency=t.currency),t.vendor&&(e.vendor=t.vendor),t.department&&(e.department=t.department),t.status&&(e.status=t.status.toUpperCase());let n=await o(J,{input:e});m(`Transaction created: ${n.createTransaction.id}`),a(t,n.createTransaction);}catch(e){s(e);}});}function Ht(r){r.command("invoices").description("Assethandler invoices").command("list").description("List invoices").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(K,{pagination:u(t.limit,t.cursor)});a(t,e.invoices,{headers:["ID","Number","Vendor","Amount","Status","Due"],rows:e.invoices.map(n=>[c(n.id,12),n.number,n.vendor,`${n.amount} ${n.currency}`,n.status,h(n.dueDate)])});}catch(e){s(e);}});}function Mt(r){r.command("budgets").description("Assethandler asset budgets").command("list").description("List budgets").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(z,{pagination:u(t.limit,t.cursor)});a(t,e.budgets,{headers:["ID","Name","Department","Allocated","Spent","Remaining","Status"],rows:e.budgets.map(n=>[c(n.id,12),n.name,n.department,String(n.allocated),String(n.spent),String(n.remaining),n.status])});}catch(e){s(e);}});}function mt(r){Wt(r),Ut(r),Gt(r),Ft(r);}function Wt(r){r.command("compliance").description("Assethandler compliance frameworks").command("list").description("List compliance frameworks").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(Y,{pagination:u(t.limit,t.cursor)});a(t,e.complianceFrameworks,{headers:["ID","Name","Version","Status","Score","Passed","Failed"],rows:e.complianceFrameworks.map(n=>[c(n.id,12),n.name,n.version,n.status,String(n.score),String(n.passedControls),String(n.failedControls)])});}catch(e){s(e);}});}function Ut(r){r.command("security-policies").description("Assethandler asset security policies").command("list").description("List security policies").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(Q,{pagination:u(t.limit,t.cursor)});a(t,e.assetSecurityPolicies,{headers:["ID","Name","Version","Category","Status","Owner"],rows:e.assetSecurityPolicies.map(n=>[c(n.id,12),n.name,n.version,n.category,n.status,c(n.owner,16)])});}catch(e){s(e);}});}function Gt(r){r.command("security-events").description("Assethandler security events").command("list").description("List security events").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(X,{pagination:u(t.limit,t.cursor)});a(t,e.securityEvents,{headers:["ID","Title","Type","Severity","Source","Resolved"],rows:e.securityEvents.map(n=>[c(n.id,12),n.title,n.eventType,n.severity,n.source,n.resolved?"yes":"no"])});}catch(e){s(e);}});}function Ft(r){let i=r.command("esg-metrics").description("Assethandler ESG metrics");i.command("list").description("List ESG metrics").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(Z,{pagination:u(t.limit,t.cursor)});a(t,e.esgMetrics,{headers:["ID","Category","Metric","Value","Unit","Target","Trend"],rows:e.esgMetrics.map(n=>[c(n.id,12),n.category,n.metricName,String(n.value),n.unit,n.target!=null?String(n.target):"-",n.trend??"-"])});}catch(e){s(e);}}),i.command("upsert").description("Create or update an ESG metric").requiredOption("--category <c>","Category").requiredOption("--metric-key <k>","Metric key").requiredOption("--metric-name <n>","Metric name").requiredOption("--value <n>","Value",C).requiredOption("--unit <u>","Unit").requiredOption("--period-start <iso>","Period start (ISO date)").requiredOption("--period-end <iso>","Period end (ISO date)").option("--target <n>","Target value",C).option("--trend <t>","Trend").option("-f, --format <format>","Output format").action(async t=>{try{let e={category:t.category,metricKey:t.metricKey,metricName:t.metricName,value:t.value,unit:t.unit,periodStart:t.periodStart,periodEnd:t.periodEnd};t.target!==void 0&&(e.target=t.target),t.trend&&(e.trend=t.trend);let n=await o(tt,{input:e});m(`ESG metric saved: ${n.upsertEsgMetric.metricKey}`),a(t,n.upsertEsgMetric);}catch(e){s(e);}});}function gt(r){Vt(r),Bt(r),jt(r);}function Vt(r){let i=r.command("predictions").description("Assethandler AI predictions");i.command("list").description("List AI predictions").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(et,{pagination:u(t.limit,t.cursor)});a(t,e.aiPredictions,{headers:["ID","Asset","Type","Model","Score","Confidence","Status"],rows:e.aiPredictions.map(n=>[c(n.id,12),c(n.assetId,12),n.predictionType,n.modelVersion,String(n.score),String(n.confidence),n.status])});}catch(e){s(e);}}),i.command("request").description("Request an AI prediction for an asset").requiredOption("--asset <id>","Asset ID").requiredOption("--prediction-type <t>","Prediction type").option("--feature-vector <json>","Feature vector JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetId:t.asset,predictionType:t.predictionType};t.featureVector&&(e.featureVector=l("feature-vector",t.featureVector));let n=await o(nt,{input:e});m(`Prediction requested: ${n.requestAIPrediction.id}`),a(t,n.requestAIPrediction);}catch(e){s(e);}});}function Bt(r){let i=r.command("provenance").description("Assethandler asset provenance records");i.command("list").description("List provenance records").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(rt,{pagination:u(t.limit,t.cursor)});a(t,e.provenanceRecords,{headers:["ID","Asset","Chain","Hash","Attested By"],rows:e.provenanceRecords.map(n=>[c(n.id,12),c(n.assetId,12),n.chainNetwork,c(n.hash,16),c(n.attestedBy,16)])});}catch(e){s(e);}}),i.command("record").description("Record an asset provenance attestation").requiredOption("--asset <id>","Asset ID").requiredOption("--chain-network <n>","Chain network").requiredOption("--hash <h>","Attestation hash").option("--tx-hash <h>","Transaction hash").option("--block-number <n>","Block number",d).option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetId:t.asset,chainNetwork:t.chainNetwork,hash:t.hash};t.txHash&&(e.txHash=t.txHash),t.blockNumber!==void 0&&(e.blockNumber=t.blockNumber),t.metadata&&(e.metadata=l("metadata",t.metadata));let n=await o(it,{input:e});m(`Provenance recorded: ${n.recordProvenance.id}`),a(t,n.recordProvenance);}catch(e){s(e);}});}function jt(r){let i=r.command("discovery-jobs").description("Assethandler asset discovery jobs");i.command("list").description("List discovery jobs").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(ot,{pagination:u(t.limit,t.cursor)});a(t,e.discoveryJobs,{headers:["ID","Name","Source","Status","Discovered"],rows:e.discoveryJobs.map(n=>[c(n.id,12),n.name,n.source,n.status,String(n.assetsDiscovered)])});}catch(e){s(e);}}),i.command("start").description("Start an asset discovery job").requiredOption("--name <name>","Job name").requiredOption("--source <s>","Discovery source").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,source:t.source},n=await o(st,{input:e});m(`Discovery job started: ${n.startDiscoveryJob.name}`),a(t,n.startDiscoveryJob);}catch(e){s(e);}});}function lt(r){r.command("dashboard").description("Assethandler dashboard overview").command("overview").description("Asset / transaction / incident / work-order counts").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(at);a(t,e.dashboardOverview);}catch(e){s(e);}});}var Jt={id:"assethandler",version:"1.0.0",displayName:"Assethandler",dependsOn:["auth","workspaces"],register(r,i){E(i);let t=r.command("assethandler").description("Assethandler enterprise asset management platform");ct(t),dt(t),ut(t),pt(t),mt(t),gt(t),lt(t);}},Hn=Jt;module.exports=Hn;
220
+ `;function l(r,o){try{return JSON.parse(o)}catch{throw new g(`--${r} must be valid JSON`)}}function d(r){let o=Number.parseInt(r,10);if(Number.isNaN(o))throw new g(`Expected an integer but got "${r}"`);return o}function C(r){let o=Number.parseFloat(r);if(Number.isNaN(o))throw new g(`Expected a number but got "${r}"`);return o}function A(r){return r.split(",").map(o=>o.trim()).filter(o=>o.length>0)}function u(r,o){let t={};return r!==void 0&&(t.limit=r),o&&(t.cursor=o),Object.keys(t).length?t:void 0}function rt(r){let o=r.command("assets").description("Assethandler assets");o.command("list").description("List assets").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await i(x,{pagination:u(t.limit,t.cursor)});a(t,e.assets,{headers:["ID","Asset #","Name","Category","Status","Condition"],rows:e.assets.map(n=>[c(n.id,12),n.assetNumber,n.name,n.category,n.status,n.condition])});}catch(e){s(e);}}),o.command("get").description("Get an asset by id").argument("<id>","Asset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await i(b,{id:t});if(!n.asset)throw new g(`Asset ${t} not found`);a(e,n.asset);}catch(n){s(n);}}),o.command("create").description("Create an asset").requiredOption("--asset-number <s>","Asset number").requiredOption("--name <name>","Asset name").requiredOption("--category <c>","Category").option("--description <s>","Description").option("--status <s>","ACTIVE|INACTIVE|MAINTENANCE|RETIRED|DISPOSED").option("--condition <c>","EXCELLENT|GOOD|FAIR|POOR|DAMAGED").option("--serial-number <s>","Serial number").option("--location-name <s>","Location name").option("--assigned-to <s>","Assignee").option("--tags <csv>","Comma-separated tags").option("--custom-attributes <json>","Custom attributes JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetNumber:t.assetNumber,name:t.name,category:t.category};t.description&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),t.condition&&(e.condition=t.condition.toUpperCase()),t.serialNumber&&(e.serialNumber=t.serialNumber),t.locationName&&(e.locationName=t.locationName),t.assignedTo&&(e.assignedTo=t.assignedTo),t.tags&&(e.tags=A(t.tags)),t.customAttributes&&(e.customAttributes=l("custom-attributes",t.customAttributes));let n=await i(O,{input:e});m(`Asset created: ${n.createAsset.assetNumber}`),a(t,n.createAsset);}catch(e){s(e);}});}function ot(r){Tt(r),kt(r),vt(r),Et(r);}function Tt(r){let o=r.command("software-assets").description("Assethandler software assets & licenses");o.command("list").description("List software assets").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await i(S,{pagination:u(t.limit,t.cursor)});a(t,e.softwareAssets,{headers:["ID","Name","Vendor","Version","License","Seats","Compliance %"],rows:e.softwareAssets.map(n=>[c(n.id,12),n.name,n.vendor,n.version,n.licenseType,`${n.seatsUsed??0}/${n.seatsPurchased??0}`,String(n.compliancePercent)])});}catch(e){s(e);}}),o.command("upsert").description("Create or update a software asset").requiredOption("--name <name>","Name").requiredOption("--vendor <v>","Vendor").requiredOption("--version <v>","Version").requiredOption("--license-type <t>","License type").option("--id <id>","Existing software asset ID (update)").option("--seats-purchased <n>","Seats purchased",d).option("--seats-used <n>","Seats used",d).option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,vendor:t.vendor,version:t.version,licenseType:t.licenseType};t.id&&(e.id=t.id),t.seatsPurchased!==void 0&&(e.seatsPurchased=t.seatsPurchased),t.seatsUsed!==void 0&&(e.seatsUsed=t.seatsUsed);let n=await i(R,{input:e});m(`Software asset saved: ${n.upsertSoftwareAsset.name}`),a(t,n.upsertSoftwareAsset);}catch(e){s(e);}});}function kt(r){let o=r.command("digital-twins").description("Assethandler digital twins");o.command("list").description("List digital twins").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await i(D,{pagination:u(t.limit,t.cursor)});a(t,e.digitalTwins,{headers:["ID","Asset","Fidelity","Model Ref"],rows:e.digitalTwins.map(n=>[c(n.id,12),c(n.assetId,12),n.fidelityLevel,n.modelRef])});}catch(e){s(e);}}),o.command("create").description("Create a digital twin for an asset").requiredOption("--asset <id>","Asset ID").requiredOption("--fidelity-level <l>","Fidelity level").requiredOption("--model-ref <ref>","Model reference").option("--geometry-ref <ref>","Geometry reference").option("--properties <json>","Properties JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetId:t.asset,fidelityLevel:t.fidelityLevel,modelRef:t.modelRef};t.geometryRef&&(e.geometryRef=t.geometryRef),t.properties&&(e.properties=l("properties",t.properties));let n=await i(N,{input:e});m(`Digital twin created for asset ${n.createDigitalTwin.assetId}`),a(t,n.createDigitalTwin);}catch(e){s(e);}});}function vt(r){let o=r.command("config-items").description("Assethandler configuration items (CMDB)");o.command("list").description("List configuration items").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await i(L,{pagination:u(t.limit,t.cursor)});a(t,e.configurationItems,{headers:["ID","CI #","Name","Type","Status","Environment"],rows:e.configurationItems.map(n=>[c(n.id,12),n.ciNumber,n.name,n.ciType,n.status,n.environment??"-"])});}catch(e){s(e);}}),o.command("upsert").description("Create or update a configuration item").requiredOption("--ci-number <s>","CI number").requiredOption("--name <name>","Name").requiredOption("--ci-type <t>","CI type").requiredOption("--status <s>","Status").option("--id <id>","Existing CI ID (update)").option("--environment <e>","Environment").option("--owner <o>","Owner").option("--attributes <json>","Attributes JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={ciNumber:t.ciNumber,name:t.name,ciType:t.ciType,status:t.status};t.id&&(e.id=t.id),t.environment&&(e.environment=t.environment),t.owner&&(e.owner=t.owner),t.attributes&&(e.attributes=l("attributes",t.attributes));let n=await i(P,{input:e});m(`Configuration item saved: ${n.upsertConfigurationItem.ciNumber}`),a(t,n.upsertConfigurationItem);}catch(e){s(e);}});}function Et(r){let o=r.command("iot-devices").description("Assethandler IoT devices");o.command("list").description("List IoT devices").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await i(q,{pagination:u(t.limit,t.cursor)});a(t,e.iotDevices,{headers:["ID","Device","Name","Type","Protocol","Status"],rows:e.iotDevices.map(n=>[c(n.id,12),c(n.deviceId,16),n.name,n.type,n.protocol,n.status])});}catch(e){s(e);}}),o.command("register").description("Register an IoT device").requiredOption("--device-id <s>","Device ID").requiredOption("--name <name>","Name").requiredOption("--type <t>","Type").requiredOption("--protocol <p>","Protocol").option("--status <s>","Status").option("--asset <id>","Linked asset ID").option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={deviceId:t.deviceId,name:t.name,type:t.type,protocol:t.protocol};t.status&&(e.status=t.status),t.asset&&(e.assetId=t.asset),t.metadata&&(e.metadata=l("metadata",t.metadata));let n=await i(_,{input:e});m(`IoT device registered: ${n.registerIoTDevice.deviceId}`),a(t,n.registerIoTDevice);}catch(e){s(e);}});}function it(r){bt(r),xt(r),Ot(r),St(r),Rt(r),Dt(r);}function bt(r){let o=r.command("incidents").description("Assethandler ITSM incidents");o.command("list").description("List incidents").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await i($,{pagination:u(t.limit,t.cursor)});a(t,e.incidents,{headers:["ID","Title","Category","Priority","Status","SLA"],rows:e.incidents.map(n=>[c(n.id,12),n.title,n.category,n.priority,n.status,n.slaBreached?"breached":"ok"])});}catch(e){s(e);}}),o.command("create").description("Create an incident").requiredOption("--title <t>","Title").requiredOption("--description <s>","Description").requiredOption("--category <c>","Category").option("--priority <p>","LOW|MEDIUM|HIGH|CRITICAL").option("--asset <id>","Related asset ID").option("--assigned-to <s>","Assignee").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title,description:t.description,category:t.category};t.priority&&(e.priority=t.priority.toUpperCase()),t.asset&&(e.assetId=t.asset),t.assignedTo&&(e.assignedTo=t.assignedTo);let n=await i(H,{input:e});m(`Incident created: ${n.createIncident.title}`),a(t,n.createIncident);}catch(e){s(e);}});}function xt(r){r.command("problems").description("Assethandler ITSM problems").command("list").description("List problems").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await i(M,{pagination:u(t.limit,t.cursor)});a(t,e.problems,{headers:["ID","Title","Category","Priority","Status"],rows:e.problems.map(n=>[c(n.id,12),n.title,n.category,n.priority,n.status])});}catch(e){s(e);}});}function Ot(r){r.command("change-requests").description("Assethandler change requests").command("list").description("List change requests").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await i(W,{pagination:u(t.limit,t.cursor)});a(t,e.changeRequests,{headers:["ID","Title","Type","Risk","Status","Requested By"],rows:e.changeRequests.map(n=>[c(n.id,12),n.title,n.type,n.risk,n.status,c(n.requestedBy,16)])});}catch(e){s(e);}});}function St(r){let o=r.command("work-orders").description("Assethandler work orders");o.command("list").description("List work orders").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await i(G,{pagination:u(t.limit,t.cursor)});a(t,e.workOrders,{headers:["ID","Title","Type","Priority","Status","Asset"],rows:e.workOrders.map(n=>[c(n.id,12),n.title,n.type,n.priority,n.status,n.assetId?c(n.assetId,12):"-"])});}catch(e){s(e);}}),o.command("create").description("Create a work order").requiredOption("--title <t>","Title").requiredOption("--type <t>","PREVENTIVE|CORRECTIVE|PREDICTIVE|EMERGENCY").option("--description <s>","Description").option("--priority <p>","LOW|MEDIUM|HIGH|CRITICAL").option("--status <s>","DRAFT|SCHEDULED|APPROVED|IN_PROGRESS|COMPLETED|CANCELLED").option("--asset <id>","Related asset ID").option("--assigned-to <s>","Assignee").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title,type:t.type.toUpperCase()};t.description&&(e.description=t.description),t.priority&&(e.priority=t.priority.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.asset&&(e.assetId=t.asset),t.assignedTo&&(e.assignedTo=t.assignedTo);let n=await i(U,{input:e});m(`Work order created: ${n.createWorkOrder.title}`),a(t,n.createWorkOrder);}catch(e){s(e);}});}function Rt(r){r.command("maintenance").description("Assethandler maintenance records").command("list").description("List maintenance records").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await i(F,{pagination:u(t.limit,t.cursor)});a(t,e.maintenanceRecords,{headers:["ID","Asset","Title","Type","Priority","Status"],rows:e.maintenanceRecords.map(n=>[c(n.id,12),c(n.assetId,12),n.title,n.type,n.priority,n.status])});}catch(e){s(e);}});}function Dt(r){let o=r.command("knowledge-articles").description("Assethandler knowledge base articles");o.command("list").description("List knowledge articles").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await i(V,{pagination:u(t.limit,t.cursor)});a(t,e.knowledgeArticles,{headers:["ID","Title","Slug","Status","Views"],rows:e.knowledgeArticles.map(n=>[c(n.id,12),n.title,n.slug,n.status,String(n.views)])});}catch(e){s(e);}}),o.command("create").description("Create a knowledge article").requiredOption("--title <t>","Title").requiredOption("--slug <s>","URL slug").requiredOption("--content <s>","Article content").option("--summary <s>","Summary").option("--status <s>","DRAFT|PUBLISHED|ARCHIVED").option("--tags <csv>","Comma-separated tags").option("--related-asset <id>","Related asset ID").option("--related-incident <id>","Related incident ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title,slug:t.slug,content:t.content};t.summary&&(e.summary=t.summary),t.status&&(e.status=t.status.toUpperCase()),t.tags&&(e.tags=A(t.tags)),t.relatedAsset&&(e.relatedAssetId=t.relatedAsset),t.relatedIncident&&(e.relatedIncidentId=t.relatedIncident);let n=await i(B,{input:e});m(`Knowledge article created: ${n.createKnowledgeArticle.slug}`),a(t,n.createKnowledgeArticle);}catch(e){s(e);}});}function st(r){Nt(r),Lt(r),Pt(r);}function Nt(r){let o=r.command("transactions").description("Assethandler asset finance transactions");o.command("list").description("List transactions").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await i(j,{pagination:u(t.limit,t.cursor)});a(t,e.transactions,{headers:["ID","Type","Category","Amount","Currency","Status"],rows:e.transactions.map(n=>[c(n.id,12),n.type,n.category,String(n.amount),n.currency,n.status])});}catch(e){s(e);}}),o.command("create").description("Create a transaction").requiredOption("--type <t>","PURCHASE|LEASE|MAINTENANCE|DISPOSAL|TRANSFER").requiredOption("--category <c>","Category").requiredOption("--description <s>","Description").requiredOption("--amount <n>","Amount",C).option("--currency <c>","Currency code").option("--vendor <v>","Vendor").option("--department <d>","Department").option("--status <s>","PENDING|APPROVED|COMPLETED|REJECTED").option("-f, --format <format>","Output format").action(async t=>{try{let e={type:t.type.toUpperCase(),category:t.category,description:t.description,amount:t.amount};t.currency&&(e.currency=t.currency),t.vendor&&(e.vendor=t.vendor),t.department&&(e.department=t.department),t.status&&(e.status=t.status.toUpperCase());let n=await i(J,{input:e});m(`Transaction created: ${n.createTransaction.id}`),a(t,n.createTransaction);}catch(e){s(e);}});}function Lt(r){r.command("invoices").description("Assethandler invoices").command("list").description("List invoices").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await i(K,{pagination:u(t.limit,t.cursor)});a(t,e.invoices,{headers:["ID","Number","Vendor","Amount","Status","Due"],rows:e.invoices.map(n=>[c(n.id,12),n.number,n.vendor,`${n.amount} ${n.currency}`,n.status,T(n.dueDate)])});}catch(e){s(e);}});}function Pt(r){r.command("budgets").description("Assethandler asset budgets").command("list").description("List budgets").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await i(z,{pagination:u(t.limit,t.cursor)});a(t,e.budgets,{headers:["ID","Name","Department","Allocated","Spent","Remaining","Status"],rows:e.budgets.map(n=>[c(n.id,12),n.name,n.department,String(n.allocated),String(n.spent),String(n.remaining),n.status])});}catch(e){s(e);}});}function at(r){qt(r);}function qt(r){let o=r.command("esg-metrics").description("Assethandler ESG metrics");o.command("list").description("List ESG metrics").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await i(Y,{pagination:u(t.limit,t.cursor)});a(t,e.esgMetrics,{headers:["ID","Category","Metric","Value","Unit","Target","Trend"],rows:e.esgMetrics.map(n=>[c(n.id,12),n.category,n.metricName,String(n.value),n.unit,n.target!=null?String(n.target):"-",n.trend??"-"])});}catch(e){s(e);}}),o.command("upsert").description("Create or update an ESG metric").requiredOption("--category <c>","Category").requiredOption("--metric-key <k>","Metric key").requiredOption("--metric-name <n>","Metric name").requiredOption("--value <n>","Value",C).requiredOption("--unit <u>","Unit").requiredOption("--period-start <iso>","Period start (ISO date)").requiredOption("--period-end <iso>","Period end (ISO date)").option("--target <n>","Target value",C).option("--trend <t>","Trend").option("-f, --format <format>","Output format").action(async t=>{try{let e={category:t.category,metricKey:t.metricKey,metricName:t.metricName,value:t.value,unit:t.unit,periodStart:t.periodStart,periodEnd:t.periodEnd};t.target!==void 0&&(e.target=t.target),t.trend&&(e.trend=t.trend);let n=await i(Q,{input:e});m(`ESG metric saved: ${n.upsertEsgMetric.metricKey}`),a(t,n.upsertEsgMetric);}catch(e){s(e);}});}function ct(r){_t(r),$t(r);}function _t(r){let o=r.command("provenance").description("Assethandler asset provenance records");o.command("list").description("List provenance records").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await i(X,{pagination:u(t.limit,t.cursor)});a(t,e.provenanceRecords,{headers:["ID","Asset","Chain","Hash","Attested By"],rows:e.provenanceRecords.map(n=>[c(n.id,12),c(n.assetId,12),n.chainNetwork,c(n.hash,16),c(n.attestedBy,16)])});}catch(e){s(e);}}),o.command("record").description("Record an asset provenance attestation").requiredOption("--asset <id>","Asset ID").requiredOption("--chain-network <n>","Chain network").requiredOption("--hash <h>","Attestation hash").option("--tx-hash <h>","Transaction hash").option("--block-number <n>","Block number",d).option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetId:t.asset,chainNetwork:t.chainNetwork,hash:t.hash};t.txHash&&(e.txHash=t.txHash),t.blockNumber!==void 0&&(e.blockNumber=t.blockNumber),t.metadata&&(e.metadata=l("metadata",t.metadata));let n=await i(Z,{input:e});m(`Provenance recorded: ${n.recordProvenance.id}`),a(t,n.recordProvenance);}catch(e){s(e);}});}function $t(r){let o=r.command("discovery-jobs").description("Assethandler asset discovery jobs");o.command("list").description("List discovery jobs").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await i(tt,{pagination:u(t.limit,t.cursor)});a(t,e.discoveryJobs,{headers:["ID","Name","Source","Status","Discovered"],rows:e.discoveryJobs.map(n=>[c(n.id,12),n.name,n.source,n.status,String(n.assetsDiscovered)])});}catch(e){s(e);}}),o.command("start").description("Start an asset discovery job").requiredOption("--name <name>","Job name").requiredOption("--source <s>","Discovery source").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,source:t.source},n=await i(et,{input:e});m(`Discovery job started: ${n.startDiscoveryJob.name}`),a(t,n.startDiscoveryJob);}catch(e){s(e);}});}function dt(r){r.command("dashboard").description("Assethandler dashboard overview").command("overview").description("Asset / transaction / incident / work-order counts").option("-f, --format <format>","Output format").action(async t=>{try{let e=await i(nt);a(t,e.dashboardOverview);}catch(e){s(e);}});}var Ht={id:"assethandler",version:"1.0.0",displayName:"Assethandler",dependsOn:["auth","workspaces"],register(r,o){E(o);let t=r.command("assethandler").description("Assethandler enterprise asset management platform");rt(t),ot(t),it(t),st(t),at(t),ct(t),dt(t);}},Sn=Ht;module.exports=Sn;