@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.
- package/dist/chunk-O6UCQ5IT.js +1 -0
- package/dist/{chunk-AYNNSLCL.js → chunk-ZGT7IIOP.js} +409 -418
- package/dist/modules/adaptercloud/index.cjs +4 -4
- package/dist/modules/adaptercloud/index.js +2 -2
- package/dist/modules/artistrybase/index.js +2 -2
- package/dist/modules/assethandler/index.cjs +2 -2
- package/dist/modules/assethandler/index.js +2 -2
- package/dist/modules/atheletebridge/index.cjs +8 -8
- package/dist/modules/atheletebridge/index.js +2 -2
- package/dist/modules/auth/index.cjs +37 -37
- package/dist/modules/auth/index.js +33 -29
- package/dist/modules/billing/index.cjs +1 -1
- package/dist/modules/billing/index.js +2 -2
- package/dist/modules/brainyrich/index.cjs +44 -28
- package/dist/modules/brainyrich/index.js +47 -31
- package/dist/modules/buildmyiq/index.js +2 -2
- package/dist/modules/channels/index.cjs +3 -3
- package/dist/modules/channels/index.js +2 -2
- package/dist/modules/collabkin/index.cjs +4 -4
- package/dist/modules/collabkin/index.js +2 -2
- package/dist/modules/comradecircle/index.cjs +6 -6
- package/dist/modules/comradecircle/index.js +2 -2
- package/dist/modules/conversations/index.cjs +7 -7
- package/dist/modules/conversations/index.js +2 -2
- package/dist/modules/coolandlovely/index.cjs +2 -2
- package/dist/modules/coolandlovely/index.js +2 -2
- package/dist/modules/cosmicintersection/index.cjs +6 -6
- package/dist/modules/cosmicintersection/index.js +2 -2
- package/dist/modules/crewfoundry/index.js +2 -2
- package/dist/modules/devportal/index.cjs +2 -2
- package/dist/modules/devportal/index.js +2 -2
- package/dist/modules/ecoimpacthub/index.cjs +5 -5
- package/dist/modules/ecoimpacthub/index.js +2 -2
- package/dist/modules/eventfullymanaged/index.cjs +12 -12
- package/dist/modules/eventfullymanaged/index.js +2 -2
- package/dist/modules/export/index.cjs +4 -4
- package/dist/modules/export/index.js +2 -2
- package/dist/modules/files/index.cjs +3 -3
- package/dist/modules/files/index.js +4 -4
- package/dist/modules/fluidgrids/index.cjs +16 -16
- package/dist/modules/fluidgrids/index.js +3 -3
- package/dist/modules/ggnomad/index.cjs +4 -4
- package/dist/modules/ggnomad/index.js +2 -2
- package/dist/modules/govcitizenhub/index.cjs +4 -4
- package/dist/modules/govcitizenhub/index.js +2 -2
- package/dist/modules/groups/index.cjs +4 -4
- package/dist/modules/groups/index.js +2 -2
- package/dist/modules/headshotmarketing/index.js +2 -2
- package/dist/modules/hookmovies/index.cjs +6 -6
- package/dist/modules/hookmovies/index.js +2 -2
- package/dist/modules/housingvista/index.cjs +3 -3
- package/dist/modules/housingvista/index.js +2 -2
- package/dist/modules/integrations/index.cjs +5 -5
- package/dist/modules/integrations/index.js +2 -2
- package/dist/modules/intelwatchtower/index.cjs +5 -5
- package/dist/modules/intelwatchtower/index.js +2 -2
- package/dist/modules/kadaikodi/index.cjs +2 -2
- package/dist/modules/kadaikodi/index.js +2 -2
- package/dist/modules/labsofscience/index.cjs +3 -3
- package/dist/modules/labsofscience/index.js +2 -2
- package/dist/modules/manufacturedops/index.cjs +2 -2
- package/dist/modules/manufacturedops/index.js +2 -2
- package/dist/modules/movethewheels/index.js +2 -2
- package/dist/modules/notifications/index.cjs +2 -2
- package/dist/modules/notifications/index.js +2 -2
- package/dist/modules/organizations/index.js +2 -2
- package/dist/modules/planmagnet/index.js +2 -2
- package/dist/modules/products/index.cjs +4 -4
- package/dist/modules/products/index.js +2 -2
- package/dist/modules/proserviceworld/index.cjs +2 -2
- package/dist/modules/proserviceworld/index.js +2 -2
- package/dist/modules/rbac/index.js +2 -2
- package/dist/modules/sandbox/index.cjs +17 -17
- package/dist/modules/sandbox/index.js +1 -1
- package/dist/modules/scheduler/index.cjs +2 -2
- package/dist/modules/scheduler/index.js +2 -2
- package/dist/modules/security/index.cjs +3 -3
- package/dist/modules/security/index.js +2 -2
- package/dist/modules/semanticfed/index.cjs +3 -3
- package/dist/modules/semanticfed/index.js +2 -2
- package/dist/modules/store/index.cjs +3 -3
- package/dist/modules/store/index.js +2 -2
- package/dist/modules/subscriberbot/index.cjs +1 -1
- package/dist/modules/subscriberbot/index.js +2 -2
- package/dist/modules/support/index.cjs +2 -2
- package/dist/modules/support/index.js +2 -2
- package/dist/modules/tags/index.js +2 -2
- package/dist/modules/technospam/index.cjs +2 -2
- package/dist/modules/technospam/index.js +2 -2
- package/dist/modules/theculturepost/index.js +2 -2
- package/dist/modules/theglobalfuel/index.cjs +2 -2
- package/dist/modules/theglobalfuel/index.js +2 -2
- package/dist/modules/timecampus/index.js +2 -2
- package/dist/modules/tours/index.cjs +2 -2
- package/dist/modules/tours/index.js +2 -2
- package/dist/modules/vibecontrols/index.cjs +563 -567
- package/dist/modules/vibecontrols/index.js +5 -4
- package/dist/modules/workspaces/index.cjs +4 -4
- package/dist/modules/workspaces/index.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-W4JZR7RJ.js +0 -1
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
id name kind description isActive capabilities createdAt updatedAt workspaceId
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
`,
|
|
24
|
+
`,x=`
|
|
25
25
|
mutation SemUpdateConnector($id: ID!, $input: SemUpdateConnectorInput!) {
|
|
26
26
|
semUpdateConnector(id: $id, input: $input) {
|
|
27
27
|
id name kind description isActive capabilities updatedAt workspaceId
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
`,
|
|
30
|
+
`,R=`
|
|
31
31
|
mutation SemArchiveConnector($id: ID!) {
|
|
32
32
|
semArchiveConnector(id: $id)
|
|
33
33
|
}
|
|
@@ -284,4 +284,4 @@
|
|
|
284
284
|
query SemHealth {
|
|
285
285
|
semHealth
|
|
286
286
|
}
|
|
287
|
-
`;function f(r,o){try{return JSON.parse(o)}catch{throw new u(`--${r} must be valid JSON`)}}function l(r){let o=Number.parseInt(r,10);if(Number.isNaN(o))throw new u(`Expected an integer but got "${r}"`);return o}function y(r){return r.split(",").map(o=>o.trim()).filter(o=>o.length>0)}function C(r){let o={};return r.limit!==void 0&&(o.limit=r.limit),r.offset!==void 0&&(o.offset=r.offset),r.cursor&&(o.cursor=r.cursor),Object.keys(o).length?o:void 0}function me(r){let o=r.command("connectors").description("SemanticFed connectors (database/warehouse/API drivers)");o.command("list").description("List connectors").option("--kind <k>","Filter by connector kind (e.g. POSTGRES, BIGQUERY)").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Opaque pagination cursor").option("-f, --format <format>","Output format").action(async e=>{try{let n=(await c(D,{kind:e.kind?e.kind.toUpperCase():void 0,pagination:C(e)})).semListConnectors.items;s(e,n,{headers:["ID","Name","Kind","Active","Description"],rows:n.map(a=>[m(a.id,12),a.name,a.kind,a.isActive?"yes":"no",m(a.description??"",32)])});}catch(t){i(t);}}),o.command("get").description("Get a connector by id").argument("<id>","Connector ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(b,{id:e});if(!n.semConnector)throw new u(`Connector ${e} not found`);s(t,n.semConnector);}catch(n){i(n);}}),o.command("create").description("Create a connector").requiredOption("--name <name>","Connector name").option("--kind <k>","Connector kind (e.g. POSTGRES, BIGQUERY)","POSTGRES").option("--description <s>","Description").option("--capabilities <json>","Capabilities JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name,kind:(e.kind??"POSTGRES").toUpperCase()};e.description&&(t.description=e.description),e.capabilities&&(t.capabilities=f("capabilities",e.capabilities));let n=await c(O,{input:t});d(`Connector created: ${n.semCreateConnector.name}`),s(e,n.semCreateConnector);}catch(t){i(t);}}),o.command("update").description("Update a connector").argument("<id>","Connector ID").option("--name <name>","Connector name").option("--kind <k>","Connector kind").option("--description <s>","Description").option("--capabilities <json>","Capabilities JSON").option("--active <bool>","true|false",e=>e==="true").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n={};if(t.name&&(n.name=t.name),t.kind&&(n.kind=t.kind.toUpperCase()),t.description!==void 0&&(n.description=t.description),t.capabilities&&(n.capabilities=f("capabilities",t.capabilities)),t.active!==void 0&&(n.isActive=t.active),!Object.keys(n).length)throw new u("No updates specified");let a=await c(R,{id:e,input:n});d("Connector updated"),s(t,a.semUpdateConnector);}catch(n){i(n);}}),o.command("archive").description("Archive a connector").argument("<id>","Connector ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(x,{id:e});if(!n.semArchiveConnector)throw new u(`Connector ${e} could not be archived`);d(`Connector ${e} archived`),s(t,{archived:n.semArchiveConnector});}catch(n){i(n);}});}function le(r){let o=r.command("data-sources").description("SemanticFed data sources (federated query targets)");o.command("list").description("List data sources").option("--connector <id>","Filter by connector ID").option("--status <s>","Filter by data source status").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Opaque pagination cursor").option("-f, --format <format>","Output format").action(async e=>{try{let n=(await c(M,{connectorId:e.connector,status:e.status?e.status.toUpperCase():void 0,pagination:C(e)})).semListDataSources.items;s(e,n,{headers:["ID","Name","Connector","Status","Pushdown"],rows:n.map(a=>[m(a.id,12),a.name,m(a.connectorId,12),a.status,a.pushdownEnabled?"yes":"no"])});}catch(t){i(t);}}),o.command("get").description("Get a data source by id").argument("<id>","Data source ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(v,{id:e});if(!n.semDataSource)throw new u(`Data source ${e} not found`);s(t,n.semDataSource);}catch(n){i(n);}}),o.command("create").description("Create a data source").requiredOption("--connector <id>","Connector ID").requiredOption("--name <name>","Data source name").option("--description <s>","Description").option("--endpoint <json>","Endpoint JSON (host/db/url/\u2026)").option("--secret-ref <ref>","Secret reference (Key Vault key)").option("--pushdown <bool>","Enable predicate pushdown true|false",e=>e==="true").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={connectorId:e.connector,name:e.name};e.description&&(t.description=e.description),e.endpoint&&(t.endpoint=f("endpoint",e.endpoint)),e.secretRef&&(t.secretRef=e.secretRef),e.pushdown!==void 0&&(t.pushdownEnabled=e.pushdown),e.tags&&(t.tags=y(e.tags));let n=await c(_,{input:t});d(`Data source created: ${n.semCreateDataSource.name}`),s(e,n.semCreateDataSource);}catch(t){i(t);}}),o.command("update").description("Update a data source").argument("<id>","Data source ID").option("--name <name>","Data source name").option("--description <s>","Description").option("--endpoint <json>","Endpoint JSON").option("--secret-ref <ref>","Secret reference").option("--pushdown <bool>","Enable predicate pushdown true|false",e=>e==="true").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n={};if(t.name&&(n.name=t.name),t.description!==void 0&&(n.description=t.description),t.endpoint&&(n.endpoint=f("endpoint",t.endpoint)),t.secretRef&&(n.secretRef=t.secretRef),t.pushdown!==void 0&&(n.pushdownEnabled=t.pushdown),t.tags&&(n.tags=y(t.tags)),!Object.keys(n).length)throw new u("No updates specified");let a=await c($,{id:e,input:n});d("Data source updated"),s(t,a.semUpdateDataSource);}catch(n){i(n);}}),o.command("archive").description("Archive a data source").argument("<id>","Data source ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(L,{id:e});if(!n.semArchiveDataSource)throw new u(`Data source ${e} could not be archived`);d(`Data source ${e} archived`),s(t,{archived:n.semArchiveDataSource});}catch(n){i(n);}}),o.command("transition").description("Move a data source through its connectivity lifecycle").argument("<id>","Data source ID").requiredOption("--status <s>","DRAFT|CONNECTED|DEGRADED|DISCONNECTED|DISABLED").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(N,{id:e,status:t.status.toUpperCase()});d(`Data source status set to ${n.semTransitionDataSource.status}`),s(t,n.semTransitionDataSource);}catch(n){i(n);}}),o.command("connections").description("List connection health probes for a data source").argument("<dataSourceId>","Data source ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(q,{dataSourceId:e});s(t,n.semListConnections,{headers:["ID","Health","Latency (ms)","Probed At","Message"],rows:n.semListConnections.map(a=>[m(a.id,12),a.health,a.latencyMs!=null?String(a.latencyMs):"-",a.probedAt,m(a.message??"",32)])});}catch(n){i(n);}}),o.command("record-connection").description("Record a connection health probe for a data source").requiredOption("--data-source <id>","Data source ID").requiredOption("--health <h>","HEALTHY|DEGRADED|UNREACHABLE|UNKNOWN").option("--latency-ms <n>","Latency in milliseconds",l).option("--message <s>","Probe message").option("-f, --format <format>","Output format").action(async e=>{try{let t={dataSourceId:e.dataSource,health:e.health.toUpperCase()};e.latencyMs!==void 0&&(t.latencyMs=e.latencyMs),e.message&&(t.message=e.message);let n=await c(P,{input:t});d(`Connection recorded: ${n.semRecordConnection.health}`),s(e,n.semRecordConnection);}catch(t){i(t);}});}function fe(r){let o=r.command("models").description("SemanticFed semantic models (versioned entity/metric graphs)");o.command("list").description("List semantic models").option("--status <s>","Filter by model status (DRAFT|PUBLISHED|DEPRECATED|ARCHIVED)").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Opaque pagination cursor").option("-f, --format <format>","Output format").action(async e=>{try{let n=(await c(Q,{status:e.status?e.status.toUpperCase():void 0,pagination:C(e)})).semListModels.items;s(e,n,{headers:["ID","Name","Status","Version","Description"],rows:n.map(a=>[m(a.id,12),a.name,a.status,String(a.version),m(a.description??"",32)])});}catch(t){i(t);}}),o.command("get").description("Get a semantic model by id").argument("<id>","Model ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(U,{id:e});if(!n.semModel)throw new u(`Model ${e} not found`);s(t,n.semModel);}catch(n){i(n);}}),o.command("create").description("Create a semantic model").requiredOption("--name <name>","Model name").option("--description <s>","Description").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name};e.description&&(t.description=e.description),e.tags&&(t.tags=y(e.tags));let n=await c(F,{input:t});d(`Model created: ${n.semCreateModel.name}`),s(e,n.semCreateModel);}catch(t){i(t);}}),o.command("update").description("Update a semantic model").argument("<id>","Model ID").option("--name <name>","Model name").option("--description <s>","Description").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n={};if(t.name&&(n.name=t.name),t.description!==void 0&&(n.description=t.description),t.tags&&(n.tags=y(t.tags)),!Object.keys(n).length)throw new u("No updates specified");let a=await c(W,{id:e,input:n});d("Model updated"),s(t,a.semUpdateModel);}catch(n){i(n);}}),o.command("archive").description("Archive a semantic model").argument("<id>","Model ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(G,{id:e});if(!n.semArchiveModel)throw new u(`Model ${e} could not be archived`);d(`Model ${e} archived`),s(t,{archived:n.semArchiveModel});}catch(n){i(n);}}),o.command("publish").description("Publish a draft model (bumps version, flips status to PUBLISHED)").argument("<id>","Model ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(H,{id:e});d(`Model published (v${n.semPublishModel.version})`),s(t,n.semPublishModel);}catch(n){i(n);}});}function ge(r){let o=r.command("entities").description("SemanticFed entities (tables/views/derived datasets in a model)");o.command("list").description("List entities in a model").requiredOption("--model <id>","Model ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(Y,{modelId:e.model});s(e,t.semListEntities,{headers:["ID","Name","Kind","Physical Name","Primary Key"],rows:t.semListEntities.map(n=>[m(n.id,12),n.name,n.kind,n.physicalName??"-",n.primaryKey??"-"])});}catch(t){i(t);}}),o.command("get").description("Get an entity by id").argument("<id>","Entity ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(j,{id:e});if(!n.semEntity)throw new u(`Entity ${e} not found`);s(t,n.semEntity);}catch(n){i(n);}}),o.command("create").description("Create an entity").requiredOption("--model <id>","Model ID").requiredOption("--name <name>","Entity name").option("--kind <k>","TABLE|VIEW|DERIVED|EXTERNAL","TABLE").option("--data-source <id>","Backing data source ID").option("--physical-name <n>","Physical (DB) name").option("--primary-key <k>","Primary key column").option("--sql-definition <sql>","SQL definition (for derived entities)").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async e=>{try{let t={modelId:e.model,name:e.name,kind:(e.kind??"TABLE").toUpperCase()};e.dataSource&&(t.dataSourceId=e.dataSource),e.physicalName&&(t.physicalName=e.physicalName),e.primaryKey&&(t.primaryKey=e.primaryKey),e.sqlDefinition&&(t.sqlDefinition=e.sqlDefinition),e.description&&(t.description=e.description);let n=await c(V,{input:t});d(`Entity created: ${n.semCreateEntity.name}`),s(e,n.semCreateEntity);}catch(t){i(t);}}),o.command("update").description("Update an entity").argument("<id>","Entity ID").option("--name <name>","Entity name").option("--kind <k>","TABLE|VIEW|DERIVED|EXTERNAL").option("--data-source <id>","Backing data source ID").option("--physical-name <n>","Physical (DB) name").option("--primary-key <k>","Primary key column").option("--sql-definition <sql>","SQL definition").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n={};if(t.name&&(n.name=t.name),t.kind&&(n.kind=t.kind.toUpperCase()),t.dataSource&&(n.dataSourceId=t.dataSource),t.physicalName&&(n.physicalName=t.physicalName),t.primaryKey&&(n.primaryKey=t.primaryKey),t.sqlDefinition&&(n.sqlDefinition=t.sqlDefinition),t.description!==void 0&&(n.description=t.description),!Object.keys(n).length)throw new u("No updates specified");let a=await c(B,{id:e,input:n});d("Entity updated"),s(t,a.semUpdateEntity);}catch(n){i(n);}}),o.command("delete").description("Delete an entity").argument("<id>","Entity ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(K,{id:e});if(!n.semDeleteEntity)throw new u(`Entity ${e} could not be deleted`);d(`Entity ${e} deleted`),s(t,{deleted:n.semDeleteEntity});}catch(n){i(n);}});}function ye(r){r.command("dimensions").description("SemanticFed dimensions (queryable attributes on an entity)").command("create").description("Create a dimension").requiredOption("--entity <id>","Entity ID").requiredOption("--name <name>","Dimension name").option("--data-type <t>","STRING|INTEGER|DECIMAL|BOOLEAN|DATE|TIMESTAMP|JSON|GEO","STRING").option("--expression <e>","SQL expression").option("--primary","Mark as primary dimension").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async e=>{try{let t={entityId:e.entity,name:e.name,dataType:(e.dataType??"STRING").toUpperCase()};e.expression&&(t.expression=e.expression),e.primary&&(t.isPrimary=!0),e.description&&(t.description=e.description);let n=await c(J,{input:t});d(`Dimension created: ${n.semCreateDimension.name}`),s(e,n.semCreateDimension);}catch(t){i(t);}});}function Ce(r){r.command("metrics").description("SemanticFed metrics (aggregated measures on an entity)").command("create").description("Create a metric").requiredOption("--entity <id>","Entity ID").requiredOption("--name <name>","Metric name").option("--aggregation <a>","SUM|AVG|MIN|MAX|COUNT|COUNT_DISTINCT|MEDIAN|CUSTOM","SUM").option("--expression <e>","SQL expression").option("--format-spec <f>","Display format (e.g. currency, percent)").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async e=>{try{let t={entityId:e.entity,name:e.name,aggregation:(e.aggregation??"SUM").toUpperCase()};e.expression&&(t.expression=e.expression),e.formatSpec&&(t.format=e.formatSpec),e.description&&(t.description=e.description);let n=await c(z,{input:t});d(`Metric created: ${n.semCreateMetric.name}`),s(e,n.semCreateMetric);}catch(t){i(t);}});}function he(r){let o=r.command("relationships").description("SemanticFed relationships (joins between entities in a model)");o.command("list").description("List relationships in a model").requiredOption("--model <id>","Model ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(X,{modelId:e.model});s(e,t.semListRelationships,{headers:["ID","Name","Kind","From","To"],rows:t.semListRelationships.map(n=>[m(n.id,12),n.name,n.kind,`${m(n.fromEntityId,8)}.${n.fromField}`,`${m(n.toEntityId,8)}.${n.toField}`])});}catch(t){i(t);}}),o.command("create").description("Create a relationship").requiredOption("--model <id>","Model ID").requiredOption("--name <name>","Relationship name").requiredOption("--from-entity <id>","From entity ID").requiredOption("--from-field <f>","From field").requiredOption("--to-entity <id>","To entity ID").requiredOption("--to-field <f>","To field").option("--kind <k>","ONE_TO_ONE|ONE_TO_MANY|MANY_TO_ONE|MANY_TO_MANY","MANY_TO_ONE").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async e=>{try{let t={modelId:e.model,name:e.name,fromEntityId:e.fromEntity,fromField:e.fromField,toEntityId:e.toEntity,toField:e.toField,kind:(e.kind??"MANY_TO_ONE").toUpperCase()};e.description&&(t.description=e.description);let n=await c(Z,{input:t});d(`Relationship created: ${n.semCreateRelationship.name}`),s(e,n.semCreateRelationship);}catch(t){i(t);}});}function Ee(r){let o=r.command("queries").description("SemanticFed saved federated queries & run history");o.command("list").description("List saved queries").option("--model <id>","Filter by model ID").option("--status <s>","Filter by query status (DRAFT|PUBLISHED|ARCHIVED)").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Opaque pagination cursor").option("-f, --format <format>","Output format").action(async e=>{try{let n=(await c(te,{modelId:e.model,status:e.status?e.status.toUpperCase():void 0,pagination:C(e)})).semListQueries.items;s(e,n,{headers:["ID","Name","Status","Model","Cacheable"],rows:n.map(a=>[m(a.id,12),a.name,a.status,a.modelId?m(a.modelId,12):"-",a.cacheable?"yes":"no"])});}catch(t){i(t);}}),o.command("get").description("Get a saved query by id").argument("<id>","Query ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(ee,{id:e});if(!n.semQuery)throw new u(`Query ${e} not found`);s(t,n.semQuery);}catch(n){i(n);}}),o.command("create").description("Create a saved query").requiredOption("--name <name>","Query name").requiredOption("--query-text <sql>","Federated query text").option("--model <id>","Associated model ID").option("--description <s>","Description").option("--cacheable <bool>","true|false",e=>e==="true").option("--cache-ttl <n>","Cache TTL seconds",l).option("--parameters <json>","Parameters JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name,queryText:e.queryText};e.model&&(t.modelId=e.model),e.description&&(t.description=e.description),e.cacheable!==void 0&&(t.cacheable=e.cacheable),e.cacheTtl!==void 0&&(t.cacheTtlSeconds=e.cacheTtl),e.parameters&&(t.parameters=f("parameters",e.parameters)),e.tags&&(t.tags=y(e.tags));let n=await c(ne,{input:t});d(`Query created: ${n.semCreateQuery.name}`),s(e,n.semCreateQuery);}catch(t){i(t);}}),o.command("update").description("Update a saved query").argument("<id>","Query ID").option("--name <name>","Query name").option("--query-text <sql>","Federated query text").option("--model <id>","Associated model ID").option("--description <s>","Description").option("--cacheable <bool>","true|false",e=>e==="true").option("--cache-ttl <n>","Cache TTL seconds",l).option("--parameters <json>","Parameters JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n={};if(t.name&&(n.name=t.name),t.queryText&&(n.queryText=t.queryText),t.model&&(n.modelId=t.model),t.description!==void 0&&(n.description=t.description),t.cacheable!==void 0&&(n.cacheable=t.cacheable),t.cacheTtl!==void 0&&(n.cacheTtlSeconds=t.cacheTtl),t.parameters&&(n.parameters=f("parameters",t.parameters)),t.tags&&(n.tags=y(t.tags)),!Object.keys(n).length)throw new u("No updates specified");let a=await c(oe,{id:e,input:n});d("Query updated"),s(t,a.semUpdateQuery);}catch(n){i(n);}}),o.command("archive").description("Archive a saved query").argument("<id>","Query ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(re,{id:e});if(!n.semArchiveQuery)throw new u(`Query ${e} could not be archived`);d(`Query ${e} archived`),s(t,{archived:n.semArchiveQuery});}catch(n){i(n);}}),o.command("publish").description("Publish a draft query").argument("<id>","Query ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(ie,{id:e});d(`Query published: ${n.semPublishQuery.name}`),s(t,n.semPublishQuery);}catch(n){i(n);}}),o.command("run").description("Enqueue a federated execution of a saved query").argument("<id>","Query ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(se,{id:e});d(`Query run enqueued: ${n.semRunQuery.id} (${n.semRunQuery.status})`),s(t,n.semRunQuery);}catch(n){i(n);}}),o.command("runs").description("List run history for a saved query").requiredOption("--query <id>","Query ID").option("--status <s>","Filter by run status").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Opaque pagination cursor").option("-f, --format <format>","Output format").action(async e=>{try{let n=(await c(ae,{queryId:e.query,status:e.status?e.status.toUpperCase():void 0,pagination:C(e)})).semListQueryRuns.items;s(e,n,{headers:["ID","Status","Rows","Duration (ms)","Cached"],rows:n.map(a=>[m(a.id,12),a.status,a.rowCount!=null?String(a.rowCount):"-",a.durationMs!=null?String(a.durationMs):"-",a.fromCache?"yes":"no"])});}catch(t){i(t);}});}function Ie(r){let o=r.command("access-policies").description("SemanticFed access policies (row/column/entity governance)");o.command("list").description("List access policies").option("--entity <id>","Filter by entity ID").option("--model <id>","Filter by model ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(ce,{entityId:e.entity,modelId:e.model});s(e,t.semListAccessPolicies,{headers:["ID","Name","Principal","Effect","Scope","Active"],rows:t.semListAccessPolicies.map(n=>[m(n.id,12),n.name,n.principal,n.effect,n.scope,n.isActive?"yes":"no"])});}catch(t){i(t);}}),o.command("create").description("Create an access policy").requiredOption("--name <name>","Policy name").requiredOption("--principal <p>","Principal (user/role/group expression)").option("--effect <e>","ALLOW|DENY","ALLOW").option("--scope <s>","ROW|COLUMN|ENTITY","ROW").option("--entity <id>","Scoped entity ID").option("--model <id>","Scoped model ID").option("--rule <json>","Rule JSON (predicate / column list)").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name,principal:e.principal,effect:(e.effect??"ALLOW").toUpperCase(),scope:(e.scope??"ROW").toUpperCase()};e.entity&&(t.entityId=e.entity),e.model&&(t.modelId=e.model),e.rule&&(t.rule=f("rule",e.rule)),e.description&&(t.description=e.description);let n=await c(de,{input:t});d(`Access policy created: ${n.semCreateAccessPolicy.name}`),s(e,n.semCreateAccessPolicy);}catch(t){i(t);}}),o.command("set-active").description("Activate or deactivate an access policy").argument("<id>","Policy ID").requiredOption("--active <bool>","true|false",e=>e==="true").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(ue,{id:e,isActive:t.active});d(`Access policy ${e} ${n.semSetAccessPolicyActive.isActive?"activated":"deactivated"}`),s(t,n.semSetAccessPolicyActive);}catch(n){i(n);}});}function Se(r){r.command("health").description("SemanticFed subgraph liveness/identity probe (public)").option("-f, --format <format>","Output format").action(async o=>{try{let e=await w(pe);d(e.semHealth),s(o,{health:e.semHealth});}catch(e){i(e);}});}var $e={id:"semanticfed",version:"1.0.0",displayName:"SemanticFed",dependsOn:["auth","workspaces"],register(r,o){T(o);let e=r.command("semanticfed").description("SemanticFed data-federation & governed semantic layer");me(e),le(e),fe(e),ge(e),ye(e),Ce(e),he(e),Ee(e),Ie(e),Se(e);}},Mn=$e;module.exports=Mn;
|
|
287
|
+
`;function f(r,o){try{return JSON.parse(o)}catch{throw new u(`--${r} must be valid JSON`)}}function l(r){let o=Number.parseInt(r,10);if(Number.isNaN(o))throw new u(`Expected an integer but got "${r}"`);return o}function y(r){return r.split(",").map(o=>o.trim()).filter(o=>o.length>0)}function C(r){let o={};return r.limit!==void 0&&(o.limit=r.limit),r.offset!==void 0&&(o.offset=r.offset),r.cursor&&(o.cursor=r.cursor),Object.keys(o).length?o:void 0}function me(r){let o=r.command("connectors").description("SemanticFed connectors (database/warehouse/API drivers)");o.command("list").description("List connectors").option("--kind <k>","Filter by connector kind (e.g. POSTGRES, BIGQUERY)").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Opaque pagination cursor").option("-f, --format <format>","Output format").action(async e=>{try{let n=(await c(D,{kind:e.kind?e.kind.toUpperCase():void 0,pagination:C(e)})).semListConnectors.items;s(e,n,{headers:["ID","Name","Kind","Active","Description"],rows:n.map(a=>[m(a.id,12),a.name,a.kind,a.isActive?"yes":"no",m(a.description??"",32)])});}catch(t){i(t);}}),o.command("get").description("Get a connector by id").argument("<id>","Connector ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(b,{id:e});if(!n.semConnector)throw new u(`Connector ${e} not found`);s(t,n.semConnector);}catch(n){i(n);}}),o.command("create").description("Create a connector").requiredOption("--name <name>","Connector name").option("--kind <k>","Connector kind (e.g. POSTGRES, BIGQUERY)","POSTGRES").option("--description <s>","Description").option("--capabilities <json>","Capabilities JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name,kind:(e.kind??"POSTGRES").toUpperCase()};e.description&&(t.description=e.description),e.capabilities&&(t.capabilities=f("capabilities",e.capabilities));let n=await c(O,{input:t});d(`Connector created: ${n.semCreateConnector.name}`),s(e,n.semCreateConnector);}catch(t){i(t);}}),o.command("update").description("Update a connector").argument("<id>","Connector ID").option("--name <name>","Connector name").option("--kind <k>","Connector kind").option("--description <s>","Description").option("--capabilities <json>","Capabilities JSON").option("--active <bool>","true|false",e=>e==="true").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n={};if(t.name&&(n.name=t.name),t.kind&&(n.kind=t.kind.toUpperCase()),t.description!==void 0&&(n.description=t.description),t.capabilities&&(n.capabilities=f("capabilities",t.capabilities)),t.active!==void 0&&(n.isActive=t.active),!Object.keys(n).length)throw new u("No updates specified");let a=await c(x,{id:e,input:n});d("Connector updated"),s(t,a.semUpdateConnector);}catch(n){i(n);}}),o.command("archive").description("Archive a connector").argument("<id>","Connector ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(R,{id:e});if(!n.semArchiveConnector)throw new u(`Connector ${e} could not be archived`);d(`Connector ${e} archived`),s(t,{archived:n.semArchiveConnector});}catch(n){i(n);}});}function le(r){let o=r.command("data-sources").description("SemanticFed data sources (federated query targets)");o.command("list").description("List data sources").option("--connector <id>","Filter by connector ID").option("--status <s>","Filter by data source status").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Opaque pagination cursor").option("-f, --format <format>","Output format").action(async e=>{try{let n=(await c(M,{connectorId:e.connector,status:e.status?e.status.toUpperCase():void 0,pagination:C(e)})).semListDataSources.items;s(e,n,{headers:["ID","Name","Connector","Status","Pushdown"],rows:n.map(a=>[m(a.id,12),a.name,m(a.connectorId,12),a.status,a.pushdownEnabled?"yes":"no"])});}catch(t){i(t);}}),o.command("get").description("Get a data source by id").argument("<id>","Data source ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(v,{id:e});if(!n.semDataSource)throw new u(`Data source ${e} not found`);s(t,n.semDataSource);}catch(n){i(n);}}),o.command("create").description("Create a data source").requiredOption("--connector <id>","Connector ID").requiredOption("--name <name>","Data source name").option("--description <s>","Description").option("--endpoint <json>","Endpoint JSON (host/db/url/\u2026)").option("--secret-ref <ref>","Secret reference (Key Vault key)").option("--pushdown <bool>","Enable predicate pushdown true|false",e=>e==="true").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={connectorId:e.connector,name:e.name};e.description&&(t.description=e.description),e.endpoint&&(t.endpoint=f("endpoint",e.endpoint)),e.secretRef&&(t.secretRef=e.secretRef),e.pushdown!==void 0&&(t.pushdownEnabled=e.pushdown),e.tags&&(t.tags=y(e.tags));let n=await c(_,{input:t});d(`Data source created: ${n.semCreateDataSource.name}`),s(e,n.semCreateDataSource);}catch(t){i(t);}}),o.command("update").description("Update a data source").argument("<id>","Data source ID").option("--name <name>","Data source name").option("--description <s>","Description").option("--endpoint <json>","Endpoint JSON").option("--secret-ref <ref>","Secret reference").option("--pushdown <bool>","Enable predicate pushdown true|false",e=>e==="true").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n={};if(t.name&&(n.name=t.name),t.description!==void 0&&(n.description=t.description),t.endpoint&&(n.endpoint=f("endpoint",t.endpoint)),t.secretRef&&(n.secretRef=t.secretRef),t.pushdown!==void 0&&(n.pushdownEnabled=t.pushdown),t.tags&&(n.tags=y(t.tags)),!Object.keys(n).length)throw new u("No updates specified");let a=await c($,{id:e,input:n});d("Data source updated"),s(t,a.semUpdateDataSource);}catch(n){i(n);}}),o.command("archive").description("Archive a data source").argument("<id>","Data source ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(L,{id:e});if(!n.semArchiveDataSource)throw new u(`Data source ${e} could not be archived`);d(`Data source ${e} archived`),s(t,{archived:n.semArchiveDataSource});}catch(n){i(n);}}),o.command("transition").description("Move a data source through its connectivity lifecycle").argument("<id>","Data source ID").requiredOption("--status <s>","DRAFT|CONNECTED|DEGRADED|DISCONNECTED|DISABLED").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(N,{id:e,status:t.status.toUpperCase()});d(`Data source status set to ${n.semTransitionDataSource.status}`),s(t,n.semTransitionDataSource);}catch(n){i(n);}}),o.command("connections").description("List connection health probes for a data source").argument("<dataSourceId>","Data source ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(q,{dataSourceId:e});s(t,n.semListConnections,{headers:["ID","Health","Latency (ms)","Probed At","Message"],rows:n.semListConnections.map(a=>[m(a.id,12),a.health,a.latencyMs!=null?String(a.latencyMs):"-",a.probedAt,m(a.message??"",32)])});}catch(n){i(n);}}),o.command("record-connection").description("Record a connection health probe for a data source").requiredOption("--data-source <id>","Data source ID").requiredOption("--health <h>","HEALTHY|DEGRADED|UNREACHABLE|UNKNOWN").option("--latency-ms <n>","Latency in milliseconds",l).option("--message <s>","Probe message").option("-f, --format <format>","Output format").action(async e=>{try{let t={dataSourceId:e.dataSource,health:e.health.toUpperCase()};e.latencyMs!==void 0&&(t.latencyMs=e.latencyMs),e.message&&(t.message=e.message);let n=await c(P,{input:t});d(`Connection recorded: ${n.semRecordConnection.health}`),s(e,n.semRecordConnection);}catch(t){i(t);}});}function fe(r){let o=r.command("models").description("SemanticFed semantic models (versioned entity/metric graphs)");o.command("list").description("List semantic models").option("--status <s>","Filter by model status (DRAFT|PUBLISHED|DEPRECATED|ARCHIVED)").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Opaque pagination cursor").option("-f, --format <format>","Output format").action(async e=>{try{let n=(await c(Q,{status:e.status?e.status.toUpperCase():void 0,pagination:C(e)})).semListModels.items;s(e,n,{headers:["ID","Name","Status","Version","Description"],rows:n.map(a=>[m(a.id,12),a.name,a.status,String(a.version),m(a.description??"",32)])});}catch(t){i(t);}}),o.command("get").description("Get a semantic model by id").argument("<id>","Model ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(U,{id:e});if(!n.semModel)throw new u(`Model ${e} not found`);s(t,n.semModel);}catch(n){i(n);}}),o.command("create").description("Create a semantic model").requiredOption("--name <name>","Model name").option("--description <s>","Description").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name};e.description&&(t.description=e.description),e.tags&&(t.tags=y(e.tags));let n=await c(F,{input:t});d(`Model created: ${n.semCreateModel.name}`),s(e,n.semCreateModel);}catch(t){i(t);}}),o.command("update").description("Update a semantic model").argument("<id>","Model ID").option("--name <name>","Model name").option("--description <s>","Description").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n={};if(t.name&&(n.name=t.name),t.description!==void 0&&(n.description=t.description),t.tags&&(n.tags=y(t.tags)),!Object.keys(n).length)throw new u("No updates specified");let a=await c(W,{id:e,input:n});d("Model updated"),s(t,a.semUpdateModel);}catch(n){i(n);}}),o.command("archive").description("Archive a semantic model").argument("<id>","Model ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(G,{id:e});if(!n.semArchiveModel)throw new u(`Model ${e} could not be archived`);d(`Model ${e} archived`),s(t,{archived:n.semArchiveModel});}catch(n){i(n);}}),o.command("publish").description("Publish a draft model (bumps version, flips status to PUBLISHED)").argument("<id>","Model ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(H,{id:e});d(`Model published (v${n.semPublishModel.version})`),s(t,n.semPublishModel);}catch(n){i(n);}});}function ge(r){let o=r.command("entities").description("SemanticFed entities (tables/views/derived datasets in a model)");o.command("list").description("List entities in a model").requiredOption("--model <id>","Model ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(Y,{modelId:e.model});s(e,t.semListEntities,{headers:["ID","Name","Kind","Physical Name","Primary Key"],rows:t.semListEntities.map(n=>[m(n.id,12),n.name,n.kind,n.physicalName??"-",n.primaryKey??"-"])});}catch(t){i(t);}}),o.command("get").description("Get an entity by id").argument("<id>","Entity ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(j,{id:e});if(!n.semEntity)throw new u(`Entity ${e} not found`);s(t,n.semEntity);}catch(n){i(n);}}),o.command("create").description("Create an entity").requiredOption("--model <id>","Model ID").requiredOption("--name <name>","Entity name").option("--kind <k>","TABLE|VIEW|DERIVED|EXTERNAL","TABLE").option("--data-source <id>","Backing data source ID").option("--physical-name <n>","Physical (DB) name").option("--primary-key <k>","Primary key column").option("--sql-definition <sql>","SQL definition (for derived entities)").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async e=>{try{let t={modelId:e.model,name:e.name,kind:(e.kind??"TABLE").toUpperCase()};e.dataSource&&(t.dataSourceId=e.dataSource),e.physicalName&&(t.physicalName=e.physicalName),e.primaryKey&&(t.primaryKey=e.primaryKey),e.sqlDefinition&&(t.sqlDefinition=e.sqlDefinition),e.description&&(t.description=e.description);let n=await c(V,{input:t});d(`Entity created: ${n.semCreateEntity.name}`),s(e,n.semCreateEntity);}catch(t){i(t);}}),o.command("update").description("Update an entity").argument("<id>","Entity ID").option("--name <name>","Entity name").option("--kind <k>","TABLE|VIEW|DERIVED|EXTERNAL").option("--data-source <id>","Backing data source ID").option("--physical-name <n>","Physical (DB) name").option("--primary-key <k>","Primary key column").option("--sql-definition <sql>","SQL definition").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n={};if(t.name&&(n.name=t.name),t.kind&&(n.kind=t.kind.toUpperCase()),t.dataSource&&(n.dataSourceId=t.dataSource),t.physicalName&&(n.physicalName=t.physicalName),t.primaryKey&&(n.primaryKey=t.primaryKey),t.sqlDefinition&&(n.sqlDefinition=t.sqlDefinition),t.description!==void 0&&(n.description=t.description),!Object.keys(n).length)throw new u("No updates specified");let a=await c(B,{id:e,input:n});d("Entity updated"),s(t,a.semUpdateEntity);}catch(n){i(n);}}),o.command("delete").description("Delete an entity").argument("<id>","Entity ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(K,{id:e});if(!n.semDeleteEntity)throw new u(`Entity ${e} could not be deleted`);d(`Entity ${e} deleted`),s(t,{deleted:n.semDeleteEntity});}catch(n){i(n);}});}function ye(r){r.command("dimensions").description("SemanticFed dimensions (queryable attributes on an entity)").command("create").description("Create a dimension").requiredOption("--entity <id>","Entity ID").requiredOption("--name <name>","Dimension name").option("--data-type <t>","STRING|INTEGER|DECIMAL|BOOLEAN|DATE|TIMESTAMP|JSON|GEO","STRING").option("--expression <e>","SQL expression").option("--primary","Mark as primary dimension").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async e=>{try{let t={entityId:e.entity,name:e.name,dataType:(e.dataType??"STRING").toUpperCase()};e.expression&&(t.expression=e.expression),e.primary&&(t.isPrimary=!0),e.description&&(t.description=e.description);let n=await c(J,{input:t});d(`Dimension created: ${n.semCreateDimension.name}`),s(e,n.semCreateDimension);}catch(t){i(t);}});}function Ce(r){r.command("metrics").description("SemanticFed metrics (aggregated measures on an entity)").command("create").description("Create a metric").requiredOption("--entity <id>","Entity ID").requiredOption("--name <name>","Metric name").option("--aggregation <a>","SUM|AVG|MIN|MAX|COUNT|COUNT_DISTINCT|MEDIAN|CUSTOM","SUM").option("--expression <e>","SQL expression").option("--format-spec <f>","Display format (e.g. currency, percent)").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async e=>{try{let t={entityId:e.entity,name:e.name,aggregation:(e.aggregation??"SUM").toUpperCase()};e.expression&&(t.expression=e.expression),e.formatSpec&&(t.format=e.formatSpec),e.description&&(t.description=e.description);let n=await c(z,{input:t});d(`Metric created: ${n.semCreateMetric.name}`),s(e,n.semCreateMetric);}catch(t){i(t);}});}function he(r){let o=r.command("relationships").description("SemanticFed relationships (joins between entities in a model)");o.command("list").description("List relationships in a model").requiredOption("--model <id>","Model ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(X,{modelId:e.model});s(e,t.semListRelationships,{headers:["ID","Name","Kind","From","To"],rows:t.semListRelationships.map(n=>[m(n.id,12),n.name,n.kind,`${m(n.fromEntityId,8)}.${n.fromField}`,`${m(n.toEntityId,8)}.${n.toField}`])});}catch(t){i(t);}}),o.command("create").description("Create a relationship").requiredOption("--model <id>","Model ID").requiredOption("--name <name>","Relationship name").requiredOption("--from-entity <id>","From entity ID").requiredOption("--from-field <f>","From field").requiredOption("--to-entity <id>","To entity ID").requiredOption("--to-field <f>","To field").option("--kind <k>","ONE_TO_ONE|ONE_TO_MANY|MANY_TO_ONE|MANY_TO_MANY","MANY_TO_ONE").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async e=>{try{let t={modelId:e.model,name:e.name,fromEntityId:e.fromEntity,fromField:e.fromField,toEntityId:e.toEntity,toField:e.toField,kind:(e.kind??"MANY_TO_ONE").toUpperCase()};e.description&&(t.description=e.description);let n=await c(Z,{input:t});d(`Relationship created: ${n.semCreateRelationship.name}`),s(e,n.semCreateRelationship);}catch(t){i(t);}});}function Ee(r){let o=r.command("queries").description("SemanticFed saved federated queries & run history");o.command("list").description("List saved queries").option("--model <id>","Filter by model ID").option("--status <s>","Filter by query status (DRAFT|PUBLISHED|ARCHIVED)").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Opaque pagination cursor").option("-f, --format <format>","Output format").action(async e=>{try{let n=(await c(te,{modelId:e.model,status:e.status?e.status.toUpperCase():void 0,pagination:C(e)})).semListQueries.items;s(e,n,{headers:["ID","Name","Status","Model","Cacheable"],rows:n.map(a=>[m(a.id,12),a.name,a.status,a.modelId?m(a.modelId,12):"-",a.cacheable?"yes":"no"])});}catch(t){i(t);}}),o.command("get").description("Get a saved query by id").argument("<id>","Query ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(ee,{id:e});if(!n.semQuery)throw new u(`Query ${e} not found`);s(t,n.semQuery);}catch(n){i(n);}}),o.command("create").description("Create a saved query").requiredOption("--name <name>","Query name").requiredOption("--query-text <sql>","Federated query text").option("--model <id>","Associated model ID").option("--description <s>","Description").option("--cacheable <bool>","true|false",e=>e==="true").option("--cache-ttl <n>","Cache TTL seconds",l).option("--parameters <json>","Parameters JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name,queryText:e.queryText};e.model&&(t.modelId=e.model),e.description&&(t.description=e.description),e.cacheable!==void 0&&(t.cacheable=e.cacheable),e.cacheTtl!==void 0&&(t.cacheTtlSeconds=e.cacheTtl),e.parameters&&(t.parameters=f("parameters",e.parameters)),e.tags&&(t.tags=y(e.tags));let n=await c(ne,{input:t});d(`Query created: ${n.semCreateQuery.name}`),s(e,n.semCreateQuery);}catch(t){i(t);}}),o.command("update").description("Update a saved query").argument("<id>","Query ID").option("--name <name>","Query name").option("--query-text <sql>","Federated query text").option("--model <id>","Associated model ID").option("--description <s>","Description").option("--cacheable <bool>","true|false",e=>e==="true").option("--cache-ttl <n>","Cache TTL seconds",l).option("--parameters <json>","Parameters JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n={};if(t.name&&(n.name=t.name),t.queryText&&(n.queryText=t.queryText),t.model&&(n.modelId=t.model),t.description!==void 0&&(n.description=t.description),t.cacheable!==void 0&&(n.cacheable=t.cacheable),t.cacheTtl!==void 0&&(n.cacheTtlSeconds=t.cacheTtl),t.parameters&&(n.parameters=f("parameters",t.parameters)),t.tags&&(n.tags=y(t.tags)),!Object.keys(n).length)throw new u("No updates specified");let a=await c(oe,{id:e,input:n});d("Query updated"),s(t,a.semUpdateQuery);}catch(n){i(n);}}),o.command("archive").description("Archive a saved query").argument("<id>","Query ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(re,{id:e});if(!n.semArchiveQuery)throw new u(`Query ${e} could not be archived`);d(`Query ${e} archived`),s(t,{archived:n.semArchiveQuery});}catch(n){i(n);}}),o.command("publish").description("Publish a draft query").argument("<id>","Query ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(ie,{id:e});d(`Query published: ${n.semPublishQuery.name}`),s(t,n.semPublishQuery);}catch(n){i(n);}}),o.command("run").description("Enqueue a federated execution of a saved query").argument("<id>","Query ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(se,{id:e});d(`Query run enqueued: ${n.semRunQuery.id} (${n.semRunQuery.status})`),s(t,n.semRunQuery);}catch(n){i(n);}}),o.command("runs").description("List run history for a saved query").requiredOption("--query <id>","Query ID").option("--status <s>","Filter by run status").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Opaque pagination cursor").option("-f, --format <format>","Output format").action(async e=>{try{let n=(await c(ae,{queryId:e.query,status:e.status?e.status.toUpperCase():void 0,pagination:C(e)})).semListQueryRuns.items;s(e,n,{headers:["ID","Status","Rows","Duration (ms)","Cached"],rows:n.map(a=>[m(a.id,12),a.status,a.rowCount!=null?String(a.rowCount):"-",a.durationMs!=null?String(a.durationMs):"-",a.fromCache?"yes":"no"])});}catch(t){i(t);}});}function Ie(r){let o=r.command("access-policies").description("SemanticFed access policies (row/column/entity governance)");o.command("list").description("List access policies").option("--entity <id>","Filter by entity ID").option("--model <id>","Filter by model ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(ce,{entityId:e.entity,modelId:e.model});s(e,t.semListAccessPolicies,{headers:["ID","Name","Principal","Effect","Scope","Active"],rows:t.semListAccessPolicies.map(n=>[m(n.id,12),n.name,n.principal,n.effect,n.scope,n.isActive?"yes":"no"])});}catch(t){i(t);}}),o.command("create").description("Create an access policy").requiredOption("--name <name>","Policy name").requiredOption("--principal <p>","Principal (user/role/group expression)").option("--effect <e>","ALLOW|DENY","ALLOW").option("--scope <s>","ROW|COLUMN|ENTITY","ROW").option("--entity <id>","Scoped entity ID").option("--model <id>","Scoped model ID").option("--rule <json>","Rule JSON (predicate / column list)").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name,principal:e.principal,effect:(e.effect??"ALLOW").toUpperCase(),scope:(e.scope??"ROW").toUpperCase()};e.entity&&(t.entityId=e.entity),e.model&&(t.modelId=e.model),e.rule&&(t.rule=f("rule",e.rule)),e.description&&(t.description=e.description);let n=await c(de,{input:t});d(`Access policy created: ${n.semCreateAccessPolicy.name}`),s(e,n.semCreateAccessPolicy);}catch(t){i(t);}}),o.command("set-active").description("Activate or deactivate an access policy").argument("<id>","Policy ID").requiredOption("--active <bool>","true|false",e=>e==="true").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let n=await c(ue,{id:e,isActive:t.active});d(`Access policy ${e} ${n.semSetAccessPolicyActive.isActive?"activated":"deactivated"}`),s(t,n.semSetAccessPolicyActive);}catch(n){i(n);}});}function Se(r){r.command("health").description("SemanticFed subgraph liveness/identity probe (public)").option("-f, --format <format>","Output format").action(async o=>{try{let e=await w(pe);d(e.semHealth),s(o,{health:e.semHealth});}catch(e){i(e);}});}var $e={id:"semanticfed",version:"1.0.0",displayName:"SemanticFed",dependsOn:["auth","workspaces"],register(r,o){T(o);let e=r.command("semanticfed").description("SemanticFed data-federation & governed semantic layer");me(e),le(e),fe(e),ge(e),ye(e),Ce(e),he(e),Ee(e),Ie(e),Se(e);}},Mn=$e;module.exports=Mn;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {a,b as b$1,h as h$1,
|
|
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 h=`
|
|
2
2
|
query SemConnector($id: ID!) {
|
|
3
3
|
semConnector(id: $id) {
|
|
4
4
|
id name kind description isActive capabilities
|
|
@@ -284,4 +284,4 @@ import {a,b as b$1,h as h$1,p,g as g$1,i,d}from'../../chunk-W4JZR7RJ.js';import
|
|
|
284
284
|
query SemHealth {
|
|
285
285
|
semHealth
|
|
286
286
|
}
|
|
287
|
-
`;function g(d,i){try{return JSON.parse(i)}catch{throw new o(`--${d} must be valid JSON`)}}function u(d){let i=Number.parseInt(d,10);if(Number.isNaN(i))throw new o(`Expected an integer but got "${d}"`);return i}function E(d){return d.split(",").map(i=>i.trim()).filter(i=>i.length>0)}function S(d){let i={};return d.limit!==void 0&&(i.limit=d.limit),d.offset!==void 0&&(i.offset=d.offset),d.cursor&&(i.cursor=d.cursor),Object.keys(i).length?i:void 0}function st(d){let i$1=d.command("connectors").description("SemanticFed connectors (database/warehouse/API drivers)");i$1.command("list").description("List connectors").option("--kind <k>","Filter by connector kind (e.g. POSTGRES, BIGQUERY)").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Opaque pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let n=(await b$1(A,{kind:t.kind?t.kind.toUpperCase():void 0,pagination:S(t)})).semListConnectors.items;h$1(t,n,{headers:["ID","Name","Kind","Active","Description"],rows:n.map(a=>[p(a.id,12),a.name,a.kind,a.isActive?"yes":"no",p(a.description??"",32)])});}catch(e){g$1(e);}}),i$1.command("get").description("Get a connector by id").argument("<id>","Connector ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(h,{id:t});if(!n.semConnector)throw new o(`Connector ${t} not found`);h$1(e,n.semConnector);}catch(n){g$1(n);}}),i$1.command("create").description("Create a connector").requiredOption("--name <name>","Connector name").option("--kind <k>","Connector kind (e.g. POSTGRES, BIGQUERY)","POSTGRES").option("--description <s>","Description").option("--capabilities <json>","Capabilities JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,kind:(t.kind??"POSTGRES").toUpperCase()};t.description&&(e.description=t.description),t.capabilities&&(e.capabilities=g("capabilities",t.capabilities));let n=await b$1(D,{input:e});i(`Connector created: ${n.semCreateConnector.name}`),h$1(t,n.semCreateConnector);}catch(e){g$1(e);}}),i$1.command("update").description("Update a connector").argument("<id>","Connector ID").option("--name <name>","Connector name").option("--kind <k>","Connector kind").option("--description <s>","Description").option("--capabilities <json>","Capabilities JSON").option("--active <bool>","true|false",t=>t==="true").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.kind&&(n.kind=e.kind.toUpperCase()),e.description!==void 0&&(n.description=e.description),e.capabilities&&(n.capabilities=g("capabilities",e.capabilities)),e.active!==void 0&&(n.isActive=e.active),!Object.keys(n).length)throw new o("No updates specified");let a=await b$1(w,{id:t,input:n});i("Connector updated"),h$1(e,a.semUpdateConnector);}catch(n){g$1(n);}}),i$1.command("archive").description("Archive a connector").argument("<id>","Connector ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(R,{id:t});if(!n.semArchiveConnector)throw new o(`Connector ${t} could not be archived`);i(`Connector ${t} archived`),h$1(e,{archived:n.semArchiveConnector});}catch(n){g$1(n);}});}function ct(d){let i$1=d.command("data-sources").description("SemanticFed data sources (federated query targets)");i$1.command("list").description("List data sources").option("--connector <id>","Filter by connector ID").option("--status <s>","Filter by data source status").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Opaque pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let n=(await b$1(O,{connectorId:t.connector,status:t.status?t.status.toUpperCase():void 0,pagination:S(t)})).semListDataSources.items;h$1(t,n,{headers:["ID","Name","Connector","Status","Pushdown"],rows:n.map(a=>[p(a.id,12),a.name,p(a.connectorId,12),a.status,a.pushdownEnabled?"yes":"no"])});}catch(e){g$1(e);}}),i$1.command("get").description("Get a data source by id").argument("<id>","Data source ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(M,{id:t});if(!n.semDataSource)throw new o(`Data source ${t} not found`);h$1(e,n.semDataSource);}catch(n){g$1(n);}}),i$1.command("create").description("Create a data source").requiredOption("--connector <id>","Connector ID").requiredOption("--name <name>","Data source name").option("--description <s>","Description").option("--endpoint <json>","Endpoint JSON (host/db/url/\u2026)").option("--secret-ref <ref>","Secret reference (Key Vault key)").option("--pushdown <bool>","Enable predicate pushdown true|false",t=>t==="true").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={connectorId:t.connector,name:t.name};t.description&&(e.description=t.description),t.endpoint&&(e.endpoint=g("endpoint",t.endpoint)),t.secretRef&&(e.secretRef=t.secretRef),t.pushdown!==void 0&&(e.pushdownEnabled=t.pushdown),t.tags&&(e.tags=E(t.tags));let n=await b$1(T,{input:e});i(`Data source created: ${n.semCreateDataSource.name}`),h$1(t,n.semCreateDataSource);}catch(e){g$1(e);}}),i$1.command("update").description("Update a data source").argument("<id>","Data source ID").option("--name <name>","Data source name").option("--description <s>","Description").option("--endpoint <json>","Endpoint JSON").option("--secret-ref <ref>","Secret reference").option("--pushdown <bool>","Enable predicate pushdown 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.description!==void 0&&(n.description=e.description),e.endpoint&&(n.endpoint=g("endpoint",e.endpoint)),e.secretRef&&(n.secretRef=e.secretRef),e.pushdown!==void 0&&(n.pushdownEnabled=e.pushdown),e.tags&&(n.tags=E(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let a=await b$1(_,{id:t,input:n});i("Data source updated"),h$1(e,a.semUpdateDataSource);}catch(n){g$1(n);}}),i$1.command("archive").description("Archive a data source").argument("<id>","Data source ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(b,{id:t});if(!n.semArchiveDataSource)throw new o(`Data source ${t} could not be archived`);i(`Data source ${t} archived`),h$1(e,{archived:n.semArchiveDataSource});}catch(n){g$1(n);}}),i$1.command("transition").description("Move a data source through its connectivity lifecycle").argument("<id>","Data source ID").requiredOption("--status <s>","DRAFT|CONNECTED|DEGRADED|DISCONNECTED|DISABLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(k,{id:t,status:e.status.toUpperCase()});i(`Data source status set to ${n.semTransitionDataSource.status}`),h$1(e,n.semTransitionDataSource);}catch(n){g$1(n);}}),i$1.command("connections").description("List connection health probes for a data source").argument("<dataSourceId>","Data source ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1($,{dataSourceId:t});h$1(e,n.semListConnections,{headers:["ID","Health","Latency (ms)","Probed At","Message"],rows:n.semListConnections.map(a=>[p(a.id,12),a.health,a.latencyMs!=null?String(a.latencyMs):"-",a.probedAt,p(a.message??"",32)])});}catch(n){g$1(n);}}),i$1.command("record-connection").description("Record a connection health probe for a data source").requiredOption("--data-source <id>","Data source ID").requiredOption("--health <h>","HEALTHY|DEGRADED|UNREACHABLE|UNKNOWN").option("--latency-ms <n>","Latency in milliseconds",u).option("--message <s>","Probe message").option("-f, --format <format>","Output format").action(async t=>{try{let e={dataSourceId:t.dataSource,health:t.health.toUpperCase()};t.latencyMs!==void 0&&(e.latencyMs=t.latencyMs),t.message&&(e.message=t.message);let n=await b$1(N,{input:e});i(`Connection recorded: ${n.semRecordConnection.health}`),h$1(t,n.semRecordConnection);}catch(e){g$1(e);}});}function dt(d){let i$1=d.command("models").description("SemanticFed semantic models (versioned entity/metric graphs)");i$1.command("list").description("List semantic models").option("--status <s>","Filter by model status (DRAFT|PUBLISHED|DEPRECATED|ARCHIVED)").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Opaque pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let n=(await b$1(v,{status:t.status?t.status.toUpperCase():void 0,pagination:S(t)})).semListModels.items;h$1(t,n,{headers:["ID","Name","Status","Version","Description"],rows:n.map(a=>[p(a.id,12),a.name,a.status,String(a.version),p(a.description??"",32)])});}catch(e){g$1(e);}}),i$1.command("get").description("Get a semantic model by id").argument("<id>","Model ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(L,{id:t});if(!n.semModel)throw new o(`Model ${t} not found`);h$1(e,n.semModel);}catch(n){g$1(n);}}),i$1.command("create").description("Create a semantic model").requiredOption("--name <name>","Model name").option("--description <s>","Description").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.tags&&(e.tags=E(t.tags));let n=await b$1(U,{input:e});i(`Model created: ${n.semCreateModel.name}`),h$1(t,n.semCreateModel);}catch(e){g$1(e);}}),i$1.command("update").description("Update a semantic model").argument("<id>","Model ID").option("--name <name>","Model name").option("--description <s>","Description").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.description!==void 0&&(n.description=e.description),e.tags&&(n.tags=E(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let a=await b$1(q,{id:t,input:n});i("Model updated"),h$1(e,a.semUpdateModel);}catch(n){g$1(n);}}),i$1.command("archive").description("Archive a semantic model").argument("<id>","Model ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(P,{id:t});if(!n.semArchiveModel)throw new o(`Model ${t} could not be archived`);i(`Model ${t} archived`),h$1(e,{archived:n.semArchiveModel});}catch(n){g$1(n);}}),i$1.command("publish").description("Publish a draft model (bumps version, flips status to PUBLISHED)").argument("<id>","Model ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Q,{id:t});i(`Model published (v${n.semPublishModel.version})`),h$1(e,n.semPublishModel);}catch(n){g$1(n);}});}function mt(d){let i$1=d.command("entities").description("SemanticFed entities (tables/views/derived datasets in a model)");i$1.command("list").description("List entities in a model").requiredOption("--model <id>","Model ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(F,{modelId:t.model});h$1(t,e.semListEntities,{headers:["ID","Name","Kind","Physical Name","Primary Key"],rows:e.semListEntities.map(n=>[p(n.id,12),n.name,n.kind,n.physicalName??"-",n.primaryKey??"-"])});}catch(e){g$1(e);}}),i$1.command("get").description("Get an entity by id").argument("<id>","Entity ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(x,{id:t});if(!n.semEntity)throw new o(`Entity ${t} not found`);h$1(e,n.semEntity);}catch(n){g$1(n);}}),i$1.command("create").description("Create an entity").requiredOption("--model <id>","Model ID").requiredOption("--name <name>","Entity name").option("--kind <k>","TABLE|VIEW|DERIVED|EXTERNAL","TABLE").option("--data-source <id>","Backing data source ID").option("--physical-name <n>","Physical (DB) name").option("--primary-key <k>","Primary key column").option("--sql-definition <sql>","SQL definition (for derived entities)").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={modelId:t.model,name:t.name,kind:(t.kind??"TABLE").toUpperCase()};t.dataSource&&(e.dataSourceId=t.dataSource),t.physicalName&&(e.physicalName=t.physicalName),t.primaryKey&&(e.primaryKey=t.primaryKey),t.sqlDefinition&&(e.sqlDefinition=t.sqlDefinition),t.description&&(e.description=t.description);let n=await b$1(H,{input:e});i(`Entity created: ${n.semCreateEntity.name}`),h$1(t,n.semCreateEntity);}catch(e){g$1(e);}}),i$1.command("update").description("Update an entity").argument("<id>","Entity ID").option("--name <name>","Entity name").option("--kind <k>","TABLE|VIEW|DERIVED|EXTERNAL").option("--data-source <id>","Backing data source ID").option("--physical-name <n>","Physical (DB) name").option("--primary-key <k>","Primary key column").option("--sql-definition <sql>","SQL definition").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.kind&&(n.kind=e.kind.toUpperCase()),e.dataSource&&(n.dataSourceId=e.dataSource),e.physicalName&&(n.physicalName=e.physicalName),e.primaryKey&&(n.primaryKey=e.primaryKey),e.sqlDefinition&&(n.sqlDefinition=e.sqlDefinition),e.description!==void 0&&(n.description=e.description),!Object.keys(n).length)throw new o("No updates specified");let a=await b$1(Y,{id:t,input:n});i("Entity updated"),h$1(e,a.semUpdateEntity);}catch(n){g$1(n);}}),i$1.command("delete").description("Delete an entity").argument("<id>","Entity ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(B,{id:t});if(!n.semDeleteEntity)throw new o(`Entity ${t} could not be deleted`);i(`Entity ${t} deleted`),h$1(e,{deleted:n.semDeleteEntity});}catch(n){g$1(n);}});}function pt(d){d.command("dimensions").description("SemanticFed dimensions (queryable attributes on an entity)").command("create").description("Create a dimension").requiredOption("--entity <id>","Entity ID").requiredOption("--name <name>","Dimension name").option("--data-type <t>","STRING|INTEGER|DECIMAL|BOOLEAN|DATE|TIMESTAMP|JSON|GEO","STRING").option("--expression <e>","SQL expression").option("--primary","Mark as primary dimension").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={entityId:t.entity,name:t.name,dataType:(t.dataType??"STRING").toUpperCase()};t.expression&&(e.expression=t.expression),t.primary&&(e.isPrimary=!0),t.description&&(e.description=t.description);let n=await b$1(K,{input:e});i(`Dimension created: ${n.semCreateDimension.name}`),h$1(t,n.semCreateDimension);}catch(e){g$1(e);}});}function ut(d){d.command("metrics").description("SemanticFed metrics (aggregated measures on an entity)").command("create").description("Create a metric").requiredOption("--entity <id>","Entity ID").requiredOption("--name <name>","Metric name").option("--aggregation <a>","SUM|AVG|MIN|MAX|COUNT|COUNT_DISTINCT|MEDIAN|CUSTOM","SUM").option("--expression <e>","SQL expression").option("--format-spec <f>","Display format (e.g. currency, percent)").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={entityId:t.entity,name:t.name,aggregation:(t.aggregation??"SUM").toUpperCase()};t.expression&&(e.expression=t.expression),t.formatSpec&&(e.format=t.formatSpec),t.description&&(e.description=t.description);let n=await b$1(W,{input:e});i(`Metric created: ${n.semCreateMetric.name}`),h$1(t,n.semCreateMetric);}catch(e){g$1(e);}});}function lt(d){let i$1=d.command("relationships").description("SemanticFed relationships (joins between entities in a model)");i$1.command("list").description("List relationships in a model").requiredOption("--model <id>","Model ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(G,{modelId:t.model});h$1(t,e.semListRelationships,{headers:["ID","Name","Kind","From","To"],rows:e.semListRelationships.map(n=>[p(n.id,12),n.name,n.kind,`${p(n.fromEntityId,8)}.${n.fromField}`,`${p(n.toEntityId,8)}.${n.toField}`])});}catch(e){g$1(e);}}),i$1.command("create").description("Create a relationship").requiredOption("--model <id>","Model ID").requiredOption("--name <name>","Relationship name").requiredOption("--from-entity <id>","From entity ID").requiredOption("--from-field <f>","From field").requiredOption("--to-entity <id>","To entity ID").requiredOption("--to-field <f>","To field").option("--kind <k>","ONE_TO_ONE|ONE_TO_MANY|MANY_TO_ONE|MANY_TO_MANY","MANY_TO_ONE").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={modelId:t.model,name:t.name,fromEntityId:t.fromEntity,fromField:t.fromField,toEntityId:t.toEntity,toField:t.toField,kind:(t.kind??"MANY_TO_ONE").toUpperCase()};t.description&&(e.description=t.description);let n=await b$1(V,{input:e});i(`Relationship created: ${n.semCreateRelationship.name}`),h$1(t,n.semCreateRelationship);}catch(e){g$1(e);}});}function ft(d){let i$1=d.command("queries").description("SemanticFed saved federated queries & run history");i$1.command("list").description("List saved queries").option("--model <id>","Filter by model ID").option("--status <s>","Filter by query status (DRAFT|PUBLISHED|ARCHIVED)").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Opaque pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let n=(await b$1(J,{modelId:t.model,status:t.status?t.status.toUpperCase():void 0,pagination:S(t)})).semListQueries.items;h$1(t,n,{headers:["ID","Name","Status","Model","Cacheable"],rows:n.map(a=>[p(a.id,12),a.name,a.status,a.modelId?p(a.modelId,12):"-",a.cacheable?"yes":"no"])});}catch(e){g$1(e);}}),i$1.command("get").description("Get a saved query by id").argument("<id>","Query ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(j,{id:t});if(!n.semQuery)throw new o(`Query ${t} not found`);h$1(e,n.semQuery);}catch(n){g$1(n);}}),i$1.command("create").description("Create a saved query").requiredOption("--name <name>","Query name").requiredOption("--query-text <sql>","Federated query text").option("--model <id>","Associated model ID").option("--description <s>","Description").option("--cacheable <bool>","true|false",t=>t==="true").option("--cache-ttl <n>","Cache TTL seconds",u).option("--parameters <json>","Parameters JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,queryText:t.queryText};t.model&&(e.modelId=t.model),t.description&&(e.description=t.description),t.cacheable!==void 0&&(e.cacheable=t.cacheable),t.cacheTtl!==void 0&&(e.cacheTtlSeconds=t.cacheTtl),t.parameters&&(e.parameters=g("parameters",t.parameters)),t.tags&&(e.tags=E(t.tags));let n=await b$1(z,{input:e});i(`Query created: ${n.semCreateQuery.name}`),h$1(t,n.semCreateQuery);}catch(e){g$1(e);}}),i$1.command("update").description("Update a saved query").argument("<id>","Query ID").option("--name <name>","Query name").option("--query-text <sql>","Federated query text").option("--model <id>","Associated model ID").option("--description <s>","Description").option("--cacheable <bool>","true|false",t=>t==="true").option("--cache-ttl <n>","Cache TTL seconds",u).option("--parameters <json>","Parameters JSON").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.queryText&&(n.queryText=e.queryText),e.model&&(n.modelId=e.model),e.description!==void 0&&(n.description=e.description),e.cacheable!==void 0&&(n.cacheable=e.cacheable),e.cacheTtl!==void 0&&(n.cacheTtlSeconds=e.cacheTtl),e.parameters&&(n.parameters=g("parameters",e.parameters)),e.tags&&(n.tags=E(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let a=await b$1(X,{id:t,input:n});i("Query updated"),h$1(e,a.semUpdateQuery);}catch(n){g$1(n);}}),i$1.command("archive").description("Archive a saved query").argument("<id>","Query ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Z,{id:t});if(!n.semArchiveQuery)throw new o(`Query ${t} could not be archived`);i(`Query ${t} archived`),h$1(e,{archived:n.semArchiveQuery});}catch(n){g$1(n);}}),i$1.command("publish").description("Publish a draft query").argument("<id>","Query ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(tt,{id:t});i(`Query published: ${n.semPublishQuery.name}`),h$1(e,n.semPublishQuery);}catch(n){g$1(n);}}),i$1.command("run").description("Enqueue a federated execution of a saved query").argument("<id>","Query ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(et,{id:t});i(`Query run enqueued: ${n.semRunQuery.id} (${n.semRunQuery.status})`),h$1(e,n.semRunQuery);}catch(n){g$1(n);}}),i$1.command("runs").description("List run history for a saved query").requiredOption("--query <id>","Query ID").option("--status <s>","Filter by run status").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Opaque pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let n=(await b$1(nt,{queryId:t.query,status:t.status?t.status.toUpperCase():void 0,pagination:S(t)})).semListQueryRuns.items;h$1(t,n,{headers:["ID","Status","Rows","Duration (ms)","Cached"],rows:n.map(a=>[p(a.id,12),a.status,a.rowCount!=null?String(a.rowCount):"-",a.durationMs!=null?String(a.durationMs):"-",a.fromCache?"yes":"no"])});}catch(e){g$1(e);}});}function gt(d){let i$1=d.command("access-policies").description("SemanticFed access policies (row/column/entity governance)");i$1.command("list").description("List access policies").option("--entity <id>","Filter by entity ID").option("--model <id>","Filter by model ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(it,{entityId:t.entity,modelId:t.model});h$1(t,e.semListAccessPolicies,{headers:["ID","Name","Principal","Effect","Scope","Active"],rows:e.semListAccessPolicies.map(n=>[p(n.id,12),n.name,n.principal,n.effect,n.scope,n.isActive?"yes":"no"])});}catch(e){g$1(e);}}),i$1.command("create").description("Create an access policy").requiredOption("--name <name>","Policy name").requiredOption("--principal <p>","Principal (user/role/group expression)").option("--effect <e>","ALLOW|DENY","ALLOW").option("--scope <s>","ROW|COLUMN|ENTITY","ROW").option("--entity <id>","Scoped entity ID").option("--model <id>","Scoped model ID").option("--rule <json>","Rule JSON (predicate / column list)").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,principal:t.principal,effect:(t.effect??"ALLOW").toUpperCase(),scope:(t.scope??"ROW").toUpperCase()};t.entity&&(e.entityId=t.entity),t.model&&(e.modelId=t.model),t.rule&&(e.rule=g("rule",t.rule)),t.description&&(e.description=t.description);let n=await b$1(ot,{input:e});i(`Access policy created: ${n.semCreateAccessPolicy.name}`),h$1(t,n.semCreateAccessPolicy);}catch(e){g$1(e);}}),i$1.command("set-active").description("Activate or deactivate an access policy").argument("<id>","Policy ID").requiredOption("--active <bool>","true|false",t=>t==="true").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(rt,{id:t,isActive:e.active});i(`Access policy ${t} ${n.semSetAccessPolicyActive.isActive?"activated":"deactivated"}`),h$1(e,n.semSetAccessPolicyActive);}catch(n){g$1(n);}});}function yt(d$1){d$1.command("health").description("SemanticFed subgraph liveness/identity probe (public)").option("-f, --format <format>","Output format").action(async i$1=>{try{let t=await d(at);i(t.semHealth),h$1(i$1,{health:t.semHealth});}catch(t){g$1(t);}});}var Et={id:"semanticfed",version:"1.0.0",displayName:"SemanticFed",dependsOn:["auth","workspaces"],register(d,i){a(i);let t=d.command("semanticfed").description("SemanticFed data-federation & governed semantic layer");st(t),ct(t),dt(t),mt(t),pt(t),ut(t),lt(t),ft(t),gt(t),yt(t);}},pe=Et;export{pe as default};
|
|
287
|
+
`;function g(d,i){try{return JSON.parse(i)}catch{throw new o(`--${d} must be valid JSON`)}}function u(d){let i=Number.parseInt(d,10);if(Number.isNaN(i))throw new o(`Expected an integer but got "${d}"`);return i}function E(d){return d.split(",").map(i=>i.trim()).filter(i=>i.length>0)}function S(d){let i={};return d.limit!==void 0&&(i.limit=d.limit),d.offset!==void 0&&(i.offset=d.offset),d.cursor&&(i.cursor=d.cursor),Object.keys(i).length?i:void 0}function st(d){let i$1=d.command("connectors").description("SemanticFed connectors (database/warehouse/API drivers)");i$1.command("list").description("List connectors").option("--kind <k>","Filter by connector kind (e.g. POSTGRES, BIGQUERY)").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Opaque pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let n=(await b$1(A,{kind:t.kind?t.kind.toUpperCase():void 0,pagination:S(t)})).semListConnectors.items;i(t,n,{headers:["ID","Name","Kind","Active","Description"],rows:n.map(a=>[r(a.id,12),a.name,a.kind,a.isActive?"yes":"no",r(a.description??"",32)])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a connector by id").argument("<id>","Connector ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(h,{id:t});if(!n.semConnector)throw new o(`Connector ${t} not found`);i(e,n.semConnector);}catch(n){h$1(n);}}),i$1.command("create").description("Create a connector").requiredOption("--name <name>","Connector name").option("--kind <k>","Connector kind (e.g. POSTGRES, BIGQUERY)","POSTGRES").option("--description <s>","Description").option("--capabilities <json>","Capabilities JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,kind:(t.kind??"POSTGRES").toUpperCase()};t.description&&(e.description=t.description),t.capabilities&&(e.capabilities=g("capabilities",t.capabilities));let n=await b$1(D,{input:e});k$1(`Connector created: ${n.semCreateConnector.name}`),i(t,n.semCreateConnector);}catch(e){h$1(e);}}),i$1.command("update").description("Update a connector").argument("<id>","Connector ID").option("--name <name>","Connector name").option("--kind <k>","Connector kind").option("--description <s>","Description").option("--capabilities <json>","Capabilities JSON").option("--active <bool>","true|false",t=>t==="true").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.kind&&(n.kind=e.kind.toUpperCase()),e.description!==void 0&&(n.description=e.description),e.capabilities&&(n.capabilities=g("capabilities",e.capabilities)),e.active!==void 0&&(n.isActive=e.active),!Object.keys(n).length)throw new o("No updates specified");let a=await b$1(w,{id:t,input:n});k$1("Connector updated"),i(e,a.semUpdateConnector);}catch(n){h$1(n);}}),i$1.command("archive").description("Archive a connector").argument("<id>","Connector ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(R,{id:t});if(!n.semArchiveConnector)throw new o(`Connector ${t} could not be archived`);k$1(`Connector ${t} archived`),i(e,{archived:n.semArchiveConnector});}catch(n){h$1(n);}});}function ct(d){let i$1=d.command("data-sources").description("SemanticFed data sources (federated query targets)");i$1.command("list").description("List data sources").option("--connector <id>","Filter by connector ID").option("--status <s>","Filter by data source status").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Opaque pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let n=(await b$1(O,{connectorId:t.connector,status:t.status?t.status.toUpperCase():void 0,pagination:S(t)})).semListDataSources.items;i(t,n,{headers:["ID","Name","Connector","Status","Pushdown"],rows:n.map(a=>[r(a.id,12),a.name,r(a.connectorId,12),a.status,a.pushdownEnabled?"yes":"no"])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a data source by id").argument("<id>","Data source ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(M,{id:t});if(!n.semDataSource)throw new o(`Data source ${t} not found`);i(e,n.semDataSource);}catch(n){h$1(n);}}),i$1.command("create").description("Create a data source").requiredOption("--connector <id>","Connector ID").requiredOption("--name <name>","Data source name").option("--description <s>","Description").option("--endpoint <json>","Endpoint JSON (host/db/url/\u2026)").option("--secret-ref <ref>","Secret reference (Key Vault key)").option("--pushdown <bool>","Enable predicate pushdown true|false",t=>t==="true").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={connectorId:t.connector,name:t.name};t.description&&(e.description=t.description),t.endpoint&&(e.endpoint=g("endpoint",t.endpoint)),t.secretRef&&(e.secretRef=t.secretRef),t.pushdown!==void 0&&(e.pushdownEnabled=t.pushdown),t.tags&&(e.tags=E(t.tags));let n=await b$1(T,{input:e});k$1(`Data source created: ${n.semCreateDataSource.name}`),i(t,n.semCreateDataSource);}catch(e){h$1(e);}}),i$1.command("update").description("Update a data source").argument("<id>","Data source ID").option("--name <name>","Data source name").option("--description <s>","Description").option("--endpoint <json>","Endpoint JSON").option("--secret-ref <ref>","Secret reference").option("--pushdown <bool>","Enable predicate pushdown 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.description!==void 0&&(n.description=e.description),e.endpoint&&(n.endpoint=g("endpoint",e.endpoint)),e.secretRef&&(n.secretRef=e.secretRef),e.pushdown!==void 0&&(n.pushdownEnabled=e.pushdown),e.tags&&(n.tags=E(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let a=await b$1(_,{id:t,input:n});k$1("Data source updated"),i(e,a.semUpdateDataSource);}catch(n){h$1(n);}}),i$1.command("archive").description("Archive a data source").argument("<id>","Data source ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(b,{id:t});if(!n.semArchiveDataSource)throw new o(`Data source ${t} could not be archived`);k$1(`Data source ${t} archived`),i(e,{archived:n.semArchiveDataSource});}catch(n){h$1(n);}}),i$1.command("transition").description("Move a data source through its connectivity lifecycle").argument("<id>","Data source ID").requiredOption("--status <s>","DRAFT|CONNECTED|DEGRADED|DISCONNECTED|DISABLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(k,{id:t,status:e.status.toUpperCase()});k$1(`Data source status set to ${n.semTransitionDataSource.status}`),i(e,n.semTransitionDataSource);}catch(n){h$1(n);}}),i$1.command("connections").description("List connection health probes for a data source").argument("<dataSourceId>","Data source ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1($,{dataSourceId:t});i(e,n.semListConnections,{headers:["ID","Health","Latency (ms)","Probed At","Message"],rows:n.semListConnections.map(a=>[r(a.id,12),a.health,a.latencyMs!=null?String(a.latencyMs):"-",a.probedAt,r(a.message??"",32)])});}catch(n){h$1(n);}}),i$1.command("record-connection").description("Record a connection health probe for a data source").requiredOption("--data-source <id>","Data source ID").requiredOption("--health <h>","HEALTHY|DEGRADED|UNREACHABLE|UNKNOWN").option("--latency-ms <n>","Latency in milliseconds",u).option("--message <s>","Probe message").option("-f, --format <format>","Output format").action(async t=>{try{let e={dataSourceId:t.dataSource,health:t.health.toUpperCase()};t.latencyMs!==void 0&&(e.latencyMs=t.latencyMs),t.message&&(e.message=t.message);let n=await b$1(N,{input:e});k$1(`Connection recorded: ${n.semRecordConnection.health}`),i(t,n.semRecordConnection);}catch(e){h$1(e);}});}function dt(d){let i$1=d.command("models").description("SemanticFed semantic models (versioned entity/metric graphs)");i$1.command("list").description("List semantic models").option("--status <s>","Filter by model status (DRAFT|PUBLISHED|DEPRECATED|ARCHIVED)").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Opaque pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let n=(await b$1(v,{status:t.status?t.status.toUpperCase():void 0,pagination:S(t)})).semListModels.items;i(t,n,{headers:["ID","Name","Status","Version","Description"],rows:n.map(a=>[r(a.id,12),a.name,a.status,String(a.version),r(a.description??"",32)])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a semantic model by id").argument("<id>","Model ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(L,{id:t});if(!n.semModel)throw new o(`Model ${t} not found`);i(e,n.semModel);}catch(n){h$1(n);}}),i$1.command("create").description("Create a semantic model").requiredOption("--name <name>","Model name").option("--description <s>","Description").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.tags&&(e.tags=E(t.tags));let n=await b$1(U,{input:e});k$1(`Model created: ${n.semCreateModel.name}`),i(t,n.semCreateModel);}catch(e){h$1(e);}}),i$1.command("update").description("Update a semantic model").argument("<id>","Model ID").option("--name <name>","Model name").option("--description <s>","Description").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.description!==void 0&&(n.description=e.description),e.tags&&(n.tags=E(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let a=await b$1(q,{id:t,input:n});k$1("Model updated"),i(e,a.semUpdateModel);}catch(n){h$1(n);}}),i$1.command("archive").description("Archive a semantic model").argument("<id>","Model ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(P,{id:t});if(!n.semArchiveModel)throw new o(`Model ${t} could not be archived`);k$1(`Model ${t} archived`),i(e,{archived:n.semArchiveModel});}catch(n){h$1(n);}}),i$1.command("publish").description("Publish a draft model (bumps version, flips status to PUBLISHED)").argument("<id>","Model ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Q,{id:t});k$1(`Model published (v${n.semPublishModel.version})`),i(e,n.semPublishModel);}catch(n){h$1(n);}});}function mt(d){let i$1=d.command("entities").description("SemanticFed entities (tables/views/derived datasets in a model)");i$1.command("list").description("List entities in a model").requiredOption("--model <id>","Model ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(F,{modelId:t.model});i(t,e.semListEntities,{headers:["ID","Name","Kind","Physical Name","Primary Key"],rows:e.semListEntities.map(n=>[r(n.id,12),n.name,n.kind,n.physicalName??"-",n.primaryKey??"-"])});}catch(e){h$1(e);}}),i$1.command("get").description("Get an entity by id").argument("<id>","Entity ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(x,{id:t});if(!n.semEntity)throw new o(`Entity ${t} not found`);i(e,n.semEntity);}catch(n){h$1(n);}}),i$1.command("create").description("Create an entity").requiredOption("--model <id>","Model ID").requiredOption("--name <name>","Entity name").option("--kind <k>","TABLE|VIEW|DERIVED|EXTERNAL","TABLE").option("--data-source <id>","Backing data source ID").option("--physical-name <n>","Physical (DB) name").option("--primary-key <k>","Primary key column").option("--sql-definition <sql>","SQL definition (for derived entities)").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={modelId:t.model,name:t.name,kind:(t.kind??"TABLE").toUpperCase()};t.dataSource&&(e.dataSourceId=t.dataSource),t.physicalName&&(e.physicalName=t.physicalName),t.primaryKey&&(e.primaryKey=t.primaryKey),t.sqlDefinition&&(e.sqlDefinition=t.sqlDefinition),t.description&&(e.description=t.description);let n=await b$1(H,{input:e});k$1(`Entity created: ${n.semCreateEntity.name}`),i(t,n.semCreateEntity);}catch(e){h$1(e);}}),i$1.command("update").description("Update an entity").argument("<id>","Entity ID").option("--name <name>","Entity name").option("--kind <k>","TABLE|VIEW|DERIVED|EXTERNAL").option("--data-source <id>","Backing data source ID").option("--physical-name <n>","Physical (DB) name").option("--primary-key <k>","Primary key column").option("--sql-definition <sql>","SQL definition").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.kind&&(n.kind=e.kind.toUpperCase()),e.dataSource&&(n.dataSourceId=e.dataSource),e.physicalName&&(n.physicalName=e.physicalName),e.primaryKey&&(n.primaryKey=e.primaryKey),e.sqlDefinition&&(n.sqlDefinition=e.sqlDefinition),e.description!==void 0&&(n.description=e.description),!Object.keys(n).length)throw new o("No updates specified");let a=await b$1(Y,{id:t,input:n});k$1("Entity updated"),i(e,a.semUpdateEntity);}catch(n){h$1(n);}}),i$1.command("delete").description("Delete an entity").argument("<id>","Entity ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(B,{id:t});if(!n.semDeleteEntity)throw new o(`Entity ${t} could not be deleted`);k$1(`Entity ${t} deleted`),i(e,{deleted:n.semDeleteEntity});}catch(n){h$1(n);}});}function pt(d){d.command("dimensions").description("SemanticFed dimensions (queryable attributes on an entity)").command("create").description("Create a dimension").requiredOption("--entity <id>","Entity ID").requiredOption("--name <name>","Dimension name").option("--data-type <t>","STRING|INTEGER|DECIMAL|BOOLEAN|DATE|TIMESTAMP|JSON|GEO","STRING").option("--expression <e>","SQL expression").option("--primary","Mark as primary dimension").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={entityId:t.entity,name:t.name,dataType:(t.dataType??"STRING").toUpperCase()};t.expression&&(e.expression=t.expression),t.primary&&(e.isPrimary=!0),t.description&&(e.description=t.description);let n=await b$1(K,{input:e});k$1(`Dimension created: ${n.semCreateDimension.name}`),i(t,n.semCreateDimension);}catch(e){h$1(e);}});}function ut(d){d.command("metrics").description("SemanticFed metrics (aggregated measures on an entity)").command("create").description("Create a metric").requiredOption("--entity <id>","Entity ID").requiredOption("--name <name>","Metric name").option("--aggregation <a>","SUM|AVG|MIN|MAX|COUNT|COUNT_DISTINCT|MEDIAN|CUSTOM","SUM").option("--expression <e>","SQL expression").option("--format-spec <f>","Display format (e.g. currency, percent)").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={entityId:t.entity,name:t.name,aggregation:(t.aggregation??"SUM").toUpperCase()};t.expression&&(e.expression=t.expression),t.formatSpec&&(e.format=t.formatSpec),t.description&&(e.description=t.description);let n=await b$1(W,{input:e});k$1(`Metric created: ${n.semCreateMetric.name}`),i(t,n.semCreateMetric);}catch(e){h$1(e);}});}function lt(d){let i$1=d.command("relationships").description("SemanticFed relationships (joins between entities in a model)");i$1.command("list").description("List relationships in a model").requiredOption("--model <id>","Model ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(G,{modelId:t.model});i(t,e.semListRelationships,{headers:["ID","Name","Kind","From","To"],rows:e.semListRelationships.map(n=>[r(n.id,12),n.name,n.kind,`${r(n.fromEntityId,8)}.${n.fromField}`,`${r(n.toEntityId,8)}.${n.toField}`])});}catch(e){h$1(e);}}),i$1.command("create").description("Create a relationship").requiredOption("--model <id>","Model ID").requiredOption("--name <name>","Relationship name").requiredOption("--from-entity <id>","From entity ID").requiredOption("--from-field <f>","From field").requiredOption("--to-entity <id>","To entity ID").requiredOption("--to-field <f>","To field").option("--kind <k>","ONE_TO_ONE|ONE_TO_MANY|MANY_TO_ONE|MANY_TO_MANY","MANY_TO_ONE").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={modelId:t.model,name:t.name,fromEntityId:t.fromEntity,fromField:t.fromField,toEntityId:t.toEntity,toField:t.toField,kind:(t.kind??"MANY_TO_ONE").toUpperCase()};t.description&&(e.description=t.description);let n=await b$1(V,{input:e});k$1(`Relationship created: ${n.semCreateRelationship.name}`),i(t,n.semCreateRelationship);}catch(e){h$1(e);}});}function ft(d){let i$1=d.command("queries").description("SemanticFed saved federated queries & run history");i$1.command("list").description("List saved queries").option("--model <id>","Filter by model ID").option("--status <s>","Filter by query status (DRAFT|PUBLISHED|ARCHIVED)").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Opaque pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let n=(await b$1(J,{modelId:t.model,status:t.status?t.status.toUpperCase():void 0,pagination:S(t)})).semListQueries.items;i(t,n,{headers:["ID","Name","Status","Model","Cacheable"],rows:n.map(a=>[r(a.id,12),a.name,a.status,a.modelId?r(a.modelId,12):"-",a.cacheable?"yes":"no"])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a saved query by id").argument("<id>","Query ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(j,{id:t});if(!n.semQuery)throw new o(`Query ${t} not found`);i(e,n.semQuery);}catch(n){h$1(n);}}),i$1.command("create").description("Create a saved query").requiredOption("--name <name>","Query name").requiredOption("--query-text <sql>","Federated query text").option("--model <id>","Associated model ID").option("--description <s>","Description").option("--cacheable <bool>","true|false",t=>t==="true").option("--cache-ttl <n>","Cache TTL seconds",u).option("--parameters <json>","Parameters JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,queryText:t.queryText};t.model&&(e.modelId=t.model),t.description&&(e.description=t.description),t.cacheable!==void 0&&(e.cacheable=t.cacheable),t.cacheTtl!==void 0&&(e.cacheTtlSeconds=t.cacheTtl),t.parameters&&(e.parameters=g("parameters",t.parameters)),t.tags&&(e.tags=E(t.tags));let n=await b$1(z,{input:e});k$1(`Query created: ${n.semCreateQuery.name}`),i(t,n.semCreateQuery);}catch(e){h$1(e);}}),i$1.command("update").description("Update a saved query").argument("<id>","Query ID").option("--name <name>","Query name").option("--query-text <sql>","Federated query text").option("--model <id>","Associated model ID").option("--description <s>","Description").option("--cacheable <bool>","true|false",t=>t==="true").option("--cache-ttl <n>","Cache TTL seconds",u).option("--parameters <json>","Parameters JSON").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.queryText&&(n.queryText=e.queryText),e.model&&(n.modelId=e.model),e.description!==void 0&&(n.description=e.description),e.cacheable!==void 0&&(n.cacheable=e.cacheable),e.cacheTtl!==void 0&&(n.cacheTtlSeconds=e.cacheTtl),e.parameters&&(n.parameters=g("parameters",e.parameters)),e.tags&&(n.tags=E(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let a=await b$1(X,{id:t,input:n});k$1("Query updated"),i(e,a.semUpdateQuery);}catch(n){h$1(n);}}),i$1.command("archive").description("Archive a saved query").argument("<id>","Query ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Z,{id:t});if(!n.semArchiveQuery)throw new o(`Query ${t} could not be archived`);k$1(`Query ${t} archived`),i(e,{archived:n.semArchiveQuery});}catch(n){h$1(n);}}),i$1.command("publish").description("Publish a draft query").argument("<id>","Query ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(tt,{id:t});k$1(`Query published: ${n.semPublishQuery.name}`),i(e,n.semPublishQuery);}catch(n){h$1(n);}}),i$1.command("run").description("Enqueue a federated execution of a saved query").argument("<id>","Query ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(et,{id:t});k$1(`Query run enqueued: ${n.semRunQuery.id} (${n.semRunQuery.status})`),i(e,n.semRunQuery);}catch(n){h$1(n);}}),i$1.command("runs").description("List run history for a saved query").requiredOption("--query <id>","Query ID").option("--status <s>","Filter by run status").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Opaque pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let n=(await b$1(nt,{queryId:t.query,status:t.status?t.status.toUpperCase():void 0,pagination:S(t)})).semListQueryRuns.items;i(t,n,{headers:["ID","Status","Rows","Duration (ms)","Cached"],rows:n.map(a=>[r(a.id,12),a.status,a.rowCount!=null?String(a.rowCount):"-",a.durationMs!=null?String(a.durationMs):"-",a.fromCache?"yes":"no"])});}catch(e){h$1(e);}});}function gt(d){let i$1=d.command("access-policies").description("SemanticFed access policies (row/column/entity governance)");i$1.command("list").description("List access policies").option("--entity <id>","Filter by entity ID").option("--model <id>","Filter by model ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(it,{entityId:t.entity,modelId:t.model});i(t,e.semListAccessPolicies,{headers:["ID","Name","Principal","Effect","Scope","Active"],rows:e.semListAccessPolicies.map(n=>[r(n.id,12),n.name,n.principal,n.effect,n.scope,n.isActive?"yes":"no"])});}catch(e){h$1(e);}}),i$1.command("create").description("Create an access policy").requiredOption("--name <name>","Policy name").requiredOption("--principal <p>","Principal (user/role/group expression)").option("--effect <e>","ALLOW|DENY","ALLOW").option("--scope <s>","ROW|COLUMN|ENTITY","ROW").option("--entity <id>","Scoped entity ID").option("--model <id>","Scoped model ID").option("--rule <json>","Rule JSON (predicate / column list)").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,principal:t.principal,effect:(t.effect??"ALLOW").toUpperCase(),scope:(t.scope??"ROW").toUpperCase()};t.entity&&(e.entityId=t.entity),t.model&&(e.modelId=t.model),t.rule&&(e.rule=g("rule",t.rule)),t.description&&(e.description=t.description);let n=await b$1(ot,{input:e});k$1(`Access policy created: ${n.semCreateAccessPolicy.name}`),i(t,n.semCreateAccessPolicy);}catch(e){h$1(e);}}),i$1.command("set-active").description("Activate or deactivate an access policy").argument("<id>","Policy ID").requiredOption("--active <bool>","true|false",t=>t==="true").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(rt,{id:t,isActive:e.active});k$1(`Access policy ${t} ${n.semSetAccessPolicyActive.isActive?"activated":"deactivated"}`),i(e,n.semSetAccessPolicyActive);}catch(n){h$1(n);}});}function yt(d$1){d$1.command("health").description("SemanticFed subgraph liveness/identity probe (public)").option("-f, --format <format>","Output format").action(async i$1=>{try{let t=await d(at);k$1(t.semHealth),i(i$1,{health:t.semHealth});}catch(t){h$1(t);}});}var Et={id:"semanticfed",version:"1.0.0",displayName:"SemanticFed",dependsOn:["auth","workspaces"],register(d,i){a(i);let t=d.command("semanticfed").description("SemanticFed data-federation & governed semantic layer");st(t),ct(t),dt(t),mt(t),pt(t),ut(t),lt(t),ft(t),gt(t),yt(t);}},pe=Et;export{pe 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(o,s){super(o),this.name="CliUserError",this.exitCode=s?.exitCode??1,this.hint=s?.hint;}};var l=class extends Error{cause;constructor(o,s){super(o),this.name="CliInternalError",this.cause=s;}};var
|
|
1
|
+
'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var u=class extends Error{exitCode;hint;constructor(o,s){super(o),this.name="CliUserError",this.exitCode=s?.exitCode??1,this.hint=s?.hint;}};var l=class extends Error{cause;constructor(o,s){super(o),this.name="CliInternalError",this.cause=s;}};var C=null;function R(r){C=r;}function g(){if(!C)throw new l("vibecontrols module helpers used before setHelpersContext was called");return C}async function a(r,o){return g().gql.global.request(r,o)}function c(r){let o=r instanceof Error?r.message:String(r);throw new u(o)}function d(r,o,s){g().output.formatAndOutput(r,o,s);}function w(r){g().output.printSuccess(r);}function h(r){return g().output.formatStatus(r)}function k(r){return g().output.formatDate(r)}function f(r,o){return g().output.truncate(r,o)}var y=`
|
|
2
2
|
id name slug description price currency type status downloads
|
|
3
3
|
publisher { id name isVerified }
|
|
4
4
|
`,x=`
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
`,$=`
|
|
10
10
|
query SearchStore($input: BrowseStoreInput!) {
|
|
11
11
|
browseStore(input: $input) {
|
|
12
|
-
products { ${
|
|
12
|
+
products { ${y} }
|
|
13
13
|
totalCount hasMore nextCursor
|
|
14
14
|
}
|
|
15
15
|
}
|
|
@@ -66,4 +66,4 @@
|
|
|
66
66
|
id entitlementId assigneeUserId assigneeEmail role assignedAt revokedAt revocationReason
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
|
-
`;function T(r){if(r&&r.length>0)throw new u(r.map(o=>o.message).join("; "))}function W(r){let o=r.command("store").description("Store: marketplace, cart, orders, installed apps");o.command("search").description("Search the store").argument("<query>").option("--type <t>").option("--category <c>").option("--limit <n>","Page size",t=>parseInt(t,10),20).option("-f, --format <format>").action(async(t,e)=>{try{let n={search:t};e.type&&(n.type=e.type.toUpperCase()),e.category&&(n.categories=[e.category]);let
|
|
69
|
+
`;function T(r){if(r&&r.length>0)throw new u(r.map(o=>o.message).join("; "))}function W(r){let o=r.command("store").description("Store: marketplace, cart, orders, installed apps");o.command("search").description("Search the store").argument("<query>").option("--type <t>").option("--category <c>").option("--limit <n>","Page size",t=>parseInt(t,10),20).option("-f, --format <format>").action(async(t,e)=>{try{let n={search:t};e.type&&(n.type=e.type.toUpperCase()),e.category&&(n.categories=[e.category]);let p={filter:n,pagination:{limit:e.limit,offset:0},sortBy:"RELEVANCE"},v=await a($,{input:p});d(e,v.browseStore.products,{headers:["ID","Name","Type","Price"],rows:v.browseStore.products.map(m=>[f(m.id,12),m.name,m.type??"-",`${m.price??"-"} ${m.currency??""}`.trim()])});}catch(n){c(n);}});let s=o.command("cart").description("Shopping cart");s.command("list").description("Show current cart").option("-f, --format <format>").action(async t=>{try{let e=await a(D);d(t,e.myCart);}catch(e){c(e);}}),s.command("add").description("Add a product to the cart").requiredOption("--product <id>").option("--quantity <n>","",t=>parseInt(t,10),1).option("--variant <id>").option("--workspace <id>","Workspace the product is bought for").option("-f, --format <format>").action(async t=>{try{let e={productId:t.product,quantity:t.quantity,variantId:t.variant,workspaceId:t.workspace},n=await a(q,{input:e});T(n.addToCart.errors),w("Added to cart"),d(t,n.addToCart.cart);}catch(e){c(e);}}),s.command("remove").description("Remove an item from the cart").requiredOption("--item <id>","Cart item id (from `store cart list`)").action(async t=>{try{let e=await a(P,{cartItemId:t.item});T(e.removeFromCart.errors),w("Item removed from cart");}catch(e){c(e);}}),s.command("checkout").description("Check out your cart").option("--account <id>","Billing account to charge").option("--payment-method <id>").option("--workspace <id>").option("--notes <s>").option("-f, --format <format>").action(async t=>{try{let e={billingAccountId:t.account,paymentMethodId:t.paymentMethod,workspaceId:t.workspace,notes:t.notes},n=await a(L,{input:e});T(n.checkout.errors),n.checkout.success&&w("Checkout complete"),d(t,n.checkout);}catch(e){c(e);}});let b=o.command("orders").description("Orders");b.command("list").description("List orders").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=await a(_,{limit:t.limit,offset:0});d(t,e.myOrders,{headers:["ID","Status","Total","Currency","Created"],rows:e.myOrders.map(n=>[f(n.id,12),h(n.status),String(n.total??"-"),n.currency??"-",k(n.createdAt)])});}catch(e){c(e);}}),b.command("get").description("Get an order").argument("<id>").option("-f, --format <format>").action(async(t,e)=>{try{let n=await a(N,{id:t});if(!n.getStoreOrder)throw new u(`Order ${t} not found`);d(e,n.getStoreOrder);}catch(n){c(n);}});let E=o.command("installed").description("Installed products");E.command("list").description("List the current user's installed store apps").option("-f, --format <format>").action(async t=>{try{let n=(await a(F)).myStoreAppInstallations.items;d(t,n,{headers:["InstallationID","ProductID","Workspace","Status","Version","Installed"],rows:n.map(p=>[f(p.id,12),f(p.productId,12),f(p.workspaceId,12),h(p.status),p.version??"-",k(p.installedAt)])});}catch(e){c(e);}}),E.command("uninstall").description("Record that a store product was uninstalled from a workspace").requiredOption("--product <id>").requiredOption("--workspace <id>").action(async t=>{try{await a(G,{productId:t.product,workspaceId:t.workspace}),w("Product uninstalled");}catch(e){c(e);}}),o.command("licenses").description("Licenses").command("list").description("List the license seats of an entitlement").requiredOption("--entitlement <id>").option("-f, --format <format>").action(async t=>{try{let e=await a(M,{entitlementId:t.entitlement});d(t,e.entitlementSeats);}catch(e){c(e);}});}var ee={id:"store",version:"1.0.0",displayName:"Store",dependsOn:["auth"],register(r,o){R(o),W(r);}},gt=ee;module.exports=gt;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {a,c,
|
|
1
|
+
import {a,c,i,r,h,k as k$1,p,q as q$1}from'../../chunk-O6UCQ5IT.js';import {o}from'../../chunk-YIY5IDXQ.js';var f=`
|
|
2
2
|
id name slug description price currency type status downloads
|
|
3
3
|
publisher { id name isVerified }
|
|
4
4
|
`,C=`
|
|
@@ -66,4 +66,4 @@ import {a,c,h,p,g,i,n,o}from'../../chunk-W4JZR7RJ.js';import {o as o$1}from'../.
|
|
|
66
66
|
id entitlementId assigneeUserId assigneeEmail role assignedAt revokedAt revocationReason
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
|
-
`;function S(c){if(c&&c.length>0)throw new o
|
|
69
|
+
`;function S(c){if(c&&c.length>0)throw new o(c.map(s=>s.message).join("; "))}function M(c$1){let s=c$1.command("store").description("Store: marketplace, cart, orders, installed apps");s.command("search").description("Search the store").argument("<query>").option("--type <t>").option("--category <c>").option("--limit <n>","Page size",r=>parseInt(r,10),20).option("-f, --format <format>").action(async(r$1,t)=>{try{let e={search:r$1};t.type&&(e.type=t.type.toUpperCase()),t.category&&(e.categories=[t.category]);let a={filter:e,pagination:{limit:t.limit,offset:0},sortBy:"RELEVANCE"},h=await c(T,{input:a});i(t,h.browseStore.products,{headers:["ID","Name","Type","Price"],rows:h.browseStore.products.map(m=>[r(m.id,12),m.name,m.type??"-",`${m.price??"-"} ${m.currency??""}`.trim()])});}catch(e){h(e);}});let u=s.command("cart").description("Shopping cart");u.command("list").description("Show current cart").option("-f, --format <format>").action(async r=>{try{let t=await c(k);i(r,t.myCart);}catch(t){h(t);}}),u.command("add").description("Add a product to the cart").requiredOption("--product <id>").option("--quantity <n>","",r=>parseInt(r,10),1).option("--variant <id>").option("--workspace <id>","Workspace the product is bought for").option("-f, --format <format>").action(async r=>{try{let t={productId:r.product,quantity:r.quantity,variantId:r.variant,workspaceId:r.workspace},e=await c($,{input:t});S(e.addToCart.errors),k$1("Added to cart"),i(r,e.addToCart.cart);}catch(t){h(t);}}),u.command("remove").description("Remove an item from the cart").requiredOption("--item <id>","Cart item id (from `store cart list`)").action(async r=>{try{let t=await c(_,{cartItemId:r.item});S(t.removeFromCart.errors),k$1("Item removed from cart");}catch(t){h(t);}}),u.command("checkout").description("Check out your cart").option("--account <id>","Billing account to charge").option("--payment-method <id>").option("--workspace <id>").option("--notes <s>").option("-f, --format <format>").action(async r=>{try{let t={billingAccountId:r.account,paymentMethodId:r.paymentMethod,workspaceId:r.workspace,notes:r.notes},e=await c(D,{input:t});S(e.checkout.errors),e.checkout.success&&k$1("Checkout complete"),i(r,e.checkout);}catch(t){h(t);}});let w=s.command("orders").description("Orders");w.command("list").description("List orders").option("--limit <n>","Page size",r=>parseInt(r,10),50).option("-f, --format <format>").action(async r$1=>{try{let t=await c(b,{limit:r$1.limit,offset:0});i(r$1,t.myOrders,{headers:["ID","Status","Total","Currency","Created"],rows:t.myOrders.map(e=>[r(e.id,12),p(e.status),String(e.total??"-"),e.currency??"-",q$1(e.createdAt)])});}catch(t){h(t);}}),w.command("get").description("Get an order").argument("<id>").option("-f, --format <format>").action(async(r,t)=>{try{let e=await c(v,{id:r});if(!e.getStoreOrder)throw new o(`Order ${r} not found`);i(t,e.getStoreOrder);}catch(e){h(e);}});let R=s.command("installed").description("Installed products");R.command("list").description("List the current user's installed store apps").option("-f, --format <format>").action(async r$1=>{try{let e=(await c(x)).myStoreAppInstallations.items;i(r$1,e,{headers:["InstallationID","ProductID","Workspace","Status","Version","Installed"],rows:e.map(a=>[r(a.id,12),r(a.productId,12),r(a.workspaceId,12),p(a.status),a.version??"-",q$1(a.installedAt)])});}catch(t){h(t);}}),R.command("uninstall").description("Record that a store product was uninstalled from a workspace").requiredOption("--product <id>").requiredOption("--workspace <id>").action(async r=>{try{await c(q,{productId:r.product,workspaceId:r.workspace}),k$1("Product uninstalled");}catch(t){h(t);}}),s.command("licenses").description("Licenses").command("list").description("List the license seats of an entitlement").requiredOption("--entitlement <id>").option("-f, --format <format>").action(async r=>{try{let t=await c(L,{entitlementId:r.entitlement});i(r,t.entitlementSeats);}catch(t){h(t);}});}var G={id:"store",version:"1.0.0",displayName:"Store",dependsOn:["auth"],register(c,s){a(s),M(c);}},K=G;export{K as default};
|
|
@@ -322,4 +322,4 @@
|
|
|
322
322
|
query SubHealth {
|
|
323
323
|
subHealth
|
|
324
324
|
}
|
|
325
|
-
`;function y(i,r){try{return JSON.parse(r)}catch{throw new l(`--${i} must be valid JSON`)}}function p(i){let r=Number.parseInt(i,10);if(Number.isNaN(r))throw new l(`Expected an integer but got "${i}"`);return r}function f(i){let r=Number.parseFloat(i);if(Number.isNaN(r))throw new l(`Expected a number but got "${i}"`);return r}function b(i){return i.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function mt(i){let r=i.command("providers").description("SubscriberBot provider registry (vendors / publishers / services)");r.command("list").description("List / search providers in the registry").option("--category <c>","Filter by provider category").option("--status <s>","Filter by provider status").option("--search <q>","Free-text search").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,{category:t.category?t.category.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,search:t.search,pagination:{limit:t.limit,offset:t.offset}});s(t,e.subListProviders.items,{headers:["ID","Name","Category","Status","Region","Churn"],rows:e.subListProviders.items.map(n=>[c(n.id,12),n.name,n.category,n.status,n.region??"-",n.churnRiskScore!=null?String(n.churnRiskScore):"-"])});}catch(e){o(e);}}),r.command("get").description("Get a provider by id").argument("<id>","Provider ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(R,{id:t});if(!n.subProvider)throw new l(`Provider ${t} not found`);s(e,n.subProvider);}catch(n){o(n);}}),r.command("create").description("Create a provider").requiredOption("--name <name>","Provider name").option("--category <c>","Provider category","OTHER").option("--status <s>","Provider status","UNVERIFIED").option("--slug <slug>","URL slug").option("--description <s>","Description").option("--industry <s>","Industry").option("--language <s>","Language").option("--region <s>","Region").option("--website-url <url>","Website URL").option("--logo-file-id <id>","Logo file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,category:(t.category??"OTHER").toUpperCase(),status:(t.status??"UNVERIFIED").toUpperCase()};t.slug&&(e.slug=t.slug),t.description&&(e.description=t.description),t.industry&&(e.industry=t.industry),t.language&&(e.language=t.language),t.region&&(e.region=t.region),t.websiteUrl&&(e.websiteUrl=t.websiteUrl),t.logoFileId&&(e.logoFileId=t.logoFileId),t.tags&&(e.tags=b(t.tags));let n=await a(T,{input:e});u(`Provider created: ${n.subCreateProvider.name}`),s(t,n.subCreateProvider);}catch(e){o(e);}}),r.command("update").description("Update a provider").argument("<id>","Provider ID").option("--name <name>","Provider name").option("--category <c>","Provider category").option("--status <s>","Provider status").option("--slug <slug>","URL slug").option("--description <s>","Description").option("--industry <s>","Industry").option("--language <s>","Language").option("--region <s>","Region").option("--website-url <url>","Website URL").option("--logo-file-id <id>","Logo file ID").option("--churn-risk-score <n>","Churn risk score",p).option("--vendor-health-score <n>","Vendor health score",p).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.category&&(n.category=e.category.toUpperCase()),e.status&&(n.status=e.status.toUpperCase()),e.slug&&(n.slug=e.slug),e.description!==void 0&&(n.description=e.description),e.industry&&(n.industry=e.industry),e.language&&(n.language=e.language),e.region&&(n.region=e.region),e.websiteUrl&&(n.websiteUrl=e.websiteUrl),e.logoFileId&&(n.logoFileId=e.logoFileId),e.churnRiskScore!==void 0&&(n.churnRiskScore=e.churnRiskScore),e.vendorHealthScore!==void 0&&(n.vendorHealthScore=e.vendorHealthScore),e.tags&&(n.tags=b(e.tags)),!Object.keys(n).length)throw new l("No updates specified");let C=await a(O,{id:t,input:n});u("Provider updated"),s(e,C.subUpdateProvider);}catch(n){o(n);}}),r.command("archive").description("Archive (soft-delete) a provider").argument("<id>","Provider ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(L,{id:t});u(`Provider ${t} archived`),s(e,{archived:n.subArchiveProvider});}catch(n){o(n);}});}function gt(i){let r=i.command("plans").description("SubscriberBot provider plans");r.command("list").description("List plans (optionally filtered by provider)").option("--provider <id>","Filter by provider ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(P,{providerId:t.provider});s(t,e.subListPlans,{headers:["ID","Name","Amount","Currency","Interval","Active"],rows:e.subListPlans.map(n=>[c(n.id,12),n.name,String(n.amount),n.currency,n.interval,n.isActive?"yes":"no"])});}catch(e){o(e);}}),r.command("create").description("Create a plan for a provider").requiredOption("--provider <id>","Provider ID").requiredOption("--name <name>","Plan name").option("--amount <n>","Amount",f).option("--currency <c>","Currency code").option("--interval <i>","Billing interval","MONTHLY").option("--description <s>","Description").option("--features <csv>","Comma-separated feature list").option("-f, --format <format>","Output format").action(async t=>{try{let e={providerId:t.provider,name:t.name,interval:(t.interval??"MONTHLY").toUpperCase()};t.amount!==void 0&&(e.amount=t.amount),t.currency&&(e.currency=t.currency),t.description&&(e.description=t.description),t.features&&(e.features=b(t.features));let n=await a(D,{input:e});u(`Plan created: ${n.subCreatePlan.name}`),s(t,n.subCreatePlan);}catch(e){o(e);}});}function ft(i){let r=i.command("relationships").description("SubscriberBot subscriptions, memberships & recurring relationships");r.command("list").description("List relationships").option("--kind <k>","Filter by relationship kind").option("--owner <id>","Filter by owner ID").option("--provider <id>","Filter by provider ID").option("--status <s>","Filter by relationship 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(N,{kind:t.kind?t.kind.toUpperCase():void 0,ownerId:t.owner,providerId:t.provider,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.subListRelationships.items,{headers:["ID","Label","Kind","Status","Amount","Renews"],rows:e.subListRelationships.items.map(n=>[c(n.id,12),n.label,n.kind,n.status,`${n.amount} ${n.currency}`,g(n.renewsAt)])});}catch(e){o(e);}}),r.command("get").description("Get a relationship by id").argument("<id>","Relationship ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a($,{id:t});if(!n.subRelationship)throw new l(`Relationship ${t} not found`);s(e,n.subRelationship);}catch(n){o(n);}}),r.command("create").description("Create a relationship (subscription / membership / \u2026)").requiredOption("--label <label>","Human-readable label").option("--kind <k>","Relationship kind","SUBSCRIPTION").option("--status <s>","Relationship status","ACTIVE").option("--owner <id>","Owner ID").option("--provider <id>","Provider ID").option("--plan <id>","Plan ID").option("--amount <n>","Amount",f).option("--currency <c>","Currency code").option("--interval <i>","Billing interval","MONTHLY").option("--discovery-source <s>","Discovery source","MANUAL").option("--no-auto-renew","Disable auto-renew").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("--started-at <iso>","Started at (ISO date)").option("--renews-at <iso>","Renews at (ISO date)").option("--trial-ends-at <iso>","Trial end (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={label:t.label,kind:(t.kind??"SUBSCRIPTION").toUpperCase(),status:(t.status??"ACTIVE").toUpperCase(),interval:(t.interval??"MONTHLY").toUpperCase(),discoverySource:(t.discoverySource??"MANUAL").toUpperCase(),autoRenew:t.autoRenew!==!1};t.owner&&(e.ownerId=t.owner),t.provider&&(e.providerId=t.provider),t.plan&&(e.planId=t.plan),t.amount!==void 0&&(e.amount=t.amount),t.currency&&(e.currency=t.currency),t.notes&&(e.notes=t.notes),t.tags&&(e.tags=b(t.tags)),t.startedAt&&(e.startedAt=t.startedAt),t.renewsAt&&(e.renewsAt=t.renewsAt),t.trialEndsAt&&(e.trialEndsAt=t.trialEndsAt);let n=await a(_,{input:e});u(`Relationship created: ${n.subCreateRelationship.label}`),s(t,n.subCreateRelationship);}catch(e){o(e);}}),r.command("update").description("Update a relationship").argument("<id>","Relationship ID").option("--label <label>","Label").option("--kind <k>","Relationship kind").option("--provider <id>","Provider ID").option("--plan <id>","Plan ID").option("--amount <n>","Amount",f).option("--currency <c>","Currency code").option("--interval <i>","Billing interval").option("--auto-renew <bool>","true|false",t=>t==="true").option("--health-score <n>","Health score",p).option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("--started-at <iso>","Started at (ISO date)").option("--renews-at <iso>","Renews at (ISO date)").option("--trial-ends-at <iso>","Trial end (ISO date)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.label&&(n.label=e.label),e.kind&&(n.kind=e.kind.toUpperCase()),e.provider&&(n.providerId=e.provider),e.plan&&(n.planId=e.plan),e.amount!==void 0&&(n.amount=e.amount),e.currency&&(n.currency=e.currency),e.interval&&(n.interval=e.interval.toUpperCase()),e.autoRenew!==void 0&&(n.autoRenew=e.autoRenew),e.healthScore!==void 0&&(n.healthScore=e.healthScore),e.notes!==void 0&&(n.notes=e.notes),e.tags&&(n.tags=b(e.tags)),e.startedAt&&(n.startedAt=e.startedAt),e.renewsAt&&(n.renewsAt=e.renewsAt),e.trialEndsAt&&(n.trialEndsAt=e.trialEndsAt),!Object.keys(n).length)throw new l("No updates specified");let C=await a(q,{id:t,input:n});u("Relationship updated"),s(e,C.subUpdateRelationship);}catch(n){o(n);}}),r.command("cancel").description("Cancel a relationship").argument("<id>","Relationship ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(M,{id:t});u(`Relationship cancelled: ${n.subCancelRelationship.label}`),s(e,n.subCancelRelationship);}catch(n){o(n);}}),r.command("transition").description("Advance a relationship through its lifecycle").argument("<id>","Relationship ID").requiredOption("--status <s>","ACTIVE|TRIAL|PAST_DUE|PAUSED|CANCELLED|EXPIRED|LAPSED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(U,{id:t,status:e.status.toUpperCase()});u(`Relationship status set to ${n.subTransitionRelationship.status}`),s(e,n.subTransitionRelationship);}catch(n){o(n);}}),r.command("renewals").description("List renewal events").option("--relationship <id>","Filter by relationship ID").option("--upcoming-only","Only upcoming events").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(W,{relationshipId:t.relationship,upcomingOnly:t.upcomingOnly?!0:void 0});s(t,e.subListRenewalEvents,{headers:["ID","Relationship","Type","Amount","Occurs","Notified"],rows:e.subListRenewalEvents.map(n=>[c(n.id,12),c(n.relationshipId,12),n.eventType,n.amount!=null?`${n.amount} ${n.currency??""}`.trim():"-",g(n.occursAt),n.notified?"yes":"no"])});}catch(e){o(e);}});}function bt(i){let r=i.command("assets").description("SubscriberBot relationship assets (contracts, licenses, credentials, \u2026)");r.command("list").description("List assets for a relationship").requiredOption("--relationship <id>","Relationship ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(F,{relationshipId:t.relationship});s(t,e.subListAssets,{headers:["ID","Name","Type","Secret","Expires"],rows:e.subListAssets.map(n=>[c(n.id,12),n.name,n.type,n.secretRef?"yes":"no",g(n.expiresAt)])});}catch(e){o(e);}}),r.command("create").description("Create an asset on a relationship").requiredOption("--relationship <id>","Relationship ID").requiredOption("--name <name>","Asset name").option("--type <t>","Asset type","RECEIPT").option("--file-id <id>","Referenced file ID (blob lives in wspace-files-svc)").option("--secret-ref <ref>","Secret reference").option("--expires-at <iso>","Expiry (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={relationshipId:t.relationship,name:t.name,type:(t.type??"RECEIPT").toUpperCase()};t.fileId&&(e.fileId=t.fileId),t.secretRef&&(e.secretRef=t.secretRef),t.expiresAt&&(e.expiresAt=t.expiresAt);let n=await a(G,{input:e});u(`Asset created: ${n.subCreateAsset.name}`),s(t,n.subCreateAsset);}catch(e){o(e);}});}function It(i){let r=i.command("entitlements").description("SubscriberBot relationship entitlements (seats, quotas, features, \u2026)");r.command("list").description("List entitlements for a relationship").requiredOption("--relationship <id>","Relationship ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(H,{relationshipId:t.relationship});s(t,e.subListEntitlements,{headers:["ID","Name","Type","Used","Quota","Active"],rows:e.subListEntitlements.map(n=>[c(n.id,12),n.name,n.type,String(n.used),n.quota!=null?String(n.quota):"-",n.isActive?"yes":"no"])});}catch(e){o(e);}}),r.command("create").description("Create an entitlement on a relationship").requiredOption("--relationship <id>","Relationship ID").requiredOption("--name <name>","Entitlement name").option("--type <t>","Entitlement type","FEATURE_ACCESS").option("--description <s>","Description").option("--quota <n>","Quota",p).option("--unit <u>","Quota unit").option("-f, --format <format>","Output format").action(async t=>{try{let e={relationshipId:t.relationship,name:t.name,type:(t.type??"FEATURE_ACCESS").toUpperCase()};t.description&&(e.description=t.description),t.quota!==void 0&&(e.quota=t.quota),t.unit&&(e.unit=t.unit);let n=await a(V,{input:e});u(`Entitlement created: ${n.subCreateEntitlement.name}`),s(t,n.subCreateEntitlement);}catch(e){o(e);}});}function ht(i){let r=i.command("invoices").description("SubscriberBot invoices");r.command("list").description("List invoices").option("--relationship <id>","Filter by relationship ID").option("--status <s>","Filter by invoice 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(j,{relationshipId:t.relationship,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.subListInvoices.items,{headers:["ID","Number","Status","Total","Currency","Due"],rows:e.subListInvoices.items.map(n=>[c(n.id,12),n.number??"-",n.status,String(n.total),n.currency,g(n.dueDate)])});}catch(e){o(e);}}),r.command("create").description("Create an invoice on a relationship").requiredOption("--relationship <id>","Relationship ID").option("--number <n>","Invoice number").option("--status <s>","Invoice status","ISSUED").option("--currency <c>","Currency code").option("--subtotal <n>","Subtotal",f).option("--tax-amount <n>","Tax amount",f).option("--total <n>","Total",f).option("--line-items <json>","Line items JSON").option("--issue-date <iso>","Issue date (ISO date)").option("--due-date <iso>","Due date (ISO date)").option("--payment-instrument <id>","Payment instrument ID").option("--file-id <id>","Referenced file ID (invoice PDF in wspace-files-svc)").option("-f, --format <format>","Output format").action(async t=>{try{let e={relationshipId:t.relationship,status:(t.status??"ISSUED").toUpperCase()};t.number&&(e.number=t.number),t.currency&&(e.currency=t.currency),t.subtotal!==void 0&&(e.subtotal=t.subtotal),t.taxAmount!==void 0&&(e.taxAmount=t.taxAmount),t.total!==void 0&&(e.total=t.total),t.lineItems&&(e.lineItems=y("line-items",t.lineItems)),t.issueDate&&(e.issueDate=t.issueDate),t.dueDate&&(e.dueDate=t.dueDate),t.paymentInstrument&&(e.paymentInstrumentId=t.paymentInstrument),t.fileId&&(e.fileId=t.fileId);let n=await a(B,{input:e});u(`Invoice created: ${n.subCreateInvoice.number??n.subCreateInvoice.id}`),s(t,n.subCreateInvoice);}catch(e){o(e);}}),r.command("mark-paid").description("Mark an invoice as paid").argument("<id>","Invoice ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Y,{id:t});u(`Invoice marked paid: ${n.subMarkInvoicePaid.number??n.subMarkInvoicePaid.id}`),s(e,n.subMarkInvoicePaid);}catch(n){o(n);}});}function yt(i){let r=i.command("payment-instruments").description("SubscriberBot payment instruments (cards, wallets, bank accounts, \u2026)");r.command("list").description("List payment instruments").option("--owner <id>","Filter by owner ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(K,{ownerId:t.owner});s(t,e.subListPaymentInstruments,{headers:["ID","Label","Type","Status","Brand","Last4","Default"],rows:e.subListPaymentInstruments.map(n=>[c(n.id,12),n.label,n.type,n.status,n.brand??"-",n.last4??"-",n.isDefault?"yes":"no"])});}catch(e){o(e);}}),r.command("create").description("Add a payment instrument").requiredOption("--label <label>","Label").option("--type <t>","Payment instrument type","CARD").option("--owner <id>","Owner ID").option("--brand <b>","Card/instrument brand").option("--last4 <n>","Last 4 digits").option("--expiry-month <n>","Expiry month",p).option("--expiry-year <n>","Expiry year",p).option("--processor-token <t>","Processor token").option("--default","Mark as default").option("-f, --format <format>","Output format").action(async t=>{try{let e={label:t.label,type:(t.type??"CARD").toUpperCase(),isDefault:t.default===!0};t.owner&&(e.ownerId=t.owner),t.brand&&(e.brand=t.brand),t.last4&&(e.last4=t.last4),t.expiryMonth!==void 0&&(e.expiryMonth=t.expiryMonth),t.expiryYear!==void 0&&(e.expiryYear=t.expiryYear),t.processorToken&&(e.processorToken=t.processorToken);let n=await a(z,{input:e});u(`Payment instrument added: ${n.subCreatePaymentInstrument.label}`),s(t,n.subCreatePaymentInstrument);}catch(e){o(e);}}),r.command("remove").description("Remove a payment instrument").argument("<id>","Payment instrument ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(J,{id:t});u(`Payment instrument ${t} removed`),s(e,{removed:n.subRemovePaymentInstrument});}catch(n){o(n);}});}function wt(i){let r=i.command("channels").description("SubscriberBot communication channels (email, sms, slack, webhook, \u2026)");r.command("list").description("List communication channels").option("--owner <id>","Filter by owner ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(Q,{ownerId:t.owner});s(t,e.subListChannels,{headers:["ID","Type","Address","Label","Status","Ingest"],rows:e.subListChannels.map(n=>[c(n.id,12),n.type,n.address,n.label??"-",n.status,n.ingestEnabled?"yes":"no"])});}catch(e){o(e);}}),r.command("create").description("Create a communication channel").requiredOption("--address <addr>","Channel address (email, phone, webhook URL, \u2026)").option("--type <t>","Channel type","EMAIL").option("--owner <id>","Owner ID").option("--label <label>","Label").option("--no-ingest","Disable message ingestion").option("-f, --format <format>","Output format").action(async t=>{try{let e={address:t.address,type:(t.type??"EMAIL").toUpperCase(),ingestEnabled:t.ingest!==!1};t.owner&&(e.ownerId=t.owner),t.label&&(e.label=t.label);let n=await a(X,{input:e});u(`Channel created: ${n.subCreateChannel.address}`),s(t,n.subCreateChannel);}catch(e){o(e);}}),r.command("verify").description("Mark a channel as verified").argument("<id>","Channel ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Z,{id:t});u(`Channel verified: ${n.subVerifyChannel.address}`),s(e,n.subVerifyChannel);}catch(n){o(n);}});}function Ct(i){let r=i.command("inbox").description("SubscriberBot universal inbox (merged subscription communications)");r.command("list").description("List inbox messages").option("--category <c>","Filter by message category").option("--channel <id>","Filter by channel ID").option("--relationship <id>","Filter by relationship ID").option("--unread-only","Only unread messages").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,{category:t.category?t.category.toUpperCase():void 0,channelId:t.channel,relationshipId:t.relationship,unreadOnly:t.unreadOnly?!0:void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.subListInboxMessages.items,{headers:["ID","Subject","Category","Read","Action","Received"],rows:e.subListInboxMessages.items.map(n=>[c(n.id,12),c(n.subject??"-",30),n.category,n.isRead?"yes":"no",n.actionRequired?"yes":"no",g(n.receivedAt)])});}catch(e){o(e);}}),r.command("ingest").description("Ingest a message into the universal inbox").requiredOption("--channel <id>","Channel ID").requiredOption("--received-at <iso>","Received at (ISO date)").option("--category <c>","Message category","OTHER").option("--relationship <id>","Relationship ID").option("--subject <s>","Subject").option("--preview <s>","Preview text").option("--external-id <id>","External message ID").option("--category-confidence <n>","Category confidence (0-100)",p).option("--action-required","Flag as action required").option("-f, --format <format>","Output format").action(async t=>{try{let e={channelId:t.channel,receivedAt:t.receivedAt,category:(t.category??"OTHER").toUpperCase(),actionRequired:t.actionRequired===!0};t.relationship&&(e.relationshipId=t.relationship),t.subject&&(e.subject=t.subject),t.preview&&(e.preview=t.preview),t.externalId&&(e.externalId=t.externalId),t.categoryConfidence!==void 0&&(e.categoryConfidence=t.categoryConfidence);let n=await a(et,{input:e});u(`Message ingested: ${n.subIngestMessage.id}`),s(t,n.subIngestMessage);}catch(e){o(e);}}),r.command("mark-read").description("Mark a message as read").argument("<id>","Message ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(nt,{id:t});u(`Message ${t} marked read`),s(e,n.subMarkMessageRead);}catch(n){o(n);}});}function At(i){let r=i.command("agents").description("SubscriberBot AI agents & their automation policies");r.command("list").description("List AI agents").option("--kind <k>","Filter by agent kind").option("--owner <id>","Filter by owner ID").option("--status <s>","Filter by agent status").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(it,{kind:t.kind?t.kind.toUpperCase():void 0,ownerId:t.owner,status:t.status?t.status.toUpperCase():void 0});s(t,e.subListAgents,{headers:["ID","Name","Kind","Status","Description"],rows:e.subListAgents.map(n=>[c(n.id,12),n.name,n.kind,n.status,c(n.description??"-",30)])});}catch(e){o(e);}}),r.command("get").description("Get an agent by id").argument("<id>","Agent ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(rt,{id:t});if(!n.subAgent)throw new l(`Agent ${t} not found`);s(e,n.subAgent);}catch(n){o(n);}}),r.command("create").description("Create an AI agent").requiredOption("--name <name>","Agent name").option("--kind <k>","Agent kind","DISCOVERY").option("--status <s>","Agent status","SUGGEST_ONLY").option("--owner <id>","Owner ID").option("--description <s>","Description").option("--config <json>","Agent config JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,kind:(t.kind??"DISCOVERY").toUpperCase(),status:(t.status??"SUGGEST_ONLY").toUpperCase()};t.owner&&(e.ownerId=t.owner),t.description&&(e.description=t.description),t.config&&(e.config=y("config",t.config));let n=await a(ot,{input:e});u(`Agent created: ${n.subCreateAgent.name}`),s(t,n.subCreateAgent);}catch(e){o(e);}}),r.command("set-status").description("Change an agent's operating posture").argument("<id>","Agent ID").requiredOption("--status <s>","DISABLED|SUGGEST_ONLY|AUTONOMOUS").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(st,{id:t,status:e.status.toUpperCase()});u(`Agent status set to ${n.subSetAgentStatus.status}`),s(e,n.subSetAgentStatus);}catch(n){o(n);}}),r.command("list-policies").description("List policies (optionally filtered by agent)").option("--agent <id>","Filter by agent ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(at,{agentId:t.agent});s(t,e.subListPolicies,{headers:["ID","Name","Action","Enabled","Triggers"],rows:e.subListPolicies.map(n=>[c(n.id,12),n.name,n.action,n.isEnabled?"yes":"no",String(n.triggerCount??0)])});}catch(e){o(e);}}),r.command("create-policy").description("Create an automation policy for an agent").requiredOption("--agent <id>","Agent ID").requiredOption("--name <name>","Policy name").option("--action <a>","Policy action","ALERT").option("--description <s>","Description").option("--condition <json>","Condition JSON").option("--no-enabled","Create disabled").option("-f, --format <format>","Output format").action(async t=>{try{let e={agentId:t.agent,name:t.name,action:(t.action??"ALERT").toUpperCase(),isEnabled:t.enabled!==!1};t.description&&(e.description=t.description),t.condition&&(e.condition=y("condition",t.condition));let n=await a(ut,{input:e});u(`Policy created: ${n.subCreatePolicy.name}`),s(t,n.subCreatePolicy);}catch(e){o(e);}});}function vt(i){let r=i.command("workflows").description("SubscriberBot automation workflows");r.command("list").description("List workflows").option("--status <s>","Filter by workflow status").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(ct,{status:t.status?t.status.toUpperCase():void 0});s(t,e.subListWorkflows,{headers:["ID","Name","Trigger","Status","Runs"],rows:e.subListWorkflows.map(n=>[c(n.id,12),n.name,n.triggerEvent,n.status,String(n.runCount??0)])});}catch(e){o(e);}}),r.command("create").description("Create a workflow").requiredOption("--name <name>","Workflow name").requiredOption("--trigger-event <e>","Trigger event").option("--description <s>","Description").option("--steps <json>","Steps JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,triggerEvent:t.triggerEvent};t.description&&(e.description=t.description),t.steps&&(e.steps=y("steps",t.steps));let n=await a(dt,{input:e});u(`Workflow created: ${n.subCreateWorkflow.name}`),s(t,n.subCreateWorkflow);}catch(e){o(e);}}),r.command("activate").description("Activate a workflow").argument("<id>","Workflow ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(pt,{id:t});u(`Workflow activated: ${n.subActivateWorkflow.name}`),s(e,n.subActivateWorkflow);}catch(n){o(n);}});}function Et(i){i.command("health").description("SubscriberBot service health check (public)").option("-f, --format <format>","Output format").action(async r=>{try{let t=await v(lt);u(t.subHealth),s(r,{health:t.subHealth});}catch(t){o(t);}});}var qt={id:"subscriberbot",version:"1.0.0",displayName:"SubscriberBot",dependsOn:["auth","workspaces"],register(i,r){S(r);let t=i.command("subscriberbot").description("SubscriberBot universal subscription & relationship management");mt(t),gt(t),ft(t),bt(t),It(t),ht(t),yt(t),wt(t),Ct(t),At(t),vt(t),Et(t);}},Gn=qt;module.exports=Gn;
|
|
325
|
+
`;function y(i,r){try{return JSON.parse(r)}catch{throw new l(`--${i} must be valid JSON`)}}function p(i){let r=Number.parseInt(i,10);if(Number.isNaN(r))throw new l(`Expected an integer but got "${i}"`);return r}function f(i){let r=Number.parseFloat(i);if(Number.isNaN(r))throw new l(`Expected a number but got "${i}"`);return r}function b(i){return i.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function mt(i){let r=i.command("providers").description("SubscriberBot provider registry (vendors / publishers / services)");r.command("list").description("List / search providers in the registry").option("--category <c>","Filter by provider category").option("--status <s>","Filter by provider status").option("--search <q>","Free-text search").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,{category:t.category?t.category.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,search:t.search,pagination:{limit:t.limit,offset:t.offset}});s(t,e.subListProviders.items,{headers:["ID","Name","Category","Status","Region","Churn"],rows:e.subListProviders.items.map(n=>[c(n.id,12),n.name,n.category,n.status,n.region??"-",n.churnRiskScore!=null?String(n.churnRiskScore):"-"])});}catch(e){o(e);}}),r.command("get").description("Get a provider by id").argument("<id>","Provider ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(R,{id:t});if(!n.subProvider)throw new l(`Provider ${t} not found`);s(e,n.subProvider);}catch(n){o(n);}}),r.command("create").description("Create a provider").requiredOption("--name <name>","Provider name").option("--category <c>","Provider category","OTHER").option("--status <s>","Provider status","UNVERIFIED").option("--slug <slug>","URL slug").option("--description <s>","Description").option("--industry <s>","Industry").option("--language <s>","Language").option("--region <s>","Region").option("--website-url <url>","Website URL").option("--logo-file-id <id>","Logo file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,category:(t.category??"OTHER").toUpperCase(),status:(t.status??"UNVERIFIED").toUpperCase()};t.slug&&(e.slug=t.slug),t.description&&(e.description=t.description),t.industry&&(e.industry=t.industry),t.language&&(e.language=t.language),t.region&&(e.region=t.region),t.websiteUrl&&(e.websiteUrl=t.websiteUrl),t.logoFileId&&(e.logoFileId=t.logoFileId),t.tags&&(e.tags=b(t.tags));let n=await a(T,{input:e});u(`Provider created: ${n.subCreateProvider.name}`),s(t,n.subCreateProvider);}catch(e){o(e);}}),r.command("update").description("Update a provider").argument("<id>","Provider ID").option("--name <name>","Provider name").option("--category <c>","Provider category").option("--status <s>","Provider status").option("--slug <slug>","URL slug").option("--description <s>","Description").option("--industry <s>","Industry").option("--language <s>","Language").option("--region <s>","Region").option("--website-url <url>","Website URL").option("--logo-file-id <id>","Logo file ID").option("--churn-risk-score <n>","Churn risk score",p).option("--vendor-health-score <n>","Vendor health score",p).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.category&&(n.category=e.category.toUpperCase()),e.status&&(n.status=e.status.toUpperCase()),e.slug&&(n.slug=e.slug),e.description!==void 0&&(n.description=e.description),e.industry&&(n.industry=e.industry),e.language&&(n.language=e.language),e.region&&(n.region=e.region),e.websiteUrl&&(n.websiteUrl=e.websiteUrl),e.logoFileId&&(n.logoFileId=e.logoFileId),e.churnRiskScore!==void 0&&(n.churnRiskScore=e.churnRiskScore),e.vendorHealthScore!==void 0&&(n.vendorHealthScore=e.vendorHealthScore),e.tags&&(n.tags=b(e.tags)),!Object.keys(n).length)throw new l("No updates specified");let C=await a(O,{id:t,input:n});u("Provider updated"),s(e,C.subUpdateProvider);}catch(n){o(n);}}),r.command("archive").description("Archive (soft-delete) a provider").argument("<id>","Provider ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(L,{id:t});u(`Provider ${t} archived`),s(e,{archived:n.subArchiveProvider});}catch(n){o(n);}});}function gt(i){let r=i.command("plans").description("SubscriberBot provider plans");r.command("list").description("List plans (optionally filtered by provider)").option("--provider <id>","Filter by provider ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(P,{providerId:t.provider});s(t,e.subListPlans,{headers:["ID","Name","Amount","Currency","Interval","Active"],rows:e.subListPlans.map(n=>[c(n.id,12),n.name,String(n.amount),n.currency,n.interval,n.isActive?"yes":"no"])});}catch(e){o(e);}}),r.command("create").description("Create a plan for a provider").requiredOption("--provider <id>","Provider ID").requiredOption("--name <name>","Plan name").option("--amount <n>","Amount",f).option("--currency <c>","Currency code").option("--interval <i>","Billing interval","MONTHLY").option("--description <s>","Description").option("--features <csv>","Comma-separated feature list").option("-f, --format <format>","Output format").action(async t=>{try{let e={providerId:t.provider,name:t.name,interval:(t.interval??"MONTHLY").toUpperCase()};t.amount!==void 0&&(e.amount=t.amount),t.currency&&(e.currency=t.currency),t.description&&(e.description=t.description),t.features&&(e.features=b(t.features));let n=await a(D,{input:e});u(`Plan created: ${n.subCreatePlan.name}`),s(t,n.subCreatePlan);}catch(e){o(e);}});}function ft(i){let r=i.command("relationships").description("SubscriberBot subscriptions, memberships & recurring relationships");r.command("list").description("List relationships").option("--kind <k>","Filter by relationship kind").option("--owner <id>","Filter by owner ID").option("--provider <id>","Filter by provider ID").option("--status <s>","Filter by relationship 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(N,{kind:t.kind?t.kind.toUpperCase():void 0,ownerId:t.owner,providerId:t.provider,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.subListRelationships.items,{headers:["ID","Label","Kind","Status","Amount","Renews"],rows:e.subListRelationships.items.map(n=>[c(n.id,12),n.label,n.kind,n.status,`${n.amount} ${n.currency}`,g(n.renewsAt)])});}catch(e){o(e);}}),r.command("get").description("Get a relationship by id").argument("<id>","Relationship ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a($,{id:t});if(!n.subRelationship)throw new l(`Relationship ${t} not found`);s(e,n.subRelationship);}catch(n){o(n);}}),r.command("create").description("Create a relationship (subscription / membership / \u2026)").requiredOption("--label <label>","Human-readable label").option("--kind <k>","Relationship kind","SUBSCRIPTION").option("--status <s>","Relationship status","ACTIVE").option("--owner <id>","Owner ID").option("--provider <id>","Provider ID").option("--plan <id>","Plan ID").option("--amount <n>","Amount",f).option("--currency <c>","Currency code").option("--interval <i>","Billing interval","MONTHLY").option("--discovery-source <s>","Discovery source","MANUAL").option("--no-auto-renew","Disable auto-renew").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("--started-at <iso>","Started at (ISO date)").option("--renews-at <iso>","Renews at (ISO date)").option("--trial-ends-at <iso>","Trial end (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={label:t.label,kind:(t.kind??"SUBSCRIPTION").toUpperCase(),status:(t.status??"ACTIVE").toUpperCase(),interval:(t.interval??"MONTHLY").toUpperCase(),discoverySource:(t.discoverySource??"MANUAL").toUpperCase(),autoRenew:t.autoRenew!==!1};t.owner&&(e.ownerId=t.owner),t.provider&&(e.providerId=t.provider),t.plan&&(e.planId=t.plan),t.amount!==void 0&&(e.amount=t.amount),t.currency&&(e.currency=t.currency),t.notes&&(e.notes=t.notes),t.tags&&(e.tags=b(t.tags)),t.startedAt&&(e.startedAt=t.startedAt),t.renewsAt&&(e.renewsAt=t.renewsAt),t.trialEndsAt&&(e.trialEndsAt=t.trialEndsAt);let n=await a(_,{input:e});u(`Relationship created: ${n.subCreateRelationship.label}`),s(t,n.subCreateRelationship);}catch(e){o(e);}}),r.command("update").description("Update a relationship").argument("<id>","Relationship ID").option("--label <label>","Label").option("--kind <k>","Relationship kind").option("--provider <id>","Provider ID").option("--plan <id>","Plan ID").option("--amount <n>","Amount",f).option("--currency <c>","Currency code").option("--interval <i>","Billing interval").option("--auto-renew <bool>","true|false",t=>t==="true").option("--health-score <n>","Health score",p).option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("--started-at <iso>","Started at (ISO date)").option("--renews-at <iso>","Renews at (ISO date)").option("--trial-ends-at <iso>","Trial end (ISO date)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.label&&(n.label=e.label),e.kind&&(n.kind=e.kind.toUpperCase()),e.provider&&(n.providerId=e.provider),e.plan&&(n.planId=e.plan),e.amount!==void 0&&(n.amount=e.amount),e.currency&&(n.currency=e.currency),e.interval&&(n.interval=e.interval.toUpperCase()),e.autoRenew!==void 0&&(n.autoRenew=e.autoRenew),e.healthScore!==void 0&&(n.healthScore=e.healthScore),e.notes!==void 0&&(n.notes=e.notes),e.tags&&(n.tags=b(e.tags)),e.startedAt&&(n.startedAt=e.startedAt),e.renewsAt&&(n.renewsAt=e.renewsAt),e.trialEndsAt&&(n.trialEndsAt=e.trialEndsAt),!Object.keys(n).length)throw new l("No updates specified");let C=await a(q,{id:t,input:n});u("Relationship updated"),s(e,C.subUpdateRelationship);}catch(n){o(n);}}),r.command("cancel").description("Cancel a relationship").argument("<id>","Relationship ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(M,{id:t});u(`Relationship cancelled: ${n.subCancelRelationship.label}`),s(e,n.subCancelRelationship);}catch(n){o(n);}}),r.command("transition").description("Advance a relationship through its lifecycle").argument("<id>","Relationship ID").requiredOption("--status <s>","ACTIVE|TRIAL|PAST_DUE|PAUSED|CANCELLED|EXPIRED|LAPSED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(U,{id:t,status:e.status.toUpperCase()});u(`Relationship status set to ${n.subTransitionRelationship.status}`),s(e,n.subTransitionRelationship);}catch(n){o(n);}}),r.command("renewals").description("List renewal events").option("--relationship <id>","Filter by relationship ID").option("--upcoming-only","Only upcoming events").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(W,{relationshipId:t.relationship,upcomingOnly:t.upcomingOnly?!0:void 0});s(t,e.subListRenewalEvents,{headers:["ID","Relationship","Type","Amount","Occurs","Notified"],rows:e.subListRenewalEvents.map(n=>[c(n.id,12),c(n.relationshipId,12),n.eventType,n.amount!=null?`${n.amount} ${n.currency??""}`.trim():"-",g(n.occursAt),n.notified?"yes":"no"])});}catch(e){o(e);}});}function bt(i){let r=i.command("assets").description("SubscriberBot relationship assets (contracts, licenses, credentials, \u2026)");r.command("list").description("List assets for a relationship").requiredOption("--relationship <id>","Relationship ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(F,{relationshipId:t.relationship});s(t,e.subListAssets,{headers:["ID","Name","Type","Secret","Expires"],rows:e.subListAssets.map(n=>[c(n.id,12),n.name,n.type,n.secretRef?"yes":"no",g(n.expiresAt)])});}catch(e){o(e);}}),r.command("create").description("Create an asset on a relationship").requiredOption("--relationship <id>","Relationship ID").requiredOption("--name <name>","Asset name").option("--type <t>","Asset type","RECEIPT").option("--file-id <id>","Referenced file ID (blob lives in wspace-files-svc)").option("--secret-ref <ref>","Secret reference").option("--expires-at <iso>","Expiry (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={relationshipId:t.relationship,name:t.name,type:(t.type??"RECEIPT").toUpperCase()};t.fileId&&(e.fileId=t.fileId),t.secretRef&&(e.secretRef=t.secretRef),t.expiresAt&&(e.expiresAt=t.expiresAt);let n=await a(G,{input:e});u(`Asset created: ${n.subCreateAsset.name}`),s(t,n.subCreateAsset);}catch(e){o(e);}});}function It(i){let r=i.command("entitlements").description("SubscriberBot relationship entitlements (seats, quotas, features, \u2026)");r.command("list").description("List entitlements for a relationship").requiredOption("--relationship <id>","Relationship ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(H,{relationshipId:t.relationship});s(t,e.subListEntitlements,{headers:["ID","Name","Type","Used","Quota","Active"],rows:e.subListEntitlements.map(n=>[c(n.id,12),n.name,n.type,String(n.used),n.quota!=null?String(n.quota):"-",n.isActive?"yes":"no"])});}catch(e){o(e);}}),r.command("create").description("Create an entitlement on a relationship").requiredOption("--relationship <id>","Relationship ID").requiredOption("--name <name>","Entitlement name").option("--type <t>","Entitlement type","FEATURE_ACCESS").option("--description <s>","Description").option("--quota <n>","Quota",p).option("--unit <u>","Quota unit").option("-f, --format <format>","Output format").action(async t=>{try{let e={relationshipId:t.relationship,name:t.name,type:(t.type??"FEATURE_ACCESS").toUpperCase()};t.description&&(e.description=t.description),t.quota!==void 0&&(e.quota=t.quota),t.unit&&(e.unit=t.unit);let n=await a(V,{input:e});u(`Entitlement created: ${n.subCreateEntitlement.name}`),s(t,n.subCreateEntitlement);}catch(e){o(e);}});}function ht(i){let r=i.command("invoices").description("SubscriberBot invoices");r.command("list").description("List invoices").option("--relationship <id>","Filter by relationship ID").option("--status <s>","Filter by invoice 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(j,{relationshipId:t.relationship,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.subListInvoices.items,{headers:["ID","Number","Status","Total","Currency","Due"],rows:e.subListInvoices.items.map(n=>[c(n.id,12),n.number??"-",n.status,String(n.total),n.currency,g(n.dueDate)])});}catch(e){o(e);}}),r.command("create").description("Create an invoice on a relationship").requiredOption("--relationship <id>","Relationship ID").option("--number <n>","Invoice number").option("--status <s>","Invoice status","ISSUED").option("--currency <c>","Currency code").option("--subtotal <n>","Subtotal",f).option("--tax-amount <n>","Tax amount",f).option("--total <n>","Total",f).option("--line-items <json>","Line items JSON").option("--issue-date <iso>","Issue date (ISO date)").option("--due-date <iso>","Due date (ISO date)").option("--payment-instrument <id>","Payment instrument ID").option("--file-id <id>","Referenced file ID (invoice PDF in wspace-files-svc)").option("-f, --format <format>","Output format").action(async t=>{try{let e={relationshipId:t.relationship,status:(t.status??"ISSUED").toUpperCase()};t.number&&(e.number=t.number),t.currency&&(e.currency=t.currency),t.subtotal!==void 0&&(e.subtotal=t.subtotal),t.taxAmount!==void 0&&(e.taxAmount=t.taxAmount),t.total!==void 0&&(e.total=t.total),t.lineItems&&(e.lineItems=y("line-items",t.lineItems)),t.issueDate&&(e.issueDate=t.issueDate),t.dueDate&&(e.dueDate=t.dueDate),t.paymentInstrument&&(e.paymentInstrumentId=t.paymentInstrument),t.fileId&&(e.fileId=t.fileId);let n=await a(B,{input:e});u(`Invoice created: ${n.subCreateInvoice.number??n.subCreateInvoice.id}`),s(t,n.subCreateInvoice);}catch(e){o(e);}}),r.command("mark-paid").description("Mark an invoice as paid").argument("<id>","Invoice ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Y,{id:t});u(`Invoice marked paid: ${n.subMarkInvoicePaid.number??n.subMarkInvoicePaid.id}`),s(e,n.subMarkInvoicePaid);}catch(n){o(n);}});}function yt(i){let r=i.command("payment-instruments").description("SubscriberBot payment instruments (cards, wallets, bank accounts, \u2026)");r.command("list").description("List payment instruments").option("--owner <id>","Filter by owner ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(K,{ownerId:t.owner});s(t,e.subListPaymentInstruments,{headers:["ID","Label","Type","Status","Brand","Last4","Default"],rows:e.subListPaymentInstruments.map(n=>[c(n.id,12),n.label,n.type,n.status,n.brand??"-",n.last4??"-",n.isDefault?"yes":"no"])});}catch(e){o(e);}}),r.command("create").description("Add a payment instrument").requiredOption("--label <label>","Label").option("--type <t>","Payment instrument type","CARD").option("--owner <id>","Owner ID").option("--brand <b>","Card/instrument brand").option("--last4 <n>","Last 4 digits").option("--expiry-month <n>","Expiry month",p).option("--expiry-year <n>","Expiry year",p).option("--processor-token <t>","Processor token").option("--default","Mark as default").option("-f, --format <format>","Output format").action(async t=>{try{let e={label:t.label,type:(t.type??"CARD").toUpperCase(),isDefault:t.default===!0};t.owner&&(e.ownerId=t.owner),t.brand&&(e.brand=t.brand),t.last4&&(e.last4=t.last4),t.expiryMonth!==void 0&&(e.expiryMonth=t.expiryMonth),t.expiryYear!==void 0&&(e.expiryYear=t.expiryYear),t.processorToken&&(e.processorToken=t.processorToken);let n=await a(z,{input:e});u(`Payment instrument added: ${n.subCreatePaymentInstrument.label}`),s(t,n.subCreatePaymentInstrument);}catch(e){o(e);}}),r.command("remove").description("Remove a payment instrument").argument("<id>","Payment instrument ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(J,{id:t});u(`Payment instrument ${t} removed`),s(e,{removed:n.subRemovePaymentInstrument});}catch(n){o(n);}});}function wt(i){let r=i.command("channels").description("SubscriberBot communication channels (email, sms, slack, webhook, \u2026)");r.command("list").description("List communication channels").option("--owner <id>","Filter by owner ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(Q,{ownerId:t.owner});s(t,e.subListChannels,{headers:["ID","Type","Address","Label","Status","Ingest"],rows:e.subListChannels.map(n=>[c(n.id,12),n.type,n.address,n.label??"-",n.status,n.ingestEnabled?"yes":"no"])});}catch(e){o(e);}}),r.command("create").description("Create a communication channel").requiredOption("--address <addr>","Channel address (email, phone, webhook URL, \u2026)").option("--type <t>","Channel type","EMAIL").option("--owner <id>","Owner ID").option("--label <label>","Label").option("--no-ingest","Disable message ingestion").option("-f, --format <format>","Output format").action(async t=>{try{let e={address:t.address,type:(t.type??"EMAIL").toUpperCase(),ingestEnabled:t.ingest!==!1};t.owner&&(e.ownerId=t.owner),t.label&&(e.label=t.label);let n=await a(X,{input:e});u(`Channel created: ${n.subCreateChannel.address}`),s(t,n.subCreateChannel);}catch(e){o(e);}}),r.command("verify").description("Mark a channel as verified").argument("<id>","Channel ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Z,{id:t});u(`Channel verified: ${n.subVerifyChannel.address}`),s(e,n.subVerifyChannel);}catch(n){o(n);}});}function Ct(i){let r=i.command("inbox").description("SubscriberBot universal inbox (merged subscription communications)");r.command("list").description("List inbox messages").option("--category <c>","Filter by message category").option("--channel <id>","Filter by channel ID").option("--relationship <id>","Filter by relationship ID").option("--unread-only","Only unread messages").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,{category:t.category?t.category.toUpperCase():void 0,channelId:t.channel,relationshipId:t.relationship,unreadOnly:t.unreadOnly?!0:void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.subListInboxMessages.items,{headers:["ID","Subject","Category","Read","Action","Received"],rows:e.subListInboxMessages.items.map(n=>[c(n.id,12),c(n.subject??"-",30),n.category,n.isRead?"yes":"no",n.actionRequired?"yes":"no",g(n.receivedAt)])});}catch(e){o(e);}}),r.command("ingest").description("Ingest a message into the universal inbox").requiredOption("--channel <id>","Channel ID").requiredOption("--received-at <iso>","Received at (ISO date)").option("--category <c>","Message category","OTHER").option("--relationship <id>","Relationship ID").option("--subject <s>","Subject").option("--preview <s>","Preview text").option("--external-id <id>","External message ID").option("--category-confidence <n>","Category confidence (0-100)",p).option("--action-required","Flag as action required").option("-f, --format <format>","Output format").action(async t=>{try{let e={channelId:t.channel,receivedAt:t.receivedAt,category:(t.category??"OTHER").toUpperCase(),actionRequired:t.actionRequired===!0};t.relationship&&(e.relationshipId=t.relationship),t.subject&&(e.subject=t.subject),t.preview&&(e.preview=t.preview),t.externalId&&(e.externalId=t.externalId),t.categoryConfidence!==void 0&&(e.categoryConfidence=t.categoryConfidence);let n=await a(et,{input:e});u(`Message ingested: ${n.subIngestMessage.id}`),s(t,n.subIngestMessage);}catch(e){o(e);}}),r.command("mark-read").description("Mark a message as read").argument("<id>","Message ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(nt,{id:t});u(`Message ${t} marked read`),s(e,n.subMarkMessageRead);}catch(n){o(n);}});}function At(i){let r=i.command("agents").description("SubscriberBot AI agents & their automation policies");r.command("list").description("List AI agents").option("--kind <k>","Filter by agent kind").option("--owner <id>","Filter by owner ID").option("--status <s>","Filter by agent status").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(it,{kind:t.kind?t.kind.toUpperCase():void 0,ownerId:t.owner,status:t.status?t.status.toUpperCase():void 0});s(t,e.subListAgents,{headers:["ID","Name","Kind","Status","Description"],rows:e.subListAgents.map(n=>[c(n.id,12),n.name,n.kind,n.status,c(n.description??"-",30)])});}catch(e){o(e);}}),r.command("get").description("Get an agent by id").argument("<id>","Agent ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(rt,{id:t});if(!n.subAgent)throw new l(`Agent ${t} not found`);s(e,n.subAgent);}catch(n){o(n);}}),r.command("create").description("Create an AI agent").requiredOption("--name <name>","Agent name").option("--kind <k>","Agent kind","DISCOVERY").option("--status <s>","Agent status","SUGGEST_ONLY").option("--owner <id>","Owner ID").option("--description <s>","Description").option("--config <json>","Agent config JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,kind:(t.kind??"DISCOVERY").toUpperCase(),status:(t.status??"SUGGEST_ONLY").toUpperCase()};t.owner&&(e.ownerId=t.owner),t.description&&(e.description=t.description),t.config&&(e.config=y("config",t.config));let n=await a(ot,{input:e});u(`Agent created: ${n.subCreateAgent.name}`),s(t,n.subCreateAgent);}catch(e){o(e);}}),r.command("set-status").description("Change an agent's operating posture").argument("<id>","Agent ID").requiredOption("--status <s>","DISABLED|SUGGEST_ONLY|AUTONOMOUS").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(st,{id:t,status:e.status.toUpperCase()});u(`Agent status set to ${n.subSetAgentStatus.status}`),s(e,n.subSetAgentStatus);}catch(n){o(n);}}),r.command("list-policies").description("List policies (optionally filtered by agent)").option("--agent <id>","Filter by agent ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(at,{agentId:t.agent});s(t,e.subListPolicies,{headers:["ID","Name","Action","Enabled","Triggers"],rows:e.subListPolicies.map(n=>[c(n.id,12),n.name,n.action,n.isEnabled?"yes":"no",String(n.triggerCount??0)])});}catch(e){o(e);}}),r.command("create-policy").description("Create an automation policy for an agent").requiredOption("--agent <id>","Agent ID").requiredOption("--name <name>","Policy name").option("--action <a>","Policy action","ALERT").option("--description <s>","Description").option("--condition <json>","Condition JSON").option("--no-enabled","Create disabled").option("-f, --format <format>","Output format").action(async t=>{try{let e={agentId:t.agent,name:t.name,action:(t.action??"ALERT").toUpperCase(),isEnabled:t.enabled!==!1};t.description&&(e.description=t.description),t.condition&&(e.condition=y("condition",t.condition));let n=await a(ut,{input:e});u(`Policy created: ${n.subCreatePolicy.name}`),s(t,n.subCreatePolicy);}catch(e){o(e);}});}function vt(i){let r=i.command("workflows").description("SubscriberBot automation workflows");r.command("list").description("List workflows").option("--status <s>","Filter by workflow status").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(ct,{status:t.status?t.status.toUpperCase():void 0});s(t,e.subListWorkflows,{headers:["ID","Name","Trigger","Status","Runs"],rows:e.subListWorkflows.map(n=>[c(n.id,12),n.name,n.triggerEvent,n.status,String(n.runCount??0)])});}catch(e){o(e);}}),r.command("create").description("Create a workflow").requiredOption("--name <name>","Workflow name").requiredOption("--trigger-event <e>","Trigger event").option("--description <s>","Description").option("--steps <json>","Steps JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,triggerEvent:t.triggerEvent};t.description&&(e.description=t.description),t.steps&&(e.steps=y("steps",t.steps));let n=await a(dt,{input:e});u(`Workflow created: ${n.subCreateWorkflow.name}`),s(t,n.subCreateWorkflow);}catch(e){o(e);}}),r.command("activate").description("Activate a workflow").argument("<id>","Workflow ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(pt,{id:t});u(`Workflow activated: ${n.subActivateWorkflow.name}`),s(e,n.subActivateWorkflow);}catch(n){o(n);}});}function kt(i){i.command("health").description("SubscriberBot service health check (public)").option("-f, --format <format>","Output format").action(async r=>{try{let t=await v(lt);u(t.subHealth),s(r,{health:t.subHealth});}catch(t){o(t);}});}var qt={id:"subscriberbot",version:"1.0.0",displayName:"SubscriberBot",dependsOn:["auth","workspaces"],register(i,r){S(r);let t=i.command("subscriberbot").description("SubscriberBot universal subscription & relationship management");mt(t),gt(t),ft(t),bt(t),It(t),ht(t),yt(t),wt(t),Ct(t),At(t),vt(t),kt(t);}},Gn=qt;module.exports=Gn;
|