@wave-ai-os/wave-cli 0.1.68 → 0.1.70

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/index.cjs CHANGED
@@ -14779,6 +14779,33 @@ var idSchema14 = import_zod19.z.string().trim().min(1);
14779
14779
  var idempotencyKeySchema = import_zod19.z.string().min(1).refine((value) => value.trim() === value, "Idempotency key must not have leading or trailing whitespace.");
14780
14780
  var skillScopeSchema = import_zod19.z.enum(["ADMIN_GLOBAL", "MEMBER_PERSONAL"]);
14781
14781
  var isoDateSchema = import_zod19.z.iso.date();
14782
+ var nonEmptyStringSchema = import_zod19.z.string().trim().min(1);
14783
+ var agentToolAccessSchema = import_zod19.z.array(
14784
+ import_zod19.z.object({
14785
+ tool_key: nonEmptyStringSchema,
14786
+ scope_value: nonEmptyStringSchema
14787
+ }).strict()
14788
+ ).min(1);
14789
+ var agentPluginConnectionsSchema = import_zod19.z.array(
14790
+ import_zod19.z.object({
14791
+ external_tool_connection_id: nonEmptyStringSchema,
14792
+ tool_key: nonEmptyStringSchema,
14793
+ scope_value: nonEmptyStringSchema.optional(),
14794
+ allowed_tools: import_zod19.z.array(nonEmptyStringSchema).optional(),
14795
+ allowed_scopes: import_zod19.z.array(nonEmptyStringSchema).optional(),
14796
+ requires_confirmation: import_zod19.z.boolean().optional(),
14797
+ enabled: import_zod19.z.boolean().optional()
14798
+ }).strict()
14799
+ ).min(1);
14800
+ var agentTriggerSchema = import_zod19.z.object({
14801
+ trigger_type: import_zod19.z.literal("cron"),
14802
+ cron_expression: nonEmptyStringSchema,
14803
+ timezone: nonEmptyStringSchema,
14804
+ starts_at: import_zod19.z.iso.datetime({ offset: true }).nullable().optional(),
14805
+ ends_at: import_zod19.z.iso.datetime({ offset: true }).nullable().optional(),
14806
+ max_runs: import_zod19.z.number().int().positive().nullable().optional(),
14807
+ enabled: import_zod19.z.boolean().optional()
14808
+ }).strict();
14782
14809
  var AGENT_SELECTION = `{
14783
14810
  id
14784
14811
  type
@@ -14791,11 +14818,51 @@ var AGENT_SELECTION = `{
14791
14818
  model
14792
14819
  runWhenMentioned
14793
14820
  webAccessEnabled
14821
+ trustedUrls
14822
+ toolAccess
14823
+ agentToolConnections {
14824
+ id
14825
+ type
14826
+ attributes {
14827
+ agentId
14828
+ externalToolConnectionId
14829
+ toolKey
14830
+ scopeValue
14831
+ allowedTools
14832
+ allowedScopes
14833
+ requiresConfirmation
14834
+ enabled
14835
+ provider
14836
+ service
14837
+ }
14838
+ }
14839
+ triggers {
14840
+ id
14841
+ triggerType
14842
+ cronExpression
14843
+ timezone
14844
+ startsAt
14845
+ endsAt
14846
+ maxRuns
14847
+ enabled
14848
+ nextOccurrenceAt
14849
+ }
14794
14850
  organizationId
14795
14851
  memberId
14796
14852
  createdAt
14797
14853
  updatedAt
14798
14854
  }`;
14855
+ var AGENT_PLUGIN_CATALOG_SELECTION = `{
14856
+ externalToolConnectionId
14857
+ provider
14858
+ service
14859
+ toolKey
14860
+ displayName
14861
+ requiredScopes
14862
+ defaultConfirmationPolicy
14863
+ connectionState
14864
+ status
14865
+ }`;
14799
14866
  var AUTOMATION_SELECTION = `{
14800
14867
  id
14801
14868
  type
@@ -14856,6 +14923,10 @@ function parseJson(value, optionName) {
14856
14923
  });
14857
14924
  }
14858
14925
  }
14926
+ function parseJsonOption(value, optionName, schema) {
14927
+ if (value === void 0) return void 0;
14928
+ return schema.parse(parseJson(String(value), optionName));
14929
+ }
14859
14930
  function normalizePersistedCreatePayload(payload) {
14860
14931
  const mutation = asRecord8(payload);
14861
14932
  const mutationData = asRecord8(mutation?.data);
@@ -14893,11 +14964,25 @@ function normalizePersistedCreatePayload(payload) {
14893
14964
  }
14894
14965
  function registerAtlasAuthoringCommands(program) {
14895
14966
  const agents = program.command("agents").description("Bounded Agent authoring operations");
14896
- agents.command("create").description("Create an Agent through the API-owned createAgent contract").requiredOption("--idempotency-key <key>", "Required create idempotency key").option("--name <name>").option("--description <description>").option("--notes <notes>").option("--member-id <memberId>").option("--status <status>").option("--visibility <visibility>").option("--model <model>").option("--run-when-mentioned <boolean>", "true or false").option("--web-access-enabled <boolean>", "true or false").option("--trusted-urls <urls>", "Comma-separated trusted URLs").action(async (opts, cmd) => {
14967
+ agents.command("create").description("Create an Agent through the API-owned createAgent contract").requiredOption("--idempotency-key <key>", "Required create idempotency key").option("--name <name>").option("--description <description>").option("--notes <notes>").option("--member-id <memberId>").option("--status <status>").option("--visibility <visibility>").option("--model <model>").option("--run-when-mentioned <boolean>", "true or false").option("--web-access-enabled <boolean>", "true or false").option("--trusted-urls <urls>", "Comma-separated trusted URLs").option("--tool-access <json>", "JSON array of canonical native Agent tool scopes").option(
14968
+ "--plugin-connections <json>",
14969
+ "JSON array of persisted Agent connector grants"
14970
+ ).option("--trigger <json>", "Canonical cron Agent trigger JSON").action(async (opts, cmd) => {
14897
14971
  const idempotencyKey = idempotencyKeySchema.parse(opts.idempotencyKey);
14898
14972
  const runWhenMentioned = parseBooleanOption(opts.runWhenMentioned, "--run-when-mentioned");
14899
14973
  const webAccessEnabled = parseBooleanOption(opts.webAccessEnabled, "--web-access-enabled");
14900
14974
  const trustedUrls = parseCommaSeparatedStrings(opts.trustedUrls);
14975
+ const toolAccess = parseJsonOption(
14976
+ opts.toolAccess,
14977
+ "--tool-access",
14978
+ agentToolAccessSchema
14979
+ );
14980
+ const pluginConnections = parseJsonOption(
14981
+ opts.pluginConnections,
14982
+ "--plugin-connections",
14983
+ agentPluginConnectionsSchema
14984
+ );
14985
+ const trigger = parseJsonOption(opts.trigger, "--trigger", agentTriggerSchema);
14901
14986
  const context = await resolveCommandContext(cmd.optsWithGlobals());
14902
14987
  const organizationId = resolveOrganizationId(context.organizationId);
14903
14988
  await runGraphqlMutationCommand({
@@ -14923,7 +15008,10 @@ function registerAtlasAuthoringCommands(program) {
14923
15008
  ...opts.model !== void 0 ? { model: String(opts.model) } : {},
14924
15009
  ...runWhenMentioned !== void 0 ? { run_when_mentioned: runWhenMentioned } : {},
14925
15010
  ...webAccessEnabled !== void 0 ? { web_access_enabled: webAccessEnabled } : {},
14926
- ...trustedUrls !== void 0 ? { trusted_urls: trustedUrls } : {}
15011
+ ...trustedUrls !== void 0 ? { trusted_urls: trustedUrls } : {},
15012
+ ...toolAccess !== void 0 ? { tool_access: toolAccess } : {},
15013
+ ...pluginConnections !== void 0 ? { agent_tool_connections_attributes: pluginConnections } : {},
15014
+ ...trigger !== void 0 ? { trigger_attributes: trigger } : {}
14927
15015
  }
14928
15016
  },
14929
15017
  idempotency_key: idempotencyKey
@@ -14946,6 +15034,23 @@ function registerAtlasAuthoringCommands(program) {
14946
15034
  isShow: true
14947
15035
  });
14948
15036
  });
15037
+ agents.command("plugin-catalog").description("Read connected Agent plugin capabilities for one supported service").requiredOption(
15038
+ "--service <service>",
15039
+ "Supported service: gmail, calendar, slack, or stripe"
15040
+ ).action(async (opts, cmd) => {
15041
+ const service = import_zod19.z.enum(["gmail", "calendar", "slack", "stripe"]).parse(opts.service);
15042
+ const context = await resolveCommandContext(cmd.optsWithGlobals());
15043
+ const organizationId = resolveOrganizationId(context.organizationId);
15044
+ await runGraphqlQueryCommand({
15045
+ command: "agents.plugin-catalog",
15046
+ operationName: "AgentsPluginCatalog",
15047
+ runtimeOptions: context.runtimeOptions,
15048
+ field: "external_tool_catalog",
15049
+ variables: { organization_id: organizationId, service },
15050
+ variableTypes: { organization_id: "ID!", service: "String!" },
15051
+ selectionSet: AGENT_PLUGIN_CATALOG_SELECTION
15052
+ });
15053
+ });
14949
15054
  const automations = program.command("automations").description("Bounded Automation authoring operations");
14950
15055
  automations.command("create").description("Create an Automation through the API-owned createAutomation contract").requiredOption("--summary <summary>").requiredOption("--ai-task-config <json>", "Valid JSON for the API-owned ai_task_config field").requiredOption("--idempotency-key <key>", "Required create idempotency key").option("--description <description>").option("--notes <notes>").option("--member-id <memberId>").option("--agent-id <agentId>", "Optional executor Agent id for a repeat Automation").option("--status <status>").option("--priority <priority>").option("--due-date <date>", "ISO-8601 date (YYYY-MM-DD)").action(async (opts, cmd) => {
14951
15056
  const idempotencyKey = idempotencyKeySchema.parse(opts.idempotencyKey);
@@ -15035,7 +15140,7 @@ var import_node_path4 = require("path");
15035
15140
  var import_node_crypto3 = require("crypto");
15036
15141
 
15037
15142
  // src/version.ts
15038
- var CLI_VERSION = "0.1.68";
15143
+ var CLI_VERSION = "0.1.70";
15039
15144
 
15040
15145
  // src/operationMetadata.ts
15041
15146
  var DISCOVERY_OPERATION_IDS = [
@@ -15154,6 +15259,7 @@ var READ_OPERATION_IDS = [
15154
15259
  "accountability.list",
15155
15260
  "accountability.search",
15156
15261
  "accountability.show",
15262
+ "agents.plugin-catalog",
15157
15263
  "agents.show",
15158
15264
  "auth.status",
15159
15265
  "automations.show",
@@ -15829,6 +15935,7 @@ var NAMESPACE_DOCS = {
15829
15935
  description: "Bounded Agent create and persisted readback operations.",
15830
15936
  examples: [
15831
15937
  'wave agents create --name "Planning helper" --idempotency-key agent-create-001',
15938
+ `wave agents create --name "Project summary" --notes "Summarize my projects." --tool-access '[{"tool_key":"projects","scope_value":"all"}]' --trigger '{"trigger_type":"cron","cron_expression":"0 14 * * 2","timezone":"America/Phoenix","enabled":true}' --idempotency-key agent-create-002`,
15832
15939
  "wave agents show --id 123"
15833
15940
  ],
15834
15941
  schema: {
@@ -15837,6 +15944,8 @@ var NAMESPACE_DOCS = {
15837
15944
  safety: [
15838
15945
  "Create calls only createAgent with an explicit idempotency key.",
15839
15946
  "Create preserves API-owned defaults by sending only supplied typed Agent fields.",
15947
+ "Native tools, plugin connector grants, and the cron trigger use strict canonical JSON shapes.",
15948
+ "Outlook Calendar and Outlook Mail are not supported Agent plugin families in this release.",
15840
15949
  "Show uses the API-owned agent query by id; no slug fallback is implemented."
15841
15950
  ],
15842
15951
  commands: ["create", "show"]
package/dist/index.js CHANGED
@@ -14778,6 +14778,33 @@ var idSchema14 = z19.string().trim().min(1);
14778
14778
  var idempotencyKeySchema = z19.string().min(1).refine((value) => value.trim() === value, "Idempotency key must not have leading or trailing whitespace.");
14779
14779
  var skillScopeSchema = z19.enum(["ADMIN_GLOBAL", "MEMBER_PERSONAL"]);
14780
14780
  var isoDateSchema = z19.iso.date();
14781
+ var nonEmptyStringSchema = z19.string().trim().min(1);
14782
+ var agentToolAccessSchema = z19.array(
14783
+ z19.object({
14784
+ tool_key: nonEmptyStringSchema,
14785
+ scope_value: nonEmptyStringSchema
14786
+ }).strict()
14787
+ ).min(1);
14788
+ var agentPluginConnectionsSchema = z19.array(
14789
+ z19.object({
14790
+ external_tool_connection_id: nonEmptyStringSchema,
14791
+ tool_key: nonEmptyStringSchema,
14792
+ scope_value: nonEmptyStringSchema.optional(),
14793
+ allowed_tools: z19.array(nonEmptyStringSchema).optional(),
14794
+ allowed_scopes: z19.array(nonEmptyStringSchema).optional(),
14795
+ requires_confirmation: z19.boolean().optional(),
14796
+ enabled: z19.boolean().optional()
14797
+ }).strict()
14798
+ ).min(1);
14799
+ var agentTriggerSchema = z19.object({
14800
+ trigger_type: z19.literal("cron"),
14801
+ cron_expression: nonEmptyStringSchema,
14802
+ timezone: nonEmptyStringSchema,
14803
+ starts_at: z19.iso.datetime({ offset: true }).nullable().optional(),
14804
+ ends_at: z19.iso.datetime({ offset: true }).nullable().optional(),
14805
+ max_runs: z19.number().int().positive().nullable().optional(),
14806
+ enabled: z19.boolean().optional()
14807
+ }).strict();
14781
14808
  var AGENT_SELECTION = `{
14782
14809
  id
14783
14810
  type
@@ -14790,11 +14817,51 @@ var AGENT_SELECTION = `{
14790
14817
  model
14791
14818
  runWhenMentioned
14792
14819
  webAccessEnabled
14820
+ trustedUrls
14821
+ toolAccess
14822
+ agentToolConnections {
14823
+ id
14824
+ type
14825
+ attributes {
14826
+ agentId
14827
+ externalToolConnectionId
14828
+ toolKey
14829
+ scopeValue
14830
+ allowedTools
14831
+ allowedScopes
14832
+ requiresConfirmation
14833
+ enabled
14834
+ provider
14835
+ service
14836
+ }
14837
+ }
14838
+ triggers {
14839
+ id
14840
+ triggerType
14841
+ cronExpression
14842
+ timezone
14843
+ startsAt
14844
+ endsAt
14845
+ maxRuns
14846
+ enabled
14847
+ nextOccurrenceAt
14848
+ }
14793
14849
  organizationId
14794
14850
  memberId
14795
14851
  createdAt
14796
14852
  updatedAt
14797
14853
  }`;
14854
+ var AGENT_PLUGIN_CATALOG_SELECTION = `{
14855
+ externalToolConnectionId
14856
+ provider
14857
+ service
14858
+ toolKey
14859
+ displayName
14860
+ requiredScopes
14861
+ defaultConfirmationPolicy
14862
+ connectionState
14863
+ status
14864
+ }`;
14798
14865
  var AUTOMATION_SELECTION = `{
14799
14866
  id
14800
14867
  type
@@ -14855,6 +14922,10 @@ function parseJson(value, optionName) {
14855
14922
  });
14856
14923
  }
14857
14924
  }
14925
+ function parseJsonOption(value, optionName, schema) {
14926
+ if (value === void 0) return void 0;
14927
+ return schema.parse(parseJson(String(value), optionName));
14928
+ }
14858
14929
  function normalizePersistedCreatePayload(payload) {
14859
14930
  const mutation = asRecord8(payload);
14860
14931
  const mutationData = asRecord8(mutation?.data);
@@ -14892,11 +14963,25 @@ function normalizePersistedCreatePayload(payload) {
14892
14963
  }
14893
14964
  function registerAtlasAuthoringCommands(program) {
14894
14965
  const agents = program.command("agents").description("Bounded Agent authoring operations");
14895
- agents.command("create").description("Create an Agent through the API-owned createAgent contract").requiredOption("--idempotency-key <key>", "Required create idempotency key").option("--name <name>").option("--description <description>").option("--notes <notes>").option("--member-id <memberId>").option("--status <status>").option("--visibility <visibility>").option("--model <model>").option("--run-when-mentioned <boolean>", "true or false").option("--web-access-enabled <boolean>", "true or false").option("--trusted-urls <urls>", "Comma-separated trusted URLs").action(async (opts, cmd) => {
14966
+ agents.command("create").description("Create an Agent through the API-owned createAgent contract").requiredOption("--idempotency-key <key>", "Required create idempotency key").option("--name <name>").option("--description <description>").option("--notes <notes>").option("--member-id <memberId>").option("--status <status>").option("--visibility <visibility>").option("--model <model>").option("--run-when-mentioned <boolean>", "true or false").option("--web-access-enabled <boolean>", "true or false").option("--trusted-urls <urls>", "Comma-separated trusted URLs").option("--tool-access <json>", "JSON array of canonical native Agent tool scopes").option(
14967
+ "--plugin-connections <json>",
14968
+ "JSON array of persisted Agent connector grants"
14969
+ ).option("--trigger <json>", "Canonical cron Agent trigger JSON").action(async (opts, cmd) => {
14896
14970
  const idempotencyKey = idempotencyKeySchema.parse(opts.idempotencyKey);
14897
14971
  const runWhenMentioned = parseBooleanOption(opts.runWhenMentioned, "--run-when-mentioned");
14898
14972
  const webAccessEnabled = parseBooleanOption(opts.webAccessEnabled, "--web-access-enabled");
14899
14973
  const trustedUrls = parseCommaSeparatedStrings(opts.trustedUrls);
14974
+ const toolAccess = parseJsonOption(
14975
+ opts.toolAccess,
14976
+ "--tool-access",
14977
+ agentToolAccessSchema
14978
+ );
14979
+ const pluginConnections = parseJsonOption(
14980
+ opts.pluginConnections,
14981
+ "--plugin-connections",
14982
+ agentPluginConnectionsSchema
14983
+ );
14984
+ const trigger = parseJsonOption(opts.trigger, "--trigger", agentTriggerSchema);
14900
14985
  const context = await resolveCommandContext(cmd.optsWithGlobals());
14901
14986
  const organizationId = resolveOrganizationId(context.organizationId);
14902
14987
  await runGraphqlMutationCommand({
@@ -14922,7 +15007,10 @@ function registerAtlasAuthoringCommands(program) {
14922
15007
  ...opts.model !== void 0 ? { model: String(opts.model) } : {},
14923
15008
  ...runWhenMentioned !== void 0 ? { run_when_mentioned: runWhenMentioned } : {},
14924
15009
  ...webAccessEnabled !== void 0 ? { web_access_enabled: webAccessEnabled } : {},
14925
- ...trustedUrls !== void 0 ? { trusted_urls: trustedUrls } : {}
15010
+ ...trustedUrls !== void 0 ? { trusted_urls: trustedUrls } : {},
15011
+ ...toolAccess !== void 0 ? { tool_access: toolAccess } : {},
15012
+ ...pluginConnections !== void 0 ? { agent_tool_connections_attributes: pluginConnections } : {},
15013
+ ...trigger !== void 0 ? { trigger_attributes: trigger } : {}
14926
15014
  }
14927
15015
  },
14928
15016
  idempotency_key: idempotencyKey
@@ -14945,6 +15033,23 @@ function registerAtlasAuthoringCommands(program) {
14945
15033
  isShow: true
14946
15034
  });
14947
15035
  });
15036
+ agents.command("plugin-catalog").description("Read connected Agent plugin capabilities for one supported service").requiredOption(
15037
+ "--service <service>",
15038
+ "Supported service: gmail, calendar, slack, or stripe"
15039
+ ).action(async (opts, cmd) => {
15040
+ const service = z19.enum(["gmail", "calendar", "slack", "stripe"]).parse(opts.service);
15041
+ const context = await resolveCommandContext(cmd.optsWithGlobals());
15042
+ const organizationId = resolveOrganizationId(context.organizationId);
15043
+ await runGraphqlQueryCommand({
15044
+ command: "agents.plugin-catalog",
15045
+ operationName: "AgentsPluginCatalog",
15046
+ runtimeOptions: context.runtimeOptions,
15047
+ field: "external_tool_catalog",
15048
+ variables: { organization_id: organizationId, service },
15049
+ variableTypes: { organization_id: "ID!", service: "String!" },
15050
+ selectionSet: AGENT_PLUGIN_CATALOG_SELECTION
15051
+ });
15052
+ });
14948
15053
  const automations = program.command("automations").description("Bounded Automation authoring operations");
14949
15054
  automations.command("create").description("Create an Automation through the API-owned createAutomation contract").requiredOption("--summary <summary>").requiredOption("--ai-task-config <json>", "Valid JSON for the API-owned ai_task_config field").requiredOption("--idempotency-key <key>", "Required create idempotency key").option("--description <description>").option("--notes <notes>").option("--member-id <memberId>").option("--agent-id <agentId>", "Optional executor Agent id for a repeat Automation").option("--status <status>").option("--priority <priority>").option("--due-date <date>", "ISO-8601 date (YYYY-MM-DD)").action(async (opts, cmd) => {
14950
15055
  const idempotencyKey = idempotencyKeySchema.parse(opts.idempotencyKey);
@@ -15034,7 +15139,7 @@ import { join as join3 } from "path";
15034
15139
  import { createHash } from "crypto";
15035
15140
 
15036
15141
  // src/version.ts
15037
- var CLI_VERSION = "0.1.68";
15142
+ var CLI_VERSION = "0.1.70";
15038
15143
 
15039
15144
  // src/operationMetadata.ts
15040
15145
  var DISCOVERY_OPERATION_IDS = [
@@ -15153,6 +15258,7 @@ var READ_OPERATION_IDS = [
15153
15258
  "accountability.list",
15154
15259
  "accountability.search",
15155
15260
  "accountability.show",
15261
+ "agents.plugin-catalog",
15156
15262
  "agents.show",
15157
15263
  "auth.status",
15158
15264
  "automations.show",
@@ -15828,6 +15934,7 @@ var NAMESPACE_DOCS = {
15828
15934
  description: "Bounded Agent create and persisted readback operations.",
15829
15935
  examples: [
15830
15936
  'wave agents create --name "Planning helper" --idempotency-key agent-create-001',
15937
+ `wave agents create --name "Project summary" --notes "Summarize my projects." --tool-access '[{"tool_key":"projects","scope_value":"all"}]' --trigger '{"trigger_type":"cron","cron_expression":"0 14 * * 2","timezone":"America/Phoenix","enabled":true}' --idempotency-key agent-create-002`,
15831
15938
  "wave agents show --id 123"
15832
15939
  ],
15833
15940
  schema: {
@@ -15836,6 +15943,8 @@ var NAMESPACE_DOCS = {
15836
15943
  safety: [
15837
15944
  "Create calls only createAgent with an explicit idempotency key.",
15838
15945
  "Create preserves API-owned defaults by sending only supplied typed Agent fields.",
15946
+ "Native tools, plugin connector grants, and the cron trigger use strict canonical JSON shapes.",
15947
+ "Outlook Calendar and Outlook Mail are not supported Agent plugin families in this release.",
15839
15948
  "Show uses the API-owned agent query by id; no slug fallback is implemented."
15840
15949
  ],
15841
15950
  commands: ["create", "show"]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wave-ai-os/wave-cli",
3
- "version": "0.1.68",
3
+ "version": "0.1.70",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "wave": "dist/index.js"