@burdenoff/cli-sdk 2026.1102.1 → 2026.1102.2

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 (101) hide show
  1. package/dist/chunk-O6UCQ5IT.js +1 -0
  2. package/dist/{chunk-AYNNSLCL.js → chunk-ZGT7IIOP.js} +409 -418
  3. package/dist/modules/adaptercloud/index.cjs +4 -4
  4. package/dist/modules/adaptercloud/index.js +2 -2
  5. package/dist/modules/artistrybase/index.js +2 -2
  6. package/dist/modules/assethandler/index.cjs +2 -2
  7. package/dist/modules/assethandler/index.js +2 -2
  8. package/dist/modules/atheletebridge/index.cjs +8 -8
  9. package/dist/modules/atheletebridge/index.js +2 -2
  10. package/dist/modules/auth/index.cjs +37 -37
  11. package/dist/modules/auth/index.js +33 -29
  12. package/dist/modules/billing/index.cjs +1 -1
  13. package/dist/modules/billing/index.js +2 -2
  14. package/dist/modules/brainyrich/index.cjs +44 -28
  15. package/dist/modules/brainyrich/index.js +47 -31
  16. package/dist/modules/buildmyiq/index.js +2 -2
  17. package/dist/modules/channels/index.cjs +3 -3
  18. package/dist/modules/channels/index.js +2 -2
  19. package/dist/modules/collabkin/index.cjs +4 -4
  20. package/dist/modules/collabkin/index.js +2 -2
  21. package/dist/modules/comradecircle/index.cjs +6 -6
  22. package/dist/modules/comradecircle/index.js +2 -2
  23. package/dist/modules/conversations/index.cjs +7 -7
  24. package/dist/modules/conversations/index.js +2 -2
  25. package/dist/modules/coolandlovely/index.cjs +2 -2
  26. package/dist/modules/coolandlovely/index.js +2 -2
  27. package/dist/modules/cosmicintersection/index.cjs +6 -6
  28. package/dist/modules/cosmicintersection/index.js +2 -2
  29. package/dist/modules/crewfoundry/index.js +2 -2
  30. package/dist/modules/devportal/index.cjs +2 -2
  31. package/dist/modules/devportal/index.js +2 -2
  32. package/dist/modules/ecoimpacthub/index.cjs +5 -5
  33. package/dist/modules/ecoimpacthub/index.js +2 -2
  34. package/dist/modules/eventfullymanaged/index.cjs +12 -12
  35. package/dist/modules/eventfullymanaged/index.js +2 -2
  36. package/dist/modules/export/index.cjs +4 -4
  37. package/dist/modules/export/index.js +2 -2
  38. package/dist/modules/files/index.cjs +3 -3
  39. package/dist/modules/files/index.js +4 -4
  40. package/dist/modules/fluidgrids/index.cjs +16 -16
  41. package/dist/modules/fluidgrids/index.js +3 -3
  42. package/dist/modules/ggnomad/index.cjs +4 -4
  43. package/dist/modules/ggnomad/index.js +2 -2
  44. package/dist/modules/govcitizenhub/index.cjs +4 -4
  45. package/dist/modules/govcitizenhub/index.js +2 -2
  46. package/dist/modules/groups/index.cjs +4 -4
  47. package/dist/modules/groups/index.js +2 -2
  48. package/dist/modules/headshotmarketing/index.js +2 -2
  49. package/dist/modules/hookmovies/index.cjs +6 -6
  50. package/dist/modules/hookmovies/index.js +2 -2
  51. package/dist/modules/housingvista/index.cjs +3 -3
  52. package/dist/modules/housingvista/index.js +2 -2
  53. package/dist/modules/integrations/index.cjs +5 -5
  54. package/dist/modules/integrations/index.js +2 -2
  55. package/dist/modules/intelwatchtower/index.cjs +5 -5
  56. package/dist/modules/intelwatchtower/index.js +2 -2
  57. package/dist/modules/kadaikodi/index.cjs +2 -2
  58. package/dist/modules/kadaikodi/index.js +2 -2
  59. package/dist/modules/labsofscience/index.cjs +3 -3
  60. package/dist/modules/labsofscience/index.js +2 -2
  61. package/dist/modules/manufacturedops/index.cjs +2 -2
  62. package/dist/modules/manufacturedops/index.js +2 -2
  63. package/dist/modules/movethewheels/index.js +2 -2
  64. package/dist/modules/notifications/index.cjs +2 -2
  65. package/dist/modules/notifications/index.js +2 -2
  66. package/dist/modules/organizations/index.js +2 -2
  67. package/dist/modules/planmagnet/index.js +2 -2
  68. package/dist/modules/products/index.cjs +4 -4
  69. package/dist/modules/products/index.js +2 -2
  70. package/dist/modules/proserviceworld/index.cjs +2 -2
  71. package/dist/modules/proserviceworld/index.js +2 -2
  72. package/dist/modules/rbac/index.js +2 -2
  73. package/dist/modules/sandbox/index.cjs +17 -17
  74. package/dist/modules/sandbox/index.js +1 -1
  75. package/dist/modules/scheduler/index.cjs +2 -2
  76. package/dist/modules/scheduler/index.js +2 -2
  77. package/dist/modules/security/index.cjs +3 -3
  78. package/dist/modules/security/index.js +2 -2
  79. package/dist/modules/semanticfed/index.cjs +3 -3
  80. package/dist/modules/semanticfed/index.js +2 -2
  81. package/dist/modules/store/index.cjs +3 -3
  82. package/dist/modules/store/index.js +2 -2
  83. package/dist/modules/subscriberbot/index.cjs +1 -1
  84. package/dist/modules/subscriberbot/index.js +2 -2
  85. package/dist/modules/support/index.cjs +2 -2
  86. package/dist/modules/support/index.js +2 -2
  87. package/dist/modules/tags/index.js +2 -2
  88. package/dist/modules/technospam/index.cjs +2 -2
  89. package/dist/modules/technospam/index.js +2 -2
  90. package/dist/modules/theculturepost/index.js +2 -2
  91. package/dist/modules/theglobalfuel/index.cjs +2 -2
  92. package/dist/modules/theglobalfuel/index.js +2 -2
  93. package/dist/modules/timecampus/index.js +2 -2
  94. package/dist/modules/tours/index.cjs +2 -2
  95. package/dist/modules/tours/index.js +2 -2
  96. package/dist/modules/vibecontrols/index.cjs +563 -567
  97. package/dist/modules/vibecontrols/index.js +5 -4
  98. package/dist/modules/workspaces/index.cjs +4 -4
  99. package/dist/modules/workspaces/index.js +2 -2
  100. package/package.json +1 -1
  101. package/dist/chunk-W4JZR7RJ.js +0 -1
@@ -1,4 +1,4 @@
1
- import {a,b,h as h$1,p,g,i,o as o$1,d as d$1}from'../../chunk-W4JZR7RJ.js';import {o}from'../../chunk-YIY5IDXQ.js';var P=`
1
+ 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';import {o}from'../../chunk-YIY5IDXQ.js';var P=`
2
2
  query LabProject($id: ID!) {
3
3
  labProject(id: $id) {
4
4
  id workspaceId name code description field status visibility
@@ -340,4 +340,4 @@ import {a,b,h as h$1,p,g,i,o as o$1,d as d$1}from'../../chunk-W4JZR7RJ.js';impor
340
340
  query LabHealth {
341
341
  labHealth
342
342
  }
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$1){let i$1=p$1.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)});h$1(t,e.labListProjects.items,{headers:["ID","Name","Code","Field","Status","Visibility"],rows:e.labListProjects.items.map(n=>[p(n.id,12),n.name,n.code??"-",n.field??"-",n.status,n.visibility])});}catch(e){g(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`);h$1(e,n.labProject);}catch(n){g(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});i(`Project created: ${n.labCreateProject.name}`),h$1(t,n.labCreateProject);}catch(e){g(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});i("Project updated"),h$1(e,g.labUpdateProject);}catch(n){g(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});i(`Project archived: ${n.labArchiveProject}`),h$1(e,{archived:n.labArchiveProject});}catch(n){g(n);}});}function gt(p$1){let i$1=p$1.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)});h$1(t,e.labListExperiments.items,{headers:["ID","Title","Status","Project","Lead"],rows:e.labListExperiments.items.map(n=>[p(n.id,12),n.title,n.status,p(n.projectId,12),n.leadResearcherId?p(n.leadResearcherId,12):"-"])});}catch(e){g(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`);h$1(e,n.labExperiment);}catch(n){g(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});i(`Experiment created: ${n.labCreateExperiment.title}`),h$1(t,n.labCreateExperiment);}catch(e){g(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});i("Experiment updated"),h$1(e,g.labUpdateExperiment);}catch(n){g(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()});i(`Experiment moved to ${n.labTransitionExperiment.status}`),h$1(e,n.labTransitionExperiment);}catch(n){g(n);}});}function ft(p$1){let i$1=p$1.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)});h$1(t,e.labListRuns.items,{headers:["ID","Run #","Status","Experiment","Started","Completed"],rows:e.labListRuns.items.map(n=>[p(n.id,12),String(n.runNumber),n.status,p(n.experimentId,12),o$1(n.startedAt),o$1(n.completedAt)])});}catch(e){g(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});i(`Run #${n.labStartRun.runNumber} started`),h$1(t,n.labStartRun);}catch(e){g(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);i(`Run #${L.labCompleteRun.runNumber} completed: ${L.labCompleteRun.status}`),h$1(e,L.labCompleteRun);}catch(n){g(n);}});}function It(p$1){let i$1=p$1.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)});h$1(t,e.labListNotebookEntries.items,{headers:["ID","Title","Status","Project","Author"],rows:e.labListNotebookEntries.items.map(n=>[p(n.id,12),n.title,n.status,p(n.projectId,12),p(n.authorId,12)])});}catch(e){g(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});i(`Notebook entry created: ${n.labCreateNotebookEntry.title}`),h$1(t,n.labCreateNotebookEntry);}catch(e){g(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});i(`Notebook entry signed: ${n.labSignNotebookEntry.status}`),h$1(e,n.labSignNotebookEntry);}catch(n){g(n);}});}function bt(p$1){let i$1=p$1.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)});h$1(t,e.labListProtocols.items,{headers:["ID","Name","Status","Version","Est. min"],rows:e.labListProtocols.items.map(n=>[p(n.id,12),n.name,n.status,String(n.version),n.estimatedMinutes!=null?String(n.estimatedMinutes):"-"])});}catch(e){g(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`);h$1(e,n.labProtocol);}catch(n){g(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});i(`Protocol created: ${n.labCreateProtocol.name}`),h$1(t,n.labCreateProtocol);}catch(e){g(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});i("Protocol updated"),h$1(e,g.labUpdateProtocol);}catch(n){g(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});i(`Protocol published: v${n.labPublishProtocol.version}`),h$1(e,n.labPublishProtocol);}catch(n){g(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});i(`Step added at ordinal ${n.labAddProtocolStep.ordinal}`),h$1(t,n.labAddProtocolStep);}catch(e){g(e);}});}function yt(p$1){let i$1=p$1.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)});h$1(t,e.labListDatasets.items,{headers:["ID","Name","Kind","Status","Latest v"],rows:e.labListDatasets.items.map(n=>[p(n.id,12),n.name,n.kind,n.status,String(n.latestVersion)])});}catch(e){g(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`);h$1(e,n.labDataset);}catch(n){g(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});i(`Dataset created: ${n.labCreateDataset.name}`),h$1(t,n.labCreateDataset);}catch(e){g(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});i(`Dataset version added: v${n.labAddDatasetVersion.version}`),h$1(t,n.labAddDatasetVersion);}catch(e){g(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});i(`Dataset archived: ${n.labArchiveDataset}`),h$1(e,{archived:n.labArchiveDataset});}catch(n){g(n);}});}function Et(p$1){let i$1=p$1.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);h$1(t,e.labListPipelines,{headers:["ID","Name","Engine","Version","Active"],rows:e.labListPipelines.map(n=>[p(n.id,12),n.name,n.engine,String(n.version),n.isActive?"yes":"no"])});}catch(e){g(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});i(`Pipeline created: ${n.labCreatePipeline.name}`),h$1(t,n.labCreatePipeline);}catch(e){g(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});i(`Pipeline run queued: ${n.labRunPipeline.status}`),h$1(t,n.labRunPipeline);}catch(e){g(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)});h$1(t,e.labListPipelineRuns.items,{headers:["ID","Pipeline","Status","Started","Finished"],rows:e.labListPipelineRuns.items.map(n=>[p(n.id,12),p(n.pipelineId,12),n.status,o$1(n.startedAt),o$1(n.finishedAt)])});}catch(e){g(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});i(`Pipeline run moved to ${n.labTransitionPipelineRun.status}`),h$1(e,n.labTransitionPipelineRun);}catch(n){g(n);}});}function At(p$1){let i$1=p$1.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)});h$1(t,e.labListInventoryItems.items,{headers:["ID","Name","Category","Status","Qty","Unit"],rows:e.labListInventoryItems.items.map(n=>[p(n.id,12),n.name,n.category,n.status,String(n.quantity),n.unit])});}catch(e){g(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`);h$1(e,n.labInventoryItem);}catch(n){g(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});i(`Inventory item created: ${n.labCreateInventoryItem.name}`),h$1(t,n.labCreateInventoryItem);}catch(e){g(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});i(`Inventory adjusted: ${g.labAdjustInventory.quantity} ${g.labAdjustInventory.unit}`),h$1(e,g.labAdjustInventory);}catch(n){g(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});i(`Inventory item archived: ${n.labArchiveInventoryItem}`),h$1(e,{archived:n.labArchiveInventoryItem});}catch(n){g(n);}});}function Lt(p$1){let i$1=p$1.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});h$1(t,e.labListInstruments,{headers:["ID","Name","Model","Location","Status","Approval"],rows:e.labListInstruments.map(n=>[p(n.id,12),n.name,n.model??"-",n.location??"-",n.status,n.requiresApproval?"yes":"no"])});}catch(e){g(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`);h$1(e,n.labInstrument);}catch(n){g(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});i(`Instrument created: ${n.labCreateInstrument.name}`),h$1(t,n.labCreateInstrument);}catch(e){g(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});i(`Instrument booked: ${n.labBookInstrument.status}`),h$1(t,n.labBookInstrument);}catch(e){g(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});i(`Booking cancelled: ${n.labCancelBooking.status}`),h$1(e,n.labCancelBooking);}catch(n){g(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);i(t.labHealth),h$1(i$1,{health:t.labHealth});}catch(t){g(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};
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};
@@ -1,4 +1,4 @@
1
- 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var u=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 u{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 u(r)}function s(o,r,t){w().output.formatAndOutput(o,r,t);}function c(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 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=`
2
2
  query ManGetWorkCenter($id: ID!) {
3
3
  manWorkCenter(id: $id) {
4
4
  id code name type description capacityHours idealRunRate isActive
@@ -289,4 +289,4 @@
289
289
  query ManHealth {
290
290
  manHealth
291
291
  }
292
- `;function A(o,r){try{return JSON.parse(r)}catch{throw new u(`--${o} must be valid JSON`)}}function p(o){let r=Number.parseInt(o,10);if(Number.isNaN(r))throw new u(`Expected an integer but got "${o}"`);return r}function f(o){let r=Number.parseFloat(o);if(Number.isNaN(r))throw new u(`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 u(`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});c(`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 u("No updates specified");let C=await a(b,{id:t,input:n});c("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});c(`Work center archived: ${n.manArchiveWorkCenter}`),s(e,{archived:n.manArchiveWorkCenter});}catch(n){i(n);}});}function ct(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 u(`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});c(`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 u("No updates specified");let C=await a(P,{id:t,input:n});c("Asset updated"),s(e,C.manUpdateAsset);}catch(n){i(n);}});}function ut(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 u(`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});c(`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 u("No updates specified");let C=await a(q,{id:t,input:n});c("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()});c(`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});c(`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 u("No progress fields specified");let C=await a(H,{id:t,input:n});c("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});c(`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()});c(`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});c(`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()});c(`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});c(`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 u(`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});c(`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 u(`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});c(`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 u("No updates specified");let C=await a(nt,{id:t,input:n});c("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()});c(`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});c(`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);c(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),ct(t),ut(t),dt(t),pt(t),mt(t),ft(t),lt(t),gt(t),Ct(t),It(t);}},xn=vt;module.exports=xn;
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;
@@ -1,4 +1,4 @@
1
- import {a,b as b$1,h as h$1,p,g,i,d}from'../../chunk-W4JZR7RJ.js';import {o}from'../../chunk-YIY5IDXQ.js';var R=`
1
+ import {a,b as b$1,i,r,h as h$1,k as k$1,d}from'../../chunk-O6UCQ5IT.js';import {o}from'../../chunk-YIY5IDXQ.js';var R=`
2
2
  query ManGetWorkCenter($id: ID!) {
3
3
  manWorkCenter(id: $id) {
4
4
  id code name type description capacityHours idealRunRate isActive
@@ -289,4 +289,4 @@ import {a,b as b$1,h as h$1,p,g,i,d}from'../../chunk-W4JZR7RJ.js';import {o}from
289
289
  query ManHealth {
290
290
  manHealth
291
291
  }
292
- `;function O(s,r){try{return JSON.parse(r)}catch{throw new o(`--${s} must be valid JSON`)}}function c(s){let r=Number.parseInt(s,10);if(Number.isNaN(r))throw new o(`Expected an integer but got "${s}"`);return r}function m(s){let r=Number.parseFloat(s);if(Number.isNaN(r))throw new o(`Expected a number but got "${s}"`);return r}function f(s){return s.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function nt(s){let r=s.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 b$1(E,{isActive:t.active});h$1(t,e.manListWorkCenters,{headers:["ID","Code","Name","Type","Capacity","Active"],rows:e.manListWorkCenters.map(n=>[p(n.id,12),n.code,n.name,n.type,String(n.capacityHours??0),n.isActive?"yes":"no"])});}catch(e){g(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 b$1(R,{id:t});if(!n.manWorkCenter)throw new o(`Work center ${t} not found`);h$1(e,n.manWorkCenter);}catch(n){g(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",m).option("--ideal-run-rate <n>","Ideal run rate",m).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=f(t.tags));let n=await b$1(y,{input:e});i(`Work center created: ${n.manCreateWorkCenter.code}`),h$1(t,n.manCreateWorkCenter);}catch(e){g(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",m).option("--ideal-run-rate <n>","Ideal run rate",m).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=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let C=await b$1(S,{id:t,input:n});i("Work center updated"),h$1(e,C.manUpdateWorkCenter);}catch(n){g(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 b$1(w,{id:t});i(`Work center archived: ${n.manArchiveWorkCenter}`),h$1(e,{archived:n.manArchiveWorkCenter});}catch(n){g(n);}});}function rt(s){let r=s.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",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(M,{pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0,workCenterId:t.workCenter});h$1(t,e.manListAssets.items,{headers:["ID","Tag","Name","Status","Run Hrs","PM Interval"],rows:e.manListAssets.items.map(n=>[p(n.id,12),n.assetTag,n.name,n.status,String(n.runningHours??0),String(n.pmIntervalHours??0)])});}catch(e){g(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 b$1(k,{id:t});if(!n.manAsset)throw new o(`Asset ${t} not found`);h$1(e,n.manAsset);}catch(n){g(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",m).option("--running-hours <n>","Initial running hours",m).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=f(t.tags));let n=await b$1(D,{input:e});i(`Asset created: ${n.manCreateAsset.assetTag}`),h$1(t,n.manCreateAsset);}catch(e){g(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",m).option("--running-hours <n>","Running hours",m).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=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let C=await b$1(T,{id:t,input:n});i("Asset updated"),h$1(e,C.manUpdateAsset);}catch(n){g(n);}});}function ot(s){let r=s.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",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(P,{pagination:{limit:t.limit,offset:t.offset},productSku:t.productSku,status:t.status?t.status.toUpperCase():void 0});h$1(t,e.manListProductionOrders.items,{headers:["ID","Order #","Product","Status","Priority","Qty","Done"],rows:e.manListProductionOrders.items.map(n=>[p(n.id,12),n.orderNumber,p(n.productName,20),n.status,n.priority,String(n.quantity??0),String(n.quantityDone??0)])});}catch(e){g(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 b$1(L,{id:t});if(!n.manProductionOrder)throw new o(`Production order ${t} not found`);h$1(e,n.manProductionOrder);}catch(n){g(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",m).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=f(t.tags));let n=await b$1(b,{input:e});i(`Production order created: ${n.manCreateProductionOrder.orderNumber}`),h$1(t,n.manCreateProductionOrder);}catch(e){g(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",m).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=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let C=await b$1(h,{id:t,input:n});i("Production order updated"),h$1(e,C.manUpdateProductionOrder);}catch(n){g(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 b$1(v,{id:t,status:e.status.toUpperCase()});i(`Production order status set to ${n.manTransitionProductionOrder.status}`),h$1(e,n.manTransitionProductionOrder);}catch(n){g(n);}});}function it(s){let r=s.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",c).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 b$1(_,{input:e});i(`Operation added: ${n.manAddOperation.name}`),h$1(t,n.manAddOperation);}catch(e){g(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",c).option("--run-minutes <n>","Run minutes",c).option("--good-count <n>","Good count",m).option("--scrap-count <n>","Scrap count",m).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 o("No progress fields specified");let C=await b$1($,{id:t,input:n});i("Operation progress recorded"),h$1(e,C.manRecordOperation);}catch(n){g(n);}});}function at(s){let r=s.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",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(W,{pagination:{limit:t.limit,offset:t.offset},productionOrderId:t.productionOrder,status:t.status?t.status.toUpperCase():void 0});h$1(t,e.manListMaterialLots.items,{headers:["ID","Lot #","Material","SKU","Status","Qty"],rows:e.manListMaterialLots.items.map(n=>[p(n.id,12),n.lotNumber,p(n.materialName,20),n.materialSku,n.status,`${n.quantity??0} ${n.uom??""}`.trim()])});}catch(e){g(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",m).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=f(t.tags));let n=await b$1(U,{input:e});i(`Material lot created: ${n.manCreateMaterialLot.lotNumber}`),h$1(t,n.manCreateMaterialLot);}catch(e){g(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 b$1(q,{id:t,status:e.status.toUpperCase()});i(`Material lot status set to ${n.manSetMaterialLotStatus.status}`),h$1(e,n.manSetMaterialLotStatus);}catch(n){g(n);}});}function st(s){let r=s.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",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(H,{assetId:t.asset,pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0});h$1(t,e.manListMaintenanceWorkOrders.items,{headers:["ID","WO #","Title","Type","Status","Asset"],rows:e.manListMaintenanceWorkOrders.items.map(n=>[p(n.id,12),n.woNumber,p(n.title,24),n.type,n.status,p(n.assetId??"-",12)])});}catch(e){g(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 b$1(x,{input:e});i(`Maintenance WO created: ${n.manCreateMaintenanceWorkOrder.woNumber}`),h$1(t,n.manCreateMaintenanceWorkOrder);}catch(e){g(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 b$1(F,{id:t,status:e.status.toUpperCase()});i(`Maintenance WO status set to ${n.manTransitionMaintenanceWorkOrder.status}`),h$1(e,n.manTransitionMaintenanceWorkOrder);}catch(n){g(n);}});}function dt(s){let r=s.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 b$1(G,{isActive:t.active,stage:t.stage?t.stage.toUpperCase():void 0});h$1(t,e.manListInspectionPlans,{headers:["ID","Code","Name","Stage","Product SKU","Active"],rows:e.manListInspectionPlans.map(n=>[p(n.id,12),n.code,p(n.name,24),n.stage,n.productSku??"-",n.isActive?"yes":"no"])});}catch(e){g(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=O("characteristics",t.characteristics));let n=await b$1(K,{input:e});i(`Inspection plan created: ${n.manCreateInspectionPlan.code}`),h$1(t,n.manCreateInspectionPlan);}catch(e){g(e);}});}function ut(s){let r=s.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",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(V,{pagination:{limit:t.limit,offset:t.offset},productionOrderId:t.productionOrder,result:t.result?t.result.toUpperCase():void 0});h$1(t,e.manListInspections.items,{headers:["ID","Stage","Result","Sample","Defects","Order"],rows:e.manListInspections.items.map(n=>[p(n.id,12),n.stage,n.result,String(n.sampleSize??0),String(n.defectCount??0),p(n.productionOrderId??"-",12)])});}catch(e){g(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 b$1(z,{id:t});if(!n.manInspection)throw new o(`Inspection ${t} not found`);h$1(e,n.manInspection);}catch(n){g(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",c).option("--defect-count <n>","Defect count",c).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=O("measurements",t.measurements)),t.notes&&(e.notes=t.notes),t.inspectedAt&&(e.inspectedAt=t.inspectedAt);let n=await b$1(Q,{input:e});i(`Inspection recorded: ${n.manRecordInspection.result}`),h$1(t,n.manRecordInspection);}catch(e){g(e);}});}function ct(s){let r=s.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",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(j,{pagination:{limit:t.limit,offset:t.offset},severity:t.severity?t.severity.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0});h$1(t,e.manListNonConformances.items,{headers:["ID","NCR #","Title","Severity","Status","Disposition"],rows:e.manListNonConformances.items.map(n=>[p(n.id,12),n.ncrNumber,p(n.title,24),n.severity,n.status,n.disposition])});}catch(e){g(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 b$1(J,{id:t});if(!n.manNonConformance)throw new o(`Non-conformance ${t} not found`);h$1(e,n.manNonConformance);}catch(n){g(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",m).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=f(t.tags));let n=await b$1(B,{input:e});i(`Non-conformance raised: ${n.manRaiseNonConformance.ncrNumber}`),h$1(t,n.manRaiseNonConformance);}catch(e){g(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",m).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=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let C=await b$1(Y,{id:t,input:n});i("Non-conformance updated"),h$1(e,C.manUpdateNonConformance);}catch(n){g(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 b$1(X,{id:t,status:e.status.toUpperCase()});i(`Non-conformance status set to ${n.manTransitionNonConformance.status}`),h$1(e,n.manTransitionNonConformance);}catch(n){g(n);}});}function pt(s){let r=s.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 b$1(Z,{assetId:t.asset,reason:t.reason?t.reason.toUpperCase():void 0,workCenterId:t.workCenter});h$1(t,e.manListDowntimeEvents,{headers:["ID","Reason","Minutes","Started","Asset","Work Center"],rows:e.manListDowntimeEvents.map(n=>[p(n.id,12),n.reason,String(n.durationMinutes),n.startedAt,p(n.assetId??"-",12),p(n.workCenterId??"-",12)])});}catch(e){g(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",c).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 b$1(tt,{input:e});i(`Downtime recorded: ${n.manRecordDowntime.reason}`),h$1(t,n.manRecordDowntime);}catch(e){g(e);}});}function mt(s){s.command("health").description("Manufacturedops service health check (public)").option("-f, --format <format>","Output format").action(async r=>{try{let t=await d(et);i(t.manHealth),h$1(r,{health:t.manHealth});}catch(t){g(t);}});}var ft={id:"manufacturedops",version:"1.0.0",displayName:"Manufacturedops",dependsOn:["auth","workspaces"],register(s,r){a(r);let t=s.command("manufacturedops").description("Manufacturedops manufacturing execution system");nt(t),rt(t),ot(t),it(t),at(t),st(t),dt(t),ut(t),ct(t),pt(t),mt(t);}},pe=ft;export{pe as default};
292
+ `;function O(s,r){try{return JSON.parse(r)}catch{throw new o(`--${s} must be valid JSON`)}}function c(s){let r=Number.parseInt(s,10);if(Number.isNaN(r))throw new o(`Expected an integer but got "${s}"`);return r}function m(s){let r=Number.parseFloat(s);if(Number.isNaN(r))throw new o(`Expected a number but got "${s}"`);return r}function f(s){return s.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function nt(s){let r$1=s.command("work-centers").description("Manufacturing work centers");r$1.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 b$1(E,{isActive:t.active});i(t,e.manListWorkCenters,{headers:["ID","Code","Name","Type","Capacity","Active"],rows:e.manListWorkCenters.map(n=>[r(n.id,12),n.code,n.name,n.type,String(n.capacityHours??0),n.isActive?"yes":"no"])});}catch(e){h$1(e);}}),r$1.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 b$1(R,{id:t});if(!n.manWorkCenter)throw new o(`Work center ${t} not found`);i(e,n.manWorkCenter);}catch(n){h$1(n);}}),r$1.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",m).option("--ideal-run-rate <n>","Ideal run rate",m).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=f(t.tags));let n=await b$1(y,{input:e});k$1(`Work center created: ${n.manCreateWorkCenter.code}`),i(t,n.manCreateWorkCenter);}catch(e){h$1(e);}}),r$1.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",m).option("--ideal-run-rate <n>","Ideal run rate",m).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=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let C=await b$1(S,{id:t,input:n});k$1("Work center updated"),i(e,C.manUpdateWorkCenter);}catch(n){h$1(n);}}),r$1.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 b$1(w,{id:t});k$1(`Work center archived: ${n.manArchiveWorkCenter}`),i(e,{archived:n.manArchiveWorkCenter});}catch(n){h$1(n);}});}function rt(s){let r$1=s.command("assets").description("Manufacturing assets / equipment");r$1.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",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(M,{pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0,workCenterId:t.workCenter});i(t,e.manListAssets.items,{headers:["ID","Tag","Name","Status","Run Hrs","PM Interval"],rows:e.manListAssets.items.map(n=>[r(n.id,12),n.assetTag,n.name,n.status,String(n.runningHours??0),String(n.pmIntervalHours??0)])});}catch(e){h$1(e);}}),r$1.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 b$1(k,{id:t});if(!n.manAsset)throw new o(`Asset ${t} not found`);i(e,n.manAsset);}catch(n){h$1(n);}}),r$1.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",m).option("--running-hours <n>","Initial running hours",m).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=f(t.tags));let n=await b$1(D,{input:e});k$1(`Asset created: ${n.manCreateAsset.assetTag}`),i(t,n.manCreateAsset);}catch(e){h$1(e);}}),r$1.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",m).option("--running-hours <n>","Running hours",m).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=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let C=await b$1(T,{id:t,input:n});k$1("Asset updated"),i(e,C.manUpdateAsset);}catch(n){h$1(n);}});}function ot(s){let r$1=s.command("production-orders").description("Production (work) orders");r$1.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",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(P,{pagination:{limit:t.limit,offset:t.offset},productSku:t.productSku,status:t.status?t.status.toUpperCase():void 0});i(t,e.manListProductionOrders.items,{headers:["ID","Order #","Product","Status","Priority","Qty","Done"],rows:e.manListProductionOrders.items.map(n=>[r(n.id,12),n.orderNumber,r(n.productName,20),n.status,n.priority,String(n.quantity??0),String(n.quantityDone??0)])});}catch(e){h$1(e);}}),r$1.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 b$1(L,{id:t});if(!n.manProductionOrder)throw new o(`Production order ${t} not found`);i(e,n.manProductionOrder);}catch(n){h$1(n);}}),r$1.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",m).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=f(t.tags));let n=await b$1(b,{input:e});k$1(`Production order created: ${n.manCreateProductionOrder.orderNumber}`),i(t,n.manCreateProductionOrder);}catch(e){h$1(e);}}),r$1.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",m).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=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let C=await b$1(h,{id:t,input:n});k$1("Production order updated"),i(e,C.manUpdateProductionOrder);}catch(n){h$1(n);}}),r$1.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 b$1(v,{id:t,status:e.status.toUpperCase()});k$1(`Production order status set to ${n.manTransitionProductionOrder.status}`),i(e,n.manTransitionProductionOrder);}catch(n){h$1(n);}});}function it(s){let r=s.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",c).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 b$1(_,{input:e});k$1(`Operation added: ${n.manAddOperation.name}`),i(t,n.manAddOperation);}catch(e){h$1(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",c).option("--run-minutes <n>","Run minutes",c).option("--good-count <n>","Good count",m).option("--scrap-count <n>","Scrap count",m).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 o("No progress fields specified");let C=await b$1($,{id:t,input:n});k$1("Operation progress recorded"),i(e,C.manRecordOperation);}catch(n){h$1(n);}});}function at(s){let r$1=s.command("material-lots").description("Material lots (traceability)");r$1.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",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(W,{pagination:{limit:t.limit,offset:t.offset},productionOrderId:t.productionOrder,status:t.status?t.status.toUpperCase():void 0});i(t,e.manListMaterialLots.items,{headers:["ID","Lot #","Material","SKU","Status","Qty"],rows:e.manListMaterialLots.items.map(n=>[r(n.id,12),n.lotNumber,r(n.materialName,20),n.materialSku,n.status,`${n.quantity??0} ${n.uom??""}`.trim()])});}catch(e){h$1(e);}}),r$1.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",m).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=f(t.tags));let n=await b$1(U,{input:e});k$1(`Material lot created: ${n.manCreateMaterialLot.lotNumber}`),i(t,n.manCreateMaterialLot);}catch(e){h$1(e);}}),r$1.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 b$1(q,{id:t,status:e.status.toUpperCase()});k$1(`Material lot status set to ${n.manSetMaterialLotStatus.status}`),i(e,n.manSetMaterialLotStatus);}catch(n){h$1(n);}});}function st(s){let r$1=s.command("maintenance").description("Maintenance work orders");r$1.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",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(H,{assetId:t.asset,pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0});i(t,e.manListMaintenanceWorkOrders.items,{headers:["ID","WO #","Title","Type","Status","Asset"],rows:e.manListMaintenanceWorkOrders.items.map(n=>[r(n.id,12),n.woNumber,r(n.title,24),n.type,n.status,r(n.assetId??"-",12)])});}catch(e){h$1(e);}}),r$1.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 b$1(x,{input:e});k$1(`Maintenance WO created: ${n.manCreateMaintenanceWorkOrder.woNumber}`),i(t,n.manCreateMaintenanceWorkOrder);}catch(e){h$1(e);}}),r$1.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 b$1(F,{id:t,status:e.status.toUpperCase()});k$1(`Maintenance WO status set to ${n.manTransitionMaintenanceWorkOrder.status}`),i(e,n.manTransitionMaintenanceWorkOrder);}catch(n){h$1(n);}});}function dt(s){let r$1=s.command("inspection-plans").description("Quality inspection plans");r$1.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 b$1(G,{isActive:t.active,stage:t.stage?t.stage.toUpperCase():void 0});i(t,e.manListInspectionPlans,{headers:["ID","Code","Name","Stage","Product SKU","Active"],rows:e.manListInspectionPlans.map(n=>[r(n.id,12),n.code,r(n.name,24),n.stage,n.productSku??"-",n.isActive?"yes":"no"])});}catch(e){h$1(e);}}),r$1.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=O("characteristics",t.characteristics));let n=await b$1(K,{input:e});k$1(`Inspection plan created: ${n.manCreateInspectionPlan.code}`),i(t,n.manCreateInspectionPlan);}catch(e){h$1(e);}});}function ut(s){let r$1=s.command("inspections").description("Quality inspections");r$1.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",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(V,{pagination:{limit:t.limit,offset:t.offset},productionOrderId:t.productionOrder,result:t.result?t.result.toUpperCase():void 0});i(t,e.manListInspections.items,{headers:["ID","Stage","Result","Sample","Defects","Order"],rows:e.manListInspections.items.map(n=>[r(n.id,12),n.stage,n.result,String(n.sampleSize??0),String(n.defectCount??0),r(n.productionOrderId??"-",12)])});}catch(e){h$1(e);}}),r$1.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 b$1(z,{id:t});if(!n.manInspection)throw new o(`Inspection ${t} not found`);i(e,n.manInspection);}catch(n){h$1(n);}}),r$1.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",c).option("--defect-count <n>","Defect count",c).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=O("measurements",t.measurements)),t.notes&&(e.notes=t.notes),t.inspectedAt&&(e.inspectedAt=t.inspectedAt);let n=await b$1(Q,{input:e});k$1(`Inspection recorded: ${n.manRecordInspection.result}`),i(t,n.manRecordInspection);}catch(e){h$1(e);}});}function ct(s){let r$1=s.command("non-conformances").description("Non-conformances (NCR / CAPA)");r$1.command("list").description("List non-conformances").option("--severity <s>","MINOR|MAJOR|CRITICAL").option("--status <s>","Filter by status").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(j,{pagination:{limit:t.limit,offset:t.offset},severity:t.severity?t.severity.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0});i(t,e.manListNonConformances.items,{headers:["ID","NCR #","Title","Severity","Status","Disposition"],rows:e.manListNonConformances.items.map(n=>[r(n.id,12),n.ncrNumber,r(n.title,24),n.severity,n.status,n.disposition])});}catch(e){h$1(e);}}),r$1.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 b$1(J,{id:t});if(!n.manNonConformance)throw new o(`Non-conformance ${t} not found`);i(e,n.manNonConformance);}catch(n){h$1(n);}}),r$1.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",m).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=f(t.tags));let n=await b$1(B,{input:e});k$1(`Non-conformance raised: ${n.manRaiseNonConformance.ncrNumber}`),i(t,n.manRaiseNonConformance);}catch(e){h$1(e);}}),r$1.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",m).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=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let C=await b$1(Y,{id:t,input:n});k$1("Non-conformance updated"),i(e,C.manUpdateNonConformance);}catch(n){h$1(n);}}),r$1.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 b$1(X,{id:t,status:e.status.toUpperCase()});k$1(`Non-conformance status set to ${n.manTransitionNonConformance.status}`),i(e,n.manTransitionNonConformance);}catch(n){h$1(n);}});}function pt(s){let r$1=s.command("downtime").description("Downtime events");r$1.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 b$1(Z,{assetId:t.asset,reason:t.reason?t.reason.toUpperCase():void 0,workCenterId:t.workCenter});i(t,e.manListDowntimeEvents,{headers:["ID","Reason","Minutes","Started","Asset","Work Center"],rows:e.manListDowntimeEvents.map(n=>[r(n.id,12),n.reason,String(n.durationMinutes),n.startedAt,r(n.assetId??"-",12),r(n.workCenterId??"-",12)])});}catch(e){h$1(e);}}),r$1.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",c).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 b$1(tt,{input:e});k$1(`Downtime recorded: ${n.manRecordDowntime.reason}`),i(t,n.manRecordDowntime);}catch(e){h$1(e);}});}function mt(s){s.command("health").description("Manufacturedops service health check (public)").option("-f, --format <format>","Output format").action(async r=>{try{let t=await d(et);k$1(t.manHealth),i(r,{health:t.manHealth});}catch(t){h$1(t);}});}var ft={id:"manufacturedops",version:"1.0.0",displayName:"Manufacturedops",dependsOn:["auth","workspaces"],register(s,r){a(r);let t=s.command("manufacturedops").description("Manufacturedops manufacturing execution system");nt(t),rt(t),ot(t),it(t),at(t),st(t),dt(t),ut(t),ct(t),pt(t),mt(t);}},pe=ft;export{pe as default};