@kosuke-ai/cli 6.11.0 → 6.12.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 (189) hide show
  1. package/dist/generated/commands/activity/list.js +2 -2
  2. package/dist/generated/commands/crons/artifacts-list.js +1 -1
  3. package/dist/generated/commands/crons/create.js +1 -1
  4. package/dist/generated/commands/crons/delete.js +1 -1
  5. package/dist/generated/commands/crons/get.js +1 -1
  6. package/dist/generated/commands/crons/list.js +1 -1
  7. package/dist/generated/commands/crons/projects-resume.js +1 -1
  8. package/dist/generated/commands/crons/run.js +1 -1
  9. package/dist/generated/commands/crons/runs-artifacts-get.js +1 -1
  10. package/dist/generated/commands/crons/runs-artifacts-list.js +1 -1
  11. package/dist/generated/commands/crons/runs-cancel.js +1 -1
  12. package/dist/generated/commands/crons/runs-diagnostics.js +1 -1
  13. package/dist/generated/commands/crons/runs-get.js +1 -1
  14. package/dist/generated/commands/crons/runs-list.js +1 -1
  15. package/dist/generated/commands/crons/runs-messages.js +1 -1
  16. package/dist/generated/commands/crons/update.js +1 -1
  17. package/dist/generated/commands/deploy/cancel.js +1 -1
  18. package/dist/generated/commands/deploy/list.js +1 -1
  19. package/dist/generated/commands/deploy/messages.js +1 -1
  20. package/dist/generated/commands/deploy/queue-delete.js +1 -1
  21. package/dist/generated/commands/deploy/queue-list.js +1 -1
  22. package/dist/generated/commands/deploy/queue-move.js +1 -1
  23. package/dist/generated/commands/deploy/queue-resume.js +1 -1
  24. package/dist/generated/commands/deploy/queue-send.js +1 -1
  25. package/dist/generated/commands/deploy/queue-steer.js +1 -1
  26. package/dist/generated/commands/deploy/queue-update.js +1 -1
  27. package/dist/generated/commands/deploy/run.js +1 -1
  28. package/dist/generated/commands/deploy/set-model.js +1 -1
  29. package/dist/generated/commands/github/repositories.js +1 -1
  30. package/dist/generated/commands/github/status.js +1 -1
  31. package/dist/generated/commands/index.js +116 -120
  32. package/dist/generated/commands/integrations/execute.js +1 -1
  33. package/dist/generated/commands/integrations/tools.js +1 -1
  34. package/dist/generated/commands/models/list.js +1 -1
  35. package/dist/generated/commands/preview/get.js +1 -1
  36. package/dist/generated/commands/preview/health.js +1 -1
  37. package/dist/generated/commands/preview/reset.js +1 -1
  38. package/dist/generated/commands/preview/share-create.js +1 -1
  39. package/dist/generated/commands/preview/share-delete.js +1 -1
  40. package/dist/generated/commands/preview/share-get.js +1 -1
  41. package/dist/generated/commands/preview/shared-artifact.js +1 -1
  42. package/dist/generated/commands/preview/shared.js +1 -1
  43. package/dist/generated/commands/projects/branches.js +1 -1
  44. package/dist/generated/commands/projects/create.js +2 -2
  45. package/dist/generated/commands/projects/delete.js +1 -1
  46. package/dist/generated/commands/projects/env-vars-add.js +1 -1
  47. package/dist/generated/commands/projects/env-vars-remove.js +1 -1
  48. package/dist/generated/commands/projects/get.js +1 -1
  49. package/dist/generated/commands/projects/labels-color.js +1 -1
  50. package/dist/generated/commands/projects/labels-delete.js +1 -1
  51. package/dist/generated/commands/projects/labels-usage.js +1 -1
  52. package/dist/generated/commands/projects/labels.js +1 -1
  53. package/dist/generated/commands/projects/list.js +2 -2
  54. package/dist/generated/commands/projects/qa-guide-get.js +1 -1
  55. package/dist/generated/commands/projects/qa-guide-set.js +1 -1
  56. package/dist/generated/commands/projects/services-add.js +1 -1
  57. package/dist/generated/commands/projects/services-list.js +1 -1
  58. package/dist/generated/commands/projects/services-remove.js +1 -1
  59. package/dist/generated/commands/projects/services-update.js +1 -1
  60. package/dist/generated/commands/projects/settings-get.js +1 -1
  61. package/dist/generated/commands/projects/settings-import.js +1 -1
  62. package/dist/generated/commands/projects/settings-update.js +1 -1
  63. package/dist/generated/commands/projects/skills.js +1 -1
  64. package/dist/generated/commands/projects/update.js +1 -1
  65. package/dist/generated/commands/sensei/cards.js +27 -0
  66. package/dist/generated/commands/{workspaces/lead-merge.js → sensei/merge.js} +7 -9
  67. package/dist/generated/commands/{workspaces/lead-notifications-open.js → sensei/notifications-open.js} +5 -6
  68. package/dist/generated/commands/sensei/proposals-create.js +23 -0
  69. package/dist/generated/commands/{workspaces/lead-review-request.js → sensei/review-request.js} +8 -10
  70. package/dist/generated/commands/{workspaces/lead-session-send.js → sensei/session-send.js} +8 -10
  71. package/dist/generated/commands/{workspaces/lead-triage.js → sensei/triage.js} +8 -10
  72. package/dist/generated/commands/sessions/activate.js +1 -1
  73. package/dist/generated/commands/sessions/all.js +2 -2
  74. package/dist/generated/commands/sessions/artifacts-attach.js +3 -3
  75. package/dist/generated/commands/sessions/artifacts-get.js +1 -1
  76. package/dist/generated/commands/sessions/artifacts-list.js +1 -1
  77. package/dist/generated/commands/sessions/comments-add.js +1 -1
  78. package/dist/generated/commands/sessions/comments-delete.js +1 -1
  79. package/dist/generated/commands/sessions/comments-list.js +1 -1
  80. package/dist/generated/commands/sessions/comments-update.js +1 -1
  81. package/dist/generated/commands/sessions/create.js +15 -1
  82. package/dist/generated/commands/sessions/delete.js +1 -1
  83. package/dist/generated/commands/sessions/diff-comments-add.js +1 -1
  84. package/dist/generated/commands/sessions/diff-comments-delete.js +1 -1
  85. package/dist/generated/commands/sessions/diff-comments-list.js +1 -1
  86. package/dist/generated/commands/sessions/diff-comments-update.js +1 -1
  87. package/dist/generated/commands/sessions/diff-commits.js +1 -1
  88. package/dist/generated/commands/sessions/diff-files.js +1 -1
  89. package/dist/generated/commands/sessions/diff-patch.js +1 -1
  90. package/dist/generated/commands/sessions/edit-prompt.js +1 -1
  91. package/dist/generated/commands/sessions/files-get.js +1 -1
  92. package/dist/generated/commands/sessions/files-list.js +1 -1
  93. package/dist/generated/commands/sessions/files-write.js +1 -1
  94. package/dist/generated/commands/sessions/get.js +1 -1
  95. package/dist/generated/commands/sessions/git-commit-message.js +1 -1
  96. package/dist/generated/commands/sessions/git-commit.js +1 -1
  97. package/dist/generated/commands/sessions/git-push.js +1 -1
  98. package/dist/generated/commands/sessions/git-state.js +1 -1
  99. package/dist/generated/commands/sessions/jobs-cancel.js +1 -1
  100. package/dist/generated/commands/sessions/jobs-get.js +1 -1
  101. package/dist/generated/commands/sessions/jobs-list.js +1 -1
  102. package/dist/generated/commands/sessions/labels-edit.js +1 -1
  103. package/dist/generated/commands/sessions/labels-set.js +1 -1
  104. package/dist/generated/commands/sessions/list.js +1 -1
  105. package/dist/generated/commands/sessions/mark-read.js +1 -1
  106. package/dist/generated/commands/sessions/message.js +1 -1
  107. package/dist/generated/commands/sessions/messages.js +1 -1
  108. package/dist/generated/commands/sessions/needs-you.js +2 -2
  109. package/dist/generated/commands/sessions/queue-delete.js +1 -1
  110. package/dist/generated/commands/sessions/queue-list.js +1 -1
  111. package/dist/generated/commands/sessions/queue-move.js +1 -1
  112. package/dist/generated/commands/sessions/queue-resume.js +1 -1
  113. package/dist/generated/commands/sessions/queue-send.js +1 -1
  114. package/dist/generated/commands/sessions/queue-steer.js +1 -1
  115. package/dist/generated/commands/sessions/queue-update.js +1 -1
  116. package/dist/generated/commands/sessions/runtime-command.js +1 -1
  117. package/dist/generated/commands/sessions/search.js +2 -2
  118. package/dist/generated/commands/sessions/send.js +1 -1
  119. package/dist/generated/commands/sessions/steer.js +1 -1
  120. package/dist/generated/commands/sessions/sync.js +1 -1
  121. package/dist/generated/commands/sessions/title-generate.js +1 -1
  122. package/dist/generated/commands/sessions/update.js +1 -1
  123. package/dist/generated/commands/user/auth-token-revoke.js +1 -1
  124. package/dist/generated/commands/user/integrations-list.js +1 -1
  125. package/dist/generated/commands/user/integrations-remove.js +1 -1
  126. package/dist/generated/commands/user/plugins-list.js +1 -1
  127. package/dist/generated/commands/user/plugins-update.js +1 -1
  128. package/dist/generated/commands/user/profile.js +2 -2
  129. package/dist/generated/commands/user/push-devices-register.js +1 -1
  130. package/dist/generated/commands/user/push-devices-remove.js +1 -1
  131. package/dist/generated/commands/user/skills-create.js +1 -1
  132. package/dist/generated/commands/user/skills-delete.js +1 -1
  133. package/dist/generated/commands/user/skills-get.js +1 -1
  134. package/dist/generated/commands/user/skills-list.js +1 -1
  135. package/dist/generated/commands/user/skills-update.js +1 -1
  136. package/dist/generated/commands/user/subscriptions-delete.js +1 -1
  137. package/dist/generated/commands/user/subscriptions-get.js +1 -1
  138. package/dist/generated/commands/user/subscriptions-login-claude-complete.js +1 -1
  139. package/dist/generated/commands/user/subscriptions-login-claude-start.js +1 -1
  140. package/dist/generated/commands/user/subscriptions-login-codex-complete.js +1 -1
  141. package/dist/generated/commands/user/subscriptions-login-codex-start.js +1 -1
  142. package/dist/generated/commands/user/subscriptions-logins-delete.js +1 -1
  143. package/dist/generated/commands/user/subscriptions-logins-reorder.js +1 -1
  144. package/dist/generated/commands/user/subscriptions-set-default-model.js +1 -1
  145. package/dist/generated/commands/user/subscriptions-set-key.js +1 -1
  146. package/dist/generated/commands/user/subscriptions-usage.js +1 -1
  147. package/dist/generated/commands/workspaces/access-status.js +1 -1
  148. package/dist/generated/commands/workspaces/ai-provider-get.js +1 -1
  149. package/dist/generated/commands/workspaces/ai-provider-logins-reorder.js +1 -1
  150. package/dist/generated/commands/workspaces/ai-provider-remove.js +1 -1
  151. package/dist/generated/commands/workspaces/ai-provider-set.js +1 -1
  152. package/dist/generated/commands/workspaces/ai-provider-usage-claude.js +1 -1
  153. package/dist/generated/commands/workspaces/ai-provider-usage-codex.js +1 -1
  154. package/dist/generated/commands/workspaces/ai-provider-usage-coding-plan.js +1 -1
  155. package/dist/generated/commands/workspaces/ai-provider-usage-deepseek.js +1 -1
  156. package/dist/generated/commands/workspaces/ai-provider-usage-kimi-code.js +1 -1
  157. package/dist/generated/commands/workspaces/artifacts.js +1 -1
  158. package/dist/generated/commands/workspaces/credits.js +1 -1
  159. package/dist/generated/commands/workspaces/get.js +1 -1
  160. package/dist/generated/commands/workspaces/integrations-get.js +1 -1
  161. package/dist/generated/commands/workspaces/integrations-list.js +1 -1
  162. package/dist/generated/commands/workspaces/integrations-remove.js +1 -1
  163. package/dist/generated/commands/workspaces/integrations-slack-get.js +1 -1
  164. package/dist/generated/commands/workspaces/list.js +1 -1
  165. package/dist/generated/commands/workspaces/members.js +1 -1
  166. package/dist/generated/commands/workspaces/plugins-list.js +1 -1
  167. package/dist/generated/commands/workspaces/plugins-update.js +1 -1
  168. package/dist/generated/commands/workspaces/provider-login-claude-complete.js +1 -1
  169. package/dist/generated/commands/workspaces/provider-login-claude-start.js +1 -1
  170. package/dist/generated/commands/workspaces/provider-login-codex-complete.js +1 -1
  171. package/dist/generated/commands/workspaces/provider-login-codex-start.js +1 -1
  172. package/dist/generated/commands/workspaces/sandbox-limit.js +1 -1
  173. package/dist/generated/commands/workspaces/skills-create.js +1 -1
  174. package/dist/generated/commands/workspaces/skills-delete.js +1 -1
  175. package/dist/generated/commands/workspaces/skills-get.js +1 -1
  176. package/dist/generated/commands/workspaces/skills-list.js +1 -1
  177. package/dist/generated/commands/workspaces/skills-update.js +1 -1
  178. package/dist/generated/commands/workspaces/stop-sandboxes.js +1 -1
  179. package/dist/generated/commands/workspaces/timezone-set.js +1 -1
  180. package/dist/generated/commands/workspaces/usage.js +1 -1
  181. package/dist/program.js +4 -4
  182. package/dist/runtime/attach.js +46 -6
  183. package/dist/runtime/credentials.js +15 -7
  184. package/openapi.json +4262 -4263
  185. package/package.json +1 -1
  186. package/dist/generated/commands/workspaces/getting-started-get.js +0 -22
  187. package/dist/generated/commands/workspaces/getting-started-update.js +0 -36
  188. package/dist/generated/commands/workspaces/lead-cards.js +0 -21
  189. package/dist/generated/commands/workspaces/lead-proposals-create.js +0 -25
@@ -18,5 +18,5 @@ export const operation = {
18
18
  "sandboxToken": true,
19
19
  "orchestratorToken": true,
20
20
  "cronToken": true,
21
- "leadToken": true
21
+ "senseiToken": true
22
22
  };
@@ -19,5 +19,5 @@ export const operation = {
19
19
  "sandboxToken": false,
20
20
  "orchestratorToken": false,
21
21
  "cronToken": false,
22
- "leadToken": false
22
+ "senseiToken": false
23
23
  };
@@ -19,5 +19,5 @@ export const operation = {
19
19
  "sandboxToken": true,
20
20
  "orchestratorToken": true,
21
21
  "cronToken": true,
22
- "leadToken": true
22
+ "senseiToken": true
23
23
  };
@@ -15,5 +15,5 @@ export const operation = {
15
15
  "sandboxToken": true,
16
16
  "orchestratorToken": true,
17
17
  "cronToken": true,
18
- "leadToken": true
18
+ "senseiToken": true
19
19
  };
@@ -25,5 +25,5 @@ export const operation = {
25
25
  "sandboxToken": true,
26
26
  "orchestratorToken": true,
27
27
  "cronToken": true,
28
- "leadToken": true
28
+ "senseiToken": true
29
29
  };
@@ -29,5 +29,5 @@ export const operation = {
29
29
  "sandboxToken": true,
30
30
  "orchestratorToken": true,
31
31
  "cronToken": true,
32
- "leadToken": true
32
+ "senseiToken": true
33
33
  };
@@ -29,5 +29,5 @@ export const operation = {
29
29
  "sandboxToken": true,
30
30
  "orchestratorToken": true,
31
31
  "cronToken": true,
32
- "leadToken": true
32
+ "senseiToken": true
33
33
  };
@@ -35,5 +35,5 @@ export const operation = {
35
35
  "sandboxToken": false,
36
36
  "orchestratorToken": false,
37
37
  "cronToken": false,
38
- "leadToken": false
38
+ "senseiToken": false
39
39
  };
@@ -30,5 +30,5 @@ export const operation = {
30
30
  "sandboxToken": false,
31
31
  "orchestratorToken": false,
32
32
  "cronToken": false,
33
- "leadToken": false
33
+ "senseiToken": false
34
34
  };
@@ -29,5 +29,5 @@ export const operation = {
29
29
  "sandboxToken": false,
30
30
  "orchestratorToken": false,
31
31
  "cronToken": false,
32
- "leadToken": false
32
+ "senseiToken": false
33
33
  };
@@ -30,5 +30,5 @@ export const operation = {
30
30
  "sandboxToken": false,
31
31
  "orchestratorToken": false,
32
32
  "cronToken": false,
33
- "leadToken": false
33
+ "senseiToken": false
34
34
  };
@@ -17,5 +17,5 @@ export const operation = {
17
17
  "sandboxToken": true,
18
18
  "orchestratorToken": true,
19
19
  "cronToken": true,
20
- "leadToken": true
20
+ "senseiToken": true
21
21
  };
@@ -34,5 +34,5 @@ export const operation = {
34
34
  "sandboxToken": true,
35
35
  "orchestratorToken": true,
36
36
  "cronToken": true,
37
- "leadToken": true
37
+ "senseiToken": true
38
38
  };
@@ -19,5 +19,5 @@ export const operation = {
19
19
  "sandboxToken": false,
20
20
  "orchestratorToken": false,
21
21
  "cronToken": false,
22
- "leadToken": false
22
+ "senseiToken": false
23
23
  };
@@ -19,5 +19,5 @@ export const operation = {
19
19
  "sandboxToken": true,
20
20
  "orchestratorToken": true,
21
21
  "cronToken": true,
22
- "leadToken": true
22
+ "senseiToken": true
23
23
  };
@@ -18,5 +18,5 @@ export const operation = {
18
18
  "sandboxToken": true,
19
19
  "orchestratorToken": true,
20
20
  "cronToken": true,
21
- "leadToken": true
21
+ "senseiToken": true
22
22
  };
@@ -35,5 +35,5 @@ export const operation = {
35
35
  "sandboxToken": true,
36
36
  "orchestratorToken": true,
37
37
  "cronToken": true,
38
- "leadToken": true
38
+ "senseiToken": true
39
39
  };
@@ -27,5 +27,5 @@ export const operation = {
27
27
  "sandboxToken": true,
28
28
  "orchestratorToken": true,
29
29
  "cronToken": true,
30
- "leadToken": true
30
+ "senseiToken": true
31
31
  };
@@ -28,5 +28,5 @@ export const operation = {
28
28
  "sandboxToken": true,
29
29
  "orchestratorToken": true,
30
30
  "cronToken": true,
31
- "leadToken": true
31
+ "senseiToken": true
32
32
  };
@@ -32,5 +32,5 @@ export const operation = {
32
32
  "sandboxToken": true,
33
33
  "orchestratorToken": true,
34
34
  "cronToken": true,
35
- "leadToken": true
35
+ "senseiToken": true
36
36
  };
package/dist/program.js CHANGED
@@ -5,7 +5,7 @@ import { attachIntegrationsCommands } from './commands/integrations.js';
5
5
  import { attachWatchCommand } from './commands/watch.js';
6
6
  import { operations } from './generated/commands/index.js';
7
7
  import { attachOperation } from './runtime/attach.js';
8
- import { isCronToken, isLeadToken, isOrchestratorToken, isSandboxAgentToken, } from './runtime/credentials.js';
8
+ import { isCronToken, isSenseiToken, isOrchestratorToken, isSandboxAgentToken, } from './runtime/credentials.js';
9
9
  import { createRuntime, ExitSignal } from './runtime/runtime.js';
10
10
  import { version } from './runtime/version.js';
11
11
  /**
@@ -44,8 +44,8 @@ export function createProgram(options = {}) {
44
44
  ? 'orchestratorToken'
45
45
  : isCronToken(token)
46
46
  ? 'cronToken'
47
- : isLeadToken(token)
48
- ? 'leadToken'
47
+ : isSenseiToken(token)
48
+ ? 'senseiToken'
49
49
  : null;
50
50
  const reachable = narrowedTo
51
51
  ? operations.filter((operation) => operation[narrowedTo])
@@ -53,7 +53,7 @@ export function createProgram(options = {}) {
53
53
  for (const operation of reachable)
54
54
  attachOperation(program, operation, lazy);
55
55
  // Every agent token reads the digest's two lists as its member. Only a
56
- // member's own key and their Lead may mark Activity seen, so the others
56
+ // member's own key and their Sensei may mark Activity seen, so the others
57
57
  // read it with `--peek`.
58
58
  attachAgentCommands(program, lazy, options.agent);
59
59
  // Beside the generated `integrations tools` and `execute`, which stay raw passthroughs.
@@ -7,9 +7,40 @@ import { buildRequest, execute, readWholeBody, UsageError } from './invoke.js';
7
7
  * the contract's summary, verbatim.
8
8
  */
9
9
  export function attachOperation(root, operation, runtime) {
10
- const parent = groupFor(root, operation.command.slice(0, -1));
11
- const leaf = parent.command(operation.command[operation.command.length - 1]);
10
+ const leaf = attachLeaf(root, operation.command, operation, runtime, { hidden: false });
11
+ const name = operation.command.join(' ');
12
+ for (const [alias, target] of COMMAND_ALIASES) {
13
+ if (target === name) {
14
+ attachLeaf(root, alias.split(' '), operation, runtime, {
15
+ hidden: true,
16
+ workspaceArgument: true,
17
+ });
18
+ }
19
+ }
20
+ return leaf;
21
+ }
22
+ // Alias: Sensei's commands from when it was a workspace's, `kosuke workspaces sensei-* <id>`,
23
+ // and the Lead's names for them, which an older sandbox's Sensei prompt still runs; remove the
24
+ // Lead's one release after the Sensei rename, Sensei's one release after Sensei moved to the
25
+ // person. The workspace they take goes to `--workspace` where the command reads one.
26
+ const COMMAND_ALIASES = new Map([
27
+ ['cards', 'sensei cards'],
28
+ ['merge', 'sensei merge'],
29
+ ['notifications open', 'sensei notifications open'],
30
+ ['proposals create', 'sensei proposals create'],
31
+ ['review-request', 'sensei review-request'],
32
+ ['session-send', 'sensei session-send'],
33
+ ['triage', 'sensei triage'],
34
+ ].flatMap(([old, target]) => [
35
+ [`workspaces sensei-${old}`, target],
36
+ [`workspaces lead-${old}`, target],
37
+ ]));
38
+ function attachLeaf(root, path, operation, runtime, { hidden, workspaceArgument = false }) {
39
+ const parent = groupFor(root, path.slice(0, -1), { hidden });
40
+ const leaf = parent.command(path[path.length - 1], { hidden });
12
41
  leaf.description(operation.summary);
42
+ if (workspaceArgument)
43
+ leaf.addArgument(new Argument('<workspaceId>', 'Workspace id'));
13
44
  for (const name of operation.pathParams) {
14
45
  leaf.addArgument(new Argument(`<${name}>`, humanize(name)));
15
46
  }
@@ -36,10 +67,17 @@ export function attachOperation(root, operation, runtime) {
36
67
  }
37
68
  leaf.action(async (...args) => {
38
69
  const options = args[args.length - 2];
39
- const positionals = args.slice(0, operation.pathParams.length);
70
+ const offset = workspaceArgument ? 1 : 0;
71
+ const positionals = args.slice(offset, offset + operation.pathParams.length);
72
+ const workspace = workspaceArgument ? args[0] : undefined;
40
73
  const input = {
41
74
  pathParams: Object.fromEntries(operation.pathParams.map((name, i) => [name, positionals[i]])),
42
- fields: Object.fromEntries(fields.map((field) => [field.name, options[optionKey(field.flag)]])),
75
+ fields: Object.fromEntries(fields.map((field) => {
76
+ const given = options[optionKey(field.flag)];
77
+ // The old command's workspace filters a read that takes one; a write names its own.
78
+ const value = given ?? (field.name === 'workspace' ? workspace : undefined);
79
+ return [field.name, value];
80
+ })),
43
81
  wholeBody: readWholeBody({
44
82
  body: options.body,
45
83
  bodyFile: options.bodyFile,
@@ -61,11 +99,13 @@ export function attachOperation(root, operation, runtime) {
61
99
  });
62
100
  return leaf;
63
101
  }
64
- export function groupFor(root, path) {
102
+ /** A group created here is hidden when asked; one that already exists keeps what it is. */
103
+ export function groupFor(root, path, { hidden = false } = {}) {
65
104
  let current = root;
66
105
  for (const segment of path) {
67
106
  const existing = current.commands.find((command) => command.name() === segment);
68
- current = existing ?? current.command(segment).description(`${humanize(segment)} commands`);
107
+ current =
108
+ existing ?? current.command(segment, { hidden }).description(`${humanize(segment)} commands`);
69
109
  }
70
110
  return current;
71
111
  }
@@ -29,20 +29,28 @@ export function isCronToken(token) {
29
29
  return token?.startsWith(CRON_TOKEN_PREFIX) ?? false;
30
30
  }
31
31
  /**
32
- * The prefix of a Lead token, the credential a Lead Chat's Turn holds in the
33
- * Orchestrator Sandbox. Wire contract with `src/lib/auth/lead-token.ts`, and
32
+ * The prefix of a Sensei token, the credential a Sensei Chat's Turn holds in the
33
+ * Orchestrator Sandbox. Wire contract with `src/lib/auth/sensei-token.ts`, and
34
34
  * like the others it shapes only what the tree shows.
35
35
  */
36
- const LEAD_TOKEN_PREFIX = 'kosuke_lead_';
37
- export function isLeadToken(token) {
38
- return token?.startsWith(LEAD_TOKEN_PREFIX) ?? false;
36
+ const SENSEI_TOKEN_PREFIX = 'kosuke_sensei_';
37
+ // Alias: a Sensei token minted before the Sensei rename carries this prefix until it expires;
38
+ // remove one release after the Sensei rename.
39
+ const LEGACY_SENSEI_TOKEN_PREFIX = 'kosuke_lead_';
40
+ export function isSenseiToken(token) {
41
+ if (!token)
42
+ return false;
43
+ return token.startsWith(SENSEI_TOKEN_PREFIX) || token.startsWith(LEGACY_SENSEI_TOKEN_PREFIX);
39
44
  }
40
- /** A credential that decides its own workspace: any of the four agent tokens. */
45
+ /**
46
+ * A credential that needs no `--workspace`: a sandbox, Slack triage or cron token decides its
47
+ * workspace, and a Sensei token reaches its member's own connections without one.
48
+ */
41
49
  export function isTurnToken(token) {
42
50
  return (isSandboxAgentToken(token ?? undefined) ||
43
51
  isOrchestratorToken(token ?? undefined) ||
44
52
  isCronToken(token ?? undefined) ||
45
- isLeadToken(token ?? undefined));
53
+ isSenseiToken(token ?? undefined));
46
54
  }
47
55
  export function resolveCredentials(flags, env = process.env) {
48
56
  const stored = readCredentials(env);