@islamihab/kds 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.js +234 -29
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -14597,7 +14597,7 @@ import { join } from "path";
14597
14597
  // package.json
14598
14598
  var package_default = {
14599
14599
  name: "cli",
14600
- version: "0.3.0",
14600
+ version: "0.5.0",
14601
14601
  private: true,
14602
14602
  type: "module",
14603
14603
  bin: {
@@ -15188,7 +15188,78 @@ var ISSUE_OPEN_STATUSES = [
15188
15188
  "changes_requested",
15189
15189
  "approved"
15190
15190
  ];
15191
+ var ISSUE_LABEL_COLORS = [
15192
+ "gray",
15193
+ "red",
15194
+ "orange",
15195
+ "amber",
15196
+ "green",
15197
+ "teal",
15198
+ "blue",
15199
+ "indigo",
15200
+ "purple",
15201
+ "pink"
15202
+ ];
15191
15203
  var ISSUE_RELATION_KINDS = ["blocks", "blocked_by", "duplicate_of", "duplicated_by", "relates_to"];
15204
+ var AGENT_HARNESS_LABELS = {
15205
+ codex: "Codex",
15206
+ claude_code: "Claude Code"
15207
+ };
15208
+ var AGENT_CONFIGURATION_IDS = [
15209
+ "codex-gpt-5-6-sol",
15210
+ "codex-gpt-5-6-terra",
15211
+ "codex-gpt-5-6-luna",
15212
+ "claude-code-claude-fable-5",
15213
+ "claude-code-claude-opus-5",
15214
+ "claude-code-claude-sonnet-5"
15215
+ ];
15216
+ var AGENT_CONFIGURATIONS = {
15217
+ "codex-gpt-5-6-sol": {
15218
+ label: "Codex \xB7 GPT-5.6 Sol",
15219
+ harness: "codex",
15220
+ model: "gpt-5.6-sol",
15221
+ lifecycle: "current"
15222
+ },
15223
+ "codex-gpt-5-6-terra": {
15224
+ label: "Codex \xB7 GPT-5.6 Terra",
15225
+ harness: "codex",
15226
+ model: "gpt-5.6-terra",
15227
+ lifecycle: "current"
15228
+ },
15229
+ "codex-gpt-5-6-luna": {
15230
+ label: "Codex \xB7 GPT-5.6 Luna",
15231
+ harness: "codex",
15232
+ model: "gpt-5.6-luna",
15233
+ lifecycle: "current"
15234
+ },
15235
+ "claude-code-claude-fable-5": {
15236
+ label: "Claude Code \xB7 Claude Fable 5",
15237
+ harness: "claude_code",
15238
+ model: "claude-fable-5",
15239
+ lifecycle: "current"
15240
+ },
15241
+ "claude-code-claude-opus-5": {
15242
+ label: "Claude Code \xB7 Claude Opus 5",
15243
+ harness: "claude_code",
15244
+ model: "claude-opus-5",
15245
+ lifecycle: "current"
15246
+ },
15247
+ "claude-code-claude-sonnet-5": {
15248
+ label: "Claude Code \xB7 Claude Sonnet 5",
15249
+ harness: "claude_code",
15250
+ model: "claude-sonnet-5",
15251
+ lifecycle: "current"
15252
+ }
15253
+ };
15254
+ var orderAgentConfigurations = (entries) => [
15255
+ ...entries.filter((entry) => entry.lifecycle === "current"),
15256
+ ...entries.filter((entry) => entry.lifecycle === "legacy")
15257
+ ];
15258
+ var agentConfiguration = (id) => ({
15259
+ id,
15260
+ ...AGENT_CONFIGURATIONS[id]
15261
+ });
15262
+ var AGENT_CONFIGURATION_OPTIONS = orderAgentConfigurations(AGENT_CONFIGURATION_IDS.map(agentConfiguration));
15192
15263
  var PROJECT_STATUSES = ["planned", "in_progress", "paused", "completed", "canceled"];
15193
15264
  var PROJECT_HEALTHS = ["on_track", "at_risk", "off_track"];
15194
15265
  var ISSUE_IDENTIFIER_PREFIX = "KAI";
@@ -17934,6 +18005,19 @@ var logout = command({
17934
18005
  }
17935
18006
  });
17936
18007
 
18008
+ // src/commands/auth/reviewer-token.ts
18009
+ var reviewerToken = command({
18010
+ name: "reviewer-token",
18011
+ description: "Print a short-lived GitHub token for the reviewer App identity",
18012
+ options: {
18013
+ json: exports_external.boolean().default(false).describe("Print as JSON")
18014
+ },
18015
+ run: async ({ options: { json: json2 } }) => {
18016
+ const minted = await (await backendClient()).action(api2.githubReviewer.mintToken, {});
18017
+ console.log(json2 ? JSON.stringify(minted, null, 2) : minted.token);
18018
+ }
18019
+ });
18020
+
17937
18021
  // src/lib/activity.ts
17938
18022
  var SOURCE_LABELS = { github: "GitHub", agent: "Agent" };
17939
18023
  var actorLabel = (via, agent) => {
@@ -17954,6 +18038,7 @@ var issueActivityLine = (detail) => {
17954
18038
  case "disposition_changed":
17955
18039
  case "estimate_changed":
17956
18040
  case "due_date_changed":
18041
+ case "agent_configuration_changed":
17957
18042
  case "branch_changed":
17958
18043
  case "pr_changed":
17959
18044
  case "project_changed":
@@ -18019,7 +18104,7 @@ var status = command({
18019
18104
  var auth = group({
18020
18105
  name: "auth",
18021
18106
  description: "Manage backend authentication",
18022
- commands: [login, logout, status]
18107
+ commands: [login, logout, status, reviewerToken]
18023
18108
  });
18024
18109
 
18025
18110
  // src/lib/output.ts
@@ -18197,6 +18282,16 @@ var resolveIssueLabels = async (client3, names) => {
18197
18282
  return label;
18198
18283
  });
18199
18284
  };
18285
+ var resolveIssueLabel = async (client3, ref) => {
18286
+ const labels = await client3.query(api2.issueLabels.list, {});
18287
+ const wanted = ref.trim().toLowerCase();
18288
+ const label = labels.find((candidate) => candidate._id === ref || candidate.name.toLowerCase() === wanted);
18289
+ if (!label) {
18290
+ const available = labels.map((candidate) => candidate.name).join(", ");
18291
+ throw new Error(available ? `No label matches "${ref}". The labels are: ${available}.` : "There are no labels yet.");
18292
+ }
18293
+ return label;
18294
+ };
18200
18295
  var resolveMilestone = async (client3, projectId, name) => {
18201
18296
  const milestones = await client3.query(api2.milestones.listByProject, { projectId, today: localToday() });
18202
18297
  const wanted = name.trim().toLowerCase();
@@ -18305,6 +18400,17 @@ var comment = command({
18305
18400
  }
18306
18401
  });
18307
18402
 
18403
+ // src/lib/agents.ts
18404
+ var agentConfigurationLegacyNote = () => {
18405
+ const legacy = AGENT_CONFIGURATION_OPTIONS.filter((entry) => entry.lifecycle === "legacy");
18406
+ return legacy.length === 0 ? "" : ` (legacy: ${legacy.map((entry) => entry.id).join(", ")})`;
18407
+ };
18408
+ var agentConfigurationLine = (id) => {
18409
+ const entry = agentConfiguration(id);
18410
+ const legacy = entry.lifecycle === "legacy" ? " (legacy)" : "";
18411
+ return `${entry.label}${legacy} \u2014 ${entry.id} \xB7 ${AGENT_HARNESS_LABELS[entry.harness]} \xB7 ${entry.model}`;
18412
+ };
18413
+
18308
18414
  // src/commands/issues/create.ts
18309
18415
  var create = command({
18310
18416
  name: "create",
@@ -18322,7 +18428,8 @@ var create = command({
18322
18428
  here: exports_external.boolean().default(false).describe("Create in the checkout's connected project"),
18323
18429
  milestone: exports_external.string().optional().describe("Milestone name (needs --project or --here)"),
18324
18430
  parent: exports_external.string().optional().describe("Create as a sub-issue of this issue (identifier, number, or URL)"),
18325
- disposition: exports_external.enum(ISSUE_CREATE_DISPOSITIONS).optional().describe("Route immediately (default needs_triage)")
18431
+ disposition: exports_external.enum(ISSUE_CREATE_DISPOSITIONS).optional().describe("Route immediately (default needs_triage)"),
18432
+ "agent-config": exports_external.enum(AGENT_CONFIGURATION_IDS).optional().describe(`Agent configuration${agentConfigurationLegacyNote()}`)
18326
18433
  },
18327
18434
  run: async ({ positionals: { title }, options }) => {
18328
18435
  if (options.project && options.here)
@@ -18343,7 +18450,8 @@ var create = command({
18343
18450
  projectId: project?._id,
18344
18451
  milestoneId: milestone?._id,
18345
18452
  parentId: parent?._id,
18346
- disposition: options.disposition
18453
+ disposition: options.disposition,
18454
+ agentConfigurationId: options["agent-config"]
18347
18455
  });
18348
18456
  console.log(identifier);
18349
18457
  }
@@ -18381,7 +18489,7 @@ var get = command({
18381
18489
  ]);
18382
18490
  if (json2)
18383
18491
  return console.log(JSON.stringify({ ...issue2, relations, attachments, tasks, feed }, null, 2));
18384
- const project = issue2.projectId ? await client3.query(api2.projects.get, { id: issue2.projectId, today: localToday() }) : null;
18492
+ const project = issue2.project;
18385
18493
  const milestone = issue2.milestoneId ? await client3.query(api2.milestones.get, { id: issue2.milestoneId, today: localToday() }) : null;
18386
18494
  console.log(`${issue2.identifier} ${issue2.title}`);
18387
18495
  console.log(`Status: ${issue2.status} \xB7 Priority: ${issue2.priority} \xB7 Disposition: ${issue2.disposition}`);
@@ -18389,6 +18497,8 @@ var get = command({
18389
18497
  console.log(`Estimate: ${issue2.estimate}`);
18390
18498
  if (issue2.dueDate)
18391
18499
  console.log(`Due: ${issue2.dueDate}`);
18500
+ if (issue2.agentConfigurationId)
18501
+ console.log(`Agent: ${agentConfigurationLine(issue2.agentConfigurationId)}`);
18392
18502
  if (issue2.branch)
18393
18503
  console.log(`Branch: ${issue2.branch}`);
18394
18504
  if (issue2.prUrl)
@@ -18442,8 +18552,85 @@ Feed:`);
18442
18552
  }
18443
18553
  });
18444
18554
 
18445
- // src/commands/issues/list.ts
18555
+ // src/commands/issues/labels/create.ts
18556
+ var create2 = command({
18557
+ name: "create",
18558
+ description: "Create an issue label and print its id",
18559
+ positionals: {
18560
+ name: exports_external.string().describe("Label name")
18561
+ },
18562
+ options: {
18563
+ color: exports_external.enum(ISSUE_LABEL_COLORS).default("gray").describe("Label color (default gray)")
18564
+ },
18565
+ run: async ({ positionals: { name }, options: { color } }) => {
18566
+ const client3 = await backendClient();
18567
+ const id = await client3.mutation(api2.issueLabels.create, { name, color });
18568
+ console.log(id);
18569
+ }
18570
+ });
18571
+
18572
+ // src/commands/issues/labels/list.ts
18446
18573
  var list = command({
18574
+ name: "list",
18575
+ description: "List issue labels alphabetically",
18576
+ options: {
18577
+ json: exports_external.boolean().default(false).describe("Print as JSON")
18578
+ },
18579
+ run: async ({ options: { json: json2 } }) => {
18580
+ const labels = await (await backendClient()).query(api2.issueLabels.list, {});
18581
+ if (json2)
18582
+ return console.log(JSON.stringify(labels, null, 2));
18583
+ if (labels.length === 0)
18584
+ return console.log("No labels yet.");
18585
+ printTable([["NAME", "COLOR", "ID"], ...labels.map((label) => [label.name, label.color, label._id])]);
18586
+ }
18587
+ });
18588
+
18589
+ // src/commands/issues/labels/remove.ts
18590
+ var remove = command({
18591
+ name: "delete",
18592
+ description: "Delete an issue label and remove it from every issue",
18593
+ positionals: {
18594
+ label: exports_external.string().describe("Label name or id")
18595
+ },
18596
+ run: async ({ positionals: { label: ref } }) => {
18597
+ const client3 = await backendClient();
18598
+ const label = await resolveIssueLabel(client3, ref);
18599
+ await client3.mutation(api2.issueLabels.remove, { id: label._id });
18600
+ console.log(`Deleted ${label.name}.`);
18601
+ }
18602
+ });
18603
+
18604
+ // src/commands/issues/labels/update.ts
18605
+ var update = command({
18606
+ name: "update",
18607
+ description: "Rename or recolor an issue label",
18608
+ positionals: {
18609
+ label: exports_external.string().describe("Label name or id")
18610
+ },
18611
+ options: {
18612
+ name: exports_external.string().optional().describe("New name").meta({ short: "n" }),
18613
+ color: exports_external.enum(ISSUE_LABEL_COLORS).optional().describe("New color")
18614
+ },
18615
+ run: async ({ positionals: { label: ref }, options: { name, color } }) => {
18616
+ if (name === undefined && color === undefined)
18617
+ throw new Error("Nothing to update. Pass --name or --color.");
18618
+ const client3 = await backendClient();
18619
+ const label = await resolveIssueLabel(client3, ref);
18620
+ await client3.mutation(api2.issueLabels.update, { id: label._id, name, color });
18621
+ console.log(`Updated ${name ?? label.name}.`);
18622
+ }
18623
+ });
18624
+
18625
+ // src/commands/issues/labels/index.ts
18626
+ var labels = group({
18627
+ name: "labels",
18628
+ description: "Manage issue labels",
18629
+ commands: [create2, list, update, remove]
18630
+ });
18631
+
18632
+ // src/commands/issues/list.ts
18633
+ var list2 = command({
18447
18634
  name: "list",
18448
18635
  description: "List open issues, most recently updated first",
18449
18636
  options: {
@@ -18530,7 +18717,7 @@ var relate = command({
18530
18717
  });
18531
18718
 
18532
18719
  // src/commands/issues/remove.ts
18533
- var remove = command({
18720
+ var remove2 = command({
18534
18721
  name: "delete",
18535
18722
  description: "Delete an issue permanently (sub-issues survive as top-level issues)",
18536
18723
  positionals: {
@@ -18570,7 +18757,7 @@ var route = command({
18570
18757
  // src/commands/issues/set.ts
18571
18758
  var set2 = command({
18572
18759
  name: "set",
18573
- description: "Set an issue's status, priority, estimate, due date, project, milestone, parent, or labels",
18760
+ description: "Set an issue's status, priority, estimate, due date, project, milestone, parent, agent configuration, or labels",
18574
18761
  positionals: {
18575
18762
  id: exports_external.string().describe("Issue identifier, number, or URL")
18576
18763
  },
@@ -18582,19 +18769,31 @@ var set2 = command({
18582
18769
  project: exports_external.string().nullable().optional().describe("Move to this project (id or URL), or --no-project to make the issue projectless").meta({ negatable: true }),
18583
18770
  milestone: exports_external.string().nullable().optional().describe("Move to this milestone of the issue's project (name), or --no-milestone to clear").meta({ negatable: true }),
18584
18771
  parent: exports_external.string().nullable().optional().describe("Make this a sub-issue of another issue, or --no-parent to promote it").meta({ negatable: true }),
18772
+ "agent-config": exports_external.enum(AGENT_CONFIGURATION_IDS).nullable().optional().describe(`Agent configuration${agentConfigurationLegacyNote()}, or --no-agent-config to clear`).meta({ negatable: true }),
18585
18773
  label: exports_external.array(exports_external.string()).optional().describe("Add a label by name (repeatable)"),
18586
18774
  "no-label": exports_external.array(exports_external.string()).optional().describe("Remove a label by name (repeatable)")
18587
18775
  },
18588
18776
  run: async ({ positionals: { id }, options }) => {
18589
- const { status: status2, priority, estimate, due, project, milestone, parent, label, "no-label": noLabel } = options;
18777
+ const {
18778
+ status: status2,
18779
+ priority,
18780
+ estimate,
18781
+ due,
18782
+ project,
18783
+ milestone,
18784
+ parent,
18785
+ label,
18786
+ "agent-config": agentConfig,
18787
+ "no-label": noLabel
18788
+ } = options;
18590
18789
  if (Object.values(options).every((value) => value === undefined))
18591
- throw new Error("Nothing to set. Pass --status, --priority, --estimate, --due, --project, --milestone, --parent, or --label.");
18790
+ throw new Error("Nothing to set. Pass --status, --priority, --estimate, --due, --project, --milestone, --parent, --agent-config, or --label.");
18592
18791
  const client3 = await backendClient();
18593
18792
  const issue2 = await resolveIssue(client3, id);
18594
- const projectId = project === undefined ? issue2.projectId : project === null ? undefined : (await resolveProject(client3, project))._id;
18793
+ const projectId = project === undefined ? issue2.project?._id : project === null ? undefined : (await resolveProject(client3, project))._id;
18595
18794
  let milestoneId;
18596
18795
  if (milestone === undefined) {
18597
- milestoneId = projectId === issue2.projectId ? issue2.milestoneId : undefined;
18796
+ milestoneId = projectId === issue2.project?._id ? issue2.milestoneId : undefined;
18598
18797
  } else if (milestone !== null) {
18599
18798
  if (projectId === undefined)
18600
18799
  throw new Error("A milestone needs a project. Pass --project too.");
@@ -18609,6 +18808,11 @@ var set2 = command({
18609
18808
  await client3.mutation(api2.issues.addLabel, { issueId: issue2._id, labelId: _id });
18610
18809
  for (const { _id } of removeLabels)
18611
18810
  await client3.mutation(api2.issues.removeLabel, { issueId: issue2._id, labelId: _id });
18811
+ if (agentConfig !== undefined)
18812
+ await client3.mutation(api2.issues.setAgentConfiguration, {
18813
+ id: issue2._id,
18814
+ agentConfigurationId: agentConfig ?? undefined
18815
+ });
18612
18816
  if (status2 !== undefined)
18613
18817
  await client3.mutation(api2.issues.setStatus, { id: issue2._id, status: status2 });
18614
18818
  if (priority !== undefined)
@@ -18698,7 +18902,7 @@ var tasks = command({
18698
18902
  remove: position.optional().describe("Drop a task by its number (repeatable)"),
18699
18903
  json: exports_external.boolean().default(false).describe("Print as JSON")
18700
18904
  },
18701
- run: async ({ positionals: { id }, options: { add, check: check2, uncheck, convert, remove: remove2, json: json2 } }) => {
18905
+ run: async ({ positionals: { id }, options: { add, check: check2, uncheck, convert, remove: remove3, json: json2 } }) => {
18702
18906
  const client3 = await backendClient();
18703
18907
  const issue2 = await resolveIssue(client3, id);
18704
18908
  const before = await client3.query(api2.issueTasks.list, { issueId: issue2._id });
@@ -18711,7 +18915,7 @@ var tasks = command({
18711
18915
  const ticked = at(check2);
18712
18916
  const unticked = at(uncheck);
18713
18917
  const promoted = at(convert);
18714
- const dropped = at(remove2);
18918
+ const dropped = at(remove3);
18715
18919
  for (const title of add ?? [])
18716
18920
  await client3.mutation(api2.issueTasks.create, { issueId: issue2._id, title });
18717
18921
  for (const task2 of ticked)
@@ -18726,7 +18930,7 @@ var tasks = command({
18726
18930
  }
18727
18931
  for (const task2 of dropped)
18728
18932
  await client3.mutation(api2.issueTasks.remove, { id: task2._id });
18729
- const wrote = [add, check2, uncheck, convert, remove2].some((values) => values !== undefined);
18933
+ const wrote = [add, check2, uncheck, convert, remove3].some((values) => values !== undefined);
18730
18934
  const after = wrote ? await client3.query(api2.issueTasks.list, { issueId: issue2._id }) : before;
18731
18935
  if (json2)
18732
18936
  return console.log(JSON.stringify(after, null, 2));
@@ -18774,7 +18978,7 @@ var unrelate = command({
18774
18978
  });
18775
18979
 
18776
18980
  // src/commands/issues/update.ts
18777
- var update = command({
18981
+ var update2 = command({
18778
18982
  name: "update",
18779
18983
  description: "Rewrite an issue's title or description, or attach files",
18780
18984
  positionals: {
@@ -18808,10 +19012,11 @@ var issues = group({
18808
19012
  description: "Track and triage issues",
18809
19013
  commands: [
18810
19014
  create,
18811
- list,
19015
+ list2,
18812
19016
  get,
18813
- update,
19017
+ update2,
18814
19018
  set2,
19019
+ labels,
18815
19020
  route,
18816
19021
  start,
18817
19022
  submit,
@@ -18820,7 +19025,7 @@ var issues = group({
18820
19025
  relate,
18821
19026
  unrelate,
18822
19027
  comment,
18823
- remove
19028
+ remove2
18824
19029
  ]
18825
19030
  });
18826
19031
 
@@ -18842,7 +19047,7 @@ var detectRepoGroup = async () => {
18842
19047
  var groupForCreate = async (group2) => group2 === null ? undefined : group2 ?? await detectRepoGroup();
18843
19048
 
18844
19049
  // src/commands/pages/create.ts
18845
- var create2 = command({
19050
+ var create3 = command({
18846
19051
  name: "create",
18847
19052
  description: "Publish a page and print its URL",
18848
19053
  positionals: {
@@ -18894,7 +19099,7 @@ var get2 = command({
18894
19099
  var formatBytes = (bytes) => bytes < 1024 ? `${bytes} B` : `${Math.round(bytes / 1024)} KB`;
18895
19100
 
18896
19101
  // src/commands/pages/list.ts
18897
- var list2 = command({
19102
+ var list3 = command({
18898
19103
  name: "list",
18899
19104
  description: "List your published pages",
18900
19105
  options: {
@@ -18924,7 +19129,7 @@ var list2 = command({
18924
19129
  });
18925
19130
 
18926
19131
  // src/commands/pages/remove.ts
18927
- var remove2 = command({
19132
+ var remove3 = command({
18928
19133
  name: "delete",
18929
19134
  description: "Delete a page",
18930
19135
  positionals: {
@@ -18951,7 +19156,7 @@ var revert = command({
18951
19156
  });
18952
19157
 
18953
19158
  // src/commands/pages/update.ts
18954
- var update2 = command({
19159
+ var update3 = command({
18955
19160
  name: "update",
18956
19161
  description: "Replace a page's HTML, title, group, mode, or visibility",
18957
19162
  positionals: {
@@ -19012,7 +19217,7 @@ var versions2 = command({
19012
19217
  var pages = group({
19013
19218
  name: "pages",
19014
19219
  description: "Publish HTML documents to the web",
19015
- commands: [create2, list2, get2, update2, versions2, revert, remove2]
19220
+ commands: [create3, list3, get2, update3, versions2, revert, remove3]
19016
19221
  });
19017
19222
 
19018
19223
  // src/commands/project.ts
@@ -19045,7 +19250,7 @@ var project = command({
19045
19250
  });
19046
19251
 
19047
19252
  // src/commands/projects/create.ts
19048
- var create3 = command({
19253
+ var create4 = command({
19049
19254
  name: "create",
19050
19255
  description: "Create a project and print its id",
19051
19256
  positionals: {
@@ -19116,7 +19321,7 @@ Milestones:`);
19116
19321
  });
19117
19322
 
19118
19323
  // src/commands/projects/list.ts
19119
- var list3 = command({
19324
+ var list4 = command({
19120
19325
  name: "list",
19121
19326
  description: "List your projects, most recently updated first",
19122
19327
  options: {
@@ -19151,7 +19356,7 @@ More projects exist; raise --limit past ${limit}.`);
19151
19356
  });
19152
19357
 
19153
19358
  // src/commands/projects/remove.ts
19154
- var remove3 = command({
19359
+ var remove4 = command({
19155
19360
  name: "delete",
19156
19361
  description: "Delete a project and its milestones (its issues survive, projectless)",
19157
19362
  positionals: {
@@ -19197,7 +19402,7 @@ var set3 = command({
19197
19402
  });
19198
19403
 
19199
19404
  // src/commands/projects/update.ts
19200
- var update3 = command({
19405
+ var update4 = command({
19201
19406
  name: "update",
19202
19407
  description: "Rewrite a project's name, summary, or description",
19203
19408
  positionals: {
@@ -19227,7 +19432,7 @@ var update3 = command({
19227
19432
  var projects = group({
19228
19433
  name: "projects",
19229
19434
  description: "Manage projects",
19230
- commands: [create3, list3, get3, update3, set3, remove3]
19435
+ commands: [create4, list4, get3, update4, set3, remove4]
19231
19436
  });
19232
19437
 
19233
19438
  // src/commands/upgrade.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@islamihab/kds",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Command-line client for Kai Dev Studio",
5
5
  "license": "MIT",
6
6
  "publishConfig": {