@zixt/host 0.0.129 → 0.0.131
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +472 -8
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -28,7 +28,7 @@ import { homedir as homedir4 } from "node:os";
|
|
|
28
28
|
// package.json
|
|
29
29
|
var package_default = {
|
|
30
30
|
name: "@zixt/host",
|
|
31
|
-
version: "0.0.
|
|
31
|
+
version: "0.0.131",
|
|
32
32
|
type: "module",
|
|
33
33
|
exports: {
|
|
34
34
|
".": "./src/client.ts",
|
|
@@ -14699,7 +14699,13 @@ var ID_PREFIXES = {
|
|
|
14699
14699
|
/** One durable caller-transcript or Manager-speech delivery. */
|
|
14700
14700
|
voiceTurn: "vtr",
|
|
14701
14701
|
/** One signed voice-provider webhook receipt. */
|
|
14702
|
-
voiceWebhookEvent: "vwe"
|
|
14702
|
+
voiceWebhookEvent: "vwe",
|
|
14703
|
+
/** Org-singleton Company setup record (PRD OB-5). */
|
|
14704
|
+
companySetup: "cst",
|
|
14705
|
+
/** One durable set of teammate-proposed Automations awaiting an Admin (OB-12). */
|
|
14706
|
+
automationProposalSet: "aps",
|
|
14707
|
+
/** One product-feedback report passed to the Zixt team (MG-23). */
|
|
14708
|
+
productFeedback: "pfb"
|
|
14703
14709
|
};
|
|
14704
14710
|
var idPattern = (prefix) => new RegExp(`^${prefix}_[0-9a-f]{32}$`);
|
|
14705
14711
|
function newId(prefix) {
|
|
@@ -14707,6 +14713,7 @@ function newId(prefix) {
|
|
|
14707
14713
|
}
|
|
14708
14714
|
var idSchema = (prefix, name) => external_exports.string().regex(idPattern(prefix), `invalid ${name}`);
|
|
14709
14715
|
var OrgId = idSchema(ID_PREFIXES.org, "org id");
|
|
14716
|
+
var CompanySetupId = idSchema(ID_PREFIXES.companySetup, "company setup id");
|
|
14710
14717
|
var MemberId = idSchema(ID_PREFIXES.member, "member id");
|
|
14711
14718
|
var AgentId = idSchema(ID_PREFIXES.agent, "agent id");
|
|
14712
14719
|
var AgentAvatarId = idSchema(ID_PREFIXES.agentAvatar, "agent avatar id");
|
|
@@ -14724,6 +14731,10 @@ var IntegrationLogoId = idSchema(ID_PREFIXES.integrationLogo, "Integration logo
|
|
|
14724
14731
|
var ApprovalId = idSchema(ID_PREFIXES.approval, "approval id");
|
|
14725
14732
|
var ScheduleId = idSchema(ID_PREFIXES.schedule, "schedule id");
|
|
14726
14733
|
var WebhookAutomationId = idSchema(ID_PREFIXES.webhookAutomation, "Webhook Automation id");
|
|
14734
|
+
var AutomationProposalSetId = idSchema(
|
|
14735
|
+
ID_PREFIXES.automationProposalSet,
|
|
14736
|
+
"automation proposal set id"
|
|
14737
|
+
);
|
|
14727
14738
|
var WebhookDeliveryId = idSchema(ID_PREFIXES.webhookDelivery, "webhook delivery id");
|
|
14728
14739
|
var OrgSkillId = idSchema(ID_PREFIXES.orgSkill, "organization skill id");
|
|
14729
14740
|
var OrgRoutineId = idSchema(ID_PREFIXES.orgRoutine, "organization routine id");
|
|
@@ -15193,9 +15204,12 @@ var LinearProviderTaskOrigin = external_exports.object({
|
|
|
15193
15204
|
// ../../packages/contracts/src/skills.ts
|
|
15194
15205
|
var TeammateRoleTemplate = external_exports.enum([
|
|
15195
15206
|
"developer",
|
|
15207
|
+
"website",
|
|
15196
15208
|
"marketing",
|
|
15197
15209
|
"product",
|
|
15198
15210
|
"sales",
|
|
15211
|
+
"support",
|
|
15212
|
+
"operations",
|
|
15199
15213
|
"custom"
|
|
15200
15214
|
]);
|
|
15201
15215
|
var SkillId = external_exports.enum([
|
|
@@ -15235,7 +15249,14 @@ var SkillId = external_exports.enum([
|
|
|
15235
15249
|
"review-pipeline-risk",
|
|
15236
15250
|
"identify-expansion-opportunities",
|
|
15237
15251
|
"synthesize-customer-objections",
|
|
15238
|
-
"prepare-proposals"
|
|
15252
|
+
"prepare-proposals",
|
|
15253
|
+
"maintain-website-content",
|
|
15254
|
+
"keep-website-healthy",
|
|
15255
|
+
"resolve-customer-requests",
|
|
15256
|
+
"maintain-faq-answers",
|
|
15257
|
+
"coordinate-schedules",
|
|
15258
|
+
"prepare-daily-briefs",
|
|
15259
|
+
"maintain-records"
|
|
15239
15260
|
]);
|
|
15240
15261
|
var SkillReferenceId = external_exports.union([SkillId, OrgSkillId]);
|
|
15241
15262
|
var EnabledSkillIds = external_exports.array(SkillReferenceId).max(200).refine((items) => new Set(items).size === items.length, "duplicate skill").default([]);
|
|
@@ -15274,6 +15295,7 @@ var ListOrgSkillsResponse = external_exports.object({
|
|
|
15274
15295
|
builtInCustomizations: external_exports.array(OrgBuiltInSkillCustomization)
|
|
15275
15296
|
});
|
|
15276
15297
|
var RoutineTemplateCadence = external_exports.discriminatedUnion("kind", [
|
|
15298
|
+
external_exports.object({ kind: external_exports.literal("every"), minutes: external_exports.number().int().min(5).max(1440) }),
|
|
15277
15299
|
external_exports.object({
|
|
15278
15300
|
kind: external_exports.literal("daily"),
|
|
15279
15301
|
hour: external_exports.number().int().min(0).max(23),
|
|
@@ -15290,14 +15312,26 @@ var RoutinePresetId = external_exports.enum([
|
|
|
15290
15312
|
"developer-weekly-architecture-review",
|
|
15291
15313
|
"developer-weekly-dependency-review",
|
|
15292
15314
|
"developer-weekly-release-review",
|
|
15315
|
+
"developer-hourly-service-health-check",
|
|
15293
15316
|
"product-daily-triage",
|
|
15294
15317
|
"product-weekly-feedback-review",
|
|
15295
15318
|
"product-weekly-roadmap-review",
|
|
15296
15319
|
"marketing-weekly-campaign-review",
|
|
15297
15320
|
"marketing-weekly-editorial-review",
|
|
15321
|
+
"marketing-daily-review-check",
|
|
15322
|
+
"marketing-daily-ad-spend-check",
|
|
15323
|
+
"marketing-daily-social-inbox-check",
|
|
15298
15324
|
"sales-daily-follow-up-review",
|
|
15299
15325
|
"sales-weekly-pipeline-review",
|
|
15300
|
-
"sales-weekly-objection-review"
|
|
15326
|
+
"sales-weekly-objection-review",
|
|
15327
|
+
"sales-daily-inbound-lead-check",
|
|
15328
|
+
"website-weekly-site-audit",
|
|
15329
|
+
"website-daily-uptime-check",
|
|
15330
|
+
"support-daily-inbox-triage",
|
|
15331
|
+
"support-weekly-question-review",
|
|
15332
|
+
"support-hourly-urgent-check",
|
|
15333
|
+
"operations-daily-schedule-brief",
|
|
15334
|
+
"operations-weekly-records-review"
|
|
15301
15335
|
]);
|
|
15302
15336
|
var RoutineTemplateReferenceId = external_exports.union([RoutinePresetId, OrgRoutineId]);
|
|
15303
15337
|
var OrgRoutine = external_exports.object({
|
|
@@ -16913,6 +16947,77 @@ var ListSchedulesResponse = external_exports.object({
|
|
|
16913
16947
|
schedules: external_exports.array(Schedule)
|
|
16914
16948
|
});
|
|
16915
16949
|
|
|
16950
|
+
// ../../packages/contracts/src/automation-proposals.ts
|
|
16951
|
+
var ItemKey = external_exports.string().regex(/^[a-z][a-z0-9_-]{0,63}$/);
|
|
16952
|
+
var AutomationProposalTrigger = external_exports.discriminatedUnion("kind", [
|
|
16953
|
+
/** A recurring schedule; cadence hours are UTC exactly like `schedule_task`. */
|
|
16954
|
+
external_exports.object({ kind: external_exports.literal("schedule"), cadence: ScheduleCadence }),
|
|
16955
|
+
/**
|
|
16956
|
+
* An external system pushes events to a Webhook Automation endpoint (SCH-6).
|
|
16957
|
+
* `source` names who is expected to call ("Grafana"); the bearer secret is
|
|
16958
|
+
* cloud-generated at acceptance and never passes through the proposing run.
|
|
16959
|
+
*/
|
|
16960
|
+
external_exports.object({
|
|
16961
|
+
kind: external_exports.literal("webhook"),
|
|
16962
|
+
source: external_exports.string().trim().min(1).max(120).nullable()
|
|
16963
|
+
})
|
|
16964
|
+
]);
|
|
16965
|
+
var AutomationProposalItemStatus = external_exports.enum(["proposed", "created", "dismissed"]);
|
|
16966
|
+
var AutomationProposalItem = external_exports.object({
|
|
16967
|
+
key: ItemKey,
|
|
16968
|
+
name: external_exports.string().trim().min(1).max(120),
|
|
16969
|
+
instructions: external_exports.string().trim().min(1).max(1e4),
|
|
16970
|
+
trigger: AutomationProposalTrigger,
|
|
16971
|
+
/** Honest one line: why this check helps this business. */
|
|
16972
|
+
why: external_exports.string().trim().min(1).max(300),
|
|
16973
|
+
status: AutomationProposalItemStatus,
|
|
16974
|
+
createdScheduleId: ScheduleId.nullable(),
|
|
16975
|
+
createdWebhookAutomationId: WebhookAutomationId.nullable()
|
|
16976
|
+
});
|
|
16977
|
+
var AutomationProposalSetStatus = external_exports.enum(["pending", "decided"]);
|
|
16978
|
+
var AUTOMATION_PROPOSAL_MAX_ITEMS = 10;
|
|
16979
|
+
var AutomationProposalSet = external_exports.object({
|
|
16980
|
+
id: AutomationProposalSetId,
|
|
16981
|
+
orgId: OrgId,
|
|
16982
|
+
agentId: AgentId,
|
|
16983
|
+
/** Joined for display; "a removed AI teammate" when the Agent is gone. */
|
|
16984
|
+
agentName: external_exports.string().min(1).max(120).nullable(),
|
|
16985
|
+
taskId: TaskId,
|
|
16986
|
+
/** What was explored / why these, in the teammate's words. */
|
|
16987
|
+
summary: external_exports.string().trim().min(1).max(600),
|
|
16988
|
+
items: external_exports.array(AutomationProposalItem).max(AUTOMATION_PROPOSAL_MAX_ITEMS),
|
|
16989
|
+
status: AutomationProposalSetStatus,
|
|
16990
|
+
originTrust: external_exports.enum(["internal", "external"]),
|
|
16991
|
+
createdAt: IsoDate,
|
|
16992
|
+
decidedAt: IsoDate.nullable(),
|
|
16993
|
+
decidedBy: MemberId.nullable()
|
|
16994
|
+
});
|
|
16995
|
+
var ListAutomationProposalsResponse = external_exports.object({
|
|
16996
|
+
proposals: external_exports.array(AutomationProposalSet)
|
|
16997
|
+
});
|
|
16998
|
+
var DecideAutomationProposalsRequest = external_exports.object({
|
|
16999
|
+
accept: external_exports.array(ItemKey).max(AUTOMATION_PROPOSAL_MAX_ITEMS).default([]),
|
|
17000
|
+
dismiss: external_exports.array(ItemKey).max(AUTOMATION_PROPOSAL_MAX_ITEMS).default([])
|
|
17001
|
+
}).refine(
|
|
17002
|
+
(value) => value.accept.length + value.dismiss.length > 0,
|
|
17003
|
+
"name at least one proposal to accept or dismiss"
|
|
17004
|
+
).refine(
|
|
17005
|
+
(value) => value.accept.every((key) => !value.dismiss.includes(key)),
|
|
17006
|
+
"a proposal cannot be both accepted and dismissed"
|
|
17007
|
+
);
|
|
17008
|
+
var CreatedWebhookSetup = external_exports.object({
|
|
17009
|
+
itemKey: ItemKey,
|
|
17010
|
+
webhookAutomationId: WebhookAutomationId,
|
|
17011
|
+
endpointUrl: external_exports.string().url(),
|
|
17012
|
+
/** Cloud-generated bearer secret, or null when a raced/recovered acceptance already consumed the one showing. */
|
|
17013
|
+
bearerToken: external_exports.string().min(8).max(200).nullable()
|
|
17014
|
+
});
|
|
17015
|
+
var DecideAutomationProposalsResponse = external_exports.object({
|
|
17016
|
+
proposalSet: AutomationProposalSet,
|
|
17017
|
+
createdScheduleIds: external_exports.array(ScheduleId),
|
|
17018
|
+
createdWebhooks: external_exports.array(CreatedWebhookSetup)
|
|
17019
|
+
});
|
|
17020
|
+
|
|
16916
17021
|
// ../../packages/contracts/src/reviews.ts
|
|
16917
17022
|
var TaskReviewMode = external_exports.enum(["none", "required"]);
|
|
16918
17023
|
var TaskReviewStatus = external_exports.enum(["unreviewed", "accepted", "changes_requested"]);
|
|
@@ -18179,6 +18284,24 @@ var AgentOp = external_exports.union([
|
|
|
18179
18284
|
}),
|
|
18180
18285
|
external_exports.object({ kind: external_exports.literal("schedule.list") }),
|
|
18181
18286
|
external_exports.object({ kind: external_exports.literal("schedule.delete"), scheduleId: ScheduleId }),
|
|
18287
|
+
/**
|
|
18288
|
+
* OB-12: record recurring Automations this teammate recommends, without
|
|
18289
|
+
* creating anything. The set becomes a durable Needs-attention obligation an
|
|
18290
|
+
* Admin decides; `schedule_task` stays the path for work a person asked for.
|
|
18291
|
+
* Zero items is an honest "explored; nothing recurring needed".
|
|
18292
|
+
*/
|
|
18293
|
+
external_exports.object({
|
|
18294
|
+
kind: external_exports.literal("automation.propose"),
|
|
18295
|
+
summary: external_exports.string().trim().min(1).max(600),
|
|
18296
|
+
items: external_exports.array(
|
|
18297
|
+
external_exports.object({
|
|
18298
|
+
name: external_exports.string().trim().min(1).max(120),
|
|
18299
|
+
instructions: external_exports.string().trim().min(1).max(1e4),
|
|
18300
|
+
trigger: AutomationProposalTrigger,
|
|
18301
|
+
why: external_exports.string().trim().min(1).max(300)
|
|
18302
|
+
})
|
|
18303
|
+
).max(AUTOMATION_PROPOSAL_MAX_ITEMS)
|
|
18304
|
+
}),
|
|
18182
18305
|
external_exports.object({
|
|
18183
18306
|
kind: external_exports.literal("secret.put"),
|
|
18184
18307
|
name: SecretName,
|
|
@@ -19555,6 +19678,11 @@ var ManagerConfigProjection = external_exports.object({
|
|
|
19555
19678
|
* switch for each surface without disconnecting the workspace.
|
|
19556
19679
|
*/
|
|
19557
19680
|
slack: external_exports.object({ answerMentions: external_exports.boolean(), answerDirectMessages: external_exports.boolean() }).strict(),
|
|
19681
|
+
/**
|
|
19682
|
+
* Index into the bundled Manager portrait set shown wherever the Manager
|
|
19683
|
+
* speaks; every organization starts on the deployment default (0).
|
|
19684
|
+
*/
|
|
19685
|
+
portrait: external_exports.number().int().min(0).max(63).default(0),
|
|
19558
19686
|
revision: external_exports.number().int().min(0),
|
|
19559
19687
|
updatedAt: external_exports.string().nullable()
|
|
19560
19688
|
}).strict();
|
|
@@ -19569,6 +19697,7 @@ var UpdateManagerRequest = external_exports.object({
|
|
|
19569
19697
|
answerMentions: external_exports.boolean().optional(),
|
|
19570
19698
|
answerDirectMessages: external_exports.boolean().optional()
|
|
19571
19699
|
}).strict().optional(),
|
|
19700
|
+
portrait: external_exports.number().int().min(0).max(63).optional(),
|
|
19572
19701
|
/** Optimistic concurrency: refuse when another admin saved first. */
|
|
19573
19702
|
expectedRevision: external_exports.number().int().min(0).optional()
|
|
19574
19703
|
}).strict().superRefine((value, ctx) => {
|
|
@@ -20970,7 +21099,11 @@ var AttentionItemType = external_exports.enum([
|
|
|
20970
21099
|
/** An Automation paused itself and cannot resume without a person's decision. */
|
|
20971
21100
|
"automation_paused",
|
|
20972
21101
|
/** An Automation was kept running but its Machine preference changed. */
|
|
20973
|
-
"automation_moved"
|
|
21102
|
+
"automation_moved",
|
|
21103
|
+
/** A teammate proposed recurring Automations awaiting an Admin's decision (OB-12). */
|
|
21104
|
+
"automation_proposal",
|
|
21105
|
+
/** A previously seen Machine went offline; teammates may have no computer to work on. */
|
|
21106
|
+
"machine_offline"
|
|
20974
21107
|
]);
|
|
20975
21108
|
var AttentionCategory = external_exports.enum([
|
|
20976
21109
|
"answer_question",
|
|
@@ -21003,7 +21136,10 @@ var AttentionItem = external_exports.object({
|
|
|
21003
21136
|
"task",
|
|
21004
21137
|
"readiness",
|
|
21005
21138
|
"integration",
|
|
21006
|
-
"schedule"
|
|
21139
|
+
"schedule",
|
|
21140
|
+
"manager_questionnaire",
|
|
21141
|
+
"host",
|
|
21142
|
+
"automation_proposal_set"
|
|
21007
21143
|
]),
|
|
21008
21144
|
id: external_exports.string().min(1),
|
|
21009
21145
|
version: external_exports.string().min(1)
|
|
@@ -21019,7 +21155,9 @@ var AttentionItem = external_exports.object({
|
|
|
21019
21155
|
"retry",
|
|
21020
21156
|
"repair",
|
|
21021
21157
|
/** Choose a Machine for a paused Automation, or set it back to automatic. */
|
|
21022
|
-
"resume_automation"
|
|
21158
|
+
"resume_automation",
|
|
21159
|
+
/** Create or dismiss a teammate's proposed Automations (OB-12; Admin/Owner). */
|
|
21160
|
+
"decide_automation_proposals"
|
|
21023
21161
|
]),
|
|
21024
21162
|
allowed: external_exports.boolean()
|
|
21025
21163
|
})
|
|
@@ -22013,13 +22151,24 @@ var SetupGuideToolResult = external_exports.object({
|
|
|
22013
22151
|
result: external_exports.string().trim().min(1).max(4e3),
|
|
22014
22152
|
page: SetupGuidePageContext
|
|
22015
22153
|
});
|
|
22154
|
+
var SetupGuideMission = external_exports.object({
|
|
22155
|
+
id: external_exports.string().regex(/^[a-z][a-z0-9_.:-]{0,120}$/),
|
|
22156
|
+
kind: external_exports.enum(["machine", "teammate", "integration", "automation", "first_task"]),
|
|
22157
|
+
goal: external_exports.string().trim().min(1).max(600),
|
|
22158
|
+
targetHref: external_exports.string().startsWith("/").max(2e3),
|
|
22159
|
+
returnHref: external_exports.string().startsWith("/").max(2e3),
|
|
22160
|
+
facts: external_exports.array(SetupGuideContextFact).max(12).default([]),
|
|
22161
|
+
/** Never a secret; the Guide only fills visible non-secure fields with these. */
|
|
22162
|
+
prefills: external_exports.array(SetupGuideActionParameter).max(12).default([])
|
|
22163
|
+
});
|
|
22016
22164
|
var SetupGuideReplyRequest = external_exports.object({
|
|
22017
22165
|
message: GuideText,
|
|
22018
22166
|
history: external_exports.array(SetupGuideHistoryMessage).max(12).default([]),
|
|
22019
22167
|
page: SetupGuidePageContext,
|
|
22020
22168
|
onboarding: SetupGuideOnboardingState,
|
|
22021
22169
|
actions: external_exports.array(SetupGuideAvailableAction).max(128),
|
|
22022
|
-
toolResults: external_exports.array(SetupGuideToolResult).max(12).default([])
|
|
22170
|
+
toolResults: external_exports.array(SetupGuideToolResult).max(12).default([]),
|
|
22171
|
+
mission: SetupGuideMission.nullable().optional()
|
|
22023
22172
|
});
|
|
22024
22173
|
var SetupGuideProposedAction = external_exports.object({
|
|
22025
22174
|
actionId: external_exports.string().regex(/^[a-z][a-z0-9_.-]{0,79}$/),
|
|
@@ -22044,6 +22193,321 @@ var SetupGuideTranscriptionResponse = external_exports.object({
|
|
|
22044
22193
|
text: GuideText
|
|
22045
22194
|
});
|
|
22046
22195
|
|
|
22196
|
+
// ../../packages/contracts/src/roles.ts
|
|
22197
|
+
var CompanyToolKind = external_exports.enum([
|
|
22198
|
+
"github",
|
|
22199
|
+
"slack",
|
|
22200
|
+
"linear",
|
|
22201
|
+
"email",
|
|
22202
|
+
"mcp",
|
|
22203
|
+
"api",
|
|
22204
|
+
"whatsapp",
|
|
22205
|
+
"browser"
|
|
22206
|
+
]);
|
|
22207
|
+
var RoleRecommendedIntegration = external_exports.object({
|
|
22208
|
+
kind: CompanyToolKind,
|
|
22209
|
+
label: external_exports.string().trim().min(1).max(80),
|
|
22210
|
+
purpose: external_exports.string().trim().min(1).max(200)
|
|
22211
|
+
});
|
|
22212
|
+
|
|
22213
|
+
// ../../packages/contracts/src/company-setup.ts
|
|
22214
|
+
var Key = external_exports.string().regex(/^[a-z][a-z0-9_-]{0,63}$/);
|
|
22215
|
+
var CompanySetupStatus = external_exports.enum([
|
|
22216
|
+
/** No record exists yet. */
|
|
22217
|
+
"not_started",
|
|
22218
|
+
/** The page was opened and the first question prepared; nothing answered. */
|
|
22219
|
+
"offered",
|
|
22220
|
+
"interviewing",
|
|
22221
|
+
/** A plan exists and awaits edits or approval. */
|
|
22222
|
+
"planned",
|
|
22223
|
+
/** The team was created; required and recommended steps are tracked. */
|
|
22224
|
+
"approved"
|
|
22225
|
+
]);
|
|
22226
|
+
var CompanySetupOrgKind = external_exports.enum(["personal", "company"]);
|
|
22227
|
+
var InterviewAnswer = external_exports.discriminatedUnion("kind", [
|
|
22228
|
+
external_exports.object({ kind: external_exports.literal("text"), text: external_exports.string().trim().min(1).max(2e3) }),
|
|
22229
|
+
external_exports.object({ kind: external_exports.literal("skipped") }),
|
|
22230
|
+
/** "Not sure, suggest for me": the planner chooses a sensible default. */
|
|
22231
|
+
external_exports.object({ kind: external_exports.literal("suggest") })
|
|
22232
|
+
]);
|
|
22233
|
+
var InterviewQuestion = external_exports.object({
|
|
22234
|
+
id: Key,
|
|
22235
|
+
prompt: external_exports.string().trim().min(1).max(400),
|
|
22236
|
+
/** One-line explanation of a Zixt noun the first time it appears; null otherwise. */
|
|
22237
|
+
gloss: external_exports.string().trim().min(1).max(300).nullable(),
|
|
22238
|
+
examples: external_exports.array(external_exports.string().trim().min(1).max(120)).max(6),
|
|
22239
|
+
allowSuggest: external_exports.boolean()
|
|
22240
|
+
});
|
|
22241
|
+
var InterviewTurn = InterviewQuestion.extend({
|
|
22242
|
+
round: external_exports.number().int().min(1),
|
|
22243
|
+
answer: InterviewAnswer.nullable(),
|
|
22244
|
+
answeredAt: IsoDate.nullable(),
|
|
22245
|
+
/** Tailored options fetched by "Not sure, suggest for me"; the person picks, edits, then continues. */
|
|
22246
|
+
suggestions: external_exports.array(external_exports.string().trim().min(1).max(200)).max(8).default([]),
|
|
22247
|
+
/** The answer here was passed to the Zixt team as product feedback (MG-23); the transcript says so. */
|
|
22248
|
+
feedbackNoted: external_exports.boolean().default(false)
|
|
22249
|
+
});
|
|
22250
|
+
var CompanySetupInterview = external_exports.object({
|
|
22251
|
+
turns: external_exports.array(InterviewTurn).max(40),
|
|
22252
|
+
/** Increments each time the interview is re-run for an additive re-plan. */
|
|
22253
|
+
round: external_exports.number().int().min(1),
|
|
22254
|
+
complete: external_exports.boolean(),
|
|
22255
|
+
/** The next question is being generated; the interview is neither complete nor waiting on the person. */
|
|
22256
|
+
preparingQuestion: external_exports.boolean().default(false),
|
|
22257
|
+
minimumAnswers: external_exports.number().int().min(1),
|
|
22258
|
+
maximumQuestions: external_exports.number().int().min(1)
|
|
22259
|
+
});
|
|
22260
|
+
var PlannedToolAvailability = external_exports.enum([
|
|
22261
|
+
/** A connected Integration of this kind already exists. */
|
|
22262
|
+
"connected",
|
|
22263
|
+
/** The Integration catalog can connect it. */
|
|
22264
|
+
"connectable",
|
|
22265
|
+
/** Reachable through an API Integration (Custom API / discovery). */
|
|
22266
|
+
"api_catalog",
|
|
22267
|
+
/** The teammate uses the website through a saved sign-in in its Browser. */
|
|
22268
|
+
"browser",
|
|
22269
|
+
"not_yet"
|
|
22270
|
+
]);
|
|
22271
|
+
var PlannedTool = external_exports.object({
|
|
22272
|
+
key: Key,
|
|
22273
|
+
label: external_exports.string().trim().min(1).max(80),
|
|
22274
|
+
purpose: external_exports.string().trim().min(1).max(300),
|
|
22275
|
+
kind: CompanyToolKind,
|
|
22276
|
+
availability: PlannedToolAvailability,
|
|
22277
|
+
/** Catalog Integration name when `availability` is connectable or api_catalog. */
|
|
22278
|
+
catalogName: external_exports.string().trim().min(1).max(120).nullable(),
|
|
22279
|
+
why: external_exports.string().trim().min(1).max(300),
|
|
22280
|
+
enabled: external_exports.boolean()
|
|
22281
|
+
});
|
|
22282
|
+
var PlannedCadence = external_exports.discriminatedUnion("kind", [
|
|
22283
|
+
external_exports.object({
|
|
22284
|
+
kind: external_exports.literal("daily"),
|
|
22285
|
+
hour: external_exports.number().int().min(0).max(23),
|
|
22286
|
+
minute: external_exports.number().int().min(0).max(59)
|
|
22287
|
+
}),
|
|
22288
|
+
external_exports.object({
|
|
22289
|
+
kind: external_exports.literal("weekly"),
|
|
22290
|
+
dayOfWeek: external_exports.number().int().min(0).max(6),
|
|
22291
|
+
hour: external_exports.number().int().min(0).max(23),
|
|
22292
|
+
minute: external_exports.number().int().min(0).max(59)
|
|
22293
|
+
}),
|
|
22294
|
+
external_exports.object({ kind: external_exports.literal("every"), minutes: external_exports.number().int().min(5).max(1440) })
|
|
22295
|
+
]);
|
|
22296
|
+
var PlannedAutomationTrigger = external_exports.enum(["schedule", "webhook"]);
|
|
22297
|
+
var PlannedAutomation = external_exports.object({
|
|
22298
|
+
key: Key,
|
|
22299
|
+
name: external_exports.string().trim().min(1).max(120),
|
|
22300
|
+
instructions: external_exports.string().trim().min(1).max(4e3),
|
|
22301
|
+
presetId: RoutinePresetId.nullable(),
|
|
22302
|
+
/** Plans stored before OB-12 carry no trigger and read as schedules. */
|
|
22303
|
+
trigger: PlannedAutomationTrigger.default("schedule"),
|
|
22304
|
+
/** Null only for webhook triggers, which have no cadence. */
|
|
22305
|
+
cadence: PlannedCadence.nullable(),
|
|
22306
|
+
/** The external system expected to call, for webhook triggers ("Grafana"). */
|
|
22307
|
+
webhookSource: external_exports.string().trim().min(1).max(120).nullable().default(null),
|
|
22308
|
+
/** The Automation's work needs a person's decision before it acts. */
|
|
22309
|
+
requiresApproval: external_exports.boolean(),
|
|
22310
|
+
why: external_exports.string().trim().min(1).max(300),
|
|
22311
|
+
enabled: external_exports.boolean()
|
|
22312
|
+
});
|
|
22313
|
+
var PlannedExploration = external_exports.object({
|
|
22314
|
+
/** What to explore, in plain words ("the support inbox"). */
|
|
22315
|
+
target: external_exports.string().trim().min(1).max(160),
|
|
22316
|
+
/** The complete Task request, ready for the Manager composer. */
|
|
22317
|
+
request: external_exports.string().trim().min(1).max(1200),
|
|
22318
|
+
why: external_exports.string().trim().min(1).max(300),
|
|
22319
|
+
enabled: external_exports.boolean()
|
|
22320
|
+
});
|
|
22321
|
+
var PlannedTeammate = external_exports.object({
|
|
22322
|
+
key: Key,
|
|
22323
|
+
name: external_exports.string().trim().min(1).max(120),
|
|
22324
|
+
roleTemplate: TeammateRoleTemplate,
|
|
22325
|
+
title: external_exports.string().trim().min(1).max(80),
|
|
22326
|
+
purpose: external_exports.string().trim().min(1).max(600),
|
|
22327
|
+
dayToDay: external_exports.array(external_exports.string().trim().min(1).max(200)).max(6),
|
|
22328
|
+
instructions: external_exports.string().trim().min(1).max(5e4),
|
|
22329
|
+
escalation: external_exports.string().trim().max(1e4),
|
|
22330
|
+
skillIds: external_exports.array(SkillReferenceId).max(40),
|
|
22331
|
+
tools: external_exports.array(PlannedTool).max(8),
|
|
22332
|
+
automations: external_exports.array(PlannedAutomation).max(6),
|
|
22333
|
+
/** Present when the interview left this teammate's proactive needs unknown (OB-12). */
|
|
22334
|
+
exploration: PlannedExploration.nullable().default(null),
|
|
22335
|
+
/** Keys of other planned teammates (or created Agent ids) this teammate hands work to. */
|
|
22336
|
+
handsOffTo: external_exports.array(external_exports.string().trim().min(1).max(120)).max(6),
|
|
22337
|
+
/** Guardrail categories proposed as require_approval because the person said a human decides. */
|
|
22338
|
+
approvals: external_exports.array(ActionCategory).max(20),
|
|
22339
|
+
why: external_exports.string().trim().min(1).max(300),
|
|
22340
|
+
enabled: external_exports.boolean(),
|
|
22341
|
+
/**
|
|
22342
|
+
* Index into the bundled portrait set the person chose for this teammate;
|
|
22343
|
+
* null falls back to a stable name-matched default. Approval turns the
|
|
22344
|
+
* resolved portrait into the created Agent's avatar artwork.
|
|
22345
|
+
*/
|
|
22346
|
+
portrait: external_exports.number().int().min(0).max(63).nullable().default(null),
|
|
22347
|
+
/** Set once approval created the Agent; never cleared by a re-plan. */
|
|
22348
|
+
createdAgentId: AgentId.nullable()
|
|
22349
|
+
});
|
|
22350
|
+
var PlannedMachine = external_exports.object({
|
|
22351
|
+
why: external_exports.string().trim().min(1).max(400),
|
|
22352
|
+
suggestedName: external_exports.string().trim().min(1).max(120),
|
|
22353
|
+
operatingSystem: external_exports.enum(["windows", "macos", "linux", "unknown"])
|
|
22354
|
+
});
|
|
22355
|
+
var PlannedFirstTask = external_exports.object({
|
|
22356
|
+
title: external_exports.string().trim().min(1).max(160),
|
|
22357
|
+
request: external_exports.string().trim().min(1).max(1200),
|
|
22358
|
+
teammateKey: Key.nullable()
|
|
22359
|
+
});
|
|
22360
|
+
var CompanySetupPlan = external_exports.object({
|
|
22361
|
+
revision: external_exports.number().int().min(1),
|
|
22362
|
+
summary: external_exports.string().trim().min(1).max(1200),
|
|
22363
|
+
businessName: external_exports.string().trim().min(1).max(120).nullable(),
|
|
22364
|
+
teammates: external_exports.array(PlannedTeammate).min(1).max(8),
|
|
22365
|
+
machine: PlannedMachine,
|
|
22366
|
+
firstTask: PlannedFirstTask.nullable()
|
|
22367
|
+
});
|
|
22368
|
+
var ProposedTool = PlannedTool.omit({ enabled: true });
|
|
22369
|
+
var ProposedAutomation = PlannedAutomation.omit({ enabled: true }).extend({
|
|
22370
|
+
trigger: PlannedAutomationTrigger,
|
|
22371
|
+
webhookSource: external_exports.string().trim().min(1).max(120).nullable()
|
|
22372
|
+
});
|
|
22373
|
+
var ProposedExploration = PlannedExploration.omit({ enabled: true });
|
|
22374
|
+
var ProposedTeammate = PlannedTeammate.omit({
|
|
22375
|
+
createdAgentId: true,
|
|
22376
|
+
enabled: true,
|
|
22377
|
+
// The person picks portraits on the plan; the planner never proposes them.
|
|
22378
|
+
portrait: true
|
|
22379
|
+
}).extend({
|
|
22380
|
+
tools: external_exports.array(ProposedTool).max(8),
|
|
22381
|
+
automations: external_exports.array(ProposedAutomation).max(6),
|
|
22382
|
+
exploration: ProposedExploration.nullable()
|
|
22383
|
+
});
|
|
22384
|
+
var ProposedPlan = CompanySetupPlan.omit({ revision: true }).extend({
|
|
22385
|
+
teammates: external_exports.array(ProposedTeammate).min(1).max(8)
|
|
22386
|
+
});
|
|
22387
|
+
var CompanySetupStepKind = external_exports.enum([
|
|
22388
|
+
"machine",
|
|
22389
|
+
"teammate",
|
|
22390
|
+
"integration",
|
|
22391
|
+
"automation",
|
|
22392
|
+
/** OB-12: a bounded first Task that discovers what this teammate should watch. */
|
|
22393
|
+
"exploration",
|
|
22394
|
+
"first_task"
|
|
22395
|
+
]);
|
|
22396
|
+
var CompanySetupStepState = external_exports.enum(["open", "done", "skipped"]);
|
|
22397
|
+
var CompanySetupStep = external_exports.object({
|
|
22398
|
+
id: external_exports.string().regex(/^[a-z][a-z0-9_.:-]{0,120}$/),
|
|
22399
|
+
kind: CompanySetupStepKind,
|
|
22400
|
+
required: external_exports.boolean(),
|
|
22401
|
+
title: external_exports.string().trim().min(1).max(160),
|
|
22402
|
+
description: external_exports.string().trim().min(1).max(600),
|
|
22403
|
+
state: CompanySetupStepState,
|
|
22404
|
+
/** What was observed, when the state is done. */
|
|
22405
|
+
evidence: external_exports.object({ summary: external_exports.string().trim().min(1).max(300), at: IsoDate.nullable() }).nullable(),
|
|
22406
|
+
skip: external_exports.object({
|
|
22407
|
+
reason: external_exports.string().trim().min(1).max(500),
|
|
22408
|
+
at: IsoDate,
|
|
22409
|
+
by: MemberId.nullable()
|
|
22410
|
+
}).nullable(),
|
|
22411
|
+
/** The planned teammate this step belongs to, for Integration and Automation steps. */
|
|
22412
|
+
teammateKey: Key.nullable(),
|
|
22413
|
+
teammateName: external_exports.string().trim().min(1).max(120).nullable(),
|
|
22414
|
+
/** The plan item this step tracks (tool key or automation key). */
|
|
22415
|
+
planKey: Key.nullable(),
|
|
22416
|
+
mission: SetupGuideMission.nullable()
|
|
22417
|
+
});
|
|
22418
|
+
var CompanySetupProgress = external_exports.object({
|
|
22419
|
+
requiredTotal: external_exports.number().int().min(0),
|
|
22420
|
+
requiredDone: external_exports.number().int().min(0),
|
|
22421
|
+
recommendedTotal: external_exports.number().int().min(0),
|
|
22422
|
+
recommendedDone: external_exports.number().int().min(0),
|
|
22423
|
+
/** Every required step is done (skips do not count). */
|
|
22424
|
+
requiredComplete: external_exports.boolean(),
|
|
22425
|
+
/** Every recommended step is done or skipped. */
|
|
22426
|
+
recommendedSettled: external_exports.boolean()
|
|
22427
|
+
});
|
|
22428
|
+
var CompanySetupApproval = external_exports.object({
|
|
22429
|
+
at: IsoDate,
|
|
22430
|
+
by: MemberId.nullable(),
|
|
22431
|
+
createdAgentIds: external_exports.array(AgentId)
|
|
22432
|
+
});
|
|
22433
|
+
var CompanySetupView = external_exports.object({
|
|
22434
|
+
id: CompanySetupId.nullable(),
|
|
22435
|
+
orgId: OrgId,
|
|
22436
|
+
status: CompanySetupStatus,
|
|
22437
|
+
orgKind: CompanySetupOrgKind,
|
|
22438
|
+
interview: CompanySetupInterview.nullable(),
|
|
22439
|
+
/** The next unanswered question, when the interview is open. */
|
|
22440
|
+
currentQuestion: InterviewTurn.nullable(),
|
|
22441
|
+
plan: CompanySetupPlan.nullable(),
|
|
22442
|
+
/**
|
|
22443
|
+
* The plan is being proposed in the background (a planner call can take a
|
|
22444
|
+
* minute); the page polls until the plan lands or an error is recorded.
|
|
22445
|
+
*/
|
|
22446
|
+
planning: external_exports.object({ startedAt: IsoDate, error: external_exports.string().max(500).nullable() }).nullable(),
|
|
22447
|
+
approval: CompanySetupApproval.nullable(),
|
|
22448
|
+
steps: external_exports.array(CompanySetupStep),
|
|
22449
|
+
progress: CompanySetupProgress,
|
|
22450
|
+
/** Company facts the Guide carries into missions; empty before a plan exists. */
|
|
22451
|
+
contextFacts: external_exports.array(SetupGuideContextFact).max(12),
|
|
22452
|
+
homeCardDismissedAt: IsoDate.nullable(),
|
|
22453
|
+
/**
|
|
22454
|
+
* True only for an Admin of an organization with no record, no teammates, no
|
|
22455
|
+
* Machines, and no Tasks: Home may open the setup page once. Opening it
|
|
22456
|
+
* creates the record, so the redirect never repeats.
|
|
22457
|
+
*/
|
|
22458
|
+
suggestRedirect: external_exports.boolean(),
|
|
22459
|
+
viewerCanEdit: external_exports.boolean(),
|
|
22460
|
+
/** Absent when the deployment has no inference configured and no record exists. */
|
|
22461
|
+
interviewAvailable: external_exports.boolean(),
|
|
22462
|
+
startedAt: IsoDate.nullable(),
|
|
22463
|
+
updatedAt: IsoDate.nullable()
|
|
22464
|
+
});
|
|
22465
|
+
var AnswerCompanySetupQuestionRequest = external_exports.object({
|
|
22466
|
+
questionId: Key,
|
|
22467
|
+
answer: InterviewAnswer
|
|
22468
|
+
}).strict();
|
|
22469
|
+
var SuggestCompanySetupAnswersRequest = external_exports.object({
|
|
22470
|
+
questionId: Key
|
|
22471
|
+
}).strict();
|
|
22472
|
+
var UpdateCompanySetupPlanRequest = external_exports.object({
|
|
22473
|
+
/** The full edited plan; the revision must match the stored one. */
|
|
22474
|
+
plan: CompanySetupPlan
|
|
22475
|
+
}).strict();
|
|
22476
|
+
var ApproveCompanySetupRequest = external_exports.object({
|
|
22477
|
+
planRevision: external_exports.number().int().min(1)
|
|
22478
|
+
}).strict();
|
|
22479
|
+
var SkipCompanySetupStepRequest = external_exports.object({
|
|
22480
|
+
reason: external_exports.string().trim().min(1).max(500)
|
|
22481
|
+
}).strict();
|
|
22482
|
+
var ProposeTeammateRequest = external_exports.object({
|
|
22483
|
+
answers: external_exports.array(
|
|
22484
|
+
external_exports.object({
|
|
22485
|
+
question: external_exports.string().trim().min(1).max(400),
|
|
22486
|
+
answer: external_exports.string().trim().min(1).max(2e3)
|
|
22487
|
+
})
|
|
22488
|
+
).max(6),
|
|
22489
|
+
requestedRole: TeammateRoleTemplate.nullable().optional()
|
|
22490
|
+
}).strict();
|
|
22491
|
+
var ProposeTeammateResponse = external_exports.object({
|
|
22492
|
+
teammate: ProposedTeammate
|
|
22493
|
+
});
|
|
22494
|
+
var CompanySetupFunnel = external_exports.object({
|
|
22495
|
+
status: CompanySetupStatus,
|
|
22496
|
+
startedAt: IsoDate.nullable(),
|
|
22497
|
+
planProposedAt: IsoDate.nullable(),
|
|
22498
|
+
planApprovedAt: IsoDate.nullable(),
|
|
22499
|
+
requiredCompletedAt: IsoDate.nullable(),
|
|
22500
|
+
recommendedSettledAt: IsoDate.nullable(),
|
|
22501
|
+
teammatesCreated: external_exports.number().int().min(0),
|
|
22502
|
+
stepsSkipped: external_exports.number().int().min(0)
|
|
22503
|
+
});
|
|
22504
|
+
var TEAMMATE_PORTRAIT_COUNT = 16;
|
|
22505
|
+
var ALL_PORTRAITS = Array.from({ length: TEAMMATE_PORTRAIT_COUNT }, (_, index) => index);
|
|
22506
|
+
|
|
22507
|
+
// ../../packages/contracts/src/product-feedback.ts
|
|
22508
|
+
var ProductFeedbackKind = external_exports.enum(["frustration", "missing_capability", "feature_request"]);
|
|
22509
|
+
var ProductFeedbackSurface = external_exports.enum(["manager", "guide", "company_setup"]);
|
|
22510
|
+
|
|
22047
22511
|
// src/runners/mcp-client.ts
|
|
22048
22512
|
var REQUEST_TIMEOUT_MS = 1e4;
|
|
22049
22513
|
var MAX_BODY_BYTES = 4 * 1024 * 1024;
|