@elevasis/sdk 1.51.0 → 1.52.1

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 (32) hide show
  1. package/dist/{chunk-HIVK54X6.js → chunk-T6DTAP2U.js} +121 -18
  2. package/dist/{chunk-NNRXVYNC.js → chunk-XC57JNMA.js} +79 -19
  3. package/dist/cli.cjs +151 -19
  4. package/dist/index.d.ts +248 -1
  5. package/dist/index.js +1 -1
  6. package/dist/test-utils/index.d.ts +13 -2
  7. package/dist/test-utils/index.js +16 -3
  8. package/dist/worker/index.d.ts +1 -1
  9. package/dist/worker/index.js +2 -2
  10. package/package.json +2 -2
  11. package/reference/_navigation.md +4 -5
  12. package/reference/_reference-manifest.json +0 -14
  13. package/reference/packages/ui/src/hooks/README.md +22 -23
  14. package/reference/rules/content.md +4 -1
  15. package/reference/rules/frontend.md +2 -2
  16. package/reference/rules/organization-os.md +1 -1
  17. package/reference/rules/ui.md +18 -16
  18. package/reference/rules/vibe-intents.md +28 -6
  19. package/reference/rules/vibe.md +3 -2
  20. package/reference/scaffold/operations/propagation-pipeline.md +33 -19
  21. package/reference/scaffold/operations/scaffold-maintenance.md +1 -1
  22. package/reference/scaffold/recipes/customize-crm-actions.md +1 -1
  23. package/reference/scaffold/recipes/extend-content.md +262 -14
  24. package/reference/scaffold/recipes/extend-crm.md +4 -2
  25. package/reference/scaffold/recipes/extend-lead-gen.md +34 -5
  26. package/reference/scaffold/ui/customization.md +5 -5
  27. package/reference/scaffold/ui/recipes.md +11 -15
  28. package/reference/sdk/platform-tools/adapters-integration.mdx +2 -1
  29. package/reference/sdk/platform-tools/adapters-platform.mdx +1 -1
  30. package/reference/sdk/platform-tools/index.mdx +7 -7
  31. package/reference/sdk/resources/index.mdx +8 -8
  32. package/reference/ui/exports.mdx +0 -1
package/dist/index.d.ts CHANGED
@@ -3743,6 +3743,7 @@ type Database = {
3743
3743
  created_at: string | null;
3744
3744
  error: string | null;
3745
3745
  execution_id: string;
3746
+ idempotency_key: string | null;
3746
3747
  input: Json | null;
3747
3748
  last_heartbeat_at: string | null;
3748
3749
  logs: Json | null;
@@ -3769,6 +3770,7 @@ type Database = {
3769
3770
  created_at?: string | null;
3770
3771
  error?: string | null;
3771
3772
  execution_id?: string;
3773
+ idempotency_key?: string | null;
3772
3774
  input?: Json | null;
3773
3775
  last_heartbeat_at?: string | null;
3774
3776
  logs?: Json | null;
@@ -3795,6 +3797,7 @@ type Database = {
3795
3797
  created_at?: string | null;
3796
3798
  error?: string | null;
3797
3799
  execution_id?: string;
3800
+ idempotency_key?: string | null;
3798
3801
  input?: Json | null;
3799
3802
  last_heartbeat_at?: string | null;
3800
3803
  logs?: Json | null;
@@ -11701,6 +11704,240 @@ declare const ProjectSchemas: {
11701
11704
  NoteIdParams: z.ZodObject<{
11702
11705
  id: z.ZodString;
11703
11706
  }, z.core.$strip>;
11707
+ ProjectListResponse: z.ZodObject<{
11708
+ projects: z.ZodArray<z.ZodObject<{
11709
+ id: z.ZodString;
11710
+ organization_id: z.ZodString;
11711
+ name: z.ZodString;
11712
+ kind: z.ZodString;
11713
+ status: z.ZodString;
11714
+ description: z.ZodNullable<z.ZodString>;
11715
+ deal_id: z.ZodNullable<z.ZodString>;
11716
+ client_id: z.ZodNullable<z.ZodString>;
11717
+ client_company_id: z.ZodNullable<z.ZodString>;
11718
+ start_date: z.ZodNullable<z.ZodString>;
11719
+ target_end_date: z.ZodNullable<z.ZodString>;
11720
+ actual_end_date: z.ZodNullable<z.ZodString>;
11721
+ contract_value: z.ZodNullable<z.ZodNumber>;
11722
+ metadata: z.ZodNullable<z.ZodUnknown>;
11723
+ created_at: z.ZodString;
11724
+ updated_at: z.ZodString;
11725
+ milestoneCount: z.ZodNumber;
11726
+ taskCount: z.ZodNumber;
11727
+ completedMilestones: z.ZodOptional<z.ZodNumber>;
11728
+ completedTasks: z.ZodOptional<z.ZodNumber>;
11729
+ }, z.core.$strip>>;
11730
+ }, z.core.$strip>;
11731
+ ProjectDetailResponse: z.ZodObject<{
11732
+ project: z.ZodObject<{
11733
+ id: z.ZodString;
11734
+ organization_id: z.ZodString;
11735
+ name: z.ZodString;
11736
+ kind: z.ZodString;
11737
+ status: z.ZodString;
11738
+ description: z.ZodNullable<z.ZodString>;
11739
+ deal_id: z.ZodNullable<z.ZodString>;
11740
+ client_id: z.ZodNullable<z.ZodString>;
11741
+ client_company_id: z.ZodNullable<z.ZodString>;
11742
+ start_date: z.ZodNullable<z.ZodString>;
11743
+ target_end_date: z.ZodNullable<z.ZodString>;
11744
+ actual_end_date: z.ZodNullable<z.ZodString>;
11745
+ contract_value: z.ZodNullable<z.ZodNumber>;
11746
+ metadata: z.ZodNullable<z.ZodUnknown>;
11747
+ created_at: z.ZodString;
11748
+ updated_at: z.ZodString;
11749
+ milestones: z.ZodArray<z.ZodObject<{
11750
+ id: z.ZodString;
11751
+ organization_id: z.ZodString;
11752
+ project_id: z.ZodString;
11753
+ name: z.ZodString;
11754
+ status: z.ZodString;
11755
+ description: z.ZodNullable<z.ZodString>;
11756
+ due_date: z.ZodNullable<z.ZodString>;
11757
+ completed_at: z.ZodNullable<z.ZodString>;
11758
+ sequence: z.ZodNumber;
11759
+ checklist: z.ZodNullable<z.ZodUnknown>;
11760
+ metadata: z.ZodNullable<z.ZodUnknown>;
11761
+ created_at: z.ZodString;
11762
+ updated_at: z.ZodString;
11763
+ }, z.core.$strip>>;
11764
+ tasks: z.ZodArray<z.ZodObject<{
11765
+ id: z.ZodString;
11766
+ organization_id: z.ZodString;
11767
+ project_id: z.ZodString;
11768
+ name: z.ZodString;
11769
+ type: z.ZodString;
11770
+ status: z.ZodString;
11771
+ description: z.ZodNullable<z.ZodString>;
11772
+ milestone_id: z.ZodNullable<z.ZodString>;
11773
+ parent_task_id: z.ZodNullable<z.ZodString>;
11774
+ due_date: z.ZodNullable<z.ZodString>;
11775
+ completed_at: z.ZodNullable<z.ZodString>;
11776
+ file_url: z.ZodNullable<z.ZodString>;
11777
+ checklist: z.ZodUnknown;
11778
+ resume_context: z.ZodNullable<z.ZodUnknown>;
11779
+ metadata: z.ZodNullable<z.ZodUnknown>;
11780
+ created_at: z.ZodString;
11781
+ updated_at: z.ZodString;
11782
+ }, z.core.$strip>>;
11783
+ company: z.ZodNullable<z.ZodObject<{
11784
+ id: z.ZodString;
11785
+ name: z.ZodString;
11786
+ domain: z.ZodNullable<z.ZodString>;
11787
+ }, z.core.$strip>>;
11788
+ deal: z.ZodNullable<z.ZodObject<{
11789
+ id: z.ZodString;
11790
+ clientId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
11791
+ contactEmail: z.ZodString;
11792
+ stageKey: z.ZodNullable<z.ZodString>;
11793
+ stateKey: z.ZodNullable<z.ZodString>;
11794
+ sourceListId: z.ZodNullable<z.ZodString>;
11795
+ updatedAt: z.ZodString;
11796
+ }, z.core.$strip>>;
11797
+ client: z.ZodNullable<z.ZodObject<{
11798
+ id: z.ZodString;
11799
+ name: z.ZodString;
11800
+ status: z.ZodString;
11801
+ }, z.core.$strip>>;
11802
+ }, z.core.$strip>;
11803
+ }, z.core.$strip>;
11804
+ ProjectResponse: z.ZodObject<{
11805
+ project: z.ZodObject<{
11806
+ id: z.ZodString;
11807
+ organization_id: z.ZodString;
11808
+ name: z.ZodString;
11809
+ kind: z.ZodString;
11810
+ status: z.ZodString;
11811
+ description: z.ZodNullable<z.ZodString>;
11812
+ deal_id: z.ZodNullable<z.ZodString>;
11813
+ client_id: z.ZodNullable<z.ZodString>;
11814
+ client_company_id: z.ZodNullable<z.ZodString>;
11815
+ start_date: z.ZodNullable<z.ZodString>;
11816
+ target_end_date: z.ZodNullable<z.ZodString>;
11817
+ actual_end_date: z.ZodNullable<z.ZodString>;
11818
+ contract_value: z.ZodNullable<z.ZodNumber>;
11819
+ metadata: z.ZodNullable<z.ZodUnknown>;
11820
+ created_at: z.ZodString;
11821
+ updated_at: z.ZodString;
11822
+ }, z.core.$strip>;
11823
+ }, z.core.$strip>;
11824
+ MilestoneListResponse: z.ZodObject<{
11825
+ milestones: z.ZodArray<z.ZodObject<{
11826
+ id: z.ZodString;
11827
+ organization_id: z.ZodString;
11828
+ project_id: z.ZodString;
11829
+ name: z.ZodString;
11830
+ status: z.ZodString;
11831
+ description: z.ZodNullable<z.ZodString>;
11832
+ due_date: z.ZodNullable<z.ZodString>;
11833
+ completed_at: z.ZodNullable<z.ZodString>;
11834
+ sequence: z.ZodNumber;
11835
+ checklist: z.ZodNullable<z.ZodUnknown>;
11836
+ metadata: z.ZodNullable<z.ZodUnknown>;
11837
+ created_at: z.ZodString;
11838
+ updated_at: z.ZodString;
11839
+ }, z.core.$strip>>;
11840
+ }, z.core.$strip>;
11841
+ MilestoneResponse: z.ZodObject<{
11842
+ milestone: z.ZodObject<{
11843
+ id: z.ZodString;
11844
+ organization_id: z.ZodString;
11845
+ project_id: z.ZodString;
11846
+ name: z.ZodString;
11847
+ status: z.ZodString;
11848
+ description: z.ZodNullable<z.ZodString>;
11849
+ due_date: z.ZodNullable<z.ZodString>;
11850
+ completed_at: z.ZodNullable<z.ZodString>;
11851
+ sequence: z.ZodNumber;
11852
+ checklist: z.ZodNullable<z.ZodUnknown>;
11853
+ metadata: z.ZodNullable<z.ZodUnknown>;
11854
+ created_at: z.ZodString;
11855
+ updated_at: z.ZodString;
11856
+ }, z.core.$strip>;
11857
+ }, z.core.$strip>;
11858
+ TaskListResponse: z.ZodObject<{
11859
+ tasks: z.ZodArray<z.ZodObject<{
11860
+ id: z.ZodString;
11861
+ organization_id: z.ZodString;
11862
+ project_id: z.ZodString;
11863
+ name: z.ZodString;
11864
+ type: z.ZodString;
11865
+ status: z.ZodString;
11866
+ description: z.ZodNullable<z.ZodString>;
11867
+ milestone_id: z.ZodNullable<z.ZodString>;
11868
+ parent_task_id: z.ZodNullable<z.ZodString>;
11869
+ due_date: z.ZodNullable<z.ZodString>;
11870
+ completed_at: z.ZodNullable<z.ZodString>;
11871
+ file_url: z.ZodNullable<z.ZodString>;
11872
+ checklist: z.ZodUnknown;
11873
+ resume_context: z.ZodNullable<z.ZodUnknown>;
11874
+ metadata: z.ZodNullable<z.ZodUnknown>;
11875
+ created_at: z.ZodString;
11876
+ updated_at: z.ZodString;
11877
+ }, z.core.$strip>>;
11878
+ }, z.core.$strip>;
11879
+ TaskResponse: z.ZodObject<{
11880
+ task: z.ZodObject<{
11881
+ id: z.ZodString;
11882
+ organization_id: z.ZodString;
11883
+ project_id: z.ZodString;
11884
+ name: z.ZodString;
11885
+ type: z.ZodString;
11886
+ status: z.ZodString;
11887
+ description: z.ZodNullable<z.ZodString>;
11888
+ milestone_id: z.ZodNullable<z.ZodString>;
11889
+ parent_task_id: z.ZodNullable<z.ZodString>;
11890
+ due_date: z.ZodNullable<z.ZodString>;
11891
+ completed_at: z.ZodNullable<z.ZodString>;
11892
+ file_url: z.ZodNullable<z.ZodString>;
11893
+ checklist: z.ZodUnknown;
11894
+ resume_context: z.ZodNullable<z.ZodUnknown>;
11895
+ metadata: z.ZodNullable<z.ZodUnknown>;
11896
+ created_at: z.ZodString;
11897
+ updated_at: z.ZodString;
11898
+ }, z.core.$strip>;
11899
+ }, z.core.$strip>;
11900
+ TaskResumeContextResponse: z.ZodObject<{
11901
+ task: z.ZodObject<{
11902
+ id: z.ZodString;
11903
+ project_id: z.ZodString;
11904
+ resume_context: z.ZodNullable<z.ZodUnknown>;
11905
+ updated_at: z.ZodString;
11906
+ }, z.core.$strip>;
11907
+ }, z.core.$strip>;
11908
+ NoteListResponse: z.ZodObject<{
11909
+ notes: z.ZodArray<z.ZodObject<{
11910
+ id: z.ZodString;
11911
+ organization_id: z.ZodString;
11912
+ project_id: z.ZodString;
11913
+ content: z.ZodString;
11914
+ type: z.ZodString;
11915
+ summary: z.ZodNullable<z.ZodString>;
11916
+ task_id: z.ZodNullable<z.ZodString>;
11917
+ milestone_id: z.ZodNullable<z.ZodString>;
11918
+ occurred_at: z.ZodString;
11919
+ created_by: z.ZodNullable<z.ZodString>;
11920
+ created_at: z.ZodString;
11921
+ }, z.core.$strip>>;
11922
+ }, z.core.$strip>;
11923
+ NoteResponse: z.ZodObject<{
11924
+ note: z.ZodObject<{
11925
+ id: z.ZodString;
11926
+ organization_id: z.ZodString;
11927
+ project_id: z.ZodString;
11928
+ content: z.ZodString;
11929
+ type: z.ZodString;
11930
+ summary: z.ZodNullable<z.ZodString>;
11931
+ task_id: z.ZodNullable<z.ZodString>;
11932
+ milestone_id: z.ZodNullable<z.ZodString>;
11933
+ occurred_at: z.ZodString;
11934
+ created_by: z.ZodNullable<z.ZodString>;
11935
+ created_at: z.ZodString;
11936
+ }, z.core.$strip>;
11937
+ }, z.core.$strip>;
11938
+ DeleteSuccessResponse: z.ZodObject<{
11939
+ success: z.ZodBoolean;
11940
+ }, z.core.$strip>;
11704
11941
  };
11705
11942
 
11706
11943
  /**
@@ -12218,9 +12455,19 @@ type AttioToolMap = {
12218
12455
  result: DeleteNoteResult;
12219
12456
  };
12220
12457
  };
12458
+ /**
12459
+ * What a tenant actually passes to `scheduler.createSchedule`.
12460
+ *
12461
+ * `organizationId` is omitted because the caller never supplies it and cannot: the dispatcher injects
12462
+ * the authenticated org via `scopedOrganizationParams` and overwrites whatever arrived on the wire.
12463
+ * Declaring it required made every call site cast the field away -- three verbatim copies of the same
12464
+ * `as` in `packages/elevasis/operations` alone -- to satisfy a type describing the server's shape rather
12465
+ * than the tenant's. `NotificationSDKInput` below has always had this right.
12466
+ */
12467
+ type CreateScheduleSDKInput = Omit<CreateScheduleInput, 'organizationId'>;
12221
12468
  type SchedulerToolMap = {
12222
12469
  createSchedule: {
12223
- params: CreateScheduleInput;
12470
+ params: CreateScheduleSDKInput;
12224
12471
  result: TaskSchedule;
12225
12472
  };
12226
12473
  updateAnchor: {
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { ActivityEventSchema, BuildPlanSnapshotStepSchema, ProspectingBuildTemplateSchema as BuildTemplateSchema, ContractRefResolutionError, CrmStageKeySchema, CrmStateKeySchema, EmailSchema, ExecutionError, ListBuilderStageKeySchema, ProcessingStageStatusSchema, RegistryValidationError, ResourceRegistry, StepType, ToolingError, bindResourceDescriptor, compileBusinessOntologyValidationIndex, concurrentPool, createLeadGenStageValidators, defineContract, defineResource, defineResourceOntology, defineResources, defineStep, defineTopology, defineTopologyRelationship, defineWorkflow, defineWorkflowConfig, deriveActions, diagnosticOutput, integrationInput, isBuiltInReadinessProfile, isZodType, lookupReadinessProfile, parseTopologyNodeRef, registerReadinessProfile, resolveContractRef, runDiagnostic, splitName, topologyRef, topologyRelationship, validateDeclaredSystemInterfaceReadiness, validateResourceGovernance } from './chunk-NNRXVYNC.js';
1
+ export { ActivityEventSchema, BuildPlanSnapshotStepSchema, ProspectingBuildTemplateSchema as BuildTemplateSchema, ContractRefResolutionError, CrmStageKeySchema, CrmStateKeySchema, EmailSchema, ExecutionError, ListBuilderStageKeySchema, ProcessingStageStatusSchema, RegistryValidationError, ResourceRegistry, StepType, ToolingError, bindResourceDescriptor, compileBusinessOntologyValidationIndex, concurrentPool, createLeadGenStageValidators, defineContract, defineResource, defineResourceOntology, defineResources, defineStep, defineTopology, defineTopologyRelationship, defineWorkflow, defineWorkflowConfig, deriveActions, diagnosticOutput, integrationInput, isBuiltInReadinessProfile, isZodType, lookupReadinessProfile, parseTopologyNodeRef, registerReadinessProfile, resolveContractRef, runDiagnostic, splitName, topologyRef, topologyRelationship, validateDeclaredSystemInterfaceReadiness, validateResourceGovernance } from './chunk-XC57JNMA.js';
2
2
  export { projectDeploymentSpec, projectTopologyRelationships, toSdkResourceDescriptor, withPlatformAgentResourceDescriptor, withPlatformAgentResourceDescriptors, withPlatformIntegrationResourceDescriptor, withPlatformIntegrationResourceDescriptors, withPlatformResourceDescriptor, withPlatformResourceDescriptors } from './chunk-VYWGWJRW.js';
@@ -1,4 +1,4 @@
1
- import { WorkflowDefinition, DeploymentSpec, SDKLLMGenerateParams, LLMGenerateResponse, AnymailfinderToolMap, ApifyToolMap, AttioToolMap, DropboxToolMap, GmailToolMap, GoogleSheetsToolMap, InstantlyToolMap, MillionVerifierToolMap, ResendToolMap, SignatureApiToolMap, StripeToolMap, TombaToolMap, LeadToolMap, ApprovalToolMap, ArtifactsToolMap, ContentToolMap, CrmToolMap, EmailToolMap, ExecutionToolMap, ListToolMap, NotificationToolMap, PdfToolMap, ProjectsToolMap, SchedulerToolMap, StorageToolMap } from '@elevasis/sdk';
1
+ import { WorkflowDefinition, DeploymentSpec, SDKLLMGenerateParams, LLMGenerateResponse, AnymailfinderToolMap, ApifyToolMap, AttioToolMap, DropboxToolMap, GmailToolMap, GoogleSheetsToolMap, InstagramToolMap, InstantlyToolMap, MillionVerifierToolMap, ResendToolMap, SignatureApiToolMap, StripeToolMap, TombaToolMap, LeadToolMap, ApprovalToolMap, ArtifactsToolMap, ContentToolMap, CrmToolMap, EmailToolMap, ExecutionToolMap, ListToolMap, NotificationToolMap, PdfToolMap, ProjectsToolMap, SchedulerToolMap, StorageToolMap } from '@elevasis/sdk';
2
2
  import { LogEntry, TypedAdapter } from '@elevasis/sdk/worker';
3
3
 
4
4
  interface RunWorkflowContext {
@@ -81,6 +81,17 @@ declare const createMockApify: (_credential: string, overrides?: MockAdapterOver
81
81
  declare const createMockDropbox: (_credential: string, overrides?: MockAdapterOverrides<DropboxToolMap>) => TypedAdapter<DropboxToolMap>;
82
82
  declare const createMockGmail: (_credential: string, overrides?: MockAdapterOverrides<GmailToolMap>) => TypedAdapter<GmailToolMap>;
83
83
  declare const createMockGoogleSheets: (_credential: string, overrides?: MockAdapterOverrides<GoogleSheetsToolMap>) => TypedAdapter<GoogleSheetsToolMap>;
84
+ /**
85
+ * Instagram is the one integration here whose workflow performs an action that cannot be undone --
86
+ * `publishContainer` puts a post on a real account. Test a composed publish pipeline against this
87
+ * mock rather than against the live adapter.
88
+ *
89
+ * Two methods are worth overriding deliberately rather than letting them return `undefined`:
90
+ * `getContainerStatus`, because a publish sequence polls it until the container reports `FINISHED`
91
+ * and an un-overridden mock never gets there, and `refreshToken`, whose `expiresIn` the adapter
92
+ * turns into the stored `expiresAt`.
93
+ */
94
+ declare const createMockInstagram: (_credential: string, overrides?: MockAdapterOverrides<InstagramToolMap>) => TypedAdapter<InstagramToolMap>;
84
95
  declare const createMockInstantly: (_credential: string, overrides?: MockAdapterOverrides<InstantlyToolMap>) => TypedAdapter<InstantlyToolMap>;
85
96
  declare const createMockTomba: (_credential: string, overrides?: MockAdapterOverrides<TombaToolMap>) => TypedAdapter<TombaToolMap>;
86
97
  declare const createMockResend: (_credential: string, overrides?: MockAdapterOverrides<ResendToolMap>) => TypedAdapter<ResendToolMap>;
@@ -89,5 +100,5 @@ declare const createMockStripe: (_credential: string, overrides?: MockAdapterOve
89
100
  declare const createMockAnymailfinder: (_credential: string, overrides?: MockAdapterOverrides<AnymailfinderToolMap>) => TypedAdapter<AnymailfinderToolMap>;
90
101
  declare const createMockMillionVerifier: (_credential: string, overrides?: MockAdapterOverrides<MillionVerifierToolMap>) => TypedAdapter<MillionVerifierToolMap>;
91
102
 
92
- export { assertResourceRegistry, createMockAnymailfinder, createMockApify, createMockAttio, createMockDropbox, createMockGmail, createMockGoogleSheets, createMockInstantly, createMockMillionVerifier, createMockResend, createMockSignatureApi, createMockStripe, createMockTomba, mockAcqDb, mockApproval, mockArtifacts, mockContent, mockCrm, mockEmail, mockExecution, mockList, mockLlm, mockNotifications, mockPdf, mockProjects, mockScheduler, mockStorage, runLinearWorkflow, runWorkflow };
103
+ export { assertResourceRegistry, createMockAnymailfinder, createMockApify, createMockAttio, createMockDropbox, createMockGmail, createMockGoogleSheets, createMockInstagram, createMockInstantly, createMockMillionVerifier, createMockResend, createMockSignatureApi, createMockStripe, createMockTomba, mockAcqDb, mockApproval, mockArtifacts, mockContent, mockCrm, mockEmail, mockExecution, mockList, mockLlm, mockNotifications, mockPdf, mockProjects, mockScheduler, mockStorage, runLinearWorkflow, runWorkflow };
93
104
  export type { AssertResourceRegistryOptions, LinearWorkflowStepEvent, MockAdapterOverrides, MockLlmAdapter, RunLinearWorkflowContext, RunLinearWorkflowOptions, RunLinearWorkflowResult, RunWorkflowContext, RunWorkflowOptions, RunWorkflowResult, WorkflowStepEvent };
@@ -1,5 +1,5 @@
1
- import { executeWorkflow } from '../chunk-HIVK54X6.js';
2
- import { validateDeploymentSpec, validateRelationships } from '../chunk-NNRXVYNC.js';
1
+ import { executeWorkflow } from '../chunk-T6DTAP2U.js';
2
+ import { validateDeploymentSpec, validateRelationships } from '../chunk-XC57JNMA.js';
3
3
  import '../chunk-VYWGWJRW.js';
4
4
  import { vi } from 'vitest';
5
5
 
@@ -341,6 +341,19 @@ var createMockGoogleSheets = (_credential, overrides) => createMockAdapter(
341
341
  ],
342
342
  overrides
343
343
  );
344
+ var createMockInstagram = (_credential, overrides) => createMockAdapter(
345
+ [
346
+ "createMediaContainer",
347
+ "createCarouselContainer",
348
+ "publishContainer",
349
+ "getContainerStatus",
350
+ "getMediaPermalink",
351
+ "getPublishingLimit",
352
+ "getMediaInsights",
353
+ "refreshToken"
354
+ ],
355
+ overrides
356
+ );
344
357
  var createMockInstantly = (_credential, overrides) => createMockAdapter(
345
358
  [
346
359
  "sendReply",
@@ -390,4 +403,4 @@ var createMockAnymailfinder = (_credential, overrides) => createMockAdapter(
390
403
  );
391
404
  var createMockMillionVerifier = (_credential, overrides) => createMockAdapter(["verifyEmail", "checkCredits"], overrides);
392
405
 
393
- export { assertResourceRegistry, createMockAnymailfinder, createMockApify, createMockAttio, createMockDropbox, createMockGmail, createMockGoogleSheets, createMockInstantly, createMockMillionVerifier, createMockResend, createMockSignatureApi, createMockStripe, createMockTomba, mockAcqDb, mockApproval, mockArtifacts, mockContent, mockCrm, mockEmail, mockExecution, mockList, mockLlm, mockNotifications, mockPdf, mockProjects, mockScheduler, mockStorage, runLinearWorkflow, runWorkflow };
406
+ export { assertResourceRegistry, createMockAnymailfinder, createMockApify, createMockAttio, createMockDropbox, createMockGmail, createMockGoogleSheets, createMockInstagram, createMockInstantly, createMockMillionVerifier, createMockResend, createMockSignatureApi, createMockStripe, createMockTomba, mockAcqDb, mockApproval, mockArtifacts, mockContent, mockCrm, mockEmail, mockExecution, mockList, mockLlm, mockNotifications, mockPdf, mockProjects, mockScheduler, mockStorage, runLinearWorkflow, runWorkflow };
@@ -1164,7 +1164,7 @@ declare function toContentMetrics(insights: InstagramInsights): ContentMetrics;
1164
1164
  * Parent -> Worker: { type: 'execute', resourceId, executionId, input, organizationId?, organizationName?,
1165
1165
  * sessionId?, sessionTurnNumber?, sessionMemory?, conversationHistory?,
1166
1166
  * parentExecutionId?, executionDepth }
1167
- * Worker -> Parent: { type: 'result', status, output?, memorySnapshot?, error?, logs, metrics: { durationMs } }
1167
+ * Worker -> Parent: { type: 'result', status, output?, stopReason?, hasSpoken?, memorySnapshot?, error?, logs, metrics: { durationMs } }
1168
1168
  *
1169
1169
  * Parent -> Worker: { type: 'abort', reason? } (graceful abort before terminate;
1170
1170
  * reason carries AbortSignal.reason
@@ -1,3 +1,3 @@
1
- export { ListBuilderResultSchema, ListBuilderResultsSchema, PlatformToolError, acqDb, approval, artifacts, classifyPlatformToolError, content, createAdapter, createAnymailfinderAdapter, createApifyAdapter, createAttioAdapter, createCaptionGenerationWorkflow, createCaptureInstagramMetricsWorkflow, createClickUpAdapter, createDropboxAdapter, createGmailAdapter, createGoogleSheetsAdapter, createImageAnalysisWorkflow, createInstagramAdapter, createInstantlyAdapter, createMillionVerifierAdapter, createPublishInstagramWorkflow, createResendAdapter, createSignatureApiAdapter, createStripeAdapter, createTombaAdapter, crm, email, executeWorkflow, execution, generateHmacToken, list, listBuilderWorkflow, llm, notifications, pdf, platform, projects, scheduler, startWorker, storage, toContentMetrics } from '../chunk-HIVK54X6.js';
2
- import '../chunk-NNRXVYNC.js';
1
+ export { ListBuilderResultSchema, ListBuilderResultsSchema, PlatformToolError, acqDb, approval, artifacts, classifyPlatformToolError, content, createAdapter, createAnymailfinderAdapter, createApifyAdapter, createAttioAdapter, createCaptionGenerationWorkflow, createCaptureInstagramMetricsWorkflow, createClickUpAdapter, createDropboxAdapter, createGmailAdapter, createGoogleSheetsAdapter, createImageAnalysisWorkflow, createInstagramAdapter, createInstantlyAdapter, createMillionVerifierAdapter, createPublishInstagramWorkflow, createResendAdapter, createSignatureApiAdapter, createStripeAdapter, createTombaAdapter, crm, email, executeWorkflow, execution, generateHmacToken, list, listBuilderWorkflow, llm, notifications, pdf, platform, projects, scheduler, startWorker, storage, toContentMetrics } from '../chunk-T6DTAP2U.js';
2
+ import '../chunk-XC57JNMA.js';
3
3
  import '../chunk-VYWGWJRW.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elevasis/sdk",
3
- "version": "1.51.0",
3
+ "version": "1.52.1",
4
4
  "description": "SDK for building Elevasis organization resources",
5
5
  "type": "module",
6
6
  "bin": {
@@ -63,7 +63,7 @@
63
63
  "typescript": "5.9.2",
64
64
  "vitest": "^3.2.4",
65
65
  "zod": "^4.1.0",
66
- "@repo/core": "0.67.0",
66
+ "@repo/core": "0.69.0",
67
67
  "@repo/eslint-config": "0.0.0",
68
68
  "@repo/typescript-config": "0.0.0"
69
69
  },
@@ -4,7 +4,7 @@
4
4
 
5
5
  Auto-generated from the package reference manifests.
6
6
 
7
- Package entries indexed: 64.
7
+ Package entries indexed: 63.
8
8
 
9
9
  ## @elevasis/core / Auth
10
10
 
@@ -138,7 +138,6 @@ Package entries indexed: 64.
138
138
  | Hooks Access | `packages/ui/src/hooks/README.md` | Published Access Model hook surface for checking route, section, and action access. | (not specified) |
139
139
  | Hooks Delivery | `packages/ui/src/hooks/README.md` | Published delivery hooks for projects, milestones, tasks, and notes. | (not specified) |
140
140
  | Hooks User Notes | `packages/ui/src/hooks/README.md` | Published user-notes query and mutation hooks used by shared Notes surfaces. | (not specified) |
141
- | Transform Command View Data | `packages/ui/src/hooks/README.md` | Utility that transforms backend CommandViewData arrays into a unified frontend CommandViewGraph with nodes and edges. | (not specified) |
142
141
 
143
142
  ## @elevasis/ui / Provider
144
143
 
@@ -296,9 +295,9 @@ Docs-site pages indexed: 38.
296
295
  | Getting Started | `sdk/getting-started.mdx` | Set up your Elevasis SDK project and run your first deployment |
297
296
  | Human-in-the-Loop (HITL) Workflows | `sdk/human-in-the-loop.mdx` | How a workflow step opens an approval task, how it reaches the command queue, and how selecting an action resumes work -- the story that connects the approval adapter, checkpoint metadata, and the queue CLI. |
298
297
  | @elevasis/sdk | `sdk/index.mdx` | Build and deploy workflows, agents, and resources with the Elevasis SDK |
299
- | Integration Adapters | `sdk/platform-tools/adapters-integration.mdx` | Auto-generated table of all 13 integration (credential-bound) adapters exported from @elevasis/sdk/worker, derived from static analysis of the adapter source files. |
300
- | Platform Adapters | `sdk/platform-tools/adapters-platform.mdx` | Auto-generated table of all 14 platform (singleton, no credential) adapters exported from @elevasis/sdk/worker, derived from static analysis of the adapter source files. |
301
- | Platform Tools | `sdk/platform-tools/index.mdx` | Access 25 adapters (13 integration + 12 platform) from your SDK workflows -- typed adapters, credential security model, and working code examples |
298
+ | Integration Adapters | `sdk/platform-tools/adapters-integration.mdx` | Auto-generated table of all 14 integration (credential-bound) adapters exported from @elevasis/sdk/worker. Each row's methods are read from that adapter's METHODS array; the adapter set is the INTEGRATION_EXPORTS list in the generator, checked against the adapter directory on every run. |
299
+ | Platform Adapters | `sdk/platform-tools/adapters-platform.mdx` | Auto-generated table of all 14 platform (singleton, no credential) adapters exported from @elevasis/sdk/worker. Each row's methods are read from that adapter's METHODS array; the adapter set is the PLATFORM_EXPORTS list in the generator, checked against the adapter directory on every run. |
300
+ | Platform Tools | `sdk/platform-tools/index.mdx` | Access 28 adapters (14 integration + 14 platform) from your SDK workflows -- typed adapters, credential security model, and working code examples |
302
301
  | Adapter Type Safety | `sdk/platform-tools/type-safety.mdx` | SDK worker adapter type safety patterns - required fields, discriminated unions, and intentionally loose types |
303
302
  | The Deployment Spec Pattern | `sdk/project-deployment-spec.mdx` | How projectDeploymentSpec and defineWorkflowConfig assemble the DeploymentSpec a scaffolded project actually ships, using operations/src/index.ts as the reference. |
304
303
  | Writing Resources | `sdk/resources/index.mdx` | Guide to creating descriptor-backed workflows and agents with the Elevasis SDK |
@@ -743,20 +743,6 @@
743
743
  "referencePath": "packages/ui/src/hooks/README.md",
744
744
  "publishedExportPath": "./dist/hooks/user-notes/index.js"
745
745
  },
746
- {
747
- "packageName": "@elevasis/ui",
748
- "packageDir": "packages/ui",
749
- "subpath": "./hooks/operations/command-view/utils/transformCommandViewData",
750
- "kind": "subpath",
751
- "title": "Transform Command View Data",
752
- "description": "Utility that transforms backend CommandViewData arrays into a unified frontend CommandViewGraph with nodes and edges.",
753
- "group": "Hooks",
754
- "order": 3,
755
- "sourcePath": "packages/ui/src/hooks/operations/command-view/utils/transformCommandViewData.ts",
756
- "docPath": "packages/ui/src/hooks/README.md",
757
- "referencePath": "packages/ui/src/hooks/README.md",
758
- "publishedExportPath": "./dist/hooks/operations/command-view/utils/transformCommandViewData.js"
759
- },
760
746
  {
761
747
  "packageName": "@elevasis/ui",
762
748
  "packageDir": "packages/ui",
@@ -1,23 +1,22 @@
1
- # Hooks
2
-
3
- The hooks barrel is the published headless hook surface for the UI package.
4
-
5
- ## Grouped Areas
6
-
7
- - Execution and workflow hooks
8
- - Scheduling hooks
9
- - Monitoring, observability, and notification hooks
10
- - Session and SSE hooks
11
- - Operations hooks, including command-view helpers
12
- - Feature access, table state, and service helpers
13
- - Acquisition and delivery hooks
14
-
15
- ## Published Subpaths
16
-
17
- - `./hooks`
18
- - `./hooks/delivery`
19
- - `./hooks/operations/command-view/utils/transformCommandViewData`
20
-
21
- ## Notes
22
-
23
- - This barrel is intentionally headless. It should not pull in the visual component layer.
1
+ # Hooks
2
+
3
+ The hooks barrel is the published headless hook surface for the UI package.
4
+
5
+ ## Grouped Areas
6
+
7
+ - Execution and workflow hooks
8
+ - Scheduling hooks
9
+ - Monitoring, observability, and notification hooks
10
+ - Session and SSE hooks
11
+ - Operations hooks, including command-view helpers
12
+ - Feature access, table state, and service helpers
13
+ - Acquisition and delivery hooks
14
+
15
+ ## Published Subpaths
16
+
17
+ - `./hooks`
18
+ - `./hooks/delivery`
19
+
20
+ ## Notes
21
+
22
+ - This barrel is intentionally headless. It should not pull in the visual component layer.
@@ -10,11 +10,14 @@ paths:
10
10
 
11
11
  # Content
12
12
 
13
- - **These routes render and do nothing until the System behind them is built.** Unlike CRM and lead-gen, `content` has no entry yet in `core/config/organization-model/systems.ts` -- the routes gate on `accessKey="content"` with no System, ontology, or resources behind it on a fresh project.
13
+ - **These routes render and do nothing until the System behind them is adopted.** `content` **does** have an entry in `core/config/organization-model/systems.ts`, alongside CRM and lead-gen. Do not add a second one. The entry ships `enabled: true` with `lifecycle: 'draft'`, and that draft state is the deliberate opt-out, not a half-finished System: with no `apiInterface`, the shared Content pages have no API surface to call. Adoption means flipping `lifecycle` to `'active'` and adding an `apiInterface` once this project has real content workflows -- `defineContentSystem` throws on empty `resources`, which is exactly why the template does not call it.
14
14
  - **One recipe covers this surface and no other rule names it.** `extend-content.md` covers the System, its pipeline/step/status/pillar/platform catalogs, and the `content` workflow adapter. Read it before authoring.
15
15
  - **A pipeline is data, not code.** Pipelines and their ordered steps are catalog records (`content:catalog/pipeline`, `content:catalog/{pipelineId}-steps`); adding one is an org-model edit plus one workflow per step, never a shared-UI or route change.
16
16
  - **Pipeline, step, status, and pillar vocabulary is model-owned, never a local constant.** Copying catalog entries into a `const` is architecturally excluded -- every project owns its own model, so the copy rots silently. Read catalog entries from the resolved model.
17
17
  - **`apiInterface` is adopt-only here.** Content uses the flat `system.apiInterface` marker on the `content` System path; readiness is derived from scoped resources, ontology bindings, and required catalogs -- never invent a readiness profile.
18
+ - **Every step records an attempt when it advances -- human steps included.** `content_items.processing_state` is read-only and rebuilt from that item's attempts on every attempt write; there is no `updateProcessingState` anywhere in the stack, so **writing an attempt is the only way to move an item**. An agent or workflow step satisfies this for free, because the execution behind it writes `running` and patches the terminal status. A **human** step has no execution and therefore no producer, so the surface that advances it is the only thing that can write its attempt. A panel that moves the operator on with a bare client-side stepper call records nothing: the step never reaches `'success'`, and board placement pins the item to that column however far it actually goes. Nothing enforces this -- no gate, no type -- which is why it is stated here. It reached two tenants at once purely because the rule lived in the board-derivation implementation and nowhere a panel author would look.
19
+ - **Two shapes satisfy that contract.** **Inline** -- the step writes its own attempt as it advances; available to any human step reached with an item in hand, and the only shape most projects need. **Backfilled at creation** -- a pipeline that deliberately defers the first write (so an abandoned selection leaves no rows behind) runs its first human steps with no item to write against, so those attempts go in one pass right after the item is created, derived from wherever creation lands rather than listed per pipeline. Both write `payload: {}` and `sourceExecutionId: null` -- a person doing the step is the result, and there is no execution to name. Guard the write on an existing `'success'` entry so walking back and forward does not pile up rows, and never let a failed write block the operator: the step's work is genuinely done, and the next walk through repairs the projection.
20
+ - **A review is an attempt too.** A human clearing a gate writes an attempt on the step being cleared, via `content_items/:id/review` -- which resolves the exact step through the open-review-gate query rather than guessing. Do not widen `content_items` with per-gate columns. A review attempt legitimately has `sourceExecutionId: null` (a judgment call has no execution) and carries the reviewer's identity in `createdBy`. That route is only reachable for a step an execution actually produced: `getOpenContentReviewGates` resolves gates through `executionId`, so a human-actor step with no `action` and no `resource` structurally can never have an open gate to clear. For those steps the inline attempt above is not the preferred shape, it is the only one.
18
21
 
19
22
  ## Related Rules
20
23
 
@@ -16,7 +16,7 @@ paths:
16
16
  - `routeTree.gen.ts` is auto-generated on `pnpm dev` -- never edit manually
17
17
  - Auth protection: wrap page content with `ProtectedRoute` from `@elevasis/ui/features/auth`. Gate further with `AccessGuard accessKey={...}` nested inside `ProtectedRoute` -- a System path for system gating, or an `AccessKeys` constant (e.g. `AccessKeys.platformAdmin`) for permission-backed gating. `FeatureGuard`, `SystemGuard`, `SurfaceGuard`, and `AdminGuard` are retired -- do not reintroduce them
18
18
  - **For a System's top-level route, use `ProtectedSystemRoute accessKey={...}` from `@elevasis/ui/features/auth` instead of writing that pairing by hand.** It expands to exactly the `ProtectedRoute` + `AccessGuard` nesting above and adds `SystemUnavailableState` as the guard's `fallback`, so a denied user sees the reason rather than `AccessGuard`'s blank `fallback = null` default. Every System route in the template ships this shape; see `ui.md` "System route guarding". Keep `createFileRoute` in the route file and keep bare `AccessGuard` for gating below the route level
19
- - **Two `ProtectedRoute` components exist and the subpath you import from decides what the user sees while the app initializes.** `@elevasis/ui/features/auth` is the one route files want: it wraps the base guard with an animated full-screen loader and a default `AppShellError` error fallback. `@elevasis/ui/auth` exports the headless base guard, whose `fallback` defaults to `null` -- importing it without passing a `fallback` renders a blank screen for the whole initialization window and swallows initialization errors. Reach for the headless one only when the surface renders its own loading state. `AccessKeys` is a plain constant table and stays on `@elevasis/ui/auth` (or `@elevasis/ui/hooks`) either way
19
+ - **Two `ProtectedRoute` components exist and the subpath you import from decides what the user sees while the app initializes.** `@elevasis/ui/features/auth` is the one route files want: it wraps the base guard with an animated full-screen loader and a default `ServiceUnavailableScreen` error fallback, which classifies the initialization failure and retries on a backoff. `@elevasis/ui/auth` exports the headless base guard, whose `fallback` defaults to `null` -- importing it without passing a `fallback` renders a blank screen for the whole initialization window and swallows initialization errors. Reach for the headless one only when the surface renders its own loading state. `AccessKeys` is a plain constant table and stays on `@elevasis/ui/auth` (or `@elevasis/ui/hooks`) either way
20
20
  - Never fork `@elevasis/ui` components -- if a published component needs a tweak, that missing capability is a bug in `@elevasis/ui`
21
21
 
22
22
  ## Silent-Break Gotchas
@@ -52,4 +52,4 @@ When building pages that display external data, use published `@elevasis/ui` com
52
52
  - `operations/node_modules/@elevasis/sdk/reference/scaffold/ui/customization.md` -- sidebar composition via manifest overrides
53
53
  - `operations/node_modules/@elevasis/sdk/reference/scaffold/reference/contracts.md` -- TypeScript shapes (`SystemModule`, `NavItem`, `OrganizationModel`)
54
54
  - `ui/src/config/theme.ts` -- theme configuration and CSS variable definitions
55
- - `ui/src/config/nav-items.ts` -- sidebar navigation entries
55
+ - `ui/src/config/shell.tsx` -- the `SYSTEM_MANIFESTS` array of mounted System modules, and the seam for sidebar overrides
@@ -17,7 +17,7 @@ Organization OS is the semantic contract layer defining how organizations, Syste
17
17
  - `core/config/extensions/` -- project-owned entity extension schemas
18
18
  - `core/types/entities.ts` -- typed entity contracts (Project, Deal, etc.) extending `BaseProject` / `BaseDeal` from `@elevasis/core/entities`. Reference these from workflow input schemas -- do not redeclare them.
19
19
  - `ui/src/routes/__root.tsx` -- wires `ElevasisSystemsProvider` with `canonicalOrganizationModel`
20
- - `ui/src/app-config.ts` -- references the org model
20
+ - `ui/src/config/app-config.ts` -- references the org model
21
21
  - `operations/src/index.ts` -- `DeploymentSpec` registry for workflows and agents
22
22
 
23
23
  ## Domain Overview