@wave-ai-os/wave-cli 0.1.65 → 0.1.66

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
@@ -14777,115 +14777,6 @@ function registerDatasheetsCommands(program) {
14777
14777
  });
14778
14778
  }
14779
14779
 
14780
- // src/commands/aiNotes.ts
14781
- var AI_NOTE_SAFE_FIELDS = [
14782
- "id",
14783
- "slug",
14784
- "title",
14785
- "status",
14786
- "visibility",
14787
- "sourceType",
14788
- "sourceReference",
14789
- "ownerMemberId",
14790
- "scheduledStartAt",
14791
- "scheduledEndAt",
14792
- "createdAt",
14793
- "updatedAt"
14794
- ];
14795
- var AI_NOTE_SELECTION = `{ ${AI_NOTE_SAFE_FIELDS.join(" ")} }`;
14796
- var AI_NOTES_SELECTION = AI_NOTE_SELECTION;
14797
- function pickSafeAiNoteFields(value) {
14798
- if (!value || typeof value !== "object" || Array.isArray(value)) {
14799
- return null;
14800
- }
14801
- const record = value;
14802
- const safe = {};
14803
- for (const field of AI_NOTE_SAFE_FIELDS) {
14804
- if (Object.prototype.hasOwnProperty.call(record, field)) {
14805
- safe[field] = record[field];
14806
- }
14807
- }
14808
- return safe;
14809
- }
14810
- function projectAiNotesPayload(payload) {
14811
- if (Array.isArray(payload)) {
14812
- return payload.map((item) => pickSafeAiNoteFields(item)).filter(Boolean);
14813
- }
14814
- if (!payload || typeof payload !== "object") {
14815
- return payload;
14816
- }
14817
- return pickSafeAiNoteFields(payload);
14818
- }
14819
- function showVariables(opts) {
14820
- const id = typeof opts.id === "string" && opts.id.trim() !== "" ? opts.id.trim() : void 0;
14821
- const slug = typeof opts.slug === "string" && opts.slug.trim() !== "" ? opts.slug.trim() : void 0;
14822
- if (!id && !slug || id && slug) {
14823
- throw new CliError({
14824
- message: "Provide exactly one AI Note identifier: --id or --slug.",
14825
- kind: "invalid_args",
14826
- status: 400,
14827
- exitCode: EXIT_CODES.invalidArgs,
14828
- details: { requiredOneOf: ["--id", "--slug"] }
14829
- });
14830
- }
14831
- return id ? { id } : { slug };
14832
- }
14833
- async function runAiNotesQuery(cmd, config) {
14834
- const context = await resolveCommandContext(cmd.optsWithGlobals());
14835
- await runGraphqlQueryCommand({
14836
- command: config.command,
14837
- operationName: config.operationName,
14838
- runtimeOptions: context.runtimeOptions,
14839
- field: config.field,
14840
- variables: normalizeGraphqlVariables2({
14841
- organization_id: resolveOrganizationId(context.organizationId),
14842
- ...config.variables
14843
- }),
14844
- variableTypes: config.variableTypes,
14845
- selectionSet: config.selectionSet,
14846
- isList: config.isList,
14847
- isShow: config.isShow,
14848
- transformData: projectAiNotesPayload
14849
- });
14850
- }
14851
- function registerAiNotesCommands(program) {
14852
- const aiNotes = program.command("ai-notes").description("AI Notes read-only list and detail metadata");
14853
- aiNotes.command("list").description("Read safe AI Note metadata without transcripts or provider payloads").option("--page <page>").option("--per <per>").action(async (opts, cmd) => {
14854
- await runAiNotesQuery(cmd, {
14855
- command: "ai-notes.list",
14856
- operationName: "AiNotes",
14857
- field: "ai_notes",
14858
- variables: {
14859
- page: opts.page,
14860
- per: opts.per
14861
- },
14862
- variableTypes: {
14863
- organization_id: "ID!",
14864
- page: "Int",
14865
- per: "Int"
14866
- },
14867
- selectionSet: AI_NOTES_SELECTION,
14868
- isList: true
14869
- });
14870
- });
14871
- aiNotes.command("show").description("Read safe AI Note detail metadata by id or slug").option("--id <id>").option("--slug <slug>").action(async (opts, cmd) => {
14872
- const variables = showVariables(opts);
14873
- await runAiNotesQuery(cmd, {
14874
- command: "ai-notes.show",
14875
- operationName: "AiNote",
14876
- field: "ai_note",
14877
- variables,
14878
- variableTypes: {
14879
- organization_id: "ID!",
14880
- ...variables.id ? { id: "ID!" } : {},
14881
- ...variables.slug ? { slug: "String!" } : {}
14882
- },
14883
- selectionSet: AI_NOTE_SELECTION,
14884
- isShow: true
14885
- });
14886
- });
14887
- }
14888
-
14889
14780
  // src/commands/atlasAuthoring.ts
14890
14781
  var import_zod19 = require("zod");
14891
14782
  var idSchema14 = import_zod19.z.string().trim().min(1);
@@ -15060,7 +14951,7 @@ function registerAtlasAuthoringCommands(program) {
15060
14951
  });
15061
14952
  });
15062
14953
  const automations = program.command("automations").description("Bounded Automation authoring operations");
15063
- 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("--status <status>").option("--priority <priority>").option("--due-date <date>", "ISO-8601 date (YYYY-MM-DD)").action(async (opts, cmd) => {
14954
+ 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) => {
15064
14955
  const idempotencyKey = idempotencyKeySchema.parse(opts.idempotencyKey);
15065
14956
  const context = await resolveCommandContext(cmd.optsWithGlobals());
15066
14957
  const organizationId = resolveOrganizationId(context.organizationId);
@@ -15082,6 +14973,7 @@ function registerAtlasAuthoringCommands(program) {
15082
14973
  ...opts.description !== void 0 ? { description: String(opts.description) } : {},
15083
14974
  ...opts.notes !== void 0 ? { notes: String(opts.notes) } : {},
15084
14975
  ...opts.memberId !== void 0 ? { member_id: idSchema14.parse(opts.memberId) } : {},
14976
+ ...opts.agentId !== void 0 ? { agentId: idSchema14.parse(opts.agentId) } : {},
15085
14977
  ...opts.status !== void 0 ? { status: String(opts.status) } : {},
15086
14978
  ...opts.priority !== void 0 ? { priority: String(opts.priority) } : {},
15087
14979
  ...opts.dueDate !== void 0 ? { due_date: isoDateSchema.parse(opts.dueDate) } : {}
@@ -15152,7 +15044,6 @@ var PRIMARY_NAMESPACES = [
15152
15044
  "planner",
15153
15045
  "mail",
15154
15046
  "datasheets",
15155
- "ai-notes",
15156
15047
  "phantom",
15157
15048
  "tasks",
15158
15049
  "projects",
@@ -15317,7 +15208,7 @@ var NAMESPACE_DOCS = {
15317
15208
  tier: "primary",
15318
15209
  description: "Bounded Automation create and persisted readback operations.",
15319
15210
  examples: [
15320
- `wave automations create --summary "Weekly review" --ai-task-config '{"prompt":"Review tasks"}' --idempotency-key automation-create-001`,
15211
+ `wave automations create --summary "Weekly review" --agent-id 123 --ai-task-config '{"cycle":"repeat","repeatSchedule":{"interval":1,"frequency":"week","weekdays":[1,3],"at":"2:30 PM","starting":"2026-07-20T00:00:00.000Z","ending":"never","endingRuns":1,"endingDate":null,"timezone":"America/Phoenix"}}' --idempotency-key automation-create-001`,
15321
15212
  "wave automations show --id 123"
15322
15213
  ],
15323
15214
  schema: {
@@ -15326,6 +15217,7 @@ var NAMESPACE_DOCS = {
15326
15217
  safety: [
15327
15218
  "Create calls only createAutomation with an explicit idempotency key.",
15328
15219
  "Only the API-defined ai_task_config field accepts validated JSON.",
15220
+ "Optional executor Agent linkage is sent only through the API-defined top-level agentId input.",
15329
15221
  "Does not create a project Task, run an Automation, or invoke AI OS actions.",
15330
15222
  "Show uses the API-owned automation query by id; no slug fallback is implemented."
15331
15223
  ],
@@ -15587,26 +15479,6 @@ var NAMESPACE_DOCS = {
15587
15479
  ]
15588
15480
  }
15589
15481
  },
15590
- "ai-notes": {
15591
- name: "ai-notes",
15592
- tier: "primary",
15593
- description: "AI Notes read-only list and detail metadata for CLI-backed Atlas and harness inspection.",
15594
- examples: [
15595
- "wave ai-notes list --page 1 --per 20",
15596
- "wave ai-notes show --id note_123",
15597
- "wave ai-notes show --slug weekly-summary"
15598
- ],
15599
- schema: {
15600
- output: "json-envelope-default",
15601
- readOnly: true,
15602
- safety: [
15603
- "Uses API-owned GraphQL read fields aiNotes and aiNote.",
15604
- "List/show output is limited to safe AI Note identifiers, title, status, visibility, source reference, owner member id, schedule timestamps, and record timestamps.",
15605
- "Does not expose transcript upload, transcription finalize, consent grant, create, update, delete, transcript text, segment text, client secrets, unsafe metadata, raw provider payloads, credentials, tokens, or secrets by default."
15606
- ],
15607
- commands: ["list", "show"]
15608
- }
15609
- },
15610
15482
  "markdown-tree": {
15611
15483
  name: "markdown-tree",
15612
15484
  tier: "advanced",
@@ -16124,7 +15996,7 @@ function attachDiscoveryHelp(program) {
16124
15996
  }
16125
15997
 
16126
15998
  // src/version.ts
16127
- var CLI_VERSION = "0.1.65";
15999
+ var CLI_VERSION = "0.1.66";
16128
16000
 
16129
16001
  // src/cli.ts
16130
16002
  function buildCli(options) {
@@ -16200,7 +16072,6 @@ function buildCli(options) {
16200
16072
  registerMailCommands(program);
16201
16073
  registerPhantomCommands(program);
16202
16074
  registerDatasheetsCommands(program);
16203
- registerAiNotesCommands(program);
16204
16075
  registerAuthCommands(program);
16205
16076
  registerDiscoveryCommands(program);
16206
16077
  attachNamespaceDiscovery(program);
package/dist/index.js CHANGED
@@ -14776,115 +14776,6 @@ function registerDatasheetsCommands(program) {
14776
14776
  });
14777
14777
  }
14778
14778
 
14779
- // src/commands/aiNotes.ts
14780
- var AI_NOTE_SAFE_FIELDS = [
14781
- "id",
14782
- "slug",
14783
- "title",
14784
- "status",
14785
- "visibility",
14786
- "sourceType",
14787
- "sourceReference",
14788
- "ownerMemberId",
14789
- "scheduledStartAt",
14790
- "scheduledEndAt",
14791
- "createdAt",
14792
- "updatedAt"
14793
- ];
14794
- var AI_NOTE_SELECTION = `{ ${AI_NOTE_SAFE_FIELDS.join(" ")} }`;
14795
- var AI_NOTES_SELECTION = AI_NOTE_SELECTION;
14796
- function pickSafeAiNoteFields(value) {
14797
- if (!value || typeof value !== "object" || Array.isArray(value)) {
14798
- return null;
14799
- }
14800
- const record = value;
14801
- const safe = {};
14802
- for (const field of AI_NOTE_SAFE_FIELDS) {
14803
- if (Object.prototype.hasOwnProperty.call(record, field)) {
14804
- safe[field] = record[field];
14805
- }
14806
- }
14807
- return safe;
14808
- }
14809
- function projectAiNotesPayload(payload) {
14810
- if (Array.isArray(payload)) {
14811
- return payload.map((item) => pickSafeAiNoteFields(item)).filter(Boolean);
14812
- }
14813
- if (!payload || typeof payload !== "object") {
14814
- return payload;
14815
- }
14816
- return pickSafeAiNoteFields(payload);
14817
- }
14818
- function showVariables(opts) {
14819
- const id = typeof opts.id === "string" && opts.id.trim() !== "" ? opts.id.trim() : void 0;
14820
- const slug = typeof opts.slug === "string" && opts.slug.trim() !== "" ? opts.slug.trim() : void 0;
14821
- if (!id && !slug || id && slug) {
14822
- throw new CliError({
14823
- message: "Provide exactly one AI Note identifier: --id or --slug.",
14824
- kind: "invalid_args",
14825
- status: 400,
14826
- exitCode: EXIT_CODES.invalidArgs,
14827
- details: { requiredOneOf: ["--id", "--slug"] }
14828
- });
14829
- }
14830
- return id ? { id } : { slug };
14831
- }
14832
- async function runAiNotesQuery(cmd, config) {
14833
- const context = await resolveCommandContext(cmd.optsWithGlobals());
14834
- await runGraphqlQueryCommand({
14835
- command: config.command,
14836
- operationName: config.operationName,
14837
- runtimeOptions: context.runtimeOptions,
14838
- field: config.field,
14839
- variables: normalizeGraphqlVariables2({
14840
- organization_id: resolveOrganizationId(context.organizationId),
14841
- ...config.variables
14842
- }),
14843
- variableTypes: config.variableTypes,
14844
- selectionSet: config.selectionSet,
14845
- isList: config.isList,
14846
- isShow: config.isShow,
14847
- transformData: projectAiNotesPayload
14848
- });
14849
- }
14850
- function registerAiNotesCommands(program) {
14851
- const aiNotes = program.command("ai-notes").description("AI Notes read-only list and detail metadata");
14852
- aiNotes.command("list").description("Read safe AI Note metadata without transcripts or provider payloads").option("--page <page>").option("--per <per>").action(async (opts, cmd) => {
14853
- await runAiNotesQuery(cmd, {
14854
- command: "ai-notes.list",
14855
- operationName: "AiNotes",
14856
- field: "ai_notes",
14857
- variables: {
14858
- page: opts.page,
14859
- per: opts.per
14860
- },
14861
- variableTypes: {
14862
- organization_id: "ID!",
14863
- page: "Int",
14864
- per: "Int"
14865
- },
14866
- selectionSet: AI_NOTES_SELECTION,
14867
- isList: true
14868
- });
14869
- });
14870
- aiNotes.command("show").description("Read safe AI Note detail metadata by id or slug").option("--id <id>").option("--slug <slug>").action(async (opts, cmd) => {
14871
- const variables = showVariables(opts);
14872
- await runAiNotesQuery(cmd, {
14873
- command: "ai-notes.show",
14874
- operationName: "AiNote",
14875
- field: "ai_note",
14876
- variables,
14877
- variableTypes: {
14878
- organization_id: "ID!",
14879
- ...variables.id ? { id: "ID!" } : {},
14880
- ...variables.slug ? { slug: "String!" } : {}
14881
- },
14882
- selectionSet: AI_NOTE_SELECTION,
14883
- isShow: true
14884
- });
14885
- });
14886
- }
14887
-
14888
14779
  // src/commands/atlasAuthoring.ts
14889
14780
  import { z as z19 } from "zod";
14890
14781
  var idSchema14 = z19.string().trim().min(1);
@@ -15059,7 +14950,7 @@ function registerAtlasAuthoringCommands(program) {
15059
14950
  });
15060
14951
  });
15061
14952
  const automations = program.command("automations").description("Bounded Automation authoring operations");
15062
- 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("--status <status>").option("--priority <priority>").option("--due-date <date>", "ISO-8601 date (YYYY-MM-DD)").action(async (opts, cmd) => {
14953
+ 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) => {
15063
14954
  const idempotencyKey = idempotencyKeySchema.parse(opts.idempotencyKey);
15064
14955
  const context = await resolveCommandContext(cmd.optsWithGlobals());
15065
14956
  const organizationId = resolveOrganizationId(context.organizationId);
@@ -15081,6 +14972,7 @@ function registerAtlasAuthoringCommands(program) {
15081
14972
  ...opts.description !== void 0 ? { description: String(opts.description) } : {},
15082
14973
  ...opts.notes !== void 0 ? { notes: String(opts.notes) } : {},
15083
14974
  ...opts.memberId !== void 0 ? { member_id: idSchema14.parse(opts.memberId) } : {},
14975
+ ...opts.agentId !== void 0 ? { agentId: idSchema14.parse(opts.agentId) } : {},
15084
14976
  ...opts.status !== void 0 ? { status: String(opts.status) } : {},
15085
14977
  ...opts.priority !== void 0 ? { priority: String(opts.priority) } : {},
15086
14978
  ...opts.dueDate !== void 0 ? { due_date: isoDateSchema.parse(opts.dueDate) } : {}
@@ -15151,7 +15043,6 @@ var PRIMARY_NAMESPACES = [
15151
15043
  "planner",
15152
15044
  "mail",
15153
15045
  "datasheets",
15154
- "ai-notes",
15155
15046
  "phantom",
15156
15047
  "tasks",
15157
15048
  "projects",
@@ -15316,7 +15207,7 @@ var NAMESPACE_DOCS = {
15316
15207
  tier: "primary",
15317
15208
  description: "Bounded Automation create and persisted readback operations.",
15318
15209
  examples: [
15319
- `wave automations create --summary "Weekly review" --ai-task-config '{"prompt":"Review tasks"}' --idempotency-key automation-create-001`,
15210
+ `wave automations create --summary "Weekly review" --agent-id 123 --ai-task-config '{"cycle":"repeat","repeatSchedule":{"interval":1,"frequency":"week","weekdays":[1,3],"at":"2:30 PM","starting":"2026-07-20T00:00:00.000Z","ending":"never","endingRuns":1,"endingDate":null,"timezone":"America/Phoenix"}}' --idempotency-key automation-create-001`,
15320
15211
  "wave automations show --id 123"
15321
15212
  ],
15322
15213
  schema: {
@@ -15325,6 +15216,7 @@ var NAMESPACE_DOCS = {
15325
15216
  safety: [
15326
15217
  "Create calls only createAutomation with an explicit idempotency key.",
15327
15218
  "Only the API-defined ai_task_config field accepts validated JSON.",
15219
+ "Optional executor Agent linkage is sent only through the API-defined top-level agentId input.",
15328
15220
  "Does not create a project Task, run an Automation, or invoke AI OS actions.",
15329
15221
  "Show uses the API-owned automation query by id; no slug fallback is implemented."
15330
15222
  ],
@@ -15586,26 +15478,6 @@ var NAMESPACE_DOCS = {
15586
15478
  ]
15587
15479
  }
15588
15480
  },
15589
- "ai-notes": {
15590
- name: "ai-notes",
15591
- tier: "primary",
15592
- description: "AI Notes read-only list and detail metadata for CLI-backed Atlas and harness inspection.",
15593
- examples: [
15594
- "wave ai-notes list --page 1 --per 20",
15595
- "wave ai-notes show --id note_123",
15596
- "wave ai-notes show --slug weekly-summary"
15597
- ],
15598
- schema: {
15599
- output: "json-envelope-default",
15600
- readOnly: true,
15601
- safety: [
15602
- "Uses API-owned GraphQL read fields aiNotes and aiNote.",
15603
- "List/show output is limited to safe AI Note identifiers, title, status, visibility, source reference, owner member id, schedule timestamps, and record timestamps.",
15604
- "Does not expose transcript upload, transcription finalize, consent grant, create, update, delete, transcript text, segment text, client secrets, unsafe metadata, raw provider payloads, credentials, tokens, or secrets by default."
15605
- ],
15606
- commands: ["list", "show"]
15607
- }
15608
- },
15609
15481
  "markdown-tree": {
15610
15482
  name: "markdown-tree",
15611
15483
  tier: "advanced",
@@ -16123,7 +15995,7 @@ function attachDiscoveryHelp(program) {
16123
15995
  }
16124
15996
 
16125
15997
  // src/version.ts
16126
- var CLI_VERSION = "0.1.65";
15998
+ var CLI_VERSION = "0.1.66";
16127
15999
 
16128
16000
  // src/cli.ts
16129
16001
  function buildCli(options) {
@@ -16199,7 +16071,6 @@ function buildCli(options) {
16199
16071
  registerMailCommands(program);
16200
16072
  registerPhantomCommands(program);
16201
16073
  registerDatasheetsCommands(program);
16202
- registerAiNotesCommands(program);
16203
16074
  registerAuthCommands(program);
16204
16075
  registerDiscoveryCommands(program);
16205
16076
  attachNamespaceDiscovery(program);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wave-ai-os/wave-cli",
3
- "version": "0.1.65",
3
+ "version": "0.1.66",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "wave": "dist/index.js"