@dench.com/cli 3.6.6-staging.386 → 3.7.0-staging.387
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/agent-config.ts +17 -3
- package/app-sdk.d.ts +248 -10
- package/crm.ts +92 -24
- package/dench.ts +128 -19
- package/email-inbox.ts +169 -0
- package/email.ts +103 -21
- package/lib/api-schemas.ts +156 -14
- package/lib/app-sdk-catalog.generated.ts +9 -3
- package/lib/bundled-references.ts +17 -0
- package/lib/cli-args.ts +30 -3
- package/lib/command-args.ts +237 -0
- package/lib/command-help.ts +78 -0
- package/lib/command-registry.ts +75 -3
- package/lib/native-email-wait.ts +75 -0
- package/lib/public-error.ts +82 -0
- package/lib/references.generated.json +66 -0
- package/package.json +3 -1
- package/reference.ts +47 -0
package/agent-config.ts
CHANGED
|
@@ -81,6 +81,12 @@ type CliCtx = {
|
|
|
81
81
|
sessionToken?: string;
|
|
82
82
|
};
|
|
83
83
|
|
|
84
|
+
function consumeOutputFlag(ctx: CliCtx): void {
|
|
85
|
+
// Drain even when the parent already resolved JSON mode: otherwise a free
|
|
86
|
+
// text body or an optional model positional would consume the literal flag.
|
|
87
|
+
ctx.jsonOutput = hasFlag(ctx.args, "--json") || ctx.jsonOutput;
|
|
88
|
+
}
|
|
89
|
+
|
|
84
90
|
function out(ctx: CliCtx, value: unknown): void {
|
|
85
91
|
if (ctx.jsonOutput) {
|
|
86
92
|
console.log(JSON.stringify(value, null, 2));
|
|
@@ -229,7 +235,7 @@ async function handleSimpleMagicFile(
|
|
|
229
235
|
}
|
|
230
236
|
if (sub === "edit" || sub === "set") {
|
|
231
237
|
let content: string;
|
|
232
|
-
if (
|
|
238
|
+
if (args.includes("--stdin") || args.includes("--content")) {
|
|
233
239
|
content = await resolveContent(args);
|
|
234
240
|
} else {
|
|
235
241
|
const config = await loadAgentConfig(ctx);
|
|
@@ -315,7 +321,7 @@ async function handleBootstrap(ctx: CliCtx, args: string[]): Promise<void> {
|
|
|
315
321
|
}
|
|
316
322
|
if (sub === "template") {
|
|
317
323
|
let content: string;
|
|
318
|
-
if (
|
|
324
|
+
if (args.includes("--stdin") || args.includes("--content")) {
|
|
319
325
|
content = await resolveContent(args);
|
|
320
326
|
} else {
|
|
321
327
|
const config = await loadAgentConfig(ctx);
|
|
@@ -399,6 +405,7 @@ async function handleModel(ctx: CliCtx, args: string[]): Promise<void> {
|
|
|
399
405
|
// ── Entry points consumed by cli/dench.ts ────────────────────────────────
|
|
400
406
|
|
|
401
407
|
export async function runIdentityCommand(ctx: CliCtx): Promise<void> {
|
|
408
|
+
consumeOutputFlag(ctx);
|
|
402
409
|
await handleSimpleMagicFile(ctx, ctx.args, {
|
|
403
410
|
label: "identity",
|
|
404
411
|
field: "identity",
|
|
@@ -406,6 +413,7 @@ export async function runIdentityCommand(ctx: CliCtx): Promise<void> {
|
|
|
406
413
|
}
|
|
407
414
|
|
|
408
415
|
export async function runOrganisationCommand(ctx: CliCtx): Promise<void> {
|
|
416
|
+
consumeOutputFlag(ctx);
|
|
409
417
|
await handleSimpleMagicFile(ctx, ctx.args, {
|
|
410
418
|
label: "organisation",
|
|
411
419
|
field: "organisation",
|
|
@@ -413,6 +421,7 @@ export async function runOrganisationCommand(ctx: CliCtx): Promise<void> {
|
|
|
413
421
|
}
|
|
414
422
|
|
|
415
423
|
export async function runUserCommand(ctx: CliCtx): Promise<void> {
|
|
424
|
+
consumeOutputFlag(ctx);
|
|
416
425
|
await handleSimpleMagicFile(ctx, ctx.args, {
|
|
417
426
|
label: "user",
|
|
418
427
|
field: "identity", // unused (perMember=true)
|
|
@@ -421,6 +430,7 @@ export async function runUserCommand(ctx: CliCtx): Promise<void> {
|
|
|
421
430
|
}
|
|
422
431
|
|
|
423
432
|
export async function runToolsCommand(ctx: CliCtx): Promise<void> {
|
|
433
|
+
consumeOutputFlag(ctx);
|
|
424
434
|
await handleSimpleMagicFile(ctx, ctx.args, {
|
|
425
435
|
label: "tools",
|
|
426
436
|
field: "toolsNotes",
|
|
@@ -433,6 +443,7 @@ export async function runToolsCommand(ctx: CliCtx): Promise<void> {
|
|
|
433
443
|
* show | append <text> | set
|
|
434
444
|
*/
|
|
435
445
|
export async function runMemoryAggregateCommand(ctx: CliCtx): Promise<void> {
|
|
446
|
+
consumeOutputFlag(ctx);
|
|
436
447
|
const sub = ctx.args[0];
|
|
437
448
|
if (!sub || sub === "show") {
|
|
438
449
|
const config = await loadAgentConfig(ctx);
|
|
@@ -451,7 +462,7 @@ export async function runMemoryAggregateCommand(ctx: CliCtx): Promise<void> {
|
|
|
451
462
|
}
|
|
452
463
|
if (sub === "set" || sub === "edit") {
|
|
453
464
|
let content: string;
|
|
454
|
-
if (
|
|
465
|
+
if (ctx.args.includes("--stdin") || ctx.args.includes("--content")) {
|
|
455
466
|
content = await resolveContent(ctx.args);
|
|
456
467
|
} else {
|
|
457
468
|
const config = await loadAgentConfig(ctx);
|
|
@@ -476,10 +487,12 @@ export async function runMemoryAggregateCommand(ctx: CliCtx): Promise<void> {
|
|
|
476
487
|
}
|
|
477
488
|
|
|
478
489
|
export async function runBootstrapCommand(ctx: CliCtx): Promise<void> {
|
|
490
|
+
consumeOutputFlag(ctx);
|
|
479
491
|
await handleBootstrap(ctx, ctx.args);
|
|
480
492
|
}
|
|
481
493
|
|
|
482
494
|
export async function runModelCommand(ctx: CliCtx): Promise<void> {
|
|
495
|
+
consumeOutputFlag(ctx);
|
|
483
496
|
await handleModel(ctx, ctx.args);
|
|
484
497
|
}
|
|
485
498
|
|
|
@@ -490,6 +503,7 @@ export async function runModelCommand(ctx: CliCtx): Promise<void> {
|
|
|
490
503
|
* heading wrappers stay consistent.
|
|
491
504
|
*/
|
|
492
505
|
export async function runDailyCommand(ctx: CliCtx): Promise<void> {
|
|
506
|
+
consumeOutputFlag(ctx);
|
|
493
507
|
const sub = ctx.args[0];
|
|
494
508
|
if (!sub || sub === "today") {
|
|
495
509
|
const today = new Date();
|
package/app-sdk.d.ts
CHANGED
|
@@ -722,6 +722,8 @@ export interface ApiRequests {
|
|
|
722
722
|
};
|
|
723
723
|
/** List CRM objects. — `dench crm objects list` — GET /api/v1/crm/objects */
|
|
724
724
|
"crm.objects.list": Record<string, unknown>;
|
|
725
|
+
/** List names, display labels, visibility and workspace counts without internal state. — `dench crm objects list --compact` — GET /api/v1/crm/catalog/objects */
|
|
726
|
+
"crm.objects.listCompact": Record<string, unknown>;
|
|
725
727
|
/** Get a CRM object. — `dench crm objects get` — GET /api/v1/crm/objects/{name} */
|
|
726
728
|
"crm.objects.get": {
|
|
727
729
|
name: string;
|
|
@@ -883,6 +885,10 @@ export interface ApiRequests {
|
|
|
883
885
|
"crm.fields.list": {
|
|
884
886
|
objectName: string;
|
|
885
887
|
};
|
|
888
|
+
/** List field names, types and effective constraints without indexing or enrichment internals. — `dench crm fields list --compact` — GET /api/v1/crm/catalog/objects/{objectName}/fields */
|
|
889
|
+
"crm.fields.listCompact": {
|
|
890
|
+
objectName: string;
|
|
891
|
+
};
|
|
886
892
|
/** Create a CRM field or read-only campaign activity boolean column. — `dench crm fields create` — POST /api/v1/crm/objects/{objectName}/fields */
|
|
887
893
|
"crm.fields.create": {
|
|
888
894
|
objectName: string;
|
|
@@ -1374,6 +1380,16 @@ export interface ApiRequests {
|
|
|
1374
1380
|
objectName?: string;
|
|
1375
1381
|
limit?: number;
|
|
1376
1382
|
};
|
|
1383
|
+
/** Search bounded pages of readable CRM entries, optionally projecting cells. Always follow continueCursor until isDone. — `dench crm search --page` — GET /api/v1/crm/search/page */
|
|
1384
|
+
"crm.search.page": {
|
|
1385
|
+
/** Full-text query over readable entries. */
|
|
1386
|
+
text: string;
|
|
1387
|
+
objectName?: string;
|
|
1388
|
+
select?: string[];
|
|
1389
|
+
limit?: number;
|
|
1390
|
+
/** Use the preceding continueCursor, with the same query and projection. */
|
|
1391
|
+
cursor?: string;
|
|
1392
|
+
};
|
|
1377
1393
|
/** List CRM statuses. — `dench crm statuses list` — GET /api/v1/crm/objects/{objectName}/statuses */
|
|
1378
1394
|
"crm.statuses.list": {
|
|
1379
1395
|
objectName: string;
|
|
@@ -2179,6 +2195,32 @@ export interface ApiRequests {
|
|
|
2179
2195
|
/** Identity id, sender email, or domain (deletes every sender on the domain). Permanent: re-adding requires re-verification. */
|
|
2180
2196
|
identity: string;
|
|
2181
2197
|
};
|
|
2198
|
+
/** Search authorized synced mailbox headers with bounded cursor pagination. isDone covers stored records, not provider completeness. — `dench email inbox search` — GET /api/v1/email/inbox/search */
|
|
2199
|
+
"email.inbox.search": {
|
|
2200
|
+
limit?: number;
|
|
2201
|
+
cursor?: string;
|
|
2202
|
+
mailbox?: string;
|
|
2203
|
+
from?: string;
|
|
2204
|
+
to?: string;
|
|
2205
|
+
subject?: string;
|
|
2206
|
+
/** Inclusive Unix milliseconds; missing sentAt falls back to createdAt. */
|
|
2207
|
+
after?: number;
|
|
2208
|
+
/** Exclusive Unix milliseconds. */
|
|
2209
|
+
before?: number;
|
|
2210
|
+
direction?: "inbound" | "outbound";
|
|
2211
|
+
};
|
|
2212
|
+
/** Read a bounded page of synced headers using an exact thread handle from inbox search; bodies remain on demand. — `dench email inbox thread` — GET /api/v1/email/inbox/threads/{threadHandle} */
|
|
2213
|
+
"email.inbox.thread": {
|
|
2214
|
+
limit?: number;
|
|
2215
|
+
cursor?: string;
|
|
2216
|
+
threadHandle: string;
|
|
2217
|
+
};
|
|
2218
|
+
/** Read a bounded stored body using an exact message handle from inbox search; rechecks mailbox and record privacy. — `dench email inbox message` — GET /api/v1/email/inbox/messages/{messageHandle} */
|
|
2219
|
+
"email.inbox.message": {
|
|
2220
|
+
messageHandle: string;
|
|
2221
|
+
format?: "text" | "html";
|
|
2222
|
+
maxBytes?: number;
|
|
2223
|
+
};
|
|
2182
2224
|
/** Create an editable Dench email draft and synchronize its selected native mailbox asynchronously. Use a stable requestId for retries. — `dench email draft create` — POST /api/v1/email/drafts */
|
|
2183
2225
|
"email.drafts.create": {
|
|
2184
2226
|
organizationId?: string;
|
|
@@ -2261,13 +2303,13 @@ export interface ApiRequests {
|
|
|
2261
2303
|
"email.drafts.signature": {
|
|
2262
2304
|
draftId: string;
|
|
2263
2305
|
};
|
|
2264
|
-
/** Send through a native Gmail or Outlook mailbox with a durable request receipt. Only use for an explicit send request. — `dench email send --mailbox` — POST /api/v1/email/native/send */
|
|
2306
|
+
/** Send through a native Gmail or Outlook mailbox with a durable request receipt. Only use for an explicit send request. — `dench email send [--mailbox <id/email>]` — POST /api/v1/email/native/send */
|
|
2265
2307
|
"email.native.send": {
|
|
2266
2308
|
organizationId?: string;
|
|
2267
2309
|
threadId?: string;
|
|
2268
2310
|
mailbox?: string;
|
|
2269
2311
|
requestId: string;
|
|
2270
|
-
to
|
|
2312
|
+
to: {
|
|
2271
2313
|
email: string;
|
|
2272
2314
|
name?: string;
|
|
2273
2315
|
}[];
|
|
@@ -2289,7 +2331,7 @@ export interface ApiRequests {
|
|
|
2289
2331
|
size: number;
|
|
2290
2332
|
}[];
|
|
2291
2333
|
};
|
|
2292
|
-
/** Send one raw email (no campaign): to/cc/bcc, custom from-name and reply-to, optional reply threading via replyToMessageId. — `dench email send
|
|
2334
|
+
/** Send one raw email (no campaign): to/cc/bcc, custom from-name and reply-to, optional reply threading via replyToMessageId. — `dench email send --from <verified-email>` — POST /api/v1/email/send */
|
|
2293
2335
|
"email.send": {
|
|
2294
2336
|
/** Verified sender mailbox. */
|
|
2295
2337
|
fromEmail: string;
|
|
@@ -3165,7 +3207,7 @@ export interface ApiRequests {
|
|
|
3165
3207
|
/** Execution ref from a prior search, OR pass session_id+tool_slug. */
|
|
3166
3208
|
execution_ref?: string;
|
|
3167
3209
|
session_id?: string;
|
|
3168
|
-
/** Tool slug, e.g.
|
|
3210
|
+
/** Tool slug, e.g. SLACK_LIST_CHANNELS. */
|
|
3169
3211
|
tool_slug?: string;
|
|
3170
3212
|
/** Tool arguments object. */
|
|
3171
3213
|
arguments?: Record<string, unknown>;
|
|
@@ -3213,7 +3255,7 @@ export interface ApiRequests {
|
|
|
3213
3255
|
};
|
|
3214
3256
|
/** Read tool notes. — `dench tools show` — GET /api/v1/agent-config/tools */
|
|
3215
3257
|
"agentConfig.tools.show": Record<string, unknown>;
|
|
3216
|
-
/** Update tool notes. — `dench tools
|
|
3258
|
+
/** Update tool notes. — `dench tools edit` — PUT /api/v1/agent-config/tools */
|
|
3217
3259
|
"agentConfig.tools.edit": {
|
|
3218
3260
|
content: string;
|
|
3219
3261
|
};
|
|
@@ -4097,6 +4139,16 @@ export interface ApiResponses {
|
|
|
4097
4139
|
updatedAt: number;
|
|
4098
4140
|
[key: string]: unknown;
|
|
4099
4141
|
}>;
|
|
4142
|
+
"crm.objects.listCompact": Array<{
|
|
4143
|
+
_id: string;
|
|
4144
|
+
name: string;
|
|
4145
|
+
displayName: string;
|
|
4146
|
+
description?: string;
|
|
4147
|
+
entryCount: number | null;
|
|
4148
|
+
countScope: "workspace" | "private_unknown";
|
|
4149
|
+
visibility: "workspace" | "owner_only" | "owner_plus_members";
|
|
4150
|
+
archived: boolean;
|
|
4151
|
+
}>;
|
|
4100
4152
|
"crm.objects.get": {
|
|
4101
4153
|
_id: string;
|
|
4102
4154
|
_creationTime: number;
|
|
@@ -4235,6 +4287,18 @@ export interface ApiResponses {
|
|
|
4235
4287
|
updatedAt: number;
|
|
4236
4288
|
[key: string]: unknown;
|
|
4237
4289
|
}>;
|
|
4290
|
+
"crm.fields.listCompact": {
|
|
4291
|
+
_id: string;
|
|
4292
|
+
name: string;
|
|
4293
|
+
type: string;
|
|
4294
|
+
required: boolean;
|
|
4295
|
+
readOnly: boolean;
|
|
4296
|
+
defaultValue?: string;
|
|
4297
|
+
enumValues?: string[];
|
|
4298
|
+
enumMultiple: boolean;
|
|
4299
|
+
relatedObjectId?: string;
|
|
4300
|
+
relationshipType?: string;
|
|
4301
|
+
}[];
|
|
4238
4302
|
"crm.fields.create": {
|
|
4239
4303
|
id: string;
|
|
4240
4304
|
};
|
|
@@ -4576,6 +4640,19 @@ export interface ApiResponses {
|
|
|
4576
4640
|
updatedBy: string;
|
|
4577
4641
|
[key: string]: unknown;
|
|
4578
4642
|
}[];
|
|
4643
|
+
"crm.search.page": {
|
|
4644
|
+
page: {
|
|
4645
|
+
_id: string;
|
|
4646
|
+
objectId: string;
|
|
4647
|
+
/** Field-name -> cell value map. */
|
|
4648
|
+
data: Record<string, unknown>;
|
|
4649
|
+
}[];
|
|
4650
|
+
isDone: boolean;
|
|
4651
|
+
continueCursor: string | null;
|
|
4652
|
+
returnedCount: number;
|
|
4653
|
+
selectedFields: string[] | null;
|
|
4654
|
+
completeness: "page";
|
|
4655
|
+
};
|
|
4579
4656
|
"crm.statuses.list": {
|
|
4580
4657
|
_id: string;
|
|
4581
4658
|
_creationTime: number;
|
|
@@ -5447,6 +5524,150 @@ export interface ApiResponses {
|
|
|
5447
5524
|
disabled: boolean;
|
|
5448
5525
|
}[];
|
|
5449
5526
|
};
|
|
5527
|
+
"email.inbox.search": {
|
|
5528
|
+
page: Array<{
|
|
5529
|
+
messageHandle: string;
|
|
5530
|
+
threadHandle: string;
|
|
5531
|
+
mailboxId: string;
|
|
5532
|
+
from: {
|
|
5533
|
+
email: string;
|
|
5534
|
+
name?: string;
|
|
5535
|
+
};
|
|
5536
|
+
to: {
|
|
5537
|
+
email: string;
|
|
5538
|
+
name?: string;
|
|
5539
|
+
}[];
|
|
5540
|
+
subject: string;
|
|
5541
|
+
at: number;
|
|
5542
|
+
dateSource: "sentAt" | "createdAt";
|
|
5543
|
+
direction: "inbound" | "outbound";
|
|
5544
|
+
status: string;
|
|
5545
|
+
hasAttachments: boolean;
|
|
5546
|
+
headersTruncated: boolean;
|
|
5547
|
+
}>;
|
|
5548
|
+
continueCursor: string | null;
|
|
5549
|
+
isDone: boolean;
|
|
5550
|
+
coverage: {
|
|
5551
|
+
source: "synced";
|
|
5552
|
+
scope: "mailbox_linked_messages";
|
|
5553
|
+
mailboxId: string;
|
|
5554
|
+
mailboxEmail: string;
|
|
5555
|
+
mailboxStatus: string;
|
|
5556
|
+
ingestionMode: string;
|
|
5557
|
+
phase: string;
|
|
5558
|
+
syncStatus: string | null;
|
|
5559
|
+
lastPolledAt: number | null;
|
|
5560
|
+
lastBackfillCompletedAt: number | null;
|
|
5561
|
+
oldestSeenAt: number | null;
|
|
5562
|
+
backfillStatus: string | null;
|
|
5563
|
+
backfillCapped: boolean;
|
|
5564
|
+
providerComplete: false;
|
|
5565
|
+
privacyLimited: boolean;
|
|
5566
|
+
};
|
|
5567
|
+
order: "sentAt_desc_then_undated";
|
|
5568
|
+
};
|
|
5569
|
+
"email.inbox.thread": {
|
|
5570
|
+
page: Array<{
|
|
5571
|
+
messageHandle: string;
|
|
5572
|
+
threadHandle: string;
|
|
5573
|
+
mailboxId: string;
|
|
5574
|
+
from: {
|
|
5575
|
+
email: string;
|
|
5576
|
+
name?: string;
|
|
5577
|
+
};
|
|
5578
|
+
to: {
|
|
5579
|
+
email: string;
|
|
5580
|
+
name?: string;
|
|
5581
|
+
}[];
|
|
5582
|
+
subject: string;
|
|
5583
|
+
at: number;
|
|
5584
|
+
dateSource: "sentAt" | "createdAt";
|
|
5585
|
+
direction: "inbound" | "outbound";
|
|
5586
|
+
status: string;
|
|
5587
|
+
hasAttachments: boolean;
|
|
5588
|
+
headersTruncated: boolean;
|
|
5589
|
+
}>;
|
|
5590
|
+
continueCursor: string | null;
|
|
5591
|
+
isDone: boolean;
|
|
5592
|
+
coverage: {
|
|
5593
|
+
source: "synced";
|
|
5594
|
+
scope: "mailbox_linked_messages";
|
|
5595
|
+
mailboxId: string;
|
|
5596
|
+
mailboxEmail: string;
|
|
5597
|
+
mailboxStatus: string;
|
|
5598
|
+
ingestionMode: string;
|
|
5599
|
+
phase: string;
|
|
5600
|
+
syncStatus: string | null;
|
|
5601
|
+
lastPolledAt: number | null;
|
|
5602
|
+
lastBackfillCompletedAt: number | null;
|
|
5603
|
+
oldestSeenAt: number | null;
|
|
5604
|
+
backfillStatus: string | null;
|
|
5605
|
+
backfillCapped: boolean;
|
|
5606
|
+
providerComplete: false;
|
|
5607
|
+
privacyLimited: boolean;
|
|
5608
|
+
};
|
|
5609
|
+
order: "sentAt_desc_then_undated";
|
|
5610
|
+
};
|
|
5611
|
+
"email.inbox.message": {
|
|
5612
|
+
header: {
|
|
5613
|
+
messageHandle: string;
|
|
5614
|
+
threadHandle: string;
|
|
5615
|
+
mailboxId: string;
|
|
5616
|
+
from: {
|
|
5617
|
+
email: string;
|
|
5618
|
+
name?: string;
|
|
5619
|
+
};
|
|
5620
|
+
to: {
|
|
5621
|
+
email: string;
|
|
5622
|
+
name?: string;
|
|
5623
|
+
}[];
|
|
5624
|
+
subject: string;
|
|
5625
|
+
at: number;
|
|
5626
|
+
dateSource: "sentAt" | "createdAt";
|
|
5627
|
+
direction: "inbound" | "outbound";
|
|
5628
|
+
status: string;
|
|
5629
|
+
hasAttachments: boolean;
|
|
5630
|
+
headersTruncated: boolean;
|
|
5631
|
+
};
|
|
5632
|
+
coverage: {
|
|
5633
|
+
source: "synced";
|
|
5634
|
+
scope: "mailbox_linked_messages";
|
|
5635
|
+
mailboxId: string;
|
|
5636
|
+
mailboxEmail: string;
|
|
5637
|
+
mailboxStatus: string;
|
|
5638
|
+
ingestionMode: string;
|
|
5639
|
+
phase: string;
|
|
5640
|
+
syncStatus: string | null;
|
|
5641
|
+
lastPolledAt: number | null;
|
|
5642
|
+
lastBackfillCompletedAt: number | null;
|
|
5643
|
+
oldestSeenAt: number | null;
|
|
5644
|
+
backfillStatus: string | null;
|
|
5645
|
+
backfillCapped: boolean;
|
|
5646
|
+
providerComplete: false;
|
|
5647
|
+
privacyLimited: boolean;
|
|
5648
|
+
};
|
|
5649
|
+
body: {
|
|
5650
|
+
format: "text" | "html";
|
|
5651
|
+
content: string;
|
|
5652
|
+
truncated: boolean;
|
|
5653
|
+
totalBytes: number;
|
|
5654
|
+
};
|
|
5655
|
+
recipients: {
|
|
5656
|
+
to: {
|
|
5657
|
+
email: string;
|
|
5658
|
+
name?: string;
|
|
5659
|
+
}[];
|
|
5660
|
+
cc: {
|
|
5661
|
+
email: string;
|
|
5662
|
+
name?: string;
|
|
5663
|
+
}[];
|
|
5664
|
+
bcc: {
|
|
5665
|
+
email: string;
|
|
5666
|
+
name?: string;
|
|
5667
|
+
}[];
|
|
5668
|
+
truncated: boolean;
|
|
5669
|
+
};
|
|
5670
|
+
};
|
|
5450
5671
|
"email.drafts.create": {
|
|
5451
5672
|
ok: boolean;
|
|
5452
5673
|
kind: "email";
|
|
@@ -7369,7 +7590,7 @@ export type DenchApiTree = {
|
|
|
7369
7590
|
show(args?: Req<"agentConfig.organisation.show">): Promise<Res<"agentConfig.organisation.show">>;
|
|
7370
7591
|
};
|
|
7371
7592
|
tools: {
|
|
7372
|
-
/** Update tool notes. (`dench tools
|
|
7593
|
+
/** Update tool notes. (`dench tools edit`) */
|
|
7373
7594
|
edit(args: Req<"agentConfig.tools.edit">): Promise<Res<"agentConfig.tools.edit">>;
|
|
7374
7595
|
/** Read tool notes. (`dench tools show`) */
|
|
7375
7596
|
show(args?: Req<"agentConfig.tools.show">): Promise<Res<"agentConfig.tools.show">>;
|
|
@@ -7770,6 +7991,8 @@ export type DenchApiTree = {
|
|
|
7770
7991
|
};
|
|
7771
7992
|
/** List fields for a CRM object, including read-only calculation metadata. (`dench crm fields list`) */
|
|
7772
7993
|
list(args: Req<"crm.fields.list">): Promise<Res<"crm.fields.list">>;
|
|
7994
|
+
/** List field names, types and effective constraints without indexing or enrichment internals. (`dench crm fields list --compact`) */
|
|
7995
|
+
listCompact(args: Req<"crm.fields.listCompact">): Promise<Res<"crm.fields.listCompact">>;
|
|
7773
7996
|
/** Reorder CRM fields. (`dench crm fields reorder`) */
|
|
7774
7997
|
reorder(args: Req<"crm.fields.reorder">): Promise<Res<"crm.fields.reorder">>;
|
|
7775
7998
|
/** Update a CRM field or change/explicitly clear an existing campaign calculation. (`dench crm fields update`) */
|
|
@@ -7796,6 +8019,8 @@ export type DenchApiTree = {
|
|
|
7796
8019
|
get(args: Req<"crm.objects.get">): Promise<Res<"crm.objects.get">>;
|
|
7797
8020
|
/** List CRM objects. (`dench crm objects list`) */
|
|
7798
8021
|
list(args?: Req<"crm.objects.list">): Promise<Res<"crm.objects.list">>;
|
|
8022
|
+
/** List names, display labels, visibility and workspace counts without internal state. (`dench crm objects list --compact`) */
|
|
8023
|
+
listCompact(args?: Req<"crm.objects.listCompact">): Promise<Res<"crm.objects.listCompact">>;
|
|
7799
8024
|
/** Rename a CRM object. (`dench crm objects rename`) */
|
|
7800
8025
|
rename(args: Req<"crm.objects.rename">): Promise<Res<"crm.objects.rename">>;
|
|
7801
8026
|
/** Restore a CRM object's workspace sidebar row. Admin-only. (`dench crm objects unarchive`) */
|
|
@@ -7821,8 +8046,13 @@ export type DenchApiTree = {
|
|
|
7821
8046
|
/** Generate a CRM report. (`dench crm reports generate`) */
|
|
7822
8047
|
generate(args: Req<"crm.reports.generate">): Promise<Res<"crm.reports.generate">>;
|
|
7823
8048
|
};
|
|
7824
|
-
|
|
7825
|
-
|
|
8049
|
+
search: {
|
|
8050
|
+
/** Search CRM entries. (`dench crm search`) */
|
|
8051
|
+
(args?: Req<"crm.search">): Promise<Res<"crm.search">>;
|
|
8052
|
+
$call(args?: Req<"crm.search">): Promise<Res<"crm.search">>;
|
|
8053
|
+
/** Search bounded pages of readable CRM entries, optionally projecting cells. Always follow continueCursor until isDone. (`dench crm search --page`) */
|
|
8054
|
+
page(args?: Req<"crm.search.page">): Promise<Res<"crm.search.page">>;
|
|
8055
|
+
};
|
|
7826
8056
|
sidebar: {
|
|
7827
8057
|
groups: {
|
|
7828
8058
|
/** Create a named sidebar group (e.g. "Hiring") in the workspace-shared Library. Open to any member. (`dench crm sidebar group create`) */
|
|
@@ -8035,6 +8265,14 @@ export type DenchApiTree = {
|
|
|
8035
8265
|
/** Start Dench Emailing Service sender verification. (`dench email identity verify`) */
|
|
8036
8266
|
verify(args: Req<"email.identity.verify">): Promise<Res<"email.identity.verify">>;
|
|
8037
8267
|
};
|
|
8268
|
+
inbox: {
|
|
8269
|
+
/** Read a bounded stored body using an exact message handle from inbox search; rechecks mailbox and record privacy. (`dench email inbox message`) */
|
|
8270
|
+
message(args: Req<"email.inbox.message">): Promise<Res<"email.inbox.message">>;
|
|
8271
|
+
/** Search authorized synced mailbox headers with bounded cursor pagination. isDone covers stored records, not provider completeness. (`dench email inbox search`) */
|
|
8272
|
+
search(args?: Req<"email.inbox.search">): Promise<Res<"email.inbox.search">>;
|
|
8273
|
+
/** Read a bounded page of synced headers using an exact thread handle from inbox search; bodies remain on demand. (`dench email inbox thread`) */
|
|
8274
|
+
thread(args: Req<"email.inbox.thread">): Promise<Res<"email.inbox.thread">>;
|
|
8275
|
+
};
|
|
8038
8276
|
message: {
|
|
8039
8277
|
/** Read a raw email message's status and open/click counters. (`dench email message status`) */
|
|
8040
8278
|
get(args: Req<"email.message.get">): Promise<Res<"email.message.get">>;
|
|
@@ -8042,10 +8280,10 @@ export type DenchApiTree = {
|
|
|
8042
8280
|
list(args?: Req<"email.message.list">): Promise<Res<"email.message.list">>;
|
|
8043
8281
|
};
|
|
8044
8282
|
native: {
|
|
8045
|
-
/** Send through a native Gmail or Outlook mailbox with a durable request receipt. Only use for an explicit send request. (`dench email send --mailbox`) */
|
|
8283
|
+
/** Send through a native Gmail or Outlook mailbox with a durable request receipt. Only use for an explicit send request. (`dench email send [--mailbox <id/email>]`) */
|
|
8046
8284
|
send(args: Req<"email.native.send">): Promise<Res<"email.native.send">>;
|
|
8047
8285
|
};
|
|
8048
|
-
/** Send one raw email (no campaign): to/cc/bcc, custom from-name and reply-to, optional reply threading via replyToMessageId. (`dench email send
|
|
8286
|
+
/** Send one raw email (no campaign): to/cc/bcc, custom from-name and reply-to, optional reply threading via replyToMessageId. (`dench email send --from <verified-email>`) */
|
|
8049
8287
|
send(args: Req<"email.send">): Promise<Res<"email.send">>;
|
|
8050
8288
|
sequence: {
|
|
8051
8289
|
/** Activate a sequence so its enrollments begin sending. (`dench email sequence activate`) */
|