@burdenoff/cli-sdk 2026.1102.2 → 2026.1102.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/modules/adaptercloud/index.cjs +6 -3
  2. package/dist/modules/adaptercloud/index.js +6 -3
  3. package/dist/modules/assethandler/index.cjs +22 -57
  4. package/dist/modules/assethandler/index.js +27 -62
  5. package/dist/modules/atheletebridge/index.cjs +33 -19
  6. package/dist/modules/atheletebridge/index.js +32 -18
  7. package/dist/modules/buildmyiq/index.cjs +64 -67
  8. package/dist/modules/buildmyiq/index.js +60 -63
  9. package/dist/modules/comradecircle/index.cjs +23 -15
  10. package/dist/modules/comradecircle/index.js +19 -11
  11. package/dist/modules/coolandlovely/index.cjs +27 -14
  12. package/dist/modules/coolandlovely/index.js +29 -16
  13. package/dist/modules/crewfoundry/index.cjs +63 -116
  14. package/dist/modules/crewfoundry/index.js +62 -115
  15. package/dist/modules/ecoimpacthub/index.cjs +19 -9
  16. package/dist/modules/ecoimpacthub/index.js +19 -9
  17. package/dist/modules/eventfullymanaged/index.cjs +77 -77
  18. package/dist/modules/eventfullymanaged/index.js +78 -78
  19. package/dist/modules/govcitizenhub/index.cjs +7 -4
  20. package/dist/modules/govcitizenhub/index.js +7 -4
  21. package/dist/modules/headshotmarketing/index.cjs +92 -261
  22. package/dist/modules/headshotmarketing/index.js +94 -263
  23. package/dist/modules/hookmovies/index.cjs +17 -6
  24. package/dist/modules/hookmovies/index.js +20 -9
  25. package/dist/modules/housingvista/index.cjs +31 -24
  26. package/dist/modules/housingvista/index.js +26 -19
  27. package/dist/modules/intelwatchtower/index.cjs +24 -12
  28. package/dist/modules/intelwatchtower/index.js +24 -12
  29. package/dist/modules/kadaikodi/index.cjs +56 -90
  30. package/dist/modules/kadaikodi/index.js +60 -94
  31. package/dist/modules/labsofscience/index.cjs +8 -4
  32. package/dist/modules/labsofscience/index.js +8 -4
  33. package/dist/modules/manufacturedops/index.cjs +35 -22
  34. package/dist/modules/manufacturedops/index.js +34 -21
  35. package/dist/modules/movethewheels/index.cjs +103 -231
  36. package/dist/modules/movethewheels/index.js +103 -231
  37. package/dist/modules/planmagnet/index.cjs +21 -21
  38. package/dist/modules/planmagnet/index.js +32 -32
  39. package/dist/modules/proserviceworld/index.cjs +17 -12
  40. package/dist/modules/proserviceworld/index.js +17 -12
  41. package/dist/modules/subscriberbot/index.cjs +43 -19
  42. package/dist/modules/subscriberbot/index.js +46 -22
  43. package/dist/modules/technospam/index.cjs +17 -8
  44. package/dist/modules/technospam/index.js +17 -8
  45. package/dist/modules/theculturepost/index.cjs +27 -22
  46. package/dist/modules/theculturepost/index.js +31 -26
  47. package/dist/modules/theglobalfuel/index.cjs +65 -60
  48. package/dist/modules/theglobalfuel/index.js +65 -60
  49. package/dist/modules/timecampus/index.cjs +31 -85
  50. package/dist/modules/timecampus/index.js +32 -86
  51. package/package.json +1 -1
@@ -220,8 +220,11 @@ import {a,b,i,r,h as h$1,k as k$1,q as q$1,d as d$1}from'../../chunk-O6UCQ5IT.js
220
220
  `,X=`
221
221
  query LabListPipelines {
222
222
  labListPipelines {
223
- id workspaceId projectId name description engine version isActive
224
- definition tags createdAt updatedAt
223
+ items {
224
+ id workspaceId projectId name description engine version isActive definition tags
225
+ createdAt updatedAt
226
+ }
227
+ pageInfo { cursor hasMore }
225
228
  }
226
229
  }
227
230
  `,Q=`
@@ -313,7 +316,8 @@ import {a,b,i,r,h as h$1,k as k$1,q as q$1,d as d$1}from'../../chunk-O6UCQ5IT.js
313
316
  `,pt=`
314
317
  query LabListInstruments($status: LabInstrumentStatus) {
315
318
  labListInstruments(status: $status) {
316
- id name model location status requiresApproval custodianId tags createdAt
319
+ items { id name model location status requiresApproval custodianId tags createdAt }
320
+ pageInfo { cursor hasMore }
317
321
  }
318
322
  }
319
323
  `,dt=`
@@ -340,4 +344,4 @@ import {a,b,i,r,h as h$1,k as k$1,q as q$1,d as d$1}from'../../chunk-O6UCQ5IT.js
340
344
  query LabHealth {
341
345
  labHealth
342
346
  }
343
- `;function y(p,i){try{return JSON.parse(i)}catch{throw new o(`--${p} must be valid JSON`)}}function d(p){let i=Number.parseInt(p,10);if(Number.isNaN(i))throw new o(`Expected an integer but got "${p}"`);return i}function A(p){let i=Number.parseFloat(p);if(Number.isNaN(i))throw new o(`Expected a number but got "${p}"`);return i}function c(p){return p.split(",").map(i=>i.trim()).filter(i=>i.length>0)}function l(p,i){return {limit:p,offset:i}}function lt(p){let i$1=p.command("projects").description("Labsofscience research projects");i$1.command("list").description("List research projects").option("--status <s>","Filter by project status").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b(h,{status:t.status?t.status.toUpperCase():void 0,pagination:l(t.limit,t.offset)});i(t,e.labListProjects.items,{headers:["ID","Name","Code","Field","Status","Visibility"],rows:e.labListProjects.items.map(n=>[r(n.id,12),n.name,n.code??"-",n.field??"-",n.status,n.visibility])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a research project by id").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(P,{id:t});if(!n.labProject)throw new o(`Project ${t} not found`);i(e,n.labProject);}catch(n){h$1(n);}}),i$1.command("create").description("Create a research project").requiredOption("--name <name>","Project name").option("--code <code>","Project code").option("--description <s>","Description").option("--field <s>","Research field").option("--pi <id>","Principal investigator user ID").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--status <s>","PLANNING|ACTIVE|ON_HOLD|COMPLETED|ARCHIVED","PLANNING").option("--visibility <v>","PRIVATE|WORKSPACE|PUBLIC","WORKSPACE").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,status:(t.status??"PLANNING").toUpperCase(),visibility:(t.visibility??"WORKSPACE").toUpperCase()};t.code&&(e.code=t.code),t.description&&(e.description=t.description),t.field&&(e.field=t.field),t.pi&&(e.principalInvestigatorId=t.pi),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.tags&&(e.tags=c(t.tags));let n=await b(N,{input:e});k$1(`Project created: ${n.labCreateProject.name}`),i(t,n.labCreateProject);}catch(e){h$1(e);}}),i$1.command("update").description("Update a research project").argument("<id>","Project ID").option("--name <name>","Project name").option("--code <code>","Project code").option("--description <s>","Description").option("--field <s>","Research field").option("--pi <id>","Principal investigator user ID").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--status <s>","Project status").option("--visibility <v>","Visibility").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.code&&(n.code=e.code),e.description!==void 0&&(n.description=e.description),e.field&&(n.field=e.field),e.pi&&(n.principalInvestigatorId=e.pi),e.startDate&&(n.startDate=e.startDate),e.endDate&&(n.endDate=e.endDate),e.status&&(n.status=e.status.toUpperCase()),e.visibility&&(n.visibility=e.visibility.toUpperCase()),e.tags&&(n.tags=c(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let g=await b(v,{id:t,input:n});k$1("Project updated"),i(e,g.labUpdateProject);}catch(n){h$1(n);}}),i$1.command("archive").description("Archive a research project").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(O,{id:t});k$1(`Project archived: ${n.labArchiveProject}`),i(e,{archived:n.labArchiveProject});}catch(n){h$1(n);}});}function gt(p){let i$1=p.command("experiments").description("Labsofscience experiments");i$1.command("list").description("List experiments").option("--project <id>","Filter by project ID").option("--status <s>","Filter by experiment status").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b(T,{projectId:t.project,status:t.status?t.status.toUpperCase():void 0,pagination:l(t.limit,t.offset)});i(t,e.labListExperiments.items,{headers:["ID","Title","Status","Project","Lead"],rows:e.labListExperiments.items.map(n=>[r(n.id,12),n.title,n.status,r(n.projectId,12),n.leadResearcherId?r(n.leadResearcherId,12):"-"])});}catch(e){h$1(e);}}),i$1.command("get").description("Get an experiment by id").argument("<id>","Experiment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(D,{id:t});if(!n.labExperiment)throw new o(`Experiment ${t} not found`);i(e,n.labExperiment);}catch(n){h$1(n);}}),i$1.command("create").description("Create an experiment").requiredOption("--project <id>","Project ID").requiredOption("--title <t>","Experiment title").option("--description <s>","Description").option("--hypothesis <s>","Hypothesis").option("--lead <id>","Lead researcher user ID").option("--protocol <id>","Protocol ID").option("--variables <json>","Variables JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,title:t.title};t.description&&(e.description=t.description),t.hypothesis&&(e.hypothesis=t.hypothesis),t.lead&&(e.leadResearcherId=t.lead),t.protocol&&(e.protocolId=t.protocol),t.variables&&(e.variables=y("variables",t.variables)),t.tags&&(e.tags=c(t.tags));let n=await b(w,{input:e});k$1(`Experiment created: ${n.labCreateExperiment.title}`),i(t,n.labCreateExperiment);}catch(e){h$1(e);}}),i$1.command("update").description("Update an experiment").argument("<id>","Experiment ID").option("--title <t>","Experiment title").option("--description <s>","Description").option("--hypothesis <s>","Hypothesis").option("--lead <id>","Lead researcher user ID").option("--protocol <id>","Protocol ID").option("--variables <json>","Variables JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.title&&(n.title=e.title),e.description!==void 0&&(n.description=e.description),e.hypothesis!==void 0&&(n.hypothesis=e.hypothesis),e.lead&&(n.leadResearcherId=e.lead),e.protocol&&(n.protocolId=e.protocol),e.variables&&(n.variables=y("variables",e.variables)),e.tags&&(n.tags=c(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let g=await b(S,{id:t,input:n});k$1("Experiment updated"),i(e,g.labUpdateExperiment);}catch(n){h$1(n);}}),i$1.command("transition").description("Advance an experiment through its lifecycle").argument("<id>","Experiment ID").requiredOption("--status <s>","DESIGN|RUNNING|ANALYSIS|COMPLETE|ABANDONED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(_,{id:t,status:e.status.toUpperCase()});k$1(`Experiment moved to ${n.labTransitionExperiment.status}`),i(e,n.labTransitionExperiment);}catch(n){h$1(n);}});}function ft(p){let i$1=p.command("runs").description("Labsofscience reproducible experiment runs");i$1.command("list").description("List experiment runs").option("--experiment <id>","Filter by experiment ID").option("--status <s>","Filter by run status").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b(x,{experimentId:t.experiment,status:t.status?t.status.toUpperCase():void 0,pagination:l(t.limit,t.offset)});i(t,e.labListRuns.items,{headers:["ID","Run #","Status","Experiment","Started","Completed"],rows:e.labListRuns.items.map(n=>[r(n.id,12),String(n.runNumber),n.status,r(n.experimentId,12),q$1(n.startedAt),q$1(n.completedAt)])});}catch(e){h$1(e);}}),i$1.command("start").description("Start a new reproducible run of an experiment").requiredOption("--experiment <id>","Experiment ID").option("--notes <s>","Run notes").option("--parameters <json>","Parameters JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={experimentId:t.experiment};t.notes&&(e.notes=t.notes),t.parameters&&(e.parameters=y("parameters",t.parameters));let n=await b(k,{input:e});k$1(`Run #${n.labStartRun.runNumber} started`),i(t,n.labStartRun);}catch(e){h$1(e);}}),i$1.command("complete").description("Record observations and complete a run with a terminal status").argument("<id>","Run ID").requiredOption("--status <s>","SUCCEEDED|FAILED|CANCELLED").option("--notes <s>","Result notes").option("--observations <json>","Observations JSON").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={id:t,status:e.status.toUpperCase()},g={};e.notes&&(g.notes=e.notes),e.observations&&(g.observations=y("observations",e.observations)),Object.keys(g).length&&(n.input=g);let L=await b($,n);k$1(`Run #${L.labCompleteRun.runNumber} completed: ${L.labCompleteRun.status}`),i(e,L.labCompleteRun);}catch(n){h$1(n);}});}function It(p){let i$1=p.command("notebook").description("Labsofscience electronic lab notebook (ELN)");i$1.command("list").description("List notebook entries").option("--experiment <id>","Filter by experiment ID").option("--project <id>","Filter by project ID").option("--status <s>","Filter by entry status").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b(B,{experimentId:t.experiment,projectId:t.project,status:t.status?t.status.toUpperCase():void 0,pagination:l(t.limit,t.offset)});i(t,e.labListNotebookEntries.items,{headers:["ID","Title","Status","Project","Author"],rows:e.labListNotebookEntries.items.map(n=>[r(n.id,12),n.title,n.status,r(n.projectId,12),r(n.authorId,12)])});}catch(e){h$1(e);}}),i$1.command("create").description("Create a notebook entry").requiredOption("--project <id>","Project ID").requiredOption("--title <t>","Entry title").option("--body <s>","Entry body").option("--experiment <id>","Experiment ID").option("--run <id>","Run ID").option("--file-ids <csv>","Comma-separated wspace-files-svc File ids").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,title:t.title};t.body&&(e.body=t.body),t.experiment&&(e.experimentId=t.experiment),t.run&&(e.runId=t.run),t.fileIds&&(e.fileIds=c(t.fileIds)),t.tags&&(e.tags=c(t.tags));let n=await b(j,{input:e});k$1(`Notebook entry created: ${n.labCreateNotebookEntry.title}`),i(t,n.labCreateNotebookEntry);}catch(e){h$1(e);}}),i$1.command("sign").description("Sign a notebook entry (locks editable content)").argument("<id>","Entry ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(U,{id:t});k$1(`Notebook entry signed: ${n.labSignNotebookEntry.status}`),i(e,n.labSignNotebookEntry);}catch(n){h$1(n);}});}function bt(p){let i$1=p.command("protocols").description("Labsofscience versioned protocols");i$1.command("list").description("List protocols").option("--status <s>","DRAFT|PUBLISHED|DEPRECATED").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b(q,{status:t.status?t.status.toUpperCase():void 0,pagination:l(t.limit,t.offset)});i(t,e.labListProtocols.items,{headers:["ID","Name","Status","Version","Est. min"],rows:e.labListProtocols.items.map(n=>[r(n.id,12),n.name,n.status,String(n.version),n.estimatedMinutes!=null?String(n.estimatedMinutes):"-"])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a protocol by id").argument("<id>","Protocol ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(M,{id:t});if(!n.labProtocol)throw new o(`Protocol ${t} not found`);i(e,n.labProtocol);}catch(n){h$1(n);}}),i$1.command("create").description("Create a protocol").requiredOption("--name <name>","Protocol name").option("--summary <s>","Summary").option("--author <id>","Author user ID").option("--estimated-minutes <n>","Estimated minutes",d).option("--materials <csv>","Comma-separated materials").option("--safety-notes <s>","Safety notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.summary&&(e.summary=t.summary),t.author&&(e.authorId=t.author),t.estimatedMinutes!==void 0&&(e.estimatedMinutes=t.estimatedMinutes),t.materials&&(e.materials=c(t.materials)),t.safetyNotes&&(e.safetyNotes=t.safetyNotes),t.tags&&(e.tags=c(t.tags));let n=await b(V,{input:e});k$1(`Protocol created: ${n.labCreateProtocol.name}`),i(t,n.labCreateProtocol);}catch(e){h$1(e);}}),i$1.command("update").description("Update a protocol").argument("<id>","Protocol ID").option("--name <name>","Protocol name").option("--summary <s>","Summary").option("--estimated-minutes <n>","Estimated minutes",d).option("--materials <csv>","Comma-separated materials").option("--safety-notes <s>","Safety notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.summary!==void 0&&(n.summary=e.summary),e.estimatedMinutes!==void 0&&(n.estimatedMinutes=e.estimatedMinutes),e.materials&&(n.materials=c(e.materials)),e.safetyNotes!==void 0&&(n.safetyNotes=e.safetyNotes),e.tags&&(n.tags=c(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let g=await b(F,{id:t,input:n});k$1("Protocol updated"),i(e,g.labUpdateProtocol);}catch(n){h$1(n);}}),i$1.command("publish").description("Publish a draft protocol, freezing its version").argument("<id>","Protocol ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(H,{id:t});k$1(`Protocol published: v${n.labPublishProtocol.version}`),i(e,n.labPublishProtocol);}catch(n){h$1(n);}}),i$1.command("add-step").description("Append a step to a protocol").requiredOption("--protocol <id>","Protocol ID").requiredOption("--instruction <s>","Step instruction").option("--kind <k>","PREPARATION|INCUBATION|MEASUREMENT|ANALYSIS|CLEANUP|SAFETY","PREPARATION").option("--ordinal <n>","Step ordinal",d).option("--duration-minutes <n>","Duration (minutes)",d).option("--critical","Mark step as critical").option("-f, --format <format>","Output format").action(async t=>{try{let e={protocolId:t.protocol,instruction:t.instruction,kind:(t.kind??"PREPARATION").toUpperCase()};t.ordinal!==void 0&&(e.ordinal=t.ordinal),t.durationMinutes!==void 0&&(e.durationMinutes=t.durationMinutes),t.critical&&(e.isCritical=!0);let n=await b(J,{input:e});k$1(`Step added at ordinal ${n.labAddProtocolStep.ordinal}`),i(t,n.labAddProtocolStep);}catch(e){h$1(e);}});}function yt(p){let i$1=p.command("datasets").description("Labsofscience versioned datasets");i$1.command("list").description("List datasets").option("--kind <k>","RAW|PROCESSED|RESULT|REFERENCE").option("--status <s>","ACTIVE|LOCKED|ARCHIVED").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b(W,{kind:t.kind?t.kind.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:l(t.limit,t.offset)});i(t,e.labListDatasets.items,{headers:["ID","Name","Kind","Status","Latest v"],rows:e.labListDatasets.items.map(n=>[r(n.id,12),n.name,n.kind,n.status,String(n.latestVersion)])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a dataset by id").argument("<id>","Dataset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(G,{id:t});if(!n.labDataset)throw new o(`Dataset ${t} not found`);i(e,n.labDataset);}catch(n){h$1(n);}}),i$1.command("create").description("Create a dataset").requiredOption("--name <name>","Dataset name").option("--description <s>","Description").option("--kind <k>","RAW|PROCESSED|RESULT|REFERENCE","RAW").option("--experiment <id>","Experiment ID").option("--project <id>","Project ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,kind:(t.kind??"RAW").toUpperCase()};t.description&&(e.description=t.description),t.experiment&&(e.experimentId=t.experiment),t.project&&(e.projectId=t.project),t.tags&&(e.tags=c(t.tags));let n=await b(z,{input:e});k$1(`Dataset created: ${n.labCreateDataset.name}`),i(t,n.labCreateDataset);}catch(e){h$1(e);}}),i$1.command("add-version").description("Append an immutable version to a dataset").requiredOption("--dataset <id>","Dataset ID").option("--file <id>","wspace-files-svc File id holding the snapshot bytes").option("--size-bytes <s>","Size in bytes").option("--row-count <n>","Row count",d).option("--checksum <s>","Checksum").option("--change-note <s>","Change note").option("-f, --format <format>","Output format").action(async t=>{try{let e={datasetId:t.dataset};t.file&&(e.fileId=t.file),t.sizeBytes&&(e.sizeBytes=t.sizeBytes),t.rowCount!==void 0&&(e.rowCount=t.rowCount),t.checksum&&(e.checksum=t.checksum),t.changeNote&&(e.changeNote=t.changeNote);let n=await b(K,{input:e});k$1(`Dataset version added: v${n.labAddDatasetVersion.version}`),i(t,n.labAddDatasetVersion);}catch(e){h$1(e);}}),i$1.command("archive").description("Archive a dataset").argument("<id>","Dataset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(Y,{id:t});k$1(`Dataset archived: ${n.labArchiveDataset}`),i(e,{archived:n.labArchiveDataset});}catch(n){h$1(n);}});}function Et(p){let i$1=p.command("pipelines").description("Labsofscience reproducible analysis pipelines");i$1.command("list").description("List analysis pipelines").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b(X);i(t,e.labListPipelines,{headers:["ID","Name","Engine","Version","Active"],rows:e.labListPipelines.map(n=>[r(n.id,12),n.name,n.engine,String(n.version),n.isActive?"yes":"no"])});}catch(e){h$1(e);}}),i$1.command("create").description("Create an analysis pipeline").requiredOption("--name <name>","Pipeline name").option("--description <s>","Description").option("--engine <s>","Execution engine").option("--project <id>","Project ID").option("--definition <json>","Pipeline definition JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.description&&(e.description=t.description),t.engine&&(e.engine=t.engine),t.project&&(e.projectId=t.project),t.definition&&(e.definition=y("definition",t.definition)),t.tags&&(e.tags=c(t.tags));let n=await b(Q,{input:e});k$1(`Pipeline created: ${n.labCreatePipeline.name}`),i(t,n.labCreatePipeline);}catch(e){h$1(e);}}),i$1.command("run").description("Queue a reproducible pipeline run over a dataset version").requiredOption("--pipeline <id>","Pipeline ID").option("--dataset <id>","Dataset ID").option("--dataset-version <id>","Dataset version ID").option("--parameters <json>","Parameters JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={pipelineId:t.pipeline};t.dataset&&(e.datasetId=t.dataset),t.datasetVersion&&(e.datasetVersionId=t.datasetVersion),t.parameters&&(e.parameters=y("parameters",t.parameters));let n=await b(Z,{input:e});k$1(`Pipeline run queued: ${n.labRunPipeline.status}`),i(t,n.labRunPipeline);}catch(e){h$1(e);}}),i$1.command("list-runs").description("List pipeline runs").option("--pipeline <id>","Filter by pipeline ID").option("--status <s>","QUEUED|RUNNING|SUCCEEDED|FAILED|CANCELLED").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b(tt,{pipelineId:t.pipeline,status:t.status?t.status.toUpperCase():void 0,pagination:l(t.limit,t.offset)});i(t,e.labListPipelineRuns.items,{headers:["ID","Pipeline","Status","Started","Finished"],rows:e.labListPipelineRuns.items.map(n=>[r(n.id,12),r(n.pipelineId,12),n.status,q$1(n.startedAt),q$1(n.finishedAt)])});}catch(e){h$1(e);}}),i$1.command("transition-run").description("Advance a pipeline run through its execution lifecycle").argument("<id>","Pipeline run ID").requiredOption("--status <s>","QUEUED|RUNNING|SUCCEEDED|FAILED|CANCELLED").option("--log <s>","Execution log").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(et,{id:t,status:e.status.toUpperCase(),log:e.log});k$1(`Pipeline run moved to ${n.labTransitionPipelineRun.status}`),i(e,n.labTransitionPipelineRun);}catch(n){h$1(n);}});}function At(p){let i$1=p.command("inventory").description("Labsofscience lab inventory (reagents, samples, consumables)");i$1.command("list").description("List inventory items").option("--category <c>","REAGENT|CHEMICAL|BIOLOGICAL|CONSUMABLE|EQUIPMENT_PART|SAMPLE").option("--status <s>","IN_STOCK|LOW|OUT_OF_STOCK|EXPIRED|QUARANTINED").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b(it,{category:t.category?t.category.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:l(t.limit,t.offset)});i(t,e.labListInventoryItems.items,{headers:["ID","Name","Category","Status","Qty","Unit"],rows:e.labListInventoryItems.items.map(n=>[r(n.id,12),n.name,n.category,n.status,String(n.quantity),n.unit])});}catch(e){h$1(e);}}),i$1.command("get").description("Get an inventory item by id").argument("<id>","Inventory item ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(nt,{id:t});if(!n.labInventoryItem)throw new o(`Inventory item ${t} not found`);i(e,n.labInventoryItem);}catch(n){h$1(n);}}),i$1.command("create").description("Create an inventory item").requiredOption("--name <name>","Item name").option("--category <c>","REAGENT|CHEMICAL|BIOLOGICAL|CONSUMABLE|EQUIPMENT_PART|SAMPLE","REAGENT").option("--quantity <n>","Quantity",A).option("--unit <s>","Unit of measure").option("--reorder-level <n>","Reorder level",A).option("--location <s>","Storage location").option("--vendor <s>","Vendor").option("--catalog-number <s>","Catalog number").option("--lot-number <s>","Lot number").option("--expires-at <iso>","Expiry date (ISO)").option("--sds-file <id>","wspace-files-svc File id for the SDS").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,category:(t.category??"REAGENT").toUpperCase()};t.quantity!==void 0&&(e.quantity=t.quantity),t.unit&&(e.unit=t.unit),t.reorderLevel!==void 0&&(e.reorderLevel=t.reorderLevel),t.location&&(e.location=t.location),t.vendor&&(e.vendor=t.vendor),t.catalogNumber&&(e.catalogNumber=t.catalogNumber),t.lotNumber&&(e.lotNumber=t.lotNumber),t.expiresAt&&(e.expiresAt=t.expiresAt),t.sdsFile&&(e.sdsFileId=t.sdsFile),t.tags&&(e.tags=c(t.tags));let n=await b(ot,{input:e});k$1(`Inventory item created: ${n.labCreateInventoryItem.name}`),i(t,n.labCreateInventoryItem);}catch(e){h$1(e);}}),i$1.command("adjust").description("Apply a signed quantity delta and recompute stock status").argument("<id>","Inventory item ID").requiredOption("--delta <n>","Signed quantity delta (positive = restock)",A).option("--reason <s>","Reason for adjustment").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={delta:e.delta};e.reason&&(n.reason=e.reason);let g=await b(at,{id:t,input:n});k$1(`Inventory adjusted: ${g.labAdjustInventory.quantity} ${g.labAdjustInventory.unit}`),i(e,g.labAdjustInventory);}catch(n){h$1(n);}}),i$1.command("archive").description("Archive an inventory item").argument("<id>","Inventory item ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(rt,{id:t});k$1(`Inventory item archived: ${n.labArchiveInventoryItem}`),i(e,{archived:n.labArchiveInventoryItem});}catch(n){h$1(n);}});}function Lt(p){let i$1=p.command("instruments").description("Labsofscience instruments & bookings");i$1.command("list").description("List instruments").option("--status <s>","AVAILABLE|IN_USE|MAINTENANCE|OFFLINE").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b(pt,{status:t.status?t.status.toUpperCase():void 0});i(t,e.labListInstruments,{headers:["ID","Name","Model","Location","Status","Approval"],rows:e.labListInstruments.map(n=>[r(n.id,12),n.name,n.model??"-",n.location??"-",n.status,n.requiresApproval?"yes":"no"])});}catch(e){h$1(e);}}),i$1.command("get").description("Get an instrument by id").argument("<id>","Instrument ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(st,{id:t});if(!n.labInstrument)throw new o(`Instrument ${t} not found`);i(e,n.labInstrument);}catch(n){h$1(n);}}),i$1.command("create").description("Create an instrument").requiredOption("--name <name>","Instrument name").option("--model <s>","Model").option("--location <s>","Location").option("--custodian <id>","Custodian user ID").option("--requires-approval","Bookings require approval").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.model&&(e.model=t.model),t.location&&(e.location=t.location),t.custodian&&(e.custodianId=t.custodian),t.requiresApproval&&(e.requiresApproval=!0),t.tags&&(e.tags=c(t.tags));let n=await b(dt,{input:e});k$1(`Instrument created: ${n.labCreateInstrument.name}`),i(t,n.labCreateInstrument);}catch(e){h$1(e);}}),i$1.command("book").description("Reserve an instrument for a time window").requiredOption("--instrument <id>","Instrument ID").requiredOption("--start <iso>","Start time (ISO)").requiredOption("--end <iso>","End time (ISO)").option("--experiment <id>","Experiment ID").option("--purpose <s>","Booking purpose").option("-f, --format <format>","Output format").action(async t=>{try{let e={instrumentId:t.instrument,startTime:t.start,endTime:t.end};t.experiment&&(e.experimentId=t.experiment),t.purpose&&(e.purpose=t.purpose);let n=await b(mt,{input:e});k$1(`Instrument booked: ${n.labBookInstrument.status}`),i(t,n.labBookInstrument);}catch(e){h$1(e);}}),i$1.command("cancel-booking").description("Cancel an instrument booking").argument("<id>","Booking ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(ct,{id:t});k$1(`Booking cancelled: ${n.labCancelBooking.status}`),i(e,n.labCancelBooking);}catch(n){h$1(n);}});}function Ct(p){p.command("health").description("Labsofscience service health check (public)").option("-f, --format <format>","Output format").action(async i$1=>{try{let t=await d$1(ut);k$1(t.labHealth),i(i$1,{health:t.labHealth});}catch(t){h$1(t);}});}var Rt={id:"labsofscience",version:"1.0.0",displayName:"Labsofscience",dependsOn:["auth","workspaces"],register(p,i){a(i);let t=p.command("labsofscience").description("Labsofscience science & discovery platform");lt(t),gt(t),ft(t),It(t),bt(t),yt(t),Et(t),At(t),Lt(t),Ct(t);}},Ie=Rt;export{Ie as default};
347
+ `;function y(p,i){try{return JSON.parse(i)}catch{throw new o(`--${p} must be valid JSON`)}}function d(p){let i=Number.parseInt(p,10);if(Number.isNaN(i))throw new o(`Expected an integer but got "${p}"`);return i}function A(p){let i=Number.parseFloat(p);if(Number.isNaN(i))throw new o(`Expected a number but got "${p}"`);return i}function c(p){return p.split(",").map(i=>i.trim()).filter(i=>i.length>0)}function l(p,i){return {limit:p,offset:i}}function lt(p){let i$1=p.command("projects").description("Labsofscience research projects");i$1.command("list").description("List research projects").option("--status <s>","Filter by project status").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b(h,{status:t.status?t.status.toUpperCase():void 0,pagination:l(t.limit,t.offset)});i(t,e.labListProjects.items,{headers:["ID","Name","Code","Field","Status","Visibility"],rows:e.labListProjects.items.map(n=>[r(n.id,12),n.name,n.code??"-",n.field??"-",n.status,n.visibility])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a research project by id").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(P,{id:t});if(!n.labProject)throw new o(`Project ${t} not found`);i(e,n.labProject);}catch(n){h$1(n);}}),i$1.command("create").description("Create a research project").requiredOption("--name <name>","Project name").option("--code <code>","Project code").option("--description <s>","Description").option("--field <s>","Research field").option("--pi <id>","Principal investigator user ID").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--status <s>","PLANNING|ACTIVE|ON_HOLD|COMPLETED|ARCHIVED","PLANNING").option("--visibility <v>","PRIVATE|WORKSPACE|PUBLIC","WORKSPACE").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,status:(t.status??"PLANNING").toUpperCase(),visibility:(t.visibility??"WORKSPACE").toUpperCase()};t.code&&(e.code=t.code),t.description&&(e.description=t.description),t.field&&(e.field=t.field),t.pi&&(e.principalInvestigatorId=t.pi),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.tags&&(e.tags=c(t.tags));let n=await b(N,{input:e});k$1(`Project created: ${n.labCreateProject.name}`),i(t,n.labCreateProject);}catch(e){h$1(e);}}),i$1.command("update").description("Update a research project").argument("<id>","Project ID").option("--name <name>","Project name").option("--code <code>","Project code").option("--description <s>","Description").option("--field <s>","Research field").option("--pi <id>","Principal investigator user ID").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--status <s>","Project status").option("--visibility <v>","Visibility").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.code&&(n.code=e.code),e.description!==void 0&&(n.description=e.description),e.field&&(n.field=e.field),e.pi&&(n.principalInvestigatorId=e.pi),e.startDate&&(n.startDate=e.startDate),e.endDate&&(n.endDate=e.endDate),e.status&&(n.status=e.status.toUpperCase()),e.visibility&&(n.visibility=e.visibility.toUpperCase()),e.tags&&(n.tags=c(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let g=await b(v,{id:t,input:n});k$1("Project updated"),i(e,g.labUpdateProject);}catch(n){h$1(n);}}),i$1.command("archive").description("Archive a research project").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(O,{id:t});k$1(`Project archived: ${n.labArchiveProject}`),i(e,{archived:n.labArchiveProject});}catch(n){h$1(n);}});}function gt(p){let i$1=p.command("experiments").description("Labsofscience experiments");i$1.command("list").description("List experiments").option("--project <id>","Filter by project ID").option("--status <s>","Filter by experiment status").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b(T,{projectId:t.project,status:t.status?t.status.toUpperCase():void 0,pagination:l(t.limit,t.offset)});i(t,e.labListExperiments.items,{headers:["ID","Title","Status","Project","Lead"],rows:e.labListExperiments.items.map(n=>[r(n.id,12),n.title,n.status,r(n.projectId,12),n.leadResearcherId?r(n.leadResearcherId,12):"-"])});}catch(e){h$1(e);}}),i$1.command("get").description("Get an experiment by id").argument("<id>","Experiment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(D,{id:t});if(!n.labExperiment)throw new o(`Experiment ${t} not found`);i(e,n.labExperiment);}catch(n){h$1(n);}}),i$1.command("create").description("Create an experiment").requiredOption("--project <id>","Project ID").requiredOption("--title <t>","Experiment title").option("--description <s>","Description").option("--hypothesis <s>","Hypothesis").option("--lead <id>","Lead researcher user ID").option("--protocol <id>","Protocol ID").option("--variables <json>","Variables JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,title:t.title};t.description&&(e.description=t.description),t.hypothesis&&(e.hypothesis=t.hypothesis),t.lead&&(e.leadResearcherId=t.lead),t.protocol&&(e.protocolId=t.protocol),t.variables&&(e.variables=y("variables",t.variables)),t.tags&&(e.tags=c(t.tags));let n=await b(w,{input:e});k$1(`Experiment created: ${n.labCreateExperiment.title}`),i(t,n.labCreateExperiment);}catch(e){h$1(e);}}),i$1.command("update").description("Update an experiment").argument("<id>","Experiment ID").option("--title <t>","Experiment title").option("--description <s>","Description").option("--hypothesis <s>","Hypothesis").option("--lead <id>","Lead researcher user ID").option("--protocol <id>","Protocol ID").option("--variables <json>","Variables JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.title&&(n.title=e.title),e.description!==void 0&&(n.description=e.description),e.hypothesis!==void 0&&(n.hypothesis=e.hypothesis),e.lead&&(n.leadResearcherId=e.lead),e.protocol&&(n.protocolId=e.protocol),e.variables&&(n.variables=y("variables",e.variables)),e.tags&&(n.tags=c(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let g=await b(S,{id:t,input:n});k$1("Experiment updated"),i(e,g.labUpdateExperiment);}catch(n){h$1(n);}}),i$1.command("transition").description("Advance an experiment through its lifecycle").argument("<id>","Experiment ID").requiredOption("--status <s>","DESIGN|RUNNING|ANALYSIS|COMPLETE|ABANDONED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(_,{id:t,status:e.status.toUpperCase()});k$1(`Experiment moved to ${n.labTransitionExperiment.status}`),i(e,n.labTransitionExperiment);}catch(n){h$1(n);}});}function ft(p){let i$1=p.command("runs").description("Labsofscience reproducible experiment runs");i$1.command("list").description("List experiment runs").option("--experiment <id>","Filter by experiment ID").option("--status <s>","Filter by run status").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b(x,{experimentId:t.experiment,status:t.status?t.status.toUpperCase():void 0,pagination:l(t.limit,t.offset)});i(t,e.labListRuns.items,{headers:["ID","Run #","Status","Experiment","Started","Completed"],rows:e.labListRuns.items.map(n=>[r(n.id,12),String(n.runNumber),n.status,r(n.experimentId,12),q$1(n.startedAt),q$1(n.completedAt)])});}catch(e){h$1(e);}}),i$1.command("start").description("Start a new reproducible run of an experiment").requiredOption("--experiment <id>","Experiment ID").option("--notes <s>","Run notes").option("--parameters <json>","Parameters JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={experimentId:t.experiment};t.notes&&(e.notes=t.notes),t.parameters&&(e.parameters=y("parameters",t.parameters));let n=await b(k,{input:e});k$1(`Run #${n.labStartRun.runNumber} started`),i(t,n.labStartRun);}catch(e){h$1(e);}}),i$1.command("complete").description("Record observations and complete a run with a terminal status").argument("<id>","Run ID").requiredOption("--status <s>","SUCCEEDED|FAILED|CANCELLED").option("--notes <s>","Result notes").option("--observations <json>","Observations JSON").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={id:t,status:e.status.toUpperCase()},g={};e.notes&&(g.notes=e.notes),e.observations&&(g.observations=y("observations",e.observations)),Object.keys(g).length&&(n.input=g);let L=await b($,n);k$1(`Run #${L.labCompleteRun.runNumber} completed: ${L.labCompleteRun.status}`),i(e,L.labCompleteRun);}catch(n){h$1(n);}});}function It(p){let i$1=p.command("notebook").description("Labsofscience electronic lab notebook (ELN)");i$1.command("list").description("List notebook entries").option("--experiment <id>","Filter by experiment ID").option("--project <id>","Filter by project ID").option("--status <s>","Filter by entry status").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b(B,{experimentId:t.experiment,projectId:t.project,status:t.status?t.status.toUpperCase():void 0,pagination:l(t.limit,t.offset)});i(t,e.labListNotebookEntries.items,{headers:["ID","Title","Status","Project","Author"],rows:e.labListNotebookEntries.items.map(n=>[r(n.id,12),n.title,n.status,r(n.projectId,12),r(n.authorId,12)])});}catch(e){h$1(e);}}),i$1.command("create").description("Create a notebook entry").requiredOption("--project <id>","Project ID").requiredOption("--title <t>","Entry title").option("--body <s>","Entry body").option("--experiment <id>","Experiment ID").option("--run <id>","Run ID").option("--file-ids <csv>","Comma-separated wspace-files-svc File ids").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,title:t.title};t.body&&(e.body=t.body),t.experiment&&(e.experimentId=t.experiment),t.run&&(e.runId=t.run),t.fileIds&&(e.fileIds=c(t.fileIds)),t.tags&&(e.tags=c(t.tags));let n=await b(j,{input:e});k$1(`Notebook entry created: ${n.labCreateNotebookEntry.title}`),i(t,n.labCreateNotebookEntry);}catch(e){h$1(e);}}),i$1.command("sign").description("Sign a notebook entry (locks editable content)").argument("<id>","Entry ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(U,{id:t});k$1(`Notebook entry signed: ${n.labSignNotebookEntry.status}`),i(e,n.labSignNotebookEntry);}catch(n){h$1(n);}});}function bt(p){let i$1=p.command("protocols").description("Labsofscience versioned protocols");i$1.command("list").description("List protocols").option("--status <s>","DRAFT|PUBLISHED|DEPRECATED").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b(q,{status:t.status?t.status.toUpperCase():void 0,pagination:l(t.limit,t.offset)});i(t,e.labListProtocols.items,{headers:["ID","Name","Status","Version","Est. min"],rows:e.labListProtocols.items.map(n=>[r(n.id,12),n.name,n.status,String(n.version),n.estimatedMinutes!=null?String(n.estimatedMinutes):"-"])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a protocol by id").argument("<id>","Protocol ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(M,{id:t});if(!n.labProtocol)throw new o(`Protocol ${t} not found`);i(e,n.labProtocol);}catch(n){h$1(n);}}),i$1.command("create").description("Create a protocol").requiredOption("--name <name>","Protocol name").option("--summary <s>","Summary").option("--author <id>","Author user ID").option("--estimated-minutes <n>","Estimated minutes",d).option("--materials <csv>","Comma-separated materials").option("--safety-notes <s>","Safety notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.summary&&(e.summary=t.summary),t.author&&(e.authorId=t.author),t.estimatedMinutes!==void 0&&(e.estimatedMinutes=t.estimatedMinutes),t.materials&&(e.materials=c(t.materials)),t.safetyNotes&&(e.safetyNotes=t.safetyNotes),t.tags&&(e.tags=c(t.tags));let n=await b(V,{input:e});k$1(`Protocol created: ${n.labCreateProtocol.name}`),i(t,n.labCreateProtocol);}catch(e){h$1(e);}}),i$1.command("update").description("Update a protocol").argument("<id>","Protocol ID").option("--name <name>","Protocol name").option("--summary <s>","Summary").option("--estimated-minutes <n>","Estimated minutes",d).option("--materials <csv>","Comma-separated materials").option("--safety-notes <s>","Safety notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.summary!==void 0&&(n.summary=e.summary),e.estimatedMinutes!==void 0&&(n.estimatedMinutes=e.estimatedMinutes),e.materials&&(n.materials=c(e.materials)),e.safetyNotes!==void 0&&(n.safetyNotes=e.safetyNotes),e.tags&&(n.tags=c(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let g=await b(F,{id:t,input:n});k$1("Protocol updated"),i(e,g.labUpdateProtocol);}catch(n){h$1(n);}}),i$1.command("publish").description("Publish a draft protocol, freezing its version").argument("<id>","Protocol ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(H,{id:t});k$1(`Protocol published: v${n.labPublishProtocol.version}`),i(e,n.labPublishProtocol);}catch(n){h$1(n);}}),i$1.command("add-step").description("Append a step to a protocol").requiredOption("--protocol <id>","Protocol ID").requiredOption("--instruction <s>","Step instruction").option("--kind <k>","PREPARATION|INCUBATION|MEASUREMENT|ANALYSIS|CLEANUP|SAFETY","PREPARATION").option("--ordinal <n>","Step ordinal",d).option("--duration-minutes <n>","Duration (minutes)",d).option("--critical","Mark step as critical").option("-f, --format <format>","Output format").action(async t=>{try{let e={protocolId:t.protocol,instruction:t.instruction,kind:(t.kind??"PREPARATION").toUpperCase()};t.ordinal!==void 0&&(e.ordinal=t.ordinal),t.durationMinutes!==void 0&&(e.durationMinutes=t.durationMinutes),t.critical&&(e.isCritical=!0);let n=await b(J,{input:e});k$1(`Step added at ordinal ${n.labAddProtocolStep.ordinal}`),i(t,n.labAddProtocolStep);}catch(e){h$1(e);}});}function yt(p){let i$1=p.command("datasets").description("Labsofscience versioned datasets");i$1.command("list").description("List datasets").option("--kind <k>","RAW|PROCESSED|RESULT|REFERENCE").option("--status <s>","ACTIVE|LOCKED|ARCHIVED").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b(W,{kind:t.kind?t.kind.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:l(t.limit,t.offset)});i(t,e.labListDatasets.items,{headers:["ID","Name","Kind","Status","Latest v"],rows:e.labListDatasets.items.map(n=>[r(n.id,12),n.name,n.kind,n.status,String(n.latestVersion)])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a dataset by id").argument("<id>","Dataset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(G,{id:t});if(!n.labDataset)throw new o(`Dataset ${t} not found`);i(e,n.labDataset);}catch(n){h$1(n);}}),i$1.command("create").description("Create a dataset").requiredOption("--name <name>","Dataset name").option("--description <s>","Description").option("--kind <k>","RAW|PROCESSED|RESULT|REFERENCE","RAW").option("--experiment <id>","Experiment ID").option("--project <id>","Project ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,kind:(t.kind??"RAW").toUpperCase()};t.description&&(e.description=t.description),t.experiment&&(e.experimentId=t.experiment),t.project&&(e.projectId=t.project),t.tags&&(e.tags=c(t.tags));let n=await b(z,{input:e});k$1(`Dataset created: ${n.labCreateDataset.name}`),i(t,n.labCreateDataset);}catch(e){h$1(e);}}),i$1.command("add-version").description("Append an immutable version to a dataset").requiredOption("--dataset <id>","Dataset ID").option("--file <id>","wspace-files-svc File id holding the snapshot bytes").option("--size-bytes <s>","Size in bytes").option("--row-count <n>","Row count",d).option("--checksum <s>","Checksum").option("--change-note <s>","Change note").option("-f, --format <format>","Output format").action(async t=>{try{let e={datasetId:t.dataset};t.file&&(e.fileId=t.file),t.sizeBytes&&(e.sizeBytes=t.sizeBytes),t.rowCount!==void 0&&(e.rowCount=t.rowCount),t.checksum&&(e.checksum=t.checksum),t.changeNote&&(e.changeNote=t.changeNote);let n=await b(K,{input:e});k$1(`Dataset version added: v${n.labAddDatasetVersion.version}`),i(t,n.labAddDatasetVersion);}catch(e){h$1(e);}}),i$1.command("archive").description("Archive a dataset").argument("<id>","Dataset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(Y,{id:t});k$1(`Dataset archived: ${n.labArchiveDataset}`),i(e,{archived:n.labArchiveDataset});}catch(n){h$1(n);}});}function Et(p){let i$1=p.command("pipelines").description("Labsofscience reproducible analysis pipelines");i$1.command("list").description("List analysis pipelines").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b(X);i(t,e.labListPipelines.items,{headers:["ID","Name","Engine","Version","Active"],rows:e.labListPipelines.items.map(n=>[r(n.id,12),n.name,n.engine,String(n.version),n.isActive?"yes":"no"])});}catch(e){h$1(e);}}),i$1.command("create").description("Create an analysis pipeline").requiredOption("--name <name>","Pipeline name").option("--description <s>","Description").option("--engine <s>","Execution engine").option("--project <id>","Project ID").option("--definition <json>","Pipeline definition JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.description&&(e.description=t.description),t.engine&&(e.engine=t.engine),t.project&&(e.projectId=t.project),t.definition&&(e.definition=y("definition",t.definition)),t.tags&&(e.tags=c(t.tags));let n=await b(Q,{input:e});k$1(`Pipeline created: ${n.labCreatePipeline.name}`),i(t,n.labCreatePipeline);}catch(e){h$1(e);}}),i$1.command("run").description("Queue a reproducible pipeline run over a dataset version").requiredOption("--pipeline <id>","Pipeline ID").option("--dataset <id>","Dataset ID").option("--dataset-version <id>","Dataset version ID").option("--parameters <json>","Parameters JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={pipelineId:t.pipeline};t.dataset&&(e.datasetId=t.dataset),t.datasetVersion&&(e.datasetVersionId=t.datasetVersion),t.parameters&&(e.parameters=y("parameters",t.parameters));let n=await b(Z,{input:e});k$1(`Pipeline run queued: ${n.labRunPipeline.status}`),i(t,n.labRunPipeline);}catch(e){h$1(e);}}),i$1.command("list-runs").description("List pipeline runs").option("--pipeline <id>","Filter by pipeline ID").option("--status <s>","QUEUED|RUNNING|SUCCEEDED|FAILED|CANCELLED").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b(tt,{pipelineId:t.pipeline,status:t.status?t.status.toUpperCase():void 0,pagination:l(t.limit,t.offset)});i(t,e.labListPipelineRuns.items,{headers:["ID","Pipeline","Status","Started","Finished"],rows:e.labListPipelineRuns.items.map(n=>[r(n.id,12),r(n.pipelineId,12),n.status,q$1(n.startedAt),q$1(n.finishedAt)])});}catch(e){h$1(e);}}),i$1.command("transition-run").description("Advance a pipeline run through its execution lifecycle").argument("<id>","Pipeline run ID").requiredOption("--status <s>","QUEUED|RUNNING|SUCCEEDED|FAILED|CANCELLED").option("--log <s>","Execution log").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(et,{id:t,status:e.status.toUpperCase(),log:e.log});k$1(`Pipeline run moved to ${n.labTransitionPipelineRun.status}`),i(e,n.labTransitionPipelineRun);}catch(n){h$1(n);}});}function At(p){let i$1=p.command("inventory").description("Labsofscience lab inventory (reagents, samples, consumables)");i$1.command("list").description("List inventory items").option("--category <c>","REAGENT|CHEMICAL|BIOLOGICAL|CONSUMABLE|EQUIPMENT_PART|SAMPLE").option("--status <s>","IN_STOCK|LOW|OUT_OF_STOCK|EXPIRED|QUARANTINED").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b(it,{category:t.category?t.category.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:l(t.limit,t.offset)});i(t,e.labListInventoryItems.items,{headers:["ID","Name","Category","Status","Qty","Unit"],rows:e.labListInventoryItems.items.map(n=>[r(n.id,12),n.name,n.category,n.status,String(n.quantity),n.unit])});}catch(e){h$1(e);}}),i$1.command("get").description("Get an inventory item by id").argument("<id>","Inventory item ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(nt,{id:t});if(!n.labInventoryItem)throw new o(`Inventory item ${t} not found`);i(e,n.labInventoryItem);}catch(n){h$1(n);}}),i$1.command("create").description("Create an inventory item").requiredOption("--name <name>","Item name").option("--category <c>","REAGENT|CHEMICAL|BIOLOGICAL|CONSUMABLE|EQUIPMENT_PART|SAMPLE","REAGENT").option("--quantity <n>","Quantity",A).option("--unit <s>","Unit of measure").option("--reorder-level <n>","Reorder level",A).option("--location <s>","Storage location").option("--vendor <s>","Vendor").option("--catalog-number <s>","Catalog number").option("--lot-number <s>","Lot number").option("--expires-at <iso>","Expiry date (ISO)").option("--sds-file <id>","wspace-files-svc File id for the SDS").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,category:(t.category??"REAGENT").toUpperCase()};t.quantity!==void 0&&(e.quantity=t.quantity),t.unit&&(e.unit=t.unit),t.reorderLevel!==void 0&&(e.reorderLevel=t.reorderLevel),t.location&&(e.location=t.location),t.vendor&&(e.vendor=t.vendor),t.catalogNumber&&(e.catalogNumber=t.catalogNumber),t.lotNumber&&(e.lotNumber=t.lotNumber),t.expiresAt&&(e.expiresAt=t.expiresAt),t.sdsFile&&(e.sdsFileId=t.sdsFile),t.tags&&(e.tags=c(t.tags));let n=await b(ot,{input:e});k$1(`Inventory item created: ${n.labCreateInventoryItem.name}`),i(t,n.labCreateInventoryItem);}catch(e){h$1(e);}}),i$1.command("adjust").description("Apply a signed quantity delta and recompute stock status").argument("<id>","Inventory item ID").requiredOption("--delta <n>","Signed quantity delta (positive = restock)",A).option("--reason <s>","Reason for adjustment").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={delta:e.delta};e.reason&&(n.reason=e.reason);let g=await b(at,{id:t,input:n});k$1(`Inventory adjusted: ${g.labAdjustInventory.quantity} ${g.labAdjustInventory.unit}`),i(e,g.labAdjustInventory);}catch(n){h$1(n);}}),i$1.command("archive").description("Archive an inventory item").argument("<id>","Inventory item ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(rt,{id:t});k$1(`Inventory item archived: ${n.labArchiveInventoryItem}`),i(e,{archived:n.labArchiveInventoryItem});}catch(n){h$1(n);}});}function Lt(p){let i$1=p.command("instruments").description("Labsofscience instruments & bookings");i$1.command("list").description("List instruments").option("--status <s>","AVAILABLE|IN_USE|MAINTENANCE|OFFLINE").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b(pt,{status:t.status?t.status.toUpperCase():void 0});i(t,e.labListInstruments.items,{headers:["ID","Name","Model","Location","Status","Approval"],rows:e.labListInstruments.items.map(n=>[r(n.id,12),n.name,n.model??"-",n.location??"-",n.status,n.requiresApproval?"yes":"no"])});}catch(e){h$1(e);}}),i$1.command("get").description("Get an instrument by id").argument("<id>","Instrument ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(st,{id:t});if(!n.labInstrument)throw new o(`Instrument ${t} not found`);i(e,n.labInstrument);}catch(n){h$1(n);}}),i$1.command("create").description("Create an instrument").requiredOption("--name <name>","Instrument name").option("--model <s>","Model").option("--location <s>","Location").option("--custodian <id>","Custodian user ID").option("--requires-approval","Bookings require approval").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.model&&(e.model=t.model),t.location&&(e.location=t.location),t.custodian&&(e.custodianId=t.custodian),t.requiresApproval&&(e.requiresApproval=!0),t.tags&&(e.tags=c(t.tags));let n=await b(dt,{input:e});k$1(`Instrument created: ${n.labCreateInstrument.name}`),i(t,n.labCreateInstrument);}catch(e){h$1(e);}}),i$1.command("book").description("Reserve an instrument for a time window").requiredOption("--instrument <id>","Instrument ID").requiredOption("--start <iso>","Start time (ISO)").requiredOption("--end <iso>","End time (ISO)").option("--experiment <id>","Experiment ID").option("--purpose <s>","Booking purpose").option("-f, --format <format>","Output format").action(async t=>{try{let e={instrumentId:t.instrument,startTime:t.start,endTime:t.end};t.experiment&&(e.experimentId=t.experiment),t.purpose&&(e.purpose=t.purpose);let n=await b(mt,{input:e});k$1(`Instrument booked: ${n.labBookInstrument.status}`),i(t,n.labBookInstrument);}catch(e){h$1(e);}}),i$1.command("cancel-booking").description("Cancel an instrument booking").argument("<id>","Booking ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b(ct,{id:t});k$1(`Booking cancelled: ${n.labCancelBooking.status}`),i(e,n.labCancelBooking);}catch(n){h$1(n);}});}function Ct(p){p.command("health").description("Labsofscience service health check (public)").option("-f, --format <format>","Output format").action(async i$1=>{try{let t=await d$1(ut);k$1(t.labHealth),i(i$1,{health:t.labHealth});}catch(t){h$1(t);}});}var Rt={id:"labsofscience",version:"1.0.0",displayName:"Labsofscience",dependsOn:["auth","workspaces"],register(p,i){a(i);let t=p.command("labsofscience").description("Labsofscience science & discovery platform");lt(t),gt(t),ft(t),It(t),bt(t),yt(t),Et(t),At(t),Lt(t),Ct(t);}},Ie=Rt;export{Ie as default};
@@ -1,15 +1,19 @@
1
- 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var c=class extends Error{exitCode;hint;constructor(r,t){super(r),this.name="CliUserError",this.exitCode=t?.exitCode??1,this.hint=t?.hint;}},O=class extends c{constructor(r,t){super(r,{exitCode:2,hint:t?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},I=class extends Error{cause;constructor(r,t){super(r),this.name="CliInternalError",this.cause=t;}};var y=null;function R(o){y=o;}function w(){if(!y)throw new I("vibecontrols module helpers used before setHelpersContext was called");return y}function bt(){let o=w();if(!o.auth.isAuthenticated())throw new O("Authentication required.",{hint:`Run \`${o.productName} auth login\` to authenticate.`})}async function a(o,r){return bt(),w().gql.workspace.request(o,r)}async function k(o,r){return w().gql.workspaceAuthOnly.request(o,r)}function i(o){let r=o instanceof Error?o.message:String(o);throw new c(r)}function s(o,r,t){w().output.formatAndOutput(o,r,t);}function u(o){w().output.printSuccess(o);}function d(o,r){return w().output.truncate(o,r)}var h=`
1
+ 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var c=class extends Error{exitCode;hint;constructor(r,t){super(r),this.name="CliUserError",this.exitCode=t?.exitCode??1,this.hint=t?.hint;}},O=class extends c{constructor(r,t){super(r,{exitCode:2,hint:t?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},I=class extends Error{cause;constructor(r,t){super(r),this.name="CliInternalError",this.cause=t;}};var y=null;function h(o){y=o;}function w(){if(!y)throw new I("vibecontrols module helpers used before setHelpersContext was called");return y}function bt(){let o=w();if(!o.auth.isAuthenticated())throw new O("Authentication required.",{hint:`Run \`${o.productName} auth login\` to authenticate.`})}async function a(o,r){return bt(),w().gql.workspace.request(o,r)}async function k(o,r){return w().gql.workspaceAuthOnly.request(o,r)}function i(o){let r=o instanceof Error?o.message:String(o);throw new c(r)}function s(o,r,t){w().output.formatAndOutput(o,r,t);}function u(o){w().output.printSuccess(o);}function d(o,r){return w().output.truncate(o,r)}var R=`
2
2
  query ManGetWorkCenter($id: ID!) {
3
3
  manWorkCenter(id: $id) {
4
- id code name type description capacityHours idealRunRate isActive
5
- tags createdAt updatedAt workspaceId
6
- operations { id name sequence status workCenterId }
4
+ id code name type description capacityHours idealRunRate isActive tags createdAt
5
+ updatedAt workspaceId
6
+ operations {
7
+ items { id name sequence status workCenterId }
8
+ pageInfo { cursor hasMore }
9
+ }
7
10
  }
8
11
  }
9
12
  `,S=`
10
13
  query ManListWorkCenters($isActive: Boolean) {
11
14
  manListWorkCenters(isActive: $isActive) {
12
- id code name type capacityHours idealRunRate isActive tags createdAt
15
+ items { id code name type capacityHours idealRunRate isActive tags createdAt }
16
+ pageInfo { cursor hasMore }
13
17
  }
14
18
  }
15
19
  `,T=`
@@ -33,10 +37,9 @@
33
37
  `,D=`
34
38
  query ManGetAsset($id: ID!) {
35
39
  manAsset(id: $id) {
36
- id assetTag name manufacturer model serialNumber status
37
- pmIntervalHours runningHours installedAt lastServicedAt workCenterId
38
- tags createdAt updatedAt workspaceId
39
- workOrders { id woNumber title status type }
40
+ id assetTag name manufacturer model serialNumber status pmIntervalHours runningHours
41
+ installedAt lastServicedAt workCenterId tags createdAt updatedAt workspaceId
42
+ workOrders { items { id woNumber title status type } pageInfo { cursor hasMore } }
40
43
  }
41
44
  }
42
45
  `,x=`
@@ -66,11 +69,17 @@
66
69
  `,L=`
67
70
  query ManGetProductionOrder($id: ID!) {
68
71
  manProductionOrder(id: $id) {
69
- id orderNumber productName productSku status priority quantity
70
- quantityDone uom erpReference notes plannedStart plannedEnd
71
- actualStart actualEnd dueDate tags createdAt updatedAt workspaceId
72
- operations { id name sequence status workCenterId goodCount scrapCount }
73
- materialLots { id lotNumber materialSku status quantity }
72
+ id orderNumber productName productSku status priority quantity quantityDone uom
73
+ erpReference notes plannedStart plannedEnd actualStart actualEnd dueDate tags createdAt
74
+ updatedAt workspaceId
75
+ operations {
76
+ items { id name sequence status workCenterId goodCount scrapCount }
77
+ pageInfo { cursor hasMore }
78
+ }
79
+ materialLots {
80
+ items { id lotNumber materialSku status quantity }
81
+ pageInfo { cursor hasMore }
82
+ }
74
83
  }
75
84
  }
76
85
  `,$=`
@@ -184,7 +193,8 @@
184
193
  `,B=`
185
194
  query ManListInspectionPlans($isActive: Boolean, $stage: ManInspectionStage) {
186
195
  manListInspectionPlans(isActive: $isActive, stage: $stage) {
187
- id code name stage productSku isActive description createdAt
196
+ items { id code name stage productSku isActive description createdAt }
197
+ pageInfo { cursor hasMore }
188
198
  }
189
199
  }
190
200
  `,J=`
@@ -197,11 +207,11 @@
197
207
  `,Q=`
198
208
  query ManGetInspection($id: ID!) {
199
209
  manInspection(id: $id) {
200
- id stage result sampleSize defectCount inspectionPlanId inspectorId
201
- materialLotId productionOrderId workCenterId measurements notes
202
- inspectedAt createdAt updatedAt workspaceId
210
+ id stage result sampleSize defectCount inspectionPlanId inspectorId materialLotId
211
+ productionOrderId workCenterId measurements notes inspectedAt createdAt updatedAt
212
+ workspaceId
203
213
  inspectionPlan { id code name }
204
- nonConformances { id ncrNumber status severity }
214
+ nonConformances { items { id ncrNumber status severity } pageInfo { cursor hasMore } }
205
215
  }
206
216
  }
207
217
  `,Y=`
@@ -274,8 +284,11 @@
274
284
  `,ot=`
275
285
  query ManListDowntimeEvents($assetId: ID, $reason: ManDowntimeReason, $workCenterId: ID) {
276
286
  manListDowntimeEvents(assetId: $assetId, reason: $reason, workCenterId: $workCenterId) {
277
- id reason durationMinutes startedAt endedAt assetId workCenterId
278
- productionOrderId description createdAt
287
+ items {
288
+ id reason durationMinutes startedAt endedAt assetId workCenterId productionOrderId
289
+ description createdAt
290
+ }
291
+ pageInfo { cursor hasMore }
279
292
  }
280
293
  }
281
294
  `,it=`
@@ -289,4 +302,4 @@
289
302
  query ManHealth {
290
303
  manHealth
291
304
  }
292
- `;function A(o,r){try{return JSON.parse(r)}catch{throw new c(`--${o} must be valid JSON`)}}function p(o){let r=Number.parseInt(o,10);if(Number.isNaN(r))throw new c(`Expected an integer but got "${o}"`);return r}function f(o){let r=Number.parseFloat(o);if(Number.isNaN(r))throw new c(`Expected a number but got "${o}"`);return r}function l(o){return o.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function at(o){let r=o.command("work-centers").description("Manufacturing work centers");r.command("list").description("List work centers").option("--active <bool>","Filter by active flag (true|false)",t=>t==="true").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(S,{isActive:t.active});s(t,e.manListWorkCenters,{headers:["ID","Code","Name","Type","Capacity","Active"],rows:e.manListWorkCenters.map(n=>[d(n.id,12),n.code,n.name,n.type,String(n.capacityHours??0),n.isActive?"yes":"no"])});}catch(e){i(e);}}),r.command("get").description("Get a work center by id").argument("<id>","Work center ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(h,{id:t});if(!n.manWorkCenter)throw new c(`Work center ${t} not found`);s(e,n.manWorkCenter);}catch(n){i(n);}}),r.command("create").description("Create a work center").requiredOption("--code <code>","Work center code").requiredOption("--name <name>","Work center name").option("--type <t>","ASSEMBLY|CELL|LINE|MACHINE|MANUAL","MACHINE").option("--description <s>","Description").option("--capacity-hours <n>","Capacity hours",f).option("--ideal-run-rate <n>","Ideal run rate",f).option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={code:t.code,name:t.name,type:(t.type??"MACHINE").toUpperCase()};t.description&&(e.description=t.description),t.capacityHours!==void 0&&(e.capacityHours=t.capacityHours),t.idealRunRate!==void 0&&(e.idealRunRate=t.idealRunRate),t.tags&&(e.tags=l(t.tags));let n=await a(T,{input:e});u(`Work center created: ${n.manCreateWorkCenter.code}`),s(t,n.manCreateWorkCenter);}catch(e){i(e);}}),r.command("update").description("Update a work center").argument("<id>","Work center ID").option("--name <name>","Work center name").option("--type <t>","ASSEMBLY|CELL|LINE|MACHINE|MANUAL").option("--description <s>","Description").option("--capacity-hours <n>","Capacity hours",f).option("--ideal-run-rate <n>","Ideal run rate",f).option("--active <bool>","Active flag (true|false)",t=>t==="true").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.type&&(n.type=e.type.toUpperCase()),e.description!==void 0&&(n.description=e.description),e.capacityHours!==void 0&&(n.capacityHours=e.capacityHours),e.idealRunRate!==void 0&&(n.idealRunRate=e.idealRunRate),e.active!==void 0&&(n.isActive=e.active),e.tags&&(n.tags=l(e.tags)),!Object.keys(n).length)throw new c("No updates specified");let C=await a(b,{id:t,input:n});u("Work center updated"),s(e,C.manUpdateWorkCenter);}catch(n){i(n);}}),r.command("archive").description("Archive (soft-delete) a work center").argument("<id>","Work center ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(v,{id:t});u(`Work center archived: ${n.manArchiveWorkCenter}`),s(e,{archived:n.manArchiveWorkCenter});}catch(n){i(n);}});}function ut(o){let r=o.command("assets").description("Manufacturing assets / equipment");r.command("list").description("List assets").option("--status <s>","Filter by asset status").option("--work-center <id>","Filter by work center ID").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(x,{pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0,workCenterId:t.workCenter});s(t,e.manListAssets.items,{headers:["ID","Tag","Name","Status","Run Hrs","PM Interval"],rows:e.manListAssets.items.map(n=>[d(n.id,12),n.assetTag,n.name,n.status,String(n.runningHours??0),String(n.pmIntervalHours??0)])});}catch(e){i(e);}}),r.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 a(D,{id:t});if(!n.manAsset)throw new c(`Asset ${t} not found`);s(e,n.manAsset);}catch(n){i(n);}}),r.command("create").description("Create an asset").requiredOption("--asset-tag <tag>","Asset tag").requiredOption("--name <name>","Asset name").option("--manufacturer <s>","Manufacturer").option("--model <s>","Model").option("--serial-number <s>","Serial number").option("--pm-interval-hours <n>","Preventive-maintenance interval hours",f).option("--running-hours <n>","Initial running hours",f).option("--installed-at <date>","Installed-at timestamp (ISO 8601)").option("--work-center <id>","Work center ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetTag:t.assetTag,name:t.name};t.manufacturer&&(e.manufacturer=t.manufacturer),t.model&&(e.model=t.model),t.serialNumber&&(e.serialNumber=t.serialNumber),t.pmIntervalHours!==void 0&&(e.pmIntervalHours=t.pmIntervalHours),t.runningHours!==void 0&&(e.runningHours=t.runningHours),t.installedAt&&(e.installedAt=t.installedAt),t.workCenter&&(e.workCenterId=t.workCenter),t.tags&&(e.tags=l(t.tags));let n=await a(M,{input:e});u(`Asset created: ${n.manCreateAsset.assetTag}`),s(t,n.manCreateAsset);}catch(e){i(e);}}),r.command("update").description("Update an asset").argument("<id>","Asset ID").option("--name <name>","Asset name").option("--manufacturer <s>","Manufacturer").option("--model <s>","Model").option("--serial-number <s>","Serial number").option("--status <s>","DEGRADED|DOWN|MAINTENANCE|OPERATIONAL|RETIRED").option("--pm-interval-hours <n>","Preventive-maintenance interval hours",f).option("--running-hours <n>","Running hours",f).option("--work-center <id>","Work center ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.manufacturer!==void 0&&(n.manufacturer=e.manufacturer),e.model!==void 0&&(n.model=e.model),e.serialNumber!==void 0&&(n.serialNumber=e.serialNumber),e.status&&(n.status=e.status.toUpperCase()),e.pmIntervalHours!==void 0&&(n.pmIntervalHours=e.pmIntervalHours),e.runningHours!==void 0&&(n.runningHours=e.runningHours),e.workCenter&&(n.workCenterId=e.workCenter),e.tags&&(n.tags=l(e.tags)),!Object.keys(n).length)throw new c("No updates specified");let C=await a(P,{id:t,input:n});u("Asset updated"),s(e,C.manUpdateAsset);}catch(n){i(n);}});}function ct(o){let r=o.command("production-orders").description("Production (work) orders");r.command("list").description("List production orders").option("--product-sku <sku>","Filter by product SKU").option("--status <s>","Filter by order status").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a($,{pagination:{limit:t.limit,offset:t.offset},productSku:t.productSku,status:t.status?t.status.toUpperCase():void 0});s(t,e.manListProductionOrders.items,{headers:["ID","Order #","Product","Status","Priority","Qty","Done"],rows:e.manListProductionOrders.items.map(n=>[d(n.id,12),n.orderNumber,d(n.productName,20),n.status,n.priority,String(n.quantity??0),String(n.quantityDone??0)])});}catch(e){i(e);}}),r.command("get").description("Get a production order by id").argument("<id>","Production order ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(L,{id:t});if(!n.manProductionOrder)throw new c(`Production order ${t} not found`);s(e,n.manProductionOrder);}catch(n){i(n);}}),r.command("create").description("Create a production order").requiredOption("--order-number <n>","Order number").requiredOption("--product-name <name>","Product name").requiredOption("--product-sku <sku>","Product SKU").option("--priority <p>","LOW|NORMAL|HIGH|URGENT","NORMAL").option("--quantity <n>","Quantity",f).option("--uom <u>","Unit of measure").option("--erp-reference <s>","ERP reference").option("--notes <s>","Notes").option("--planned-start <date>","Planned start (ISO 8601)").option("--planned-end <date>","Planned end (ISO 8601)").option("--due-date <date>","Due date (ISO 8601)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={orderNumber:t.orderNumber,productName:t.productName,productSku:t.productSku,priority:(t.priority??"NORMAL").toUpperCase()};t.quantity!==void 0&&(e.quantity=t.quantity),t.uom&&(e.uom=t.uom),t.erpReference&&(e.erpReference=t.erpReference),t.notes&&(e.notes=t.notes),t.plannedStart&&(e.plannedStart=t.plannedStart),t.plannedEnd&&(e.plannedEnd=t.plannedEnd),t.dueDate&&(e.dueDate=t.dueDate),t.tags&&(e.tags=l(t.tags));let n=await a(_,{input:e});u(`Production order created: ${n.manCreateProductionOrder.orderNumber}`),s(t,n.manCreateProductionOrder);}catch(e){i(e);}}),r.command("update").description("Update a production order").argument("<id>","Production order ID").option("--product-name <name>","Product name").option("--priority <p>","LOW|NORMAL|HIGH|URGENT").option("--quantity <n>","Quantity",f).option("--uom <u>","Unit of measure").option("--erp-reference <s>","ERP reference").option("--notes <s>","Notes").option("--planned-start <date>","Planned start (ISO 8601)").option("--planned-end <date>","Planned end (ISO 8601)").option("--due-date <date>","Due date (ISO 8601)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.productName&&(n.productName=e.productName),e.priority&&(n.priority=e.priority.toUpperCase()),e.quantity!==void 0&&(n.quantity=e.quantity),e.uom&&(n.uom=e.uom),e.erpReference!==void 0&&(n.erpReference=e.erpReference),e.notes!==void 0&&(n.notes=e.notes),e.plannedStart&&(n.plannedStart=e.plannedStart),e.plannedEnd&&(n.plannedEnd=e.plannedEnd),e.dueDate&&(n.dueDate=e.dueDate),e.tags&&(n.tags=l(e.tags)),!Object.keys(n).length)throw new c("No updates specified");let C=await a(q,{id:t,input:n});u("Production order updated"),s(e,C.manUpdateProductionOrder);}catch(n){i(n);}}),r.command("transition").description("Advance a production order through its execution lifecycle").argument("<id>","Production order ID").requiredOption("--status <s>","PLANNED|RELEASED|IN_PROGRESS|PAUSED|COMPLETED|CLOSED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(W,{id:t,status:e.status.toUpperCase()});u(`Production order status set to ${n.manTransitionProductionOrder.status}`),s(e,n.manTransitionProductionOrder);}catch(n){i(n);}});}function dt(o){let r=o.command("operations").description("Routing operations on production orders");r.command("add").description("Add a routing operation to a production order").requiredOption("--production-order <id>","Production order ID").requiredOption("--name <name>","Operation name").option("--sequence <n>","Sequence number",p).option("--work-center <id>","Work center ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={productionOrderId:t.productionOrder,name:t.name};t.sequence!==void 0&&(e.sequence=t.sequence),t.workCenter&&(e.workCenterId=t.workCenter);let n=await a(U,{input:e});u(`Operation added: ${n.manAddOperation.name}`),s(t,n.manAddOperation);}catch(e){i(e);}}),r.command("record").description("Record progress against a routing operation (setup/run time, good/scrap counts)").argument("<id>","Operation ID").option("--status <s>","PENDING|SETUP|RUNNING|DONE|SKIPPED").option("--setup-minutes <n>","Setup minutes",p).option("--run-minutes <n>","Run minutes",p).option("--good-count <n>","Good count",f).option("--scrap-count <n>","Scrap count",f).option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.status&&(n.status=e.status.toUpperCase()),e.setupMinutes!==void 0&&(n.setupMinutes=e.setupMinutes),e.runMinutes!==void 0&&(n.runMinutes=e.runMinutes),e.goodCount!==void 0&&(n.goodCount=e.goodCount),e.scrapCount!==void 0&&(n.scrapCount=e.scrapCount),!Object.keys(n).length)throw new c("No progress fields specified");let C=await a(H,{id:t,input:n});u("Operation progress recorded"),s(e,C.manRecordOperation);}catch(n){i(n);}});}function pt(o){let r=o.command("material-lots").description("Material lots (traceability)");r.command("list").description("List material lots").option("--production-order <id>","Filter by production order ID").option("--status <s>","Filter by lot status").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(F,{pagination:{limit:t.limit,offset:t.offset},productionOrderId:t.productionOrder,status:t.status?t.status.toUpperCase():void 0});s(t,e.manListMaterialLots.items,{headers:["ID","Lot #","Material","SKU","Status","Qty"],rows:e.manListMaterialLots.items.map(n=>[d(n.id,12),n.lotNumber,d(n.materialName,20),n.materialSku,n.status,`${n.quantity??0} ${n.uom??""}`.trim()])});}catch(e){i(e);}}),r.command("create").description("Create a material lot").requiredOption("--lot-number <n>","Lot number").requiredOption("--material-name <name>","Material name").requiredOption("--material-sku <sku>","Material SKU").option("--quantity <n>","Quantity",f).option("--uom <u>","Unit of measure").option("--supplier <s>","Supplier").option("--parent-lot <id>","Parent lot ID").option("--production-order <id>","Production order ID").option("--received-at <date>","Received-at timestamp (ISO 8601)").option("--expires-at <date>","Expiry timestamp (ISO 8601)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={lotNumber:t.lotNumber,materialName:t.materialName,materialSku:t.materialSku};t.quantity!==void 0&&(e.quantity=t.quantity),t.uom&&(e.uom=t.uom),t.supplier&&(e.supplier=t.supplier),t.parentLot&&(e.parentLotId=t.parentLot),t.productionOrder&&(e.productionOrderId=t.productionOrder),t.receivedAt&&(e.receivedAt=t.receivedAt),t.expiresAt&&(e.expiresAt=t.expiresAt),t.tags&&(e.tags=l(t.tags));let n=await a(G,{input:e});u(`Material lot created: ${n.manCreateMaterialLot.lotNumber}`),s(t,n.manCreateMaterialLot);}catch(e){i(e);}}),r.command("set-status").description("Set the status of a material lot").argument("<id>","Material lot ID").requiredOption("--status <s>","AVAILABLE|ALLOCATED|CONSUMED|QUARANTINED|SCRAPPED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(j,{id:t,status:e.status.toUpperCase()});u(`Material lot status set to ${n.manSetMaterialLotStatus.status}`),s(e,n.manSetMaterialLotStatus);}catch(n){i(n);}});}function mt(o){let r=o.command("maintenance").description("Maintenance work orders");r.command("list").description("List maintenance work orders").option("--asset <id>","Filter by asset ID").option("--status <s>","Filter by status").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(K,{assetId:t.asset,pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0});s(t,e.manListMaintenanceWorkOrders.items,{headers:["ID","WO #","Title","Type","Status","Asset"],rows:e.manListMaintenanceWorkOrders.items.map(n=>[d(n.id,12),n.woNumber,d(n.title,24),n.type,n.status,d(n.assetId??"-",12)])});}catch(e){i(e);}}),r.command("create").description("Create a maintenance work order").requiredOption("--wo-number <n>","Work order number").requiredOption("--asset <id>","Asset ID").requiredOption("--title <t>","Title").option("--type <t>","PREVENTIVE|CORRECTIVE|PREDICTIVE|INSPECTION","PREVENTIVE").option("--description <s>","Description").option("--technician <id>","Technician ID").option("--scheduled-for <date>","Scheduled-for timestamp (ISO 8601)").option("-f, --format <format>","Output format").action(async t=>{try{let e={woNumber:t.woNumber,assetId:t.asset,title:t.title,type:(t.type??"PREVENTIVE").toUpperCase()};t.description&&(e.description=t.description),t.technician&&(e.technicianId=t.technician),t.scheduledFor&&(e.scheduledFor=t.scheduledFor);let n=await a(V,{input:e});u(`Maintenance WO created: ${n.manCreateMaintenanceWorkOrder.woNumber}`),s(t,n.manCreateMaintenanceWorkOrder);}catch(e){i(e);}}),r.command("transition").description("Advance a maintenance work order through its lifecycle").argument("<id>","Maintenance work order ID").requiredOption("--status <s>","SCHEDULED|IN_PROGRESS|ON_HOLD|COMPLETED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(z,{id:t,status:e.status.toUpperCase()});u(`Maintenance WO status set to ${n.manTransitionMaintenanceWorkOrder.status}`),s(e,n.manTransitionMaintenanceWorkOrder);}catch(n){i(n);}});}function ft(o){let r=o.command("inspection-plans").description("Quality inspection plans");r.command("list").description("List inspection plans").option("--active <bool>","Filter by active flag (true|false)",t=>t==="true").option("--stage <s>","INCOMING|IN_PROCESS|FINAL|AUDIT").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(B,{isActive:t.active,stage:t.stage?t.stage.toUpperCase():void 0});s(t,e.manListInspectionPlans,{headers:["ID","Code","Name","Stage","Product SKU","Active"],rows:e.manListInspectionPlans.map(n=>[d(n.id,12),n.code,d(n.name,24),n.stage,n.productSku??"-",n.isActive?"yes":"no"])});}catch(e){i(e);}}),r.command("create").description("Create an inspection plan").requiredOption("--code <code>","Plan code").requiredOption("--name <name>","Plan name").option("--stage <s>","INCOMING|IN_PROCESS|FINAL|AUDIT","IN_PROCESS").option("--product-sku <sku>","Product SKU").option("--description <s>","Description").option("--characteristics <json>","Characteristics JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={code:t.code,name:t.name,stage:(t.stage??"IN_PROCESS").toUpperCase()};t.productSku&&(e.productSku=t.productSku),t.description&&(e.description=t.description),t.characteristics&&(e.characteristics=A("characteristics",t.characteristics));let n=await a(J,{input:e});u(`Inspection plan created: ${n.manCreateInspectionPlan.code}`),s(t,n.manCreateInspectionPlan);}catch(e){i(e);}});}function lt(o){let r=o.command("inspections").description("Quality inspections");r.command("list").description("List quality inspections").option("--production-order <id>","Filter by production order ID").option("--result <r>","PENDING|PASS|FAIL|CONDITIONAL").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(Y,{pagination:{limit:t.limit,offset:t.offset},productionOrderId:t.productionOrder,result:t.result?t.result.toUpperCase():void 0});s(t,e.manListInspections.items,{headers:["ID","Stage","Result","Sample","Defects","Order"],rows:e.manListInspections.items.map(n=>[d(n.id,12),n.stage,n.result,String(n.sampleSize??0),String(n.defectCount??0),d(n.productionOrderId??"-",12)])});}catch(e){i(e);}}),r.command("get").description("Get a quality inspection by id").argument("<id>","Inspection ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Q,{id:t});if(!n.manInspection)throw new c(`Inspection ${t} not found`);s(e,n.manInspection);}catch(n){i(n);}}),r.command("record").description("Record a quality inspection").option("--stage <s>","INCOMING|IN_PROCESS|FINAL|AUDIT","IN_PROCESS").option("--result <r>","PENDING|PASS|FAIL|CONDITIONAL","PENDING").option("--sample-size <n>","Sample size",p).option("--defect-count <n>","Defect count",p).option("--inspection-plan <id>","Inspection plan ID").option("--material-lot <id>","Material lot ID").option("--production-order <id>","Production order ID").option("--work-center <id>","Work center ID").option("--measurements <json>","Measurements JSON").option("--notes <s>","Notes").option("--inspected-at <date>","Inspected-at timestamp (ISO 8601)").option("-f, --format <format>","Output format").action(async t=>{try{let e={stage:(t.stage??"IN_PROCESS").toUpperCase(),result:(t.result??"PENDING").toUpperCase()};t.sampleSize!==void 0&&(e.sampleSize=t.sampleSize),t.defectCount!==void 0&&(e.defectCount=t.defectCount),t.inspectionPlan&&(e.inspectionPlanId=t.inspectionPlan),t.materialLot&&(e.materialLotId=t.materialLot),t.productionOrder&&(e.productionOrderId=t.productionOrder),t.workCenter&&(e.workCenterId=t.workCenter),t.measurements&&(e.measurements=A("measurements",t.measurements)),t.notes&&(e.notes=t.notes),t.inspectedAt&&(e.inspectedAt=t.inspectedAt);let n=await a(X,{input:e});u(`Inspection recorded: ${n.manRecordInspection.result}`),s(t,n.manRecordInspection);}catch(e){i(e);}});}function gt(o){let r=o.command("non-conformances").description("Non-conformances (NCR / CAPA)");r.command("list").description("List non-conformances").option("--severity <s>","MINOR|MAJOR|CRITICAL").option("--status <s>","Filter by status").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(tt,{pagination:{limit:t.limit,offset:t.offset},severity:t.severity?t.severity.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0});s(t,e.manListNonConformances.items,{headers:["ID","NCR #","Title","Severity","Status","Disposition"],rows:e.manListNonConformances.items.map(n=>[d(n.id,12),n.ncrNumber,d(n.title,24),n.severity,n.status,n.disposition])});}catch(e){i(e);}}),r.command("get").description("Get a non-conformance by id").argument("<id>","Non-conformance ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Z,{id:t});if(!n.manNonConformance)throw new c(`Non-conformance ${t} not found`);s(e,n.manNonConformance);}catch(n){i(n);}}),r.command("raise").description("Raise a non-conformance").requiredOption("--ncr-number <n>","NCR number").requiredOption("--title <t>","Title").option("--severity <s>","MINOR|MAJOR|CRITICAL","MINOR").option("--disposition <d>","OPEN|USE_AS_IS|REWORK|SCRAP|RETURN_TO_SUPPLIER","OPEN").option("--description <s>","Description").option("--quantity-affected <n>","Quantity affected",f).option("--owner <id>","Owner ID").option("--inspection <id>","Source inspection ID").option("--due-date <date>","Due date (ISO 8601)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={ncrNumber:t.ncrNumber,title:t.title,severity:(t.severity??"MINOR").toUpperCase(),disposition:(t.disposition??"OPEN").toUpperCase()};t.description&&(e.description=t.description),t.quantityAffected!==void 0&&(e.quantityAffected=t.quantityAffected),t.owner&&(e.ownerId=t.owner),t.inspection&&(e.inspectionId=t.inspection),t.dueDate&&(e.dueDate=t.dueDate),t.tags&&(e.tags=l(t.tags));let n=await a(et,{input:e});u(`Non-conformance raised: ${n.manRaiseNonConformance.ncrNumber}`),s(t,n.manRaiseNonConformance);}catch(e){i(e);}}),r.command("update").description("Update a non-conformance").argument("<id>","Non-conformance ID").option("--title <t>","Title").option("--severity <s>","MINOR|MAJOR|CRITICAL").option("--disposition <d>","OPEN|USE_AS_IS|REWORK|SCRAP|RETURN_TO_SUPPLIER").option("--description <s>","Description").option("--quantity-affected <n>","Quantity affected",f).option("--root-cause <s>","Root cause").option("--corrective-action <s>","Corrective action").option("--owner <id>","Owner ID").option("--due-date <date>","Due date (ISO 8601)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.title&&(n.title=e.title),e.severity&&(n.severity=e.severity.toUpperCase()),e.disposition&&(n.disposition=e.disposition.toUpperCase()),e.description!==void 0&&(n.description=e.description),e.quantityAffected!==void 0&&(n.quantityAffected=e.quantityAffected),e.rootCause!==void 0&&(n.rootCause=e.rootCause),e.correctiveAction!==void 0&&(n.correctiveAction=e.correctiveAction),e.owner&&(n.ownerId=e.owner),e.dueDate&&(n.dueDate=e.dueDate),e.tags&&(n.tags=l(e.tags)),!Object.keys(n).length)throw new c("No updates specified");let C=await a(nt,{id:t,input:n});u("Non-conformance updated"),s(e,C.manUpdateNonConformance);}catch(n){i(n);}}),r.command("transition").description("Advance an NCR/CAPA through its resolution lifecycle").argument("<id>","Non-conformance ID").requiredOption("--status <s>","OPEN|INVESTIGATING|CONTAINED|CORRECTIVE_ACTION|CLOSED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(rt,{id:t,status:e.status.toUpperCase()});u(`Non-conformance status set to ${n.manTransitionNonConformance.status}`),s(e,n.manTransitionNonConformance);}catch(n){i(n);}});}function Ct(o){let r=o.command("downtime").description("Downtime events");r.command("list").description("List downtime events").option("--asset <id>","Filter by asset ID").option("--reason <r>","BREAKDOWN|CHANGEOVER|MATERIAL_SHORTAGE|PLANNED|QUALITY|OTHER").option("--work-center <id>","Filter by work center ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(ot,{assetId:t.asset,reason:t.reason?t.reason.toUpperCase():void 0,workCenterId:t.workCenter});s(t,e.manListDowntimeEvents,{headers:["ID","Reason","Minutes","Started","Asset","Work Center"],rows:e.manListDowntimeEvents.map(n=>[d(n.id,12),n.reason,String(n.durationMinutes),n.startedAt,d(n.assetId??"-",12),d(n.workCenterId??"-",12)])});}catch(e){i(e);}}),r.command("record").description("Record a downtime event").requiredOption("--started-at <date>","Started-at timestamp (ISO 8601)").option("--reason <r>","BREAKDOWN|CHANGEOVER|MATERIAL_SHORTAGE|PLANNED|QUALITY|OTHER","BREAKDOWN").option("--duration-minutes <n>","Duration minutes",p).option("--ended-at <date>","Ended-at timestamp (ISO 8601)").option("--asset <id>","Asset ID").option("--work-center <id>","Work center ID").option("--production-order <id>","Production order ID").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={startedAt:t.startedAt,reason:(t.reason??"BREAKDOWN").toUpperCase()};t.durationMinutes!==void 0&&(e.durationMinutes=t.durationMinutes),t.endedAt&&(e.endedAt=t.endedAt),t.asset&&(e.assetId=t.asset),t.workCenter&&(e.workCenterId=t.workCenter),t.productionOrder&&(e.productionOrderId=t.productionOrder),t.description&&(e.description=t.description);let n=await a(it,{input:e});u(`Downtime recorded: ${n.manRecordDowntime.reason}`),s(t,n.manRecordDowntime);}catch(e){i(e);}});}function It(o){o.command("health").description("Manufacturedops service health check (public)").option("-f, --format <format>","Output format").action(async r=>{try{let t=await k(st);u(t.manHealth),s(r,{health:t.manHealth});}catch(t){i(t);}});}var vt={id:"manufacturedops",version:"1.0.0",displayName:"Manufacturedops",dependsOn:["auth","workspaces"],register(o,r){R(r);let t=o.command("manufacturedops").description("Manufacturedops manufacturing execution system");at(t),ut(t),ct(t),dt(t),pt(t),mt(t),ft(t),lt(t),gt(t),Ct(t),It(t);}},xn=vt;module.exports=xn;
305
+ `;function A(o,r){try{return JSON.parse(r)}catch{throw new c(`--${o} must be valid JSON`)}}function p(o){let r=Number.parseInt(o,10);if(Number.isNaN(r))throw new c(`Expected an integer but got "${o}"`);return r}function f(o){let r=Number.parseFloat(o);if(Number.isNaN(r))throw new c(`Expected a number but got "${o}"`);return r}function l(o){return o.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function at(o){let r=o.command("work-centers").description("Manufacturing work centers");r.command("list").description("List work centers").option("--active <bool>","Filter by active flag (true|false)",t=>t==="true").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(S,{isActive:t.active});s(t,e.manListWorkCenters.items,{headers:["ID","Code","Name","Type","Capacity","Active"],rows:e.manListWorkCenters.items.map(n=>[d(n.id,12),n.code,n.name,n.type,String(n.capacityHours??0),n.isActive?"yes":"no"])});}catch(e){i(e);}}),r.command("get").description("Get a work center by id").argument("<id>","Work center ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(R,{id:t});if(!n.manWorkCenter)throw new c(`Work center ${t} not found`);s(e,n.manWorkCenter);}catch(n){i(n);}}),r.command("create").description("Create a work center").requiredOption("--code <code>","Work center code").requiredOption("--name <name>","Work center name").option("--type <t>","ASSEMBLY|CELL|LINE|MACHINE|MANUAL","MACHINE").option("--description <s>","Description").option("--capacity-hours <n>","Capacity hours",f).option("--ideal-run-rate <n>","Ideal run rate",f).option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={code:t.code,name:t.name,type:(t.type??"MACHINE").toUpperCase()};t.description&&(e.description=t.description),t.capacityHours!==void 0&&(e.capacityHours=t.capacityHours),t.idealRunRate!==void 0&&(e.idealRunRate=t.idealRunRate),t.tags&&(e.tags=l(t.tags));let n=await a(T,{input:e});u(`Work center created: ${n.manCreateWorkCenter.code}`),s(t,n.manCreateWorkCenter);}catch(e){i(e);}}),r.command("update").description("Update a work center").argument("<id>","Work center ID").option("--name <name>","Work center name").option("--type <t>","ASSEMBLY|CELL|LINE|MACHINE|MANUAL").option("--description <s>","Description").option("--capacity-hours <n>","Capacity hours",f).option("--ideal-run-rate <n>","Ideal run rate",f).option("--active <bool>","Active flag (true|false)",t=>t==="true").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.type&&(n.type=e.type.toUpperCase()),e.description!==void 0&&(n.description=e.description),e.capacityHours!==void 0&&(n.capacityHours=e.capacityHours),e.idealRunRate!==void 0&&(n.idealRunRate=e.idealRunRate),e.active!==void 0&&(n.isActive=e.active),e.tags&&(n.tags=l(e.tags)),!Object.keys(n).length)throw new c("No updates specified");let C=await a(b,{id:t,input:n});u("Work center updated"),s(e,C.manUpdateWorkCenter);}catch(n){i(n);}}),r.command("archive").description("Archive (soft-delete) a work center").argument("<id>","Work center ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(v,{id:t});u(`Work center archived: ${n.manArchiveWorkCenter}`),s(e,{archived:n.manArchiveWorkCenter});}catch(n){i(n);}});}function ut(o){let r=o.command("assets").description("Manufacturing assets / equipment");r.command("list").description("List assets").option("--status <s>","Filter by asset status").option("--work-center <id>","Filter by work center ID").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(x,{pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0,workCenterId:t.workCenter});s(t,e.manListAssets.items,{headers:["ID","Tag","Name","Status","Run Hrs","PM Interval"],rows:e.manListAssets.items.map(n=>[d(n.id,12),n.assetTag,n.name,n.status,String(n.runningHours??0),String(n.pmIntervalHours??0)])});}catch(e){i(e);}}),r.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 a(D,{id:t});if(!n.manAsset)throw new c(`Asset ${t} not found`);s(e,n.manAsset);}catch(n){i(n);}}),r.command("create").description("Create an asset").requiredOption("--asset-tag <tag>","Asset tag").requiredOption("--name <name>","Asset name").option("--manufacturer <s>","Manufacturer").option("--model <s>","Model").option("--serial-number <s>","Serial number").option("--pm-interval-hours <n>","Preventive-maintenance interval hours",f).option("--running-hours <n>","Initial running hours",f).option("--installed-at <date>","Installed-at timestamp (ISO 8601)").option("--work-center <id>","Work center ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetTag:t.assetTag,name:t.name};t.manufacturer&&(e.manufacturer=t.manufacturer),t.model&&(e.model=t.model),t.serialNumber&&(e.serialNumber=t.serialNumber),t.pmIntervalHours!==void 0&&(e.pmIntervalHours=t.pmIntervalHours),t.runningHours!==void 0&&(e.runningHours=t.runningHours),t.installedAt&&(e.installedAt=t.installedAt),t.workCenter&&(e.workCenterId=t.workCenter),t.tags&&(e.tags=l(t.tags));let n=await a(M,{input:e});u(`Asset created: ${n.manCreateAsset.assetTag}`),s(t,n.manCreateAsset);}catch(e){i(e);}}),r.command("update").description("Update an asset").argument("<id>","Asset ID").option("--name <name>","Asset name").option("--manufacturer <s>","Manufacturer").option("--model <s>","Model").option("--serial-number <s>","Serial number").option("--status <s>","DEGRADED|DOWN|MAINTENANCE|OPERATIONAL|RETIRED").option("--pm-interval-hours <n>","Preventive-maintenance interval hours",f).option("--running-hours <n>","Running hours",f).option("--work-center <id>","Work center ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.manufacturer!==void 0&&(n.manufacturer=e.manufacturer),e.model!==void 0&&(n.model=e.model),e.serialNumber!==void 0&&(n.serialNumber=e.serialNumber),e.status&&(n.status=e.status.toUpperCase()),e.pmIntervalHours!==void 0&&(n.pmIntervalHours=e.pmIntervalHours),e.runningHours!==void 0&&(n.runningHours=e.runningHours),e.workCenter&&(n.workCenterId=e.workCenter),e.tags&&(n.tags=l(e.tags)),!Object.keys(n).length)throw new c("No updates specified");let C=await a(P,{id:t,input:n});u("Asset updated"),s(e,C.manUpdateAsset);}catch(n){i(n);}});}function ct(o){let r=o.command("production-orders").description("Production (work) orders");r.command("list").description("List production orders").option("--product-sku <sku>","Filter by product SKU").option("--status <s>","Filter by order status").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a($,{pagination:{limit:t.limit,offset:t.offset},productSku:t.productSku,status:t.status?t.status.toUpperCase():void 0});s(t,e.manListProductionOrders.items,{headers:["ID","Order #","Product","Status","Priority","Qty","Done"],rows:e.manListProductionOrders.items.map(n=>[d(n.id,12),n.orderNumber,d(n.productName,20),n.status,n.priority,String(n.quantity??0),String(n.quantityDone??0)])});}catch(e){i(e);}}),r.command("get").description("Get a production order by id").argument("<id>","Production order ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(L,{id:t});if(!n.manProductionOrder)throw new c(`Production order ${t} not found`);s(e,n.manProductionOrder);}catch(n){i(n);}}),r.command("create").description("Create a production order").requiredOption("--order-number <n>","Order number").requiredOption("--product-name <name>","Product name").requiredOption("--product-sku <sku>","Product SKU").option("--priority <p>","LOW|NORMAL|HIGH|URGENT","NORMAL").option("--quantity <n>","Quantity",f).option("--uom <u>","Unit of measure").option("--erp-reference <s>","ERP reference").option("--notes <s>","Notes").option("--planned-start <date>","Planned start (ISO 8601)").option("--planned-end <date>","Planned end (ISO 8601)").option("--due-date <date>","Due date (ISO 8601)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={orderNumber:t.orderNumber,productName:t.productName,productSku:t.productSku,priority:(t.priority??"NORMAL").toUpperCase()};t.quantity!==void 0&&(e.quantity=t.quantity),t.uom&&(e.uom=t.uom),t.erpReference&&(e.erpReference=t.erpReference),t.notes&&(e.notes=t.notes),t.plannedStart&&(e.plannedStart=t.plannedStart),t.plannedEnd&&(e.plannedEnd=t.plannedEnd),t.dueDate&&(e.dueDate=t.dueDate),t.tags&&(e.tags=l(t.tags));let n=await a(_,{input:e});u(`Production order created: ${n.manCreateProductionOrder.orderNumber}`),s(t,n.manCreateProductionOrder);}catch(e){i(e);}}),r.command("update").description("Update a production order").argument("<id>","Production order ID").option("--product-name <name>","Product name").option("--priority <p>","LOW|NORMAL|HIGH|URGENT").option("--quantity <n>","Quantity",f).option("--uom <u>","Unit of measure").option("--erp-reference <s>","ERP reference").option("--notes <s>","Notes").option("--planned-start <date>","Planned start (ISO 8601)").option("--planned-end <date>","Planned end (ISO 8601)").option("--due-date <date>","Due date (ISO 8601)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.productName&&(n.productName=e.productName),e.priority&&(n.priority=e.priority.toUpperCase()),e.quantity!==void 0&&(n.quantity=e.quantity),e.uom&&(n.uom=e.uom),e.erpReference!==void 0&&(n.erpReference=e.erpReference),e.notes!==void 0&&(n.notes=e.notes),e.plannedStart&&(n.plannedStart=e.plannedStart),e.plannedEnd&&(n.plannedEnd=e.plannedEnd),e.dueDate&&(n.dueDate=e.dueDate),e.tags&&(n.tags=l(e.tags)),!Object.keys(n).length)throw new c("No updates specified");let C=await a(q,{id:t,input:n});u("Production order updated"),s(e,C.manUpdateProductionOrder);}catch(n){i(n);}}),r.command("transition").description("Advance a production order through its execution lifecycle").argument("<id>","Production order ID").requiredOption("--status <s>","PLANNED|RELEASED|IN_PROGRESS|PAUSED|COMPLETED|CLOSED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(W,{id:t,status:e.status.toUpperCase()});u(`Production order status set to ${n.manTransitionProductionOrder.status}`),s(e,n.manTransitionProductionOrder);}catch(n){i(n);}});}function dt(o){let r=o.command("operations").description("Routing operations on production orders");r.command("add").description("Add a routing operation to a production order").requiredOption("--production-order <id>","Production order ID").requiredOption("--name <name>","Operation name").option("--sequence <n>","Sequence number",p).option("--work-center <id>","Work center ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={productionOrderId:t.productionOrder,name:t.name};t.sequence!==void 0&&(e.sequence=t.sequence),t.workCenter&&(e.workCenterId=t.workCenter);let n=await a(U,{input:e});u(`Operation added: ${n.manAddOperation.name}`),s(t,n.manAddOperation);}catch(e){i(e);}}),r.command("record").description("Record progress against a routing operation (setup/run time, good/scrap counts)").argument("<id>","Operation ID").option("--status <s>","PENDING|SETUP|RUNNING|DONE|SKIPPED").option("--setup-minutes <n>","Setup minutes",p).option("--run-minutes <n>","Run minutes",p).option("--good-count <n>","Good count",f).option("--scrap-count <n>","Scrap count",f).option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.status&&(n.status=e.status.toUpperCase()),e.setupMinutes!==void 0&&(n.setupMinutes=e.setupMinutes),e.runMinutes!==void 0&&(n.runMinutes=e.runMinutes),e.goodCount!==void 0&&(n.goodCount=e.goodCount),e.scrapCount!==void 0&&(n.scrapCount=e.scrapCount),!Object.keys(n).length)throw new c("No progress fields specified");let C=await a(H,{id:t,input:n});u("Operation progress recorded"),s(e,C.manRecordOperation);}catch(n){i(n);}});}function pt(o){let r=o.command("material-lots").description("Material lots (traceability)");r.command("list").description("List material lots").option("--production-order <id>","Filter by production order ID").option("--status <s>","Filter by lot status").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(F,{pagination:{limit:t.limit,offset:t.offset},productionOrderId:t.productionOrder,status:t.status?t.status.toUpperCase():void 0});s(t,e.manListMaterialLots.items,{headers:["ID","Lot #","Material","SKU","Status","Qty"],rows:e.manListMaterialLots.items.map(n=>[d(n.id,12),n.lotNumber,d(n.materialName,20),n.materialSku,n.status,`${n.quantity??0} ${n.uom??""}`.trim()])});}catch(e){i(e);}}),r.command("create").description("Create a material lot").requiredOption("--lot-number <n>","Lot number").requiredOption("--material-name <name>","Material name").requiredOption("--material-sku <sku>","Material SKU").option("--quantity <n>","Quantity",f).option("--uom <u>","Unit of measure").option("--supplier <s>","Supplier").option("--parent-lot <id>","Parent lot ID").option("--production-order <id>","Production order ID").option("--received-at <date>","Received-at timestamp (ISO 8601)").option("--expires-at <date>","Expiry timestamp (ISO 8601)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={lotNumber:t.lotNumber,materialName:t.materialName,materialSku:t.materialSku};t.quantity!==void 0&&(e.quantity=t.quantity),t.uom&&(e.uom=t.uom),t.supplier&&(e.supplier=t.supplier),t.parentLot&&(e.parentLotId=t.parentLot),t.productionOrder&&(e.productionOrderId=t.productionOrder),t.receivedAt&&(e.receivedAt=t.receivedAt),t.expiresAt&&(e.expiresAt=t.expiresAt),t.tags&&(e.tags=l(t.tags));let n=await a(G,{input:e});u(`Material lot created: ${n.manCreateMaterialLot.lotNumber}`),s(t,n.manCreateMaterialLot);}catch(e){i(e);}}),r.command("set-status").description("Set the status of a material lot").argument("<id>","Material lot ID").requiredOption("--status <s>","AVAILABLE|ALLOCATED|CONSUMED|QUARANTINED|SCRAPPED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(j,{id:t,status:e.status.toUpperCase()});u(`Material lot status set to ${n.manSetMaterialLotStatus.status}`),s(e,n.manSetMaterialLotStatus);}catch(n){i(n);}});}function mt(o){let r=o.command("maintenance").description("Maintenance work orders");r.command("list").description("List maintenance work orders").option("--asset <id>","Filter by asset ID").option("--status <s>","Filter by status").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(K,{assetId:t.asset,pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0});s(t,e.manListMaintenanceWorkOrders.items,{headers:["ID","WO #","Title","Type","Status","Asset"],rows:e.manListMaintenanceWorkOrders.items.map(n=>[d(n.id,12),n.woNumber,d(n.title,24),n.type,n.status,d(n.assetId??"-",12)])});}catch(e){i(e);}}),r.command("create").description("Create a maintenance work order").requiredOption("--wo-number <n>","Work order number").requiredOption("--asset <id>","Asset ID").requiredOption("--title <t>","Title").option("--type <t>","PREVENTIVE|CORRECTIVE|PREDICTIVE|INSPECTION","PREVENTIVE").option("--description <s>","Description").option("--technician <id>","Technician ID").option("--scheduled-for <date>","Scheduled-for timestamp (ISO 8601)").option("-f, --format <format>","Output format").action(async t=>{try{let e={woNumber:t.woNumber,assetId:t.asset,title:t.title,type:(t.type??"PREVENTIVE").toUpperCase()};t.description&&(e.description=t.description),t.technician&&(e.technicianId=t.technician),t.scheduledFor&&(e.scheduledFor=t.scheduledFor);let n=await a(V,{input:e});u(`Maintenance WO created: ${n.manCreateMaintenanceWorkOrder.woNumber}`),s(t,n.manCreateMaintenanceWorkOrder);}catch(e){i(e);}}),r.command("transition").description("Advance a maintenance work order through its lifecycle").argument("<id>","Maintenance work order ID").requiredOption("--status <s>","SCHEDULED|IN_PROGRESS|ON_HOLD|COMPLETED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(z,{id:t,status:e.status.toUpperCase()});u(`Maintenance WO status set to ${n.manTransitionMaintenanceWorkOrder.status}`),s(e,n.manTransitionMaintenanceWorkOrder);}catch(n){i(n);}});}function ft(o){let r=o.command("inspection-plans").description("Quality inspection plans");r.command("list").description("List inspection plans").option("--active <bool>","Filter by active flag (true|false)",t=>t==="true").option("--stage <s>","INCOMING|IN_PROCESS|FINAL|AUDIT").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(B,{isActive:t.active,stage:t.stage?t.stage.toUpperCase():void 0});s(t,e.manListInspectionPlans.items,{headers:["ID","Code","Name","Stage","Product SKU","Active"],rows:e.manListInspectionPlans.items.map(n=>[d(n.id,12),n.code,d(n.name,24),n.stage,n.productSku??"-",n.isActive?"yes":"no"])});}catch(e){i(e);}}),r.command("create").description("Create an inspection plan").requiredOption("--code <code>","Plan code").requiredOption("--name <name>","Plan name").option("--stage <s>","INCOMING|IN_PROCESS|FINAL|AUDIT","IN_PROCESS").option("--product-sku <sku>","Product SKU").option("--description <s>","Description").option("--characteristics <json>","Characteristics JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={code:t.code,name:t.name,stage:(t.stage??"IN_PROCESS").toUpperCase()};t.productSku&&(e.productSku=t.productSku),t.description&&(e.description=t.description),t.characteristics&&(e.characteristics=A("characteristics",t.characteristics));let n=await a(J,{input:e});u(`Inspection plan created: ${n.manCreateInspectionPlan.code}`),s(t,n.manCreateInspectionPlan);}catch(e){i(e);}});}function lt(o){let r=o.command("inspections").description("Quality inspections");r.command("list").description("List quality inspections").option("--production-order <id>","Filter by production order ID").option("--result <r>","PENDING|PASS|FAIL|CONDITIONAL").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(Y,{pagination:{limit:t.limit,offset:t.offset},productionOrderId:t.productionOrder,result:t.result?t.result.toUpperCase():void 0});s(t,e.manListInspections.items,{headers:["ID","Stage","Result","Sample","Defects","Order"],rows:e.manListInspections.items.map(n=>[d(n.id,12),n.stage,n.result,String(n.sampleSize??0),String(n.defectCount??0),d(n.productionOrderId??"-",12)])});}catch(e){i(e);}}),r.command("get").description("Get a quality inspection by id").argument("<id>","Inspection ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Q,{id:t});if(!n.manInspection)throw new c(`Inspection ${t} not found`);s(e,n.manInspection);}catch(n){i(n);}}),r.command("record").description("Record a quality inspection").option("--stage <s>","INCOMING|IN_PROCESS|FINAL|AUDIT","IN_PROCESS").option("--result <r>","PENDING|PASS|FAIL|CONDITIONAL","PENDING").option("--sample-size <n>","Sample size",p).option("--defect-count <n>","Defect count",p).option("--inspection-plan <id>","Inspection plan ID").option("--material-lot <id>","Material lot ID").option("--production-order <id>","Production order ID").option("--work-center <id>","Work center ID").option("--measurements <json>","Measurements JSON").option("--notes <s>","Notes").option("--inspected-at <date>","Inspected-at timestamp (ISO 8601)").option("-f, --format <format>","Output format").action(async t=>{try{let e={stage:(t.stage??"IN_PROCESS").toUpperCase(),result:(t.result??"PENDING").toUpperCase()};t.sampleSize!==void 0&&(e.sampleSize=t.sampleSize),t.defectCount!==void 0&&(e.defectCount=t.defectCount),t.inspectionPlan&&(e.inspectionPlanId=t.inspectionPlan),t.materialLot&&(e.materialLotId=t.materialLot),t.productionOrder&&(e.productionOrderId=t.productionOrder),t.workCenter&&(e.workCenterId=t.workCenter),t.measurements&&(e.measurements=A("measurements",t.measurements)),t.notes&&(e.notes=t.notes),t.inspectedAt&&(e.inspectedAt=t.inspectedAt);let n=await a(X,{input:e});u(`Inspection recorded: ${n.manRecordInspection.result}`),s(t,n.manRecordInspection);}catch(e){i(e);}});}function gt(o){let r=o.command("non-conformances").description("Non-conformances (NCR / CAPA)");r.command("list").description("List non-conformances").option("--severity <s>","MINOR|MAJOR|CRITICAL").option("--status <s>","Filter by status").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(tt,{pagination:{limit:t.limit,offset:t.offset},severity:t.severity?t.severity.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0});s(t,e.manListNonConformances.items,{headers:["ID","NCR #","Title","Severity","Status","Disposition"],rows:e.manListNonConformances.items.map(n=>[d(n.id,12),n.ncrNumber,d(n.title,24),n.severity,n.status,n.disposition])});}catch(e){i(e);}}),r.command("get").description("Get a non-conformance by id").argument("<id>","Non-conformance ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Z,{id:t});if(!n.manNonConformance)throw new c(`Non-conformance ${t} not found`);s(e,n.manNonConformance);}catch(n){i(n);}}),r.command("raise").description("Raise a non-conformance").requiredOption("--ncr-number <n>","NCR number").requiredOption("--title <t>","Title").option("--severity <s>","MINOR|MAJOR|CRITICAL","MINOR").option("--disposition <d>","OPEN|USE_AS_IS|REWORK|SCRAP|RETURN_TO_SUPPLIER","OPEN").option("--description <s>","Description").option("--quantity-affected <n>","Quantity affected",f).option("--owner <id>","Owner ID").option("--inspection <id>","Source inspection ID").option("--due-date <date>","Due date (ISO 8601)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={ncrNumber:t.ncrNumber,title:t.title,severity:(t.severity??"MINOR").toUpperCase(),disposition:(t.disposition??"OPEN").toUpperCase()};t.description&&(e.description=t.description),t.quantityAffected!==void 0&&(e.quantityAffected=t.quantityAffected),t.owner&&(e.ownerId=t.owner),t.inspection&&(e.inspectionId=t.inspection),t.dueDate&&(e.dueDate=t.dueDate),t.tags&&(e.tags=l(t.tags));let n=await a(et,{input:e});u(`Non-conformance raised: ${n.manRaiseNonConformance.ncrNumber}`),s(t,n.manRaiseNonConformance);}catch(e){i(e);}}),r.command("update").description("Update a non-conformance").argument("<id>","Non-conformance ID").option("--title <t>","Title").option("--severity <s>","MINOR|MAJOR|CRITICAL").option("--disposition <d>","OPEN|USE_AS_IS|REWORK|SCRAP|RETURN_TO_SUPPLIER").option("--description <s>","Description").option("--quantity-affected <n>","Quantity affected",f).option("--root-cause <s>","Root cause").option("--corrective-action <s>","Corrective action").option("--owner <id>","Owner ID").option("--due-date <date>","Due date (ISO 8601)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.title&&(n.title=e.title),e.severity&&(n.severity=e.severity.toUpperCase()),e.disposition&&(n.disposition=e.disposition.toUpperCase()),e.description!==void 0&&(n.description=e.description),e.quantityAffected!==void 0&&(n.quantityAffected=e.quantityAffected),e.rootCause!==void 0&&(n.rootCause=e.rootCause),e.correctiveAction!==void 0&&(n.correctiveAction=e.correctiveAction),e.owner&&(n.ownerId=e.owner),e.dueDate&&(n.dueDate=e.dueDate),e.tags&&(n.tags=l(e.tags)),!Object.keys(n).length)throw new c("No updates specified");let C=await a(nt,{id:t,input:n});u("Non-conformance updated"),s(e,C.manUpdateNonConformance);}catch(n){i(n);}}),r.command("transition").description("Advance an NCR/CAPA through its resolution lifecycle").argument("<id>","Non-conformance ID").requiredOption("--status <s>","OPEN|INVESTIGATING|CONTAINED|CORRECTIVE_ACTION|CLOSED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(rt,{id:t,status:e.status.toUpperCase()});u(`Non-conformance status set to ${n.manTransitionNonConformance.status}`),s(e,n.manTransitionNonConformance);}catch(n){i(n);}});}function Ct(o){let r=o.command("downtime").description("Downtime events");r.command("list").description("List downtime events").option("--asset <id>","Filter by asset ID").option("--reason <r>","BREAKDOWN|CHANGEOVER|MATERIAL_SHORTAGE|PLANNED|QUALITY|OTHER").option("--work-center <id>","Filter by work center ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(ot,{assetId:t.asset,reason:t.reason?t.reason.toUpperCase():void 0,workCenterId:t.workCenter});s(t,e.manListDowntimeEvents.items,{headers:["ID","Reason","Minutes","Started","Asset","Work Center"],rows:e.manListDowntimeEvents.items.map(n=>[d(n.id,12),n.reason,String(n.durationMinutes),n.startedAt,d(n.assetId??"-",12),d(n.workCenterId??"-",12)])});}catch(e){i(e);}}),r.command("record").description("Record a downtime event").requiredOption("--started-at <date>","Started-at timestamp (ISO 8601)").option("--reason <r>","BREAKDOWN|CHANGEOVER|MATERIAL_SHORTAGE|PLANNED|QUALITY|OTHER","BREAKDOWN").option("--duration-minutes <n>","Duration minutes",p).option("--ended-at <date>","Ended-at timestamp (ISO 8601)").option("--asset <id>","Asset ID").option("--work-center <id>","Work center ID").option("--production-order <id>","Production order ID").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={startedAt:t.startedAt,reason:(t.reason??"BREAKDOWN").toUpperCase()};t.durationMinutes!==void 0&&(e.durationMinutes=t.durationMinutes),t.endedAt&&(e.endedAt=t.endedAt),t.asset&&(e.assetId=t.asset),t.workCenter&&(e.workCenterId=t.workCenter),t.productionOrder&&(e.productionOrderId=t.productionOrder),t.description&&(e.description=t.description);let n=await a(it,{input:e});u(`Downtime recorded: ${n.manRecordDowntime.reason}`),s(t,n.manRecordDowntime);}catch(e){i(e);}});}function It(o){o.command("health").description("Manufacturedops service health check (public)").option("-f, --format <format>","Output format").action(async r=>{try{let t=await k(st);u(t.manHealth),s(r,{health:t.manHealth});}catch(t){i(t);}});}var vt={id:"manufacturedops",version:"1.0.0",displayName:"Manufacturedops",dependsOn:["auth","workspaces"],register(o,r){h(r);let t=o.command("manufacturedops").description("Manufacturedops manufacturing execution system");at(t),ut(t),ct(t),dt(t),pt(t),mt(t),ft(t),lt(t),gt(t),Ct(t),It(t);}},xn=vt;module.exports=xn;