@elevasis/sdk 1.25.0 → 1.26.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 (60) hide show
  1. package/dist/cli.cjs +18 -116
  2. package/dist/index.d.ts +165 -48
  3. package/dist/index.js +4 -435
  4. package/dist/node/index.d.ts +36 -36
  5. package/dist/test-utils/index.d.ts +99 -38
  6. package/dist/test-utils/index.js +27 -355
  7. package/dist/types/worker/adapters/clickup.d.ts +22 -0
  8. package/dist/types/worker/adapters/index.d.ts +1 -0
  9. package/dist/worker/index.js +32 -354
  10. package/package.json +2 -2
  11. package/reference/_navigation.md +11 -1
  12. package/reference/_reference-manifest.json +70 -0
  13. package/reference/claude-config/rules/organization-model.md +12 -1
  14. package/reference/claude-config/rules/organization-os.md +12 -1
  15. package/reference/claude-config/skills/om/SKILL.md +13 -5
  16. package/reference/claude-config/skills/om/operations/codify-level-a.md +109 -100
  17. package/reference/claude-config/skills/om/operations/customers.md +10 -6
  18. package/reference/claude-config/skills/om/operations/features.md +7 -3
  19. package/reference/claude-config/skills/om/operations/goals.md +10 -6
  20. package/reference/claude-config/skills/om/operations/identity.md +8 -5
  21. package/reference/claude-config/skills/om/operations/labels.md +17 -1
  22. package/reference/claude-config/skills/om/operations/offerings.md +11 -7
  23. package/reference/claude-config/skills/om/operations/roles.md +11 -7
  24. package/reference/claude-config/skills/om/operations/techStack.md +10 -2
  25. package/reference/claude-config/sync-notes/2026-05-20-om-define-helpers.md +32 -0
  26. package/reference/claude-config/sync-notes/2026-05-22-access-model-and-right-panel.md +43 -0
  27. package/reference/claude-config/sync-notes/2026-05-22-lead-gen-tenant-config.md +40 -0
  28. package/reference/claude-config/sync-notes/2026-05-22-org-model-multi-file-split.md +61 -0
  29. package/reference/cli-management.mdx +539 -0
  30. package/reference/cli.mdx +4 -532
  31. package/reference/concepts.mdx +134 -146
  32. package/reference/deployment/api.mdx +296 -297
  33. package/reference/deployment/command-center.mdx +208 -209
  34. package/reference/deployment/index.mdx +194 -195
  35. package/reference/deployment/provided-features.mdx +110 -107
  36. package/reference/deployment/ui-execution.mdx +249 -250
  37. package/reference/framework/index.mdx +111 -195
  38. package/reference/framework/resource-documentation.mdx +90 -0
  39. package/reference/framework/tutorial-system.mdx +135 -135
  40. package/reference/getting-started.mdx +141 -142
  41. package/reference/index.mdx +95 -106
  42. package/reference/packages/ui/src/auth/README.md +6 -6
  43. package/reference/platform-tools/adapters-integration.mdx +300 -301
  44. package/reference/platform-tools/adapters-platform.mdx +552 -553
  45. package/reference/platform-tools/index.mdx +216 -217
  46. package/reference/platform-tools/type-safety.mdx +82 -82
  47. package/reference/resources/index.mdx +348 -349
  48. package/reference/resources/patterns.mdx +446 -449
  49. package/reference/resources/types.mdx +115 -116
  50. package/reference/roadmap.mdx +164 -165
  51. package/reference/rules/organization-model.md +14 -0
  52. package/reference/runtime.mdx +172 -173
  53. package/reference/scaffold/operations/propagation-pipeline.md +1 -1
  54. package/reference/scaffold/recipes/extend-lead-gen.md +130 -77
  55. package/reference/scaffold/reference/contracts.md +376 -446
  56. package/reference/scaffold/reference/glossary.md +8 -6
  57. package/reference/scaffold/ui/feature-flags-and-gating.md +59 -46
  58. package/reference/scaffold/ui/feature-shell.mdx +11 -11
  59. package/reference/scaffold/ui/recipes.md +24 -24
  60. package/reference/troubleshooting.mdx +222 -223
@@ -6962,6 +6962,26 @@ DisplayMetadataSchema.extend({
6962
6962
  techStack: TechStackEntrySchema.optional()
6963
6963
  });
6964
6964
 
6965
+ // ../core/src/organization-model/helpers.ts
6966
+ function childSystemsOf(system) {
6967
+ return system.systems ?? system.subsystems ?? {};
6968
+ }
6969
+ function listAllSystems(model) {
6970
+ const results = [];
6971
+ function walk(map2, prefix) {
6972
+ for (const [localId, system] of Object.entries(map2)) {
6973
+ const fullPath = prefix ? `${prefix}.${localId}` : localId;
6974
+ results.push({ path: fullPath, system });
6975
+ const childSystems = childSystemsOf(system);
6976
+ if (Object.keys(childSystems).length > 0) {
6977
+ walk(childSystems, fullPath);
6978
+ }
6979
+ }
6980
+ }
6981
+ walk(model.systems, "");
6982
+ return results;
6983
+ }
6984
+
6965
6985
  // ../core/src/organization-model/domains/prospecting.ts
6966
6986
  DisplayMetadataSchema.extend({
6967
6987
  id: ModelIdSchema,
@@ -7014,336 +7034,8 @@ DisplayMetadataSchema.extend({
7014
7034
  id: ModelIdSchema,
7015
7035
  steps: z.array(ProspectingBuildTemplateStepSchema).min(1)
7016
7036
  });
7017
- var DTC_RECORD_COLUMNS = {
7018
- populated: {
7019
- company: [
7020
- { key: "name", label: "Company", path: "company.name" },
7021
- { key: "domain", label: "Domain", path: "company.domain" },
7022
- { key: "employee-count", label: "Employees", path: "company.numEmployees", renderType: "count" },
7023
- { key: "apollo-industry", label: "Apollo industry", path: "company.category" },
7024
- { key: "location", label: "Location", path: "company.locationState" }
7025
- ]
7026
- },
7027
- crawled: {
7028
- company: [
7029
- { key: "name", label: "Company", path: "company.name" },
7030
- { key: "domain", label: "Domain", path: "company.domain" },
7031
- { key: "page-count", label: "Pages", path: "company.enrichmentData.websiteCrawl.pageCount", renderType: "count" },
7032
- { key: "crawl-status", label: "Crawl status", path: "processingState.crawled.status", renderType: "badge" }
7033
- ]
7034
- },
7035
- extracted: {
7036
- company: [
7037
- { key: "name", label: "Company", path: "company.name" },
7038
- { key: "domain", label: "Domain", path: "company.domain" },
7039
- { key: "description", label: "Description", path: "company.enrichmentData.websiteCrawl.companyDescription" },
7040
- { key: "services", label: "Services", path: "company.enrichmentData.websiteCrawl.services", renderType: "json" },
7041
- {
7042
- key: "automation-gaps",
7043
- label: "Automation gaps",
7044
- path: "company.enrichmentData.websiteCrawl.automationGaps",
7045
- renderType: "json"
7046
- },
7047
- {
7048
- key: "contact-count",
7049
- label: "Contacts",
7050
- path: "company.enrichmentData.websiteCrawl.emailCount",
7051
- renderType: "count"
7052
- }
7053
- ]
7054
- },
7055
- qualified: {
7056
- company: [
7057
- { key: "name", label: "Company", path: "company.name" },
7058
- { key: "domain", label: "Domain", path: "company.domain" },
7059
- { key: "score", label: "Score", path: "company.qualificationScore", renderType: "badge", badgeColor: "green" },
7060
- { key: "signals", label: "Signals", path: "company.qualificationSignals", renderType: "json" },
7061
- {
7062
- key: "disqualified-reason",
7063
- label: "Disqualified reason",
7064
- path: "processingState.qualified.data.disqualifiedReason"
7065
- }
7066
- ]
7067
- },
7068
- decisionMakers: {
7069
- contact: [
7070
- { key: "name", label: "Name", path: "contact.name" },
7071
- { key: "title", label: "Title", path: "contact.title" },
7072
- { key: "email", label: "Email", path: "contact.email" },
7073
- { key: "linkedin", label: "LinkedIn", path: "contact.linkedinUrl" },
7074
- {
7075
- key: "priority-score",
7076
- label: "Priority",
7077
- path: "contact.enrichmentData.apollo.priorityScore",
7078
- renderType: "badge"
7079
- }
7080
- ]
7081
- },
7082
- uploaded: {
7083
- company: [
7084
- { key: "name", label: "Company", path: "company.name" },
7085
- { key: "domain", label: "Domain", path: "company.domain" },
7086
- {
7087
- key: "contacts",
7088
- label: "Contacts",
7089
- path: "company.enrichmentData.approvedLeadListExport.contacts",
7090
- renderType: "json"
7091
- },
7092
- { key: "score", label: "Score", path: "company.qualificationScore", renderType: "badge", badgeColor: "green" },
7093
- {
7094
- key: "approval",
7095
- label: "Approval",
7096
- path: "company.enrichmentData.approvedLeadListExport.approvalStatus",
7097
- renderType: "badge"
7098
- }
7099
- ]
7100
- }
7101
- };
7102
- var PROSPECTING_STEPS = {
7103
- localServices: {
7104
- sourceCompanies: {
7105
- id: "source-companies",
7106
- label: "Companies found",
7107
- primaryEntity: "company",
7108
- outputs: ["company"],
7109
- stageKey: "populated",
7110
- dependencyMode: "per-record-eligibility",
7111
- actionKey: "lead-gen.company.source",
7112
- defaultBatchSize: 100,
7113
- maxBatchSize: 250
7114
- },
7115
- analyzeWebsites: {
7116
- id: "analyze-websites",
7117
- label: "Websites analyzed",
7118
- primaryEntity: "company",
7119
- outputs: ["company"],
7120
- stageKey: "extracted",
7121
- dependsOn: ["source-companies"],
7122
- dependencyMode: "per-record-eligibility",
7123
- actionKey: "lead-gen.company.website-extract",
7124
- defaultBatchSize: 50,
7125
- maxBatchSize: 100
7126
- },
7127
- qualifyCompanies: {
7128
- id: "qualify-companies",
7129
- label: "Companies qualified",
7130
- primaryEntity: "company",
7131
- outputs: ["company"],
7132
- stageKey: "qualified",
7133
- dependsOn: ["analyze-websites"],
7134
- dependencyMode: "per-record-eligibility",
7135
- actionKey: "lead-gen.company.qualify",
7136
- defaultBatchSize: 100,
7137
- maxBatchSize: 250
7138
- },
7139
- findContacts: {
7140
- id: "find-contacts",
7141
- label: "Decision-makers found",
7142
- primaryEntity: "contact",
7143
- outputs: ["contact"],
7144
- stageKey: "discovered",
7145
- dependsOn: ["qualify-companies"],
7146
- dependencyMode: "per-record-eligibility",
7147
- actionKey: "lead-gen.contact.discover",
7148
- defaultBatchSize: 50,
7149
- maxBatchSize: 100
7150
- },
7151
- verifyEmails: {
7152
- id: "verify-emails",
7153
- label: "Emails verified",
7154
- primaryEntity: "contact",
7155
- outputs: ["contact"],
7156
- stageKey: "verified",
7157
- dependsOn: ["find-contacts"],
7158
- dependencyMode: "per-record-eligibility",
7159
- actionKey: "lead-gen.contact.verify-email",
7160
- defaultBatchSize: 100,
7161
- maxBatchSize: 500
7162
- },
7163
- personalize: {
7164
- id: "personalize",
7165
- label: "Personalize",
7166
- primaryEntity: "contact",
7167
- outputs: ["contact"],
7168
- stageKey: "personalized",
7169
- dependsOn: ["verify-emails"],
7170
- dependencyMode: "per-record-eligibility",
7171
- actionKey: "lead-gen.contact.personalize",
7172
- defaultBatchSize: 25,
7173
- maxBatchSize: 100
7174
- },
7175
- review: {
7176
- id: "review",
7177
- label: "Reviewed and exported",
7178
- primaryEntity: "contact",
7179
- outputs: ["export"],
7180
- stageKey: "uploaded",
7181
- dependsOn: ["personalize"],
7182
- dependencyMode: "per-record-eligibility",
7183
- actionKey: "lead-gen.review.outreach-ready",
7184
- defaultBatchSize: 25,
7185
- maxBatchSize: 100
7186
- }
7187
- },
7188
- dtcApolloClickup: {
7189
- importApolloSearch: {
7190
- id: "import-apollo-search",
7191
- label: "Companies found",
7192
- description: "Pull companies and seed contact data from a predefined Apollo search or list.",
7193
- primaryEntity: "company",
7194
- outputs: ["company", "contact"],
7195
- stageKey: "populated",
7196
- dependencyMode: "per-record-eligibility",
7197
- actionKey: "lead-gen.company.apollo-import",
7198
- defaultBatchSize: 250,
7199
- maxBatchSize: 1e3,
7200
- recordColumns: DTC_RECORD_COLUMNS.populated,
7201
- credentialRequirements: [
7202
- {
7203
- key: "apollo",
7204
- provider: "apollo",
7205
- credentialType: "api-key-secret",
7206
- label: "Apollo API key",
7207
- required: true,
7208
- selectionMode: "single",
7209
- inputPath: "credential"
7210
- }
7211
- ]
7212
- },
7213
- apifyCrawl: {
7214
- id: "apify-crawl",
7215
- label: "Websites crawled",
7216
- description: "Crawl company websites via Apify and store raw page markdown in enrichmentData.websiteCrawl.pages for downstream LLM analysis. Overwrites the synthetic seed Apollo Import wrote with real page content.",
7217
- primaryEntity: "company",
7218
- outputs: ["company"],
7219
- stageKey: "crawled",
7220
- dependsOn: ["import-apollo-search"],
7221
- dependencyMode: "per-record-eligibility",
7222
- actionKey: "lead-gen.company.apify-crawl",
7223
- defaultBatchSize: 50,
7224
- maxBatchSize: 100,
7225
- recordColumns: DTC_RECORD_COLUMNS.crawled,
7226
- credentialRequirements: [
7227
- {
7228
- key: "apify",
7229
- provider: "apify",
7230
- credentialType: "api-key-secret",
7231
- label: "Apify API token",
7232
- required: true,
7233
- selectionMode: "single",
7234
- inputPath: "credential",
7235
- verifyOnRun: true
7236
- }
7237
- ]
7238
- },
7239
- analyzeWebsites: {
7240
- id: "analyze-websites",
7241
- label: "Websites analyzed",
7242
- description: "Extract subscription, product, retention, and tech-stack signals from each brand website.",
7243
- primaryEntity: "company",
7244
- outputs: ["company"],
7245
- stageKey: "extracted",
7246
- dependsOn: ["apify-crawl"],
7247
- dependencyMode: "per-record-eligibility",
7248
- actionKey: "lead-gen.company.website-extract",
7249
- defaultBatchSize: 50,
7250
- maxBatchSize: 100,
7251
- recordColumns: DTC_RECORD_COLUMNS.extracted
7252
- },
7253
- scoreDtcFit: {
7254
- id: "score-dtc-fit",
7255
- label: "Companies qualified",
7256
- description: "Classify subscription potential, consumable-product fit, retention maturity, and disqualifiers.",
7257
- primaryEntity: "company",
7258
- outputs: ["company"],
7259
- stageKey: "qualified",
7260
- dependsOn: ["analyze-websites"],
7261
- dependencyMode: "per-record-eligibility",
7262
- actionKey: "lead-gen.company.dtc-subscription-qualify",
7263
- defaultBatchSize: 100,
7264
- maxBatchSize: 250,
7265
- recordColumns: DTC_RECORD_COLUMNS.qualified
7266
- },
7267
- enrichDecisionMakers: {
7268
- id: "enrich-decision-makers",
7269
- label: "Decision-makers found",
7270
- description: "Use Apollo to find qualified contacts at qualified companies - founders, retention leads, lifecycle leads, and marketing owners.",
7271
- primaryEntity: "company",
7272
- outputs: ["contact"],
7273
- stageKey: "decision-makers-enriched",
7274
- recordEntity: "contact",
7275
- dependsOn: ["score-dtc-fit"],
7276
- dependencyMode: "per-record-eligibility",
7277
- actionKey: "lead-gen.contact.apollo-decision-maker-enrich",
7278
- defaultBatchSize: 100,
7279
- maxBatchSize: 250,
7280
- recordColumns: DTC_RECORD_COLUMNS.decisionMakers,
7281
- credentialRequirements: [
7282
- {
7283
- key: "apollo",
7284
- provider: "apollo",
7285
- credentialType: "api-key-secret",
7286
- label: "Apollo API key",
7287
- required: true,
7288
- selectionMode: "single",
7289
- inputPath: "credential"
7290
- }
7291
- ]
7292
- },
7293
- reviewAndExport: {
7294
- id: "review-and-export",
7295
- label: "Reviewed and exported",
7296
- description: "Operator QC approves or rejects qualified companies, then approved records are exported as a lead list with unverified emails.",
7297
- primaryEntity: "company",
7298
- outputs: ["export"],
7299
- stageKey: "uploaded",
7300
- recordsStageKey: "uploaded",
7301
- recordSourceStageKey: "qualified",
7302
- dependsOn: ["enrich-decision-makers"],
7303
- dependencyMode: "per-record-eligibility",
7304
- actionKey: "lead-gen.export.list",
7305
- defaultBatchSize: 100,
7306
- maxBatchSize: 250,
7307
- recordColumns: DTC_RECORD_COLUMNS.uploaded,
7308
- credentialRequirements: [
7309
- {
7310
- key: "clickup",
7311
- provider: "clickup",
7312
- credentialType: "api-key-secret",
7313
- label: "ClickUp API token",
7314
- required: true,
7315
- selectionMode: "single",
7316
- inputPath: "clickupCredential",
7317
- verifyOnRun: true
7318
- }
7319
- ]
7320
- }
7321
- }
7322
- };
7323
7037
 
7324
- // ../core/src/business/acquisition/build-templates.ts
7325
- var BUILD_TEMPLATE_CATALOG = [
7326
- {
7327
- id: "local-services",
7328
- label: "Local Services",
7329
- description: "Source, analyze, qualify, and personalize local service businesses for outreach.",
7330
- steps: Object.values(PROSPECTING_STEPS.localServices)
7331
- },
7332
- {
7333
- id: "dtc-subscription-apollo-clickup",
7334
- label: "DTC Subscription (Apollo + ClickUp)",
7335
- description: "Import DTC brand leads from Apollo, crawl their websites, score fit, enrich contacts, and export via ClickUp.",
7336
- steps: Object.values(PROSPECTING_STEPS.dtcApolloClickup)
7337
- }
7338
- ];
7339
- var PROSPECTING_BUILD_TEMPLATE_OPTIONS = BUILD_TEMPLATE_CATALOG.map(({ id, label, description }) => ({
7340
- id,
7341
- label,
7342
- description
7343
- }));
7344
- function isProspectingBuildTemplateId(value) {
7345
- return PROSPECTING_BUILD_TEMPLATE_OPTIONS.some((template) => template.id === value);
7346
- }
7038
+ // ../core/src/business/acquisition/api-schemas.ts
7347
7039
  var ProcessingStageStatusSchema = z.enum(["success", "no_result", "skipped", "error"]);
7348
7040
  var LeadGenStageKeySchema = z.string().trim().min(1);
7349
7041
  var LeadGenActionKeySchema = z.string().trim().min(1);
@@ -7606,8 +7298,10 @@ var PipelineStageSchema = z.object({
7606
7298
  enabled: z.boolean().optional(),
7607
7299
  order: z.number().int().optional()
7608
7300
  });
7301
+ var DataModeSchema = z.enum(["mock", "live"]);
7609
7302
  var PipelineConfigSchema = z.object({
7610
- stages: z.array(PipelineStageSchema).optional()
7303
+ stages: z.array(PipelineStageSchema).optional(),
7304
+ dataMode: DataModeSchema.optional()
7611
7305
  });
7612
7306
  var BuildPlanSnapshotStepSchema = z.object({
7613
7307
  id: z.string().trim().min(1).max(100),
@@ -7664,9 +7358,7 @@ var BuildPlanSnapshotSchema = z.object({
7664
7358
  var AcqListMetadataSchema = z.object({
7665
7359
  buildPlanSnapshot: BuildPlanSnapshotSchema.optional()
7666
7360
  }).catchall(z.unknown());
7667
- var ProspectingBuildTemplateIdSchema = z.string().trim().min(1).max(100).refine(isProspectingBuildTemplateId, {
7668
- message: "buildTemplateId must match a known prospecting build template"
7669
- });
7361
+ var ProspectingBuildTemplateIdSchema = z.string().trim().min(1).max(100);
7670
7362
  var ListStageCountsSchema = z.object({
7671
7363
  // Attempted counts by canonical lead-gen stage. The detailed status
7672
7364
  // distribution lives on ListProgress; telemetry keeps the overview payload small.
@@ -8671,7 +8363,7 @@ function sortResolvedOntologyIndex(index2) {
8671
8363
  }
8672
8364
  return sorted;
8673
8365
  }
8674
- function childSystemsOf(system) {
8366
+ function childSystemsOf2(system) {
8675
8367
  return system.systems ?? system.subsystems ?? {};
8676
8368
  }
8677
8369
  function addRecord(index2, diagnostics, sourcesById, scopeKey, record, context) {
@@ -8828,7 +8520,7 @@ function addSystemScopes(index2, diagnostics, sourcesById, systems, prefix, sche
8828
8520
  ...currentPath,
8829
8521
  "ontology"
8830
8522
  ]);
8831
- addSystemScopes(index2, diagnostics, sourcesById, childSystemsOf(system), systemPath, [
8523
+ addSystemScopes(index2, diagnostics, sourcesById, childSystemsOf2(system), systemPath, [
8832
8524
  ...currentPath,
8833
8525
  system.systems !== void 0 ? "systems" : "subsystems"
8834
8526
  ]);
@@ -8844,26 +8536,6 @@ function compileOrganizationOntology(model) {
8844
8536
  addLegacyActionProjections(ontology, diagnostics, sourcesById, model.actions ?? {}, model.entities ?? {});
8845
8537
  return { ontology: sortResolvedOntologyIndex(ontology), diagnostics };
8846
8538
  }
8847
-
8848
- // ../core/src/organization-model/helpers.ts
8849
- function childSystemsOf2(system) {
8850
- return system.systems ?? system.subsystems ?? {};
8851
- }
8852
- function listAllSystems(model) {
8853
- const results = [];
8854
- function walk(map2, prefix) {
8855
- for (const [localId, system] of Object.entries(map2)) {
8856
- const fullPath = prefix ? `${prefix}.${localId}` : localId;
8857
- results.push({ path: fullPath, system });
8858
- const childSystems = childSystemsOf2(system);
8859
- if (Object.keys(childSystems).length > 0) {
8860
- walk(childSystems, fullPath);
8861
- }
8862
- }
8863
- }
8864
- walk(model.systems, "");
8865
- return results;
8866
- }
8867
8539
  z.object({
8868
8540
  success: z.boolean(),
8869
8541
  tool: z.string(),
@@ -0,0 +1,22 @@
1
+ /**
2
+ * ClickUp Integration Adapter
3
+ *
4
+ * Typed wrapper over platform.call() for ClickUp task operations.
5
+ * Uses factory pattern -- credential is bound once at construction time.
6
+ *
7
+ * Types are shared with the server-side ClickUp adapter via @repo/core/execution.
8
+ */
9
+ import type { ClickUpToolMap } from '../../types/index.js';
10
+ /**
11
+ * Create a typed ClickUp adapter bound to a specific credential.
12
+ *
13
+ * @param credential - Credential name as configured in the command center
14
+ * @returns Object with 2 typed methods for ClickUp operations
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const clickup = createClickUpAdapter('my-clickup-credential')
19
+ * const task = await clickup.createTask({ listId: '123', name: 'Task', markdownContent: '...' })
20
+ * ```
21
+ */
22
+ export declare function createClickUpAdapter(credential: string): import("./create-adapter.js").TypedAdapter<ClickUpToolMap>;
@@ -8,6 +8,7 @@
8
8
  export { createAdapter, type TypedAdapter } from './create-adapter.js';
9
9
  export { createAttioAdapter } from './attio.js';
10
10
  export { createApifyAdapter } from './apify.js';
11
+ export { createClickUpAdapter } from './clickup.js';
11
12
  export { createDropboxAdapter } from './dropbox.js';
12
13
  export { createGmailAdapter } from './gmail.js';
13
14
  export { createGoogleSheetsAdapter } from './google-sheets.js';