@dench.com/cli 3.7.0-staging.387 → 3.8.1-staging.390

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.
@@ -8,6 +8,8 @@ export type TimelineRun = {
8
8
  startedAt?: number;
9
9
  waitUntil?: number;
10
10
  retryAt?: number;
11
+ /** A wait for acceptance: when it stops waiting either way. */
12
+ timeoutAt?: number;
11
13
  completedAt?: number;
12
14
  emailMessageId?: string;
13
15
  lastError?: string;
@@ -49,6 +51,8 @@ export type TimelineResult = {
49
51
  type: string;
50
52
  order: number;
51
53
  waitHours?: number;
54
+ /** If / else and Wait until they accept steps: what they check. */
55
+ label?: string;
52
56
  }>;
53
57
  runs: TimelineRun[];
54
58
  emailMessages: TimelineEmail[];
@@ -63,6 +67,10 @@ export type TimelineStep = {
63
67
  outcome: string;
64
68
  at: number | null;
65
69
  detail: string[];
70
+ /** An If / else or a wait for acceptance: the path it took. */
71
+ branch?: "yes" | "no";
72
+ /** Still waiting for them to accept: when it stops waiting. */
73
+ acceptanceDeadline?: number;
66
74
  subject?: string;
67
75
  text?: string;
68
76
  error?: string;
@@ -101,16 +109,66 @@ const EMAIL_STATUS: Record<string, string> = {
101
109
  failed: "could not send",
102
110
  };
103
111
 
112
+ function resultField(result: unknown, key: string): unknown {
113
+ return result && typeof result === "object"
114
+ ? (result as Record<string, unknown>)[key]
115
+ : undefined;
116
+ }
117
+
104
118
  function skipReason(result: unknown): string {
105
- const reason =
106
- result && typeof result === "object"
107
- ? (result as { reason?: unknown }).reason
108
- : undefined;
119
+ const reason = resultField(result, "reason");
109
120
  return (typeof reason === "string" && SKIP_REASONS[reason]) || "Skipped";
110
121
  }
111
122
 
123
+ /** Why an If / else or a wait for acceptance took its No path. */
124
+ const NO_REASONS: Record<string, string> = {
125
+ missing_linkedin_identity: "no LinkedIn profile",
126
+ missing_email_identity: "no email address",
127
+ linkedin_connection_timeout: "they did not accept in time",
128
+ linkedin_invite_withdrawn: "the connection request was withdrawn",
129
+ linkedin_invite_not_sent: "no connection request went out",
130
+ };
131
+
132
+ const LOGIC_TYPES = new Set(["condition", "wait_for_connection"]);
133
+
134
+ export function branchOf(run: TimelineRun): "yes" | "no" | undefined {
135
+ if (!LOGIC_TYPES.has(run.type) || run.status !== "sent") return undefined;
136
+ const branch = resultField(run.result, "branch");
137
+ return branch === "yes" || branch === "no" ? branch : undefined;
138
+ }
139
+
140
+ /** What the editor calls each exit: Yes / No, or Accepted / Not accepted. */
141
+ export function branchExitLabel(type: string, branch: "yes" | "no"): string {
142
+ if (type === "wait_for_connection")
143
+ return branch === "yes" ? "Accepted" : "Not accepted";
144
+ return branch === "yes" ? "Yes" : "No";
145
+ }
146
+
147
+ function logicOutcome(run: TimelineRun): string | undefined {
148
+ if (!LOGIC_TYPES.has(run.type)) return undefined;
149
+ const branch = branchOf(run);
150
+ if (branch) {
151
+ const reason = resultField(run.result, "reason");
152
+ const why =
153
+ branch === "no" && typeof reason === "string" ? NO_REASONS[reason] : "";
154
+ return `${branchExitLabel(run.type, branch)}${why ? ` (${why})` : ""}`;
155
+ }
156
+ if (run.status === "sent") return "Done";
157
+ if (run.type === "wait_for_connection")
158
+ return run.status === "waiting"
159
+ ? "Waiting for them to accept"
160
+ : run.status === "queued" || run.status === "running"
161
+ ? "Checking whether they accepted"
162
+ : undefined;
163
+ return ["queued", "running", "waiting"].includes(run.status)
164
+ ? "Checking"
165
+ : undefined;
166
+ }
167
+
112
168
  function outcomeOf(run: TimelineRun): string {
113
169
  if (run.status === "skipped") return skipReason(run.result);
170
+ const logic = logicOutcome(run);
171
+ if (logic) return logic;
114
172
  if (run.status === "sent") {
115
173
  if (run.type === "wait") return "Waited";
116
174
  if (run.type === "linkedin_visit") return "Visited";
@@ -153,6 +211,11 @@ export function timelineSteps(result: TimelineResult): TimelineStep[] {
153
211
  run.status === "sent" || run.status === "skipped"
154
212
  ? undefined
155
213
  : (run.lastError ?? email?.lastError)?.trim();
214
+ const branch = branchOf(run);
215
+ const waitingForAccept =
216
+ run.type === "wait_for_connection" &&
217
+ run.status === "waiting" &&
218
+ typeof run.timeoutAt === "number";
156
219
  return {
157
220
  step: (step?.order ?? run.stepIndex) + 1,
158
221
  stepId: String(run.stepId),
@@ -167,6 +230,8 @@ export function timelineSteps(result: TimelineResult): TimelineStep[] {
167
230
  run.scheduledAt ??
168
231
  null,
169
232
  detail,
233
+ ...(branch ? { branch } : {}),
234
+ ...(waitingForAccept ? { acceptanceDeadline: run.timeoutAt } : {}),
170
235
  ...(email?.subject ? { subject: email.subject } : {}),
171
236
  ...(text ? { text } : {}),
172
237
  ...(problem ? { error: problem } : {}),
@@ -51,6 +51,17 @@ export const COMMAND_ARGUMENTS = [
51
51
  spec("use", [1, 1]),
52
52
  spec("backend set", [1, 1]),
53
53
  spec("backend clear", [0, 0]),
54
+ spec("env list", [0, 0], "--limit --cursor"),
55
+ spec("env show", [1, 1], "--revision"),
56
+ spec("env save", [1, 1], "--path --wait", "--no-wait"),
57
+ spec("env run", [1, 1], "--revision --state-key", "--prepare-local"),
58
+ spec("env delete", [1, 1]),
59
+ spec("secrets set", [1, 1], "--file --kind --expected-version", "--stdin"),
60
+ spec("secrets list", [0, 0]),
61
+ spec("secrets delete", [1, 1], "--expected-version"),
62
+ ...["identity", "organisation", "user", "tools", "rules"].map((section) =>
63
+ spec(`context set ${section}`, [0, 0], "--content", "--stdin"),
64
+ ),
54
65
  ...["install", "uninstall", "refresh"].map((verb) =>
55
66
  spec(
56
67
  `ads ${verb}`,
@@ -80,7 +91,7 @@ export const COMMAND_ARGUMENTS = [
80
91
  spec(
81
92
  "chat new",
82
93
  [1, null],
83
- "--model --file-context --visibility --title",
94
+ "--model --file-context --visibility --title --environment",
84
95
  "--yolo --follow",
85
96
  ),
86
97
  spec("chat send", [2, null], "--model", "--yolo --follow"),
@@ -113,13 +124,14 @@ export const COMMAND_ARGUMENTS = [
113
124
  spec(
114
125
  "cron create",
115
126
  [1, 1],
116
- "--prompt --description --overlap --target --type --at --cron --tz --every --every-ms --connection --event --toolkit --trigger-config --object --where --where-logic",
127
+ "--prompt --description --overlap --target --type --at --cron --tz --every --every-ms --connection --event --toolkit --trigger-config --object --where --where-logic --environment",
117
128
  "--disabled --delete-after-run --no-secret --signed",
118
129
  ),
119
130
  spec(
120
131
  "cron update",
121
132
  [1, 1],
122
- "--name --prompt --description --overlap --enabled --at --cron --tz --every --every-ms",
133
+ "--name --prompt --description --overlap --enabled --at --cron --tz --every --every-ms --environment",
134
+ "--clear-environment",
123
135
  ),
124
136
  spec("cron run", [1, 1], "", "--wait"),
125
137
  spec("cron secret", [1, 1], "", "--off"),
@@ -189,7 +201,10 @@ export const COMMAND_ARGUMENTS = [
189
201
  ];
190
202
 
191
203
  export function assertDeclaredCommandFlags(argv: readonly string[]): void {
192
- const args = argv.filter((arg) => arg !== "--json");
204
+ const boundary = argv.indexOf("--");
205
+ const args = argv
206
+ .slice(0, boundary < 0 ? undefined : boundary)
207
+ .filter((arg) => arg !== "--json");
193
208
  if (["routine", "routines"].includes(args[0])) args[0] = "cron";
194
209
  if (["ad", "adline"].includes(args[0])) args[0] = "ads";
195
210
  if (args[0] === "agent" && ["new", "send"].includes(args[1]))
@@ -37,8 +37,23 @@ export function commandHelp(argv: readonly string[], usageText = ""): string {
37
37
  description: "",
38
38
  })),
39
39
  ...apiOperations
40
- .filter((op) => !op.deprecated)
41
- .map((op) => ({ usage: op.cli, description: op.summary })),
40
+ .filter((op) => {
41
+ if (!op.deprecated) return true;
42
+ // Keep exact legacy leaf help available without adding those commands
43
+ // back to the broad index or a parent family's discovery.
44
+ const command = words(op.cli);
45
+ return (
46
+ command.length > 1 &&
47
+ input.length >= command.length &&
48
+ matches(input.slice(0, command.length), command)
49
+ );
50
+ })
51
+ .map((op) => ({
52
+ usage: op.cli,
53
+ description: op.deprecated
54
+ ? `Compatibility command. ${op.summary}`
55
+ : op.summary,
56
+ })),
42
57
  ];
43
58
  let prefix = input;
44
59
  while (
@@ -137,6 +137,190 @@ function local(reason: string): LocalOnlyOperation {
137
137
  }
138
138
 
139
139
  const rawApiOperations = [
140
+ op({
141
+ id: "environments.list",
142
+ group: "environments",
143
+ summary:
144
+ "List workspace-shared reusable setups and ready revisions (metadata only).",
145
+ cli: "dench env list",
146
+ method: "GET",
147
+ path: "/environments",
148
+ requestSchema: z
149
+ .object({
150
+ limit: z.number().int().min(1).max(100).optional(),
151
+ cursor: z.string().optional(),
152
+ })
153
+ .strict(),
154
+ responseSchema: anyResponse,
155
+ backend: convex("query", "functions/environments:list"),
156
+ }),
157
+ op({
158
+ id: "environments.get",
159
+ group: "environments",
160
+ summary:
161
+ "Inspect a saved setup, its manifest, and an optional immutable revision.",
162
+ cli: "dench env show",
163
+ method: "GET",
164
+ path: "/environments/{name}",
165
+ requestSchema: z
166
+ .object({
167
+ name: z.string().regex(/^[a-z][a-z0-9-]{0,63}$/),
168
+ revision: z
169
+ .string()
170
+ .regex(/^[a-f0-9]{64}$/)
171
+ .optional(),
172
+ })
173
+ .strict(),
174
+ responseSchema: anyResponse,
175
+ backend: convex("query", "functions/environments:get"),
176
+ }),
177
+ op({
178
+ id: "environments.upload",
179
+ group: "environments",
180
+ summary:
181
+ "Reserve an owner-bound source upload. Prefix the uploaded bytes with the returned proof before saving.",
182
+ cli: "dench env save",
183
+ method: "POST",
184
+ path: "/environments/uploads",
185
+ requestSchema: z
186
+ .object({
187
+ kind: z.literal("source"),
188
+ size: z.number().int().min(1).max(16777216),
189
+ sha256: z.string().regex(/^[a-f0-9]{64}$/),
190
+ })
191
+ .strict(),
192
+ responseSchema: anyResponse,
193
+ backend: convex("mutation", "functions/environments:requestUpload"),
194
+ }),
195
+ op({
196
+ id: "environments.save",
197
+ group: "environments",
198
+ summary:
199
+ "Publish an explicitly saved source and manifest for one-time preparation. Returns pending/building until verified; does not run the task.",
200
+ cli: "dench env save",
201
+ method: "POST",
202
+ path: "/environments/{name}",
203
+ requestSchema: z
204
+ .object({
205
+ name: z.string().regex(/^[a-z][a-z0-9-]{0,63}$/),
206
+ manifest: z
207
+ .object({
208
+ version: z.literal(1),
209
+ name: z.string(),
210
+ purpose: z.string(),
211
+ files: z.array(z.string()),
212
+ prepare: z.array(z.string()),
213
+ verify: z.array(z.string()),
214
+ env: z.record(z.string(), z.string()).optional(),
215
+ secretEnv: z.record(z.string(), z.string()).optional(),
216
+ secretFiles: z
217
+ .array(
218
+ z.object({
219
+ path: z.string(),
220
+ secret: z.string(),
221
+ mutable: z.boolean().optional(),
222
+ }),
223
+ )
224
+ .optional(),
225
+ statePaths: z.array(z.string()).optional(),
226
+ portable: z.boolean().optional(),
227
+ })
228
+ .strict(),
229
+ uploadId: z.string(),
230
+ storageId: z.string(),
231
+ sha256: z.string().regex(/^[a-f0-9]{64}$/),
232
+ })
233
+ .strict(),
234
+ responseSchema: anyResponse,
235
+ backend: convex("action", "functions/environmentsNode:save"),
236
+ }),
237
+ op({
238
+ id: "environments.delete",
239
+ group: "environments",
240
+ summary:
241
+ "Retire a saved setup from new selection; retain immutable revisions and active job evidence.",
242
+ cli: "dench env delete",
243
+ method: "DELETE",
244
+ path: "/environments/{name}",
245
+ requestSchema: z
246
+ .object({ name: z.string().regex(/^[a-z][a-z0-9-]{0,63}$/) })
247
+ .strict(),
248
+ responseSchema: anyResponse,
249
+ backend: convex("mutation", "functions/environments:remove"),
250
+ }),
251
+ op({
252
+ id: "environments.run",
253
+ group: "environments",
254
+ summary:
255
+ "Run a command with prepared dependencies and declared credentials, saving declared state with a revision check.",
256
+ cli: "dench env run",
257
+ method: "POST",
258
+ path: "/local/environments/run",
259
+ requestSchema: noBody,
260
+ responseSchema: anyResponse,
261
+ backend: local(
262
+ "Execution occurs in the CLI process. Use dench env run NAME -- COMMAND; secret-bearing execution resolution is not a general REST read endpoint.",
263
+ ),
264
+ }),
265
+ op({
266
+ id: "secrets.list",
267
+ group: "secrets",
268
+ summary:
269
+ "List workspace-shared credential names, kinds and versions; never values.",
270
+ cli: "dench secrets list",
271
+ method: "GET",
272
+ path: "/secrets",
273
+ requestSchema: z
274
+ .object({
275
+ limit: z.number().int().min(1).max(100).optional(),
276
+ cursor: z.string().optional(),
277
+ })
278
+ .strict(),
279
+ responseSchema: anyResponse,
280
+ backend: convex("query", "functions/workspaceSecrets:list"),
281
+ }),
282
+ op({
283
+ id: "secrets.set",
284
+ group: "secrets",
285
+ summary:
286
+ "Encrypt a workspace credential. Use CLI stdin or the secure chat form; return metadata only. Do not put values in chat, manifests or scripts.",
287
+ cli: "dench secrets set",
288
+ method: "PUT",
289
+ path: "/secrets/{name}",
290
+ requestSchema: z
291
+ .object({
292
+ name: z.string().regex(/^[A-Z][A-Z0-9_]{0,127}$/),
293
+ kind: z.enum(["env", "file"]),
294
+ value: z.string().min(1).max(65536),
295
+ expectedVersion: z.number().int().nonnegative().optional(),
296
+ })
297
+ .strict(),
298
+ responseSchema: z.object({
299
+ name: z.string(),
300
+ kind: z.enum(["env", "file"]),
301
+ version: z.number(),
302
+ revision: z.number(),
303
+ status: z.literal("stored"),
304
+ }),
305
+ backend: convex("action", "functions/workspaceSecretsNode:set"),
306
+ }),
307
+ op({
308
+ id: "secrets.delete",
309
+ group: "secrets",
310
+ summary:
311
+ "Revoke a workspace credential for future resolution, optionally checking its version.",
312
+ cli: "dench secrets delete",
313
+ method: "DELETE",
314
+ path: "/secrets/{name}",
315
+ requestSchema: z
316
+ .object({
317
+ name: z.string().regex(/^[A-Z][A-Z0-9_]{0,127}$/),
318
+ expectedVersion: z.number().int().nonnegative().optional(),
319
+ })
320
+ .strict(),
321
+ responseSchema: anyResponse,
322
+ backend: convex("mutation", "functions/workspaceSecrets:remove"),
323
+ }),
140
324
  op({
141
325
  id: "campaigns.drafts.create",
142
326
  group: "campaigns",
@@ -3999,7 +4183,7 @@ const rawApiOperations = [
3999
4183
  id: "campaigns.analytics",
4000
4184
  group: "campaigns",
4001
4185
  summary:
4002
- "Campaign funnel: enrolled, contacted, invited, accepted, messaged, replied, opens and clicks.",
4186
+ "Campaign funnel: enrolled, contacted, invited, accepted, messaged, replied, opens and clicks, and for a workflow how many people took each If / else and Wait for them to accept path (branchStats).",
4003
4187
  cli: "dench campaign get",
4004
4188
  method: "GET",
4005
4189
  path: "/campaigns/{sequenceId}/analytics",
@@ -4053,7 +4237,7 @@ const rawApiOperations = [
4053
4237
  id: "campaigns.steps.replace",
4054
4238
  group: "campaigns",
4055
4239
  summary:
4056
- "Replace every step of a draft campaign (email, wait, LinkedIn visit, connection request, message, post reaction, InMail). Steps are checked first: a field the step type would drop, missing text or {TOKEN} single braces are rejected, not saved. Configure sender pools on the campaign; step sender ids are legacy-only.",
4240
+ "Replace every step of a draft campaign (email, wait, LinkedIn visit, connection request, message, post reaction, InMail, If / else, Wait for them to accept). A workflow (stepModel workflow, or steps with key, next, yesNext or noNext) branches: condition and wait_for_connection steps continue on yesNext or noNext, other steps on next; each points at another step's key or end. Steps are checked first: a field the step type would drop, missing text, {TOKEN} single braces or paths that don't hold together are rejected, not saved. Configure sender pools on the campaign; step sender ids are legacy-only.",
4057
4241
  cli: "dench campaign steps set",
4058
4242
  method: "PUT",
4059
4243
  path: "/campaigns/{sequenceId}/steps",
@@ -4065,7 +4249,7 @@ const rawApiOperations = [
4065
4249
  id: "campaigns.steps.update",
4066
4250
  group: "campaigns",
4067
4251
  summary:
4068
- "Edit the text, waits and conditions of a launched (or paused) campaign's steps in place. Each step keeps its id, type and place; pass the stepId and the updatedAt you read, and only the fields you change. Messages already sent or being prepared keep their text; drafts use campaigns.steps.replace.",
4252
+ "Edit the text, waits and conditions of a launched (or paused) campaign's steps in place. Each step keeps its id, type and place; pass the stepId and the updatedAt you read, and only the fields you change. A workflow keeps its paths and what each If / else checks (key, next, yesNext, noNext, check, conditionField, conditionOperator); conditionValue and acceptance waits stay editable. Messages already sent or being prepared keep their text; drafts use campaigns.steps.replace.",
4069
4253
  cli: "dench campaign steps edit",
4070
4254
  method: "PATCH",
4071
4255
  path: "/campaigns/{sequenceId}/steps",
@@ -5134,7 +5318,8 @@ const rawApiOperations = [
5134
5318
  id: "agentConfig.identity.show",
5135
5319
  group: "agent-config",
5136
5320
  summary: "Read IDENTITY.md.",
5137
- cli: "dench identity show",
5321
+ cli: "dench context --sections identity",
5322
+ aliases: ["dench identity show"],
5138
5323
  method: "GET",
5139
5324
  path: "/agent-config/identity",
5140
5325
  requestSchema: noBody,
@@ -5145,7 +5330,8 @@ const rawApiOperations = [
5145
5330
  id: "agentConfig.identity.edit",
5146
5331
  group: "agent-config",
5147
5332
  summary: "Update IDENTITY.md.",
5148
- cli: "dench identity edit",
5333
+ cli: "dench context set identity",
5334
+ aliases: ["dench identity edit"],
5149
5335
  method: "PUT",
5150
5336
  path: "/agent-config/identity",
5151
5337
  requestSchema: anyObject,
@@ -5156,7 +5342,8 @@ const rawApiOperations = [
5156
5342
  id: "agentConfig.organisation.show",
5157
5343
  group: "agent-config",
5158
5344
  summary: "Read ORGANISATION.md.",
5159
- cli: "dench organisation show",
5345
+ cli: "dench context --sections organisation",
5346
+ aliases: ["dench organisation show"],
5160
5347
  method: "GET",
5161
5348
  path: "/agent-config/organisation",
5162
5349
  requestSchema: noBody,
@@ -5167,7 +5354,8 @@ const rawApiOperations = [
5167
5354
  id: "agentConfig.organisation.edit",
5168
5355
  group: "agent-config",
5169
5356
  summary: "Update ORGANISATION.md.",
5170
- cli: "dench organisation edit",
5357
+ cli: "dench context set organisation",
5358
+ aliases: ["dench organisation edit"],
5171
5359
  method: "PUT",
5172
5360
  path: "/agent-config/organisation",
5173
5361
  requestSchema: anyObject,
@@ -5178,7 +5366,8 @@ const rawApiOperations = [
5178
5366
  id: "agentConfig.user.show",
5179
5367
  group: "agent-config",
5180
5368
  summary: "Read USER.md.",
5181
- cli: "dench user show",
5369
+ cli: "dench context --sections user",
5370
+ aliases: ["dench user show"],
5182
5371
  method: "GET",
5183
5372
  path: "/agent-config/user",
5184
5373
  requestSchema: noBody,
@@ -5189,7 +5378,8 @@ const rawApiOperations = [
5189
5378
  id: "agentConfig.user.edit",
5190
5379
  group: "agent-config",
5191
5380
  summary: "Update USER.md.",
5192
- cli: "dench user edit",
5381
+ cli: "dench context set user",
5382
+ aliases: ["dench user edit"],
5193
5383
  method: "PUT",
5194
5384
  path: "/agent-config/user",
5195
5385
  requestSchema: anyObject,
@@ -5200,7 +5390,8 @@ const rawApiOperations = [
5200
5390
  id: "agentConfig.tools.show",
5201
5391
  group: "agent-config",
5202
5392
  summary: "Read tool notes.",
5203
- cli: "dench tools show",
5393
+ cli: "dench context --sections tools",
5394
+ aliases: ["dench tools show"],
5204
5395
  method: "GET",
5205
5396
  path: "/agent-config/tools",
5206
5397
  requestSchema: noBody,
@@ -5211,15 +5402,32 @@ const rawApiOperations = [
5211
5402
  id: "agentConfig.tools.edit",
5212
5403
  group: "agent-config",
5213
5404
  summary: "Update tool notes.",
5214
- cli: "dench tools edit",
5405
+ cli: "dench context set tools",
5406
+ aliases: ["dench tools edit"],
5215
5407
  method: "PUT",
5216
5408
  path: "/agent-config/tools",
5217
5409
  requestSchema: anyObject,
5218
5410
  responseSchema: anyResponse,
5219
5411
  backend: convex("mutation", "functions/agentConfig:updateToolsNotes"),
5220
5412
  }),
5413
+ op({
5414
+ id: "workspace.context.rules.set",
5415
+ group: "workspace",
5416
+ summary:
5417
+ "Update standing workspace rules; credentials belong in secrets and runnable setup in environments.",
5418
+ cli: "dench context set rules",
5419
+ method: "PUT",
5420
+ path: "/context/rules",
5421
+ requestSchema: z.object({ content: z.string().min(1).max(32000) }).strict(),
5422
+ responseSchema: anyResponse,
5423
+ backend: {
5424
+ ...convex("mutation", "functions/agentConfig:writeMagicFileFromUI"),
5425
+ fixedArgs: { path: "/RULES.md" },
5426
+ },
5427
+ }),
5221
5428
  op({
5222
5429
  id: "agentConfig.mem.show",
5430
+ deprecated: true,
5223
5431
  group: "agent-config",
5224
5432
  summary: "Read aggregate memory.",
5225
5433
  cli: "dench mem show",
@@ -5231,6 +5439,7 @@ const rawApiOperations = [
5231
5439
  }),
5232
5440
  op({
5233
5441
  id: "agentConfig.mem.edit",
5442
+ deprecated: true,
5234
5443
  group: "agent-config",
5235
5444
  summary: "Update aggregate memory.",
5236
5445
  cli: "dench mem set",
@@ -5242,6 +5451,7 @@ const rawApiOperations = [
5242
5451
  }),
5243
5452
  op({
5244
5453
  id: "agentConfig.bootstrap.show",
5454
+ deprecated: true,
5245
5455
  group: "agent-config",
5246
5456
  summary: "Read bootstrap state.",
5247
5457
  cli: "dench bootstrap status",
@@ -5253,6 +5463,7 @@ const rawApiOperations = [
5253
5463
  }),
5254
5464
  op({
5255
5465
  id: "agentConfig.bootstrap.complete",
5466
+ deprecated: true,
5256
5467
  group: "agent-config",
5257
5468
  summary: "Complete bootstrap.",
5258
5469
  cli: "dench bootstrap complete",
@@ -5264,6 +5475,7 @@ const rawApiOperations = [
5264
5475
  }),
5265
5476
  op({
5266
5477
  id: "agentConfig.bootstrap.template",
5478
+ deprecated: true,
5267
5479
  group: "agent-config",
5268
5480
  summary: "Update bootstrap template.",
5269
5481
  cli: "dench bootstrap template",
@@ -5300,6 +5512,7 @@ const rawApiOperations = [
5300
5512
  }),
5301
5513
  op({
5302
5514
  id: "agentConfig.daily.today",
5515
+ deprecated: true,
5303
5516
  group: "agent-config",
5304
5517
  summary: "Read today's daily activity path.",
5305
5518
  cli: "dench daily today",
@@ -5311,6 +5524,7 @@ const rawApiOperations = [
5311
5524
  }),
5312
5525
  op({
5313
5526
  id: "agentConfig.daily.show",
5527
+ deprecated: true,
5314
5528
  group: "agent-config",
5315
5529
  summary: "Read a daily activity path.",
5316
5530
  cli: "dench daily show",