@kitman-sh/sdk 0.0.0-stage → 0.6.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 (102) hide show
  1. package/dist/build/index.js +215 -0
  2. package/dist/chunk-f3d6cvkg.js +958 -0
  3. package/dist/chunk-jnxc0c54.js +3963 -0
  4. package/dist/loop/index.js +193 -0
  5. package/dist/program/index.js +24 -0
  6. package/package.json +29 -4
  7. package/types/packages/core/src/a2a.d.ts +577 -0
  8. package/types/packages/core/src/agent-capabilities.d.ts +1424 -0
  9. package/types/packages/core/src/agent-environment.d.ts +2429 -0
  10. package/types/packages/core/src/agent-launch-snapshot.d.ts +44 -0
  11. package/types/packages/core/src/agent-sandbox-policy.d.ts +31 -0
  12. package/types/packages/core/src/approval-queue.d.ts +126 -0
  13. package/types/packages/core/src/audit.d.ts +52 -0
  14. package/types/packages/core/src/change-delivery.d.ts +39 -0
  15. package/types/packages/core/src/change-request-review.d.ts +146 -0
  16. package/types/packages/core/src/change-request.d.ts +432 -0
  17. package/types/packages/core/src/common.d.ts +6 -0
  18. package/types/packages/core/src/connection.d.ts +33 -0
  19. package/types/packages/core/src/context-feedback.d.ts +89 -0
  20. package/types/packages/core/src/context-pack.d.ts +182 -0
  21. package/types/packages/core/src/crypto.d.ts +11 -0
  22. package/types/packages/core/src/data-lifecycle.d.ts +195 -0
  23. package/types/packages/core/src/decision.d.ts +48 -0
  24. package/types/packages/core/src/delivery-operation.d.ts +125 -0
  25. package/types/packages/core/src/delivery-policy.d.ts +174 -0
  26. package/types/packages/core/src/engineering-resources.d.ts +26 -0
  27. package/types/packages/core/src/enterprise-code-host.d.ts +21 -0
  28. package/types/packages/core/src/epic-delivery.d.ts +38 -0
  29. package/types/packages/core/src/extension.d.ts +35 -0
  30. package/types/packages/core/src/external-effect.d.ts +313 -0
  31. package/types/packages/core/src/fix-flow.d.ts +149 -0
  32. package/types/packages/core/src/following.d.ts +59 -0
  33. package/types/packages/core/src/github-delivery-fixtures.d.ts +28 -0
  34. package/types/packages/core/src/github-delivery.d.ts +78 -0
  35. package/types/packages/core/src/gitlab-delivery-fixtures.d.ts +26 -0
  36. package/types/packages/core/src/gitlab-delivery.d.ts +76 -0
  37. package/types/packages/core/src/global-search.d.ts +42 -0
  38. package/types/packages/core/src/id.d.ts +1 -0
  39. package/types/packages/core/src/index.d.ts +74 -0
  40. package/types/packages/core/src/integration.d.ts +137 -0
  41. package/types/packages/core/src/intent.d.ts +260 -0
  42. package/types/packages/core/src/json.d.ts +10 -0
  43. package/types/packages/core/src/kit-taxonomy.d.ts +21 -0
  44. package/types/packages/core/src/kit.d.ts +1489 -0
  45. package/types/packages/core/src/live.d.ts +8309 -0
  46. package/types/packages/core/src/loop-layers.d.ts +59 -0
  47. package/types/packages/core/src/loop-version.d.ts +59 -0
  48. package/types/packages/core/src/loop.d.ts +3076 -0
  49. package/types/packages/core/src/me.d.ts +31 -0
  50. package/types/packages/core/src/memory.d.ts +88 -0
  51. package/types/packages/core/src/my-teams.d.ts +1230 -0
  52. package/types/packages/core/src/notification.d.ts +181 -0
  53. package/types/packages/core/src/observability.d.ts +175 -0
  54. package/types/packages/core/src/package-declarations.d.ts +427 -0
  55. package/types/packages/core/src/package.d.ts +369 -0
  56. package/types/packages/core/src/personal-development-profile.d.ts +11 -0
  57. package/types/packages/core/src/platform-release.d.ts +60 -0
  58. package/types/packages/core/src/program-credential.d.ts +10 -0
  59. package/types/packages/core/src/project.d.ts +64 -0
  60. package/types/packages/core/src/proposal.d.ts +292 -0
  61. package/types/packages/core/src/provider-safe-text.d.ts +2 -0
  62. package/types/packages/core/src/redaction.d.ts +73 -0
  63. package/types/packages/core/src/repo-binding.d.ts +123 -0
  64. package/types/packages/core/src/run-journal.d.ts +28 -0
  65. package/types/packages/core/src/run-launch.d.ts +67 -0
  66. package/types/packages/core/src/run.d.ts +566 -0
  67. package/types/packages/core/src/runner-eligibility.d.ts +39 -0
  68. package/types/packages/core/src/runner-routing.d.ts +11 -0
  69. package/types/packages/core/src/runner-trust.d.ts +67 -0
  70. package/types/packages/core/src/runner.d.ts +3672 -0
  71. package/types/packages/core/src/runtime-type.d.ts +36 -0
  72. package/types/packages/core/src/schedule.d.ts +136 -0
  73. package/types/packages/core/src/schema.d.ts +89 -0
  74. package/types/packages/core/src/scope-directory.d.ts +100 -0
  75. package/types/packages/core/src/secret.d.ts +37 -0
  76. package/types/packages/core/src/session.d.ts +90 -0
  77. package/types/packages/core/src/step-brief.d.ts +50 -0
  78. package/types/packages/core/src/sync-kit.d.ts +587 -0
  79. package/types/packages/core/src/task-detail.d.ts +491 -0
  80. package/types/packages/core/src/task-execution-record.d.ts +620 -0
  81. package/types/packages/core/src/task-key.d.ts +9 -0
  82. package/types/packages/core/src/task.d.ts +543 -0
  83. package/types/packages/core/src/trigger-dispatch.d.ts +421 -0
  84. package/types/packages/core/src/work-unit.d.ts +725 -0
  85. package/types/packages/core/src/workspace.d.ts +50 -0
  86. package/types/packages/live/src/rpc/runner-client.d.ts +938 -0
  87. package/types/packages/live/src/rpc/runner-group.d.ts +730 -0
  88. package/types/packages/sdk/src/build/index.d.ts +45 -0
  89. package/types/packages/sdk/src/loop/activities.d.ts +187 -0
  90. package/types/packages/sdk/src/loop/check.d.ts +39 -0
  91. package/types/packages/sdk/src/loop/config.d.ts +68 -0
  92. package/types/packages/sdk/src/loop/define.d.ts +69 -0
  93. package/types/packages/sdk/src/loop/evidence.d.ts +66 -0
  94. package/types/packages/sdk/src/loop/index.d.ts +9 -0
  95. package/types/packages/sdk/src/loop/plan.d.ts +43 -0
  96. package/types/packages/sdk/src/loop/review.d.ts +86 -0
  97. package/types/packages/sdk/src/loop/steps.d.ts +224 -0
  98. package/types/packages/sdk/src/loop/test-loop.d.ts +112 -0
  99. package/types/packages/sdk/src/program/engine.d.ts +144 -0
  100. package/types/packages/sdk/src/program/host.d.ts +48 -0
  101. package/types/packages/sdk/src/program/index.d.ts +2 -0
  102. package/README.md +0 -3
@@ -0,0 +1,174 @@
1
+ import type { ActorType } from './common';
2
+ import type { RepoBindingProvider } from './repo-binding';
3
+ declare const DeliveryPolicyTopologies: readonly ['epic_integration', 'direct_to_default'];
4
+ export type DeliveryPolicyTopology = (typeof DeliveryPolicyTopologies)[number];
5
+ export declare const DeliveryPolicyOperations: readonly ['create_branch', 'push_commit', 'create_change_request', 'update_target', 'request_review', 'record_review', 'update_description', 'reply_review_thread', 'set_draft_state', 'publish_check', 'set_change_request_state', 'enqueue_merge_queue', 'delete_merged_branch', 'merge_intermediate', 'create_final_change_request', 'merge_final', 'reconcile', 'revert'];
6
+ export type DeliveryPolicyOperation = (typeof DeliveryPolicyOperations)[number];
7
+ export declare const DeliveryAttemptStatuses: readonly ['prepared', 'running', 'succeeded', 'failed', 'blocked', 'canceled', 'unknown_reconciliation_required', 'superseded'];
8
+ export type DeliveryAttemptStatus = (typeof DeliveryAttemptStatuses)[number];
9
+ export declare const DeliveryReconciliationStates: readonly ['not_required', 'pending', 'reconciling', 'resolved', 'manual'];
10
+ export type DeliveryReconciliationState = (typeof DeliveryReconciliationStates)[number];
11
+ declare const DeliveryFinalReviewAuthorities: readonly ['human_required', 'qualified_independent_agent'];
12
+ type DeliveryFinalReviewAuthority = (typeof DeliveryFinalReviewAuthorities)[number];
13
+ type DeliveryDigest = string;
14
+ type CommitSha = string;
15
+ export interface DeliveryRepositoryIdentity {
16
+ readonly provider: RepoBindingProvider;
17
+ readonly host: string;
18
+ readonly providerRepositoryId: string;
19
+ readonly owner: string;
20
+ readonly repositoryName: string;
21
+ }
22
+ export interface DeliveryBranchPin {
23
+ readonly ref: string;
24
+ readonly sha: CommitSha;
25
+ }
26
+ export interface DeliveryIntegrationBranchPolicy {
27
+ readonly generatedRefTemplate: string;
28
+ readonly ref?: string;
29
+ readonly creationBase: DeliveryBranchPin;
30
+ readonly deletionForbiddenUntilEpicClosure: boolean;
31
+ }
32
+ interface DeliveryVerificationPolicy {
33
+ readonly commandProfileDigest: DeliveryDigest;
34
+ readonly requiredChecks: readonly string[];
35
+ readonly freshnessSeconds: number;
36
+ readonly bindSourceSha: boolean;
37
+ readonly bindTargetSha: boolean;
38
+ readonly missingCheck: 'block' | 'manual';
39
+ readonly staleCheck: 'block' | 'manual';
40
+ }
41
+ interface DeliveryReviewPolicy {
42
+ readonly requiredApprovals: number;
43
+ readonly reviewerQualification: string;
44
+ readonly excludeAuthorLineage: boolean;
45
+ readonly unresolvedThreads: 'block' | 'allow';
46
+ }
47
+ interface DeliveryFinalReviewPolicy extends DeliveryReviewPolicy {
48
+ readonly authority: DeliveryFinalReviewAuthority;
49
+ readonly qualification?: string;
50
+ }
51
+ interface DeliveryDirectDefaultRisk {
52
+ readonly explicitlyOptedIn: boolean;
53
+ readonly reason?: string;
54
+ readonly approverClass?: 'human_owner' | 'human_admin' | 'qualified_independent_agent';
55
+ readonly extraVerificationDigest?: DeliveryDigest;
56
+ }
57
+ export interface DeliveryPolicy {
58
+ readonly id: string;
59
+ readonly version: number;
60
+ readonly digest: DeliveryDigest;
61
+ readonly workspaceId: string;
62
+ readonly projectId?: string;
63
+ readonly repoBindingId: string;
64
+ readonly epicTaskId: string;
65
+ readonly childTaskId?: string;
66
+ readonly providerHostClass: 'gitlab_com' | 'gitlab_self_managed' | 'github_com' | 'github_enterprise_server';
67
+ readonly repositoryIdentity: DeliveryRepositoryIdentity;
68
+ readonly topology: DeliveryPolicyTopology;
69
+ readonly integrationBranch?: DeliveryIntegrationBranchPolicy;
70
+ readonly defaultBranch: DeliveryBranchPin;
71
+ readonly taskBranchNamespace: string;
72
+ readonly allowStackedBranches: boolean;
73
+ readonly operations: readonly DeliveryPolicyOperation[];
74
+ readonly verification: DeliveryVerificationPolicy;
75
+ readonly intermediateReview: DeliveryReviewPolicy;
76
+ readonly finalReview: DeliveryFinalReviewPolicy;
77
+ readonly directDefaultRisk: DeliveryDirectDefaultRisk;
78
+ readonly conflicts: Readonly<Record<string, 'block' | 'manual' | 'new_attempt'>>;
79
+ readonly maxActiveWriteAttempts: number;
80
+ readonly singleWriterIntegrationBranch: boolean;
81
+ readonly allowedDeliveryAgentIdentityId?: string;
82
+ readonly accountScopeReference: string;
83
+ readonly evidenceRetentionClass: string;
84
+ readonly createdByActorType: ActorType;
85
+ readonly createdByActorId: string;
86
+ readonly createdAt: string;
87
+ }
88
+ export interface DeliveryPolicyDraft extends Omit<DeliveryPolicy, 'digest'> {
89
+ readonly digest?: DeliveryDigest;
90
+ }
91
+ export interface DeliveryAttempt {
92
+ readonly id: string;
93
+ readonly workspaceId: string;
94
+ readonly projectId: string;
95
+ readonly taskId: string;
96
+ readonly deliveryId: string;
97
+ readonly workUnitId: string;
98
+ readonly attemptNumber: number;
99
+ readonly policyId: string;
100
+ readonly policyDigest: DeliveryDigest;
101
+ readonly snapshotDigest: DeliveryDigest;
102
+ readonly operation: DeliveryPolicyOperation;
103
+ readonly repositoryIdentity: DeliveryRepositoryIdentity;
104
+ readonly source: DeliveryBranchPin;
105
+ readonly target: DeliveryBranchPin;
106
+ readonly integrationBranch?: DeliveryBranchPin;
107
+ readonly verificationSnapshotDigest: DeliveryDigest;
108
+ readonly reviewPolicyDigest: DeliveryDigest;
109
+ readonly effectKeys: readonly string[];
110
+ readonly authorActorType: ActorType;
111
+ readonly authorActorId: string;
112
+ readonly authorAgentIdentityId?: string;
113
+ /** Immutable actor/AgentIdentity/Loop lineage used to exclude alternate author credentials. */
114
+ readonly authorLineage?: readonly string[];
115
+ readonly status: DeliveryAttemptStatus;
116
+ readonly reconciliationState: DeliveryReconciliationState;
117
+ readonly failureCode?: string;
118
+ readonly createdAt: string;
119
+ }
120
+ export interface DeliveryChangeRequest {
121
+ readonly id: string;
122
+ readonly deliveryAttemptId: string;
123
+ readonly workspaceId: string;
124
+ readonly projectId?: string;
125
+ readonly taskId: string;
126
+ readonly repoBindingId: string;
127
+ readonly provider: RepoBindingProvider;
128
+ readonly host: string;
129
+ readonly owner: string;
130
+ readonly repositoryName: string;
131
+ readonly providerRepositoryId: string;
132
+ readonly externalId: string;
133
+ readonly url: string;
134
+ readonly title: string;
135
+ readonly source: DeliveryBranchPin;
136
+ readonly target: DeliveryBranchPin;
137
+ readonly status: 'draft' | 'open' | 'closed' | 'merged';
138
+ readonly headSha: CommitSha;
139
+ readonly baseSha: CommitSha;
140
+ readonly verificationSnapshotDigest: DeliveryDigest;
141
+ readonly reviewSnapshotDigest: DeliveryDigest;
142
+ readonly reconciliationState: DeliveryReconciliationState;
143
+ readonly providerObjectDigest: DeliveryDigest;
144
+ readonly createdByActorType: ActorType;
145
+ readonly createdByActorId: string;
146
+ readonly createdAt: string;
147
+ }
148
+ export interface DeliveryReviewEvidence {
149
+ readonly reviewerActorType: string;
150
+ readonly reviewerActorId: string;
151
+ readonly reviewerAgentIdentityId?: string;
152
+ readonly sourceSha: CommitSha;
153
+ readonly targetSha: CommitSha;
154
+ readonly inspectedExactRevision: boolean;
155
+ readonly qualified: boolean;
156
+ readonly authorLineage: readonly string[];
157
+ readonly outcome: 'approved' | 'changes_requested' | 'commented';
158
+ }
159
+ export interface DeliveryGateEvidence {
160
+ readonly checksPassed: boolean;
161
+ readonly checksCurrent: boolean;
162
+ readonly noBlockingThreads: boolean;
163
+ readonly mergeable: boolean;
164
+ readonly targetSha: CommitSha;
165
+ readonly sourceSha: CommitSha;
166
+ readonly reviews: readonly DeliveryReviewEvidence[];
167
+ }
168
+ export declare function createDeliveryPolicy(draft: DeliveryPolicyDraft): DeliveryPolicy;
169
+ export declare function assertDeliveryPolicy(policy: DeliveryPolicyDraft | DeliveryPolicy): void;
170
+ export declare function assertTargetSha(attempt: DeliveryAttempt, observedTargetSha: CommitSha): void;
171
+ export declare function assertIndependentReview(attempt: Pick<DeliveryAttempt, 'authorActorId' | 'authorAgentIdentityId' | 'authorActorType' | 'source' | 'target'>, review: DeliveryReviewEvidence): void;
172
+ export declare function assertIntermediateMergeGate(policy: DeliveryPolicy, attempt: DeliveryAttempt, evidence: DeliveryGateEvidence): void;
173
+ export declare function assertFinalMergeGate(policy: DeliveryPolicy, attempt: DeliveryAttempt, evidence: DeliveryGateEvidence): void;
174
+ export {};
@@ -0,0 +1,26 @@
1
+ import type { KitCreate } from './kit';
2
+ declare const marketplace: {
3
+ readonly source: 'kitman-engineering-loop';
4
+ readonly publisher: 'Kitman Platform';
5
+ readonly visibility: 'public';
6
+ readonly trusted: true;
7
+ readonly reviewStatus: 'approved';
8
+ readonly installable: true;
9
+ readonly rollout: {
10
+ readonly channel: 'default';
11
+ readonly installDefault: true;
12
+ readonly preservesExistingInstallations: true;
13
+ };
14
+ };
15
+ type EngineeringKit = Omit<KitCreate, 'metadata' | 'kind'> & {
16
+ readonly kind: 'process' | 'technology';
17
+ readonly metadata: {
18
+ readonly marketplace: typeof marketplace;
19
+ };
20
+ };
21
+ export declare const MattPocockProcessKit: EngineeringKit;
22
+ export declare const AddyOsmaniProcessKit: EngineeringKit;
23
+ export declare const PonytailProcessKit: EngineeringKit;
24
+ export declare const EngineeringTechnologyKitCatalog: readonly EngineeringKit[];
25
+ export declare const EngineeringProcessKitCatalog: readonly EngineeringKit[];
26
+ export {};
@@ -0,0 +1,21 @@
1
+ import type { CodeHostCapability } from './integration';
2
+ type EnterpriseCodeHostSetup = {
3
+ readonly provider: 'github' | 'gitlab';
4
+ readonly host: string;
5
+ readonly administratorOwned: boolean;
6
+ readonly allowedHosts: readonly string[];
7
+ readonly tls: {
8
+ readonly verified: boolean;
9
+ readonly customCaRef?: string;
10
+ };
11
+ readonly capabilities: readonly CodeHostCapability[];
12
+ };
13
+ type EnterpriseSupportEvidence = {
14
+ readonly provider: 'github' | 'gitlab';
15
+ readonly host: string;
16
+ readonly capability: CodeHostCapability;
17
+ readonly support: 'certified' | 'detected' | 'unsupported';
18
+ readonly evidenceDigest: string;
19
+ };
20
+ export declare function certifyEnterpriseCodeHostSetup(setup: EnterpriseCodeHostSetup): readonly EnterpriseSupportEvidence[];
21
+ export {};
@@ -0,0 +1,38 @@
1
+ import { type DeliveryPolicy } from './delivery-policy';
2
+ declare const EpicDeliveryFactKinds: readonly ['integration_branch_observed', 'task_branch_observed', 'task_change_request_opened', 'task_intermediate_merged', 'shared_branch_contribution_accepted', 'shared_branch_contribution_lost', 'task_failed', 'task_reverted', 'effect_unknown', 'target_moved', 'review_invalidated', 'final_change_request_opened', 'final_change_request_closed', 'final_merge_reconciled'];
3
+ export type EpicDeliveryFactKind = (typeof EpicDeliveryFactKinds)[number];
4
+ /** The immutable WorkUnit lease tuple required by every delivery mutation. */
5
+ export interface DeliveryWorkUnitFence {
6
+ readonly leaseOwnerId: string;
7
+ readonly runnerReplicaId: string;
8
+ readonly leaseId: string;
9
+ readonly attempt: number;
10
+ readonly fencingToken: string;
11
+ readonly capacitySlot: string;
12
+ readonly leaseExpiresAt: string;
13
+ }
14
+ export interface EpicDeliveryWriterLease {
15
+ readonly key: string;
16
+ readonly workspaceId: string;
17
+ readonly projectId: string;
18
+ readonly epicTaskId: string;
19
+ readonly repoBindingId: string;
20
+ readonly provider: DeliveryPolicy['repositoryIdentity']['provider'];
21
+ readonly host: string;
22
+ readonly providerRepositoryId: string;
23
+ readonly policyDigest: string;
24
+ readonly integrationBranchRef: string;
25
+ readonly integrationBranchSha: string;
26
+ readonly ownerId: string;
27
+ readonly workUnitId: string;
28
+ readonly fence: DeliveryWorkUnitFence;
29
+ readonly resourceVersion: number;
30
+ readonly status: 'held' | 'released';
31
+ readonly expiresAt: string;
32
+ readonly createdAt: string;
33
+ readonly updatedAt: string;
34
+ }
35
+ export type { DeliveryAttempt, DeliveryPolicy } from './delivery-policy';
36
+ export type SafeDeliveryEvidence = {
37
+ readonly [key: string]: string | number | boolean | null;
38
+ };
@@ -0,0 +1,35 @@
1
+ import * as Schema from 'effect/Schema';
2
+ import { SafeJson } from './run';
3
+ export declare const NativeExtensionTarget: Schema.Literals<readonly ["runner_backend", "harness", "sandbox"]>;
4
+ export type NativeExtensionTarget = (typeof NativeExtensionTarget)['Type'];
5
+ /**
6
+ * Authoring-side reference to a namespaced, versioned native extension. Unknown
7
+ * identities stay valid so optional payloads survive round trips until a
8
+ * supporting implementation is selected.
9
+ */
10
+ export declare const NativeExtensionRef: Schema.Struct<{
11
+ readonly extensionId: Schema.String;
12
+ readonly version: Schema.Int;
13
+ readonly policy: Schema.Literals<readonly ["optional", "required"]>;
14
+ readonly requiredCapabilities: Schema.optionalKey<Schema.$Array<Schema.String>>;
15
+ readonly configuration: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Codec<SafeJson, SafeJson, never, never>>>;
16
+ }>;
17
+ export type NativeExtensionRef = (typeof NativeExtensionRef)['Type'];
18
+ /**
19
+ * Implementation-side descriptor. Exported from implementation-specific modules
20
+ * only; generic Agents, Steps, Loops, and Kits never import these values.
21
+ */
22
+ export declare const NativeExtensionDescriptor: Schema.Struct<{
23
+ readonly extensionId: Schema.String;
24
+ readonly version: Schema.Int;
25
+ readonly target: Schema.Literals<readonly ["runner_backend", "harness", "sandbox"]>;
26
+ readonly requiredCapabilities: Schema.$Array<Schema.String>;
27
+ readonly configurationSchema: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Codec<SafeJson, SafeJson, never, never>>>;
28
+ readonly resultSchema: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Codec<SafeJson, SafeJson, never, never>>>;
29
+ readonly observability: Schema.Struct<{
30
+ readonly transcriptPolicy: Schema.Literal<"metadata_only">;
31
+ readonly maxMetadataChars: Schema.optionalKey<Schema.Int>;
32
+ }>;
33
+ }>;
34
+ export type NativeExtensionDescriptor = (typeof NativeExtensionDescriptor)['Type'];
35
+ export declare function nativeExtensionIdentity(ref: Pick<NativeExtensionRef, 'extensionId' | 'version'>): string;
@@ -0,0 +1,313 @@
1
+ import * as Schema from 'effect/Schema';
2
+ import type { JsonValue } from './runtime-type';
3
+ declare const ExternalEffectStates: readonly ['prepared', 'executing', 'confirmed_applied', 'confirmed_absent', 'unknown', 'reconciling', 'manual'];
4
+ declare const EffectIntentKinds: readonly ['start_loop_workflow', 'wake_loop_workflow', 'publish_work_unit', 'schedule_wake', 'reconcile_external_effect', 'publish_live_projection', 'quota_revalidate'];
5
+ declare const EffectIntentPublicationStatuses: readonly ['pending', 'claimed', 'executing', 'applied', 'retryable', 'unknown', 'blocked'];
6
+ declare const EffectReservationPhases: readonly ['claimed', 'executing', 'reconciling', 'settled', 'fenced'];
7
+ declare const EffectObservationKinds: readonly ['provider_response', 'provider_lookup', 'local_not_started_proof', 'publisher_target_read', 'timeout', 'cancellation', 'lease_loss', 'cleanup', 'reservation_claimed'];
8
+ declare const EffectObservationClassifications: readonly ['one_matching', 'none_authoritative', 'ambiguous', 'forbidden', 'unavailable', 'malformed', 'not_started'];
9
+ declare const EffectEvidenceGrades: readonly ['authoritative', 'strong', 'supporting', 'none'];
10
+ declare const EffectLookupModes: readonly ['provider_resource', 'provider_idempotency_key', 'provider_query_fingerprint', 'none'];
11
+ declare const EffectOwnerKinds: readonly ['publisher', 'runner', 'reconciler', 'operator'];
12
+ declare const ExternalEffectState: Schema.Literals<readonly ["prepared", "executing", "confirmed_applied", "confirmed_absent", "unknown", "reconciling", "manual"]>;
13
+ export declare const EffectIntentKind: Schema.Literals<readonly ["start_loop_workflow", "wake_loop_workflow", "publish_work_unit", "schedule_wake", "reconcile_external_effect", "publish_live_projection", "quota_revalidate"]>;
14
+ export declare const EffectIntentPublicationStatus: Schema.Literals<readonly ["pending", "claimed", "executing", "applied", "retryable", "unknown", "blocked"]>;
15
+ export declare const EffectReservationPhase: Schema.Literals<readonly ["claimed", "executing", "reconciling", "settled", "fenced"]>;
16
+ export declare const EffectObservationKind: Schema.Literals<readonly ["provider_response", "provider_lookup", "local_not_started_proof", "publisher_target_read", "timeout", "cancellation", "lease_loss", "cleanup", "reservation_claimed"]>;
17
+ export declare const EffectObservationClassification: Schema.Literals<readonly ["one_matching", "none_authoritative", "ambiguous", "forbidden", "unavailable", "malformed", "not_started"]>;
18
+ export declare const EffectEvidenceGrade: Schema.Literals<readonly ["authoritative", "strong", "supporting", "none"]>;
19
+ export declare const EffectLookupMode: Schema.Literals<readonly ["provider_resource", "provider_idempotency_key", "provider_query_fingerprint", "none"]>;
20
+ export declare const EffectOwnerKind: Schema.Literals<readonly ["publisher", "runner", "reconciler", "operator"]>;
21
+ export declare const ExternalEffectProviderTargetIdentity: Schema.Struct<{
22
+ readonly providerPath: Schema.String;
23
+ readonly providerHostRef: Schema.String;
24
+ readonly accountScopeDigest: Schema.String;
25
+ readonly resourceKind: Schema.String;
26
+ readonly providerResourceId: Schema.optionalKey<Schema.String>;
27
+ readonly repositoryOrProjectId: Schema.optionalKey<Schema.String>;
28
+ readonly refOrBranch: Schema.optionalKey<Schema.String>;
29
+ readonly parentResourceId: Schema.optionalKey<Schema.String>;
30
+ readonly sourceBranch: Schema.optionalKey<Schema.String>;
31
+ readonly targetBranch: Schema.optionalKey<Schema.String>;
32
+ readonly sourceSha: Schema.optionalKey<Schema.String>;
33
+ readonly targetSha: Schema.optionalKey<Schema.String>;
34
+ readonly effectMarker: Schema.optionalKey<Schema.String>;
35
+ readonly targetIdentityVersion: Schema.String;
36
+ }>;
37
+ export declare const ExternalEffectLookupIdentity: Schema.Struct<{
38
+ readonly providerPath: Schema.String;
39
+ readonly providerAdapterVersion: Schema.String;
40
+ readonly accountScopeDigest: Schema.String;
41
+ readonly lookupMode: Schema.Literals<readonly ["provider_resource", "provider_idempotency_key", "provider_query_fingerprint", "none"]>;
42
+ readonly providerTargetIdentity: Schema.Struct<{
43
+ readonly providerPath: Schema.String;
44
+ readonly providerHostRef: Schema.String;
45
+ readonly accountScopeDigest: Schema.String;
46
+ readonly resourceKind: Schema.String;
47
+ readonly providerResourceId: Schema.optionalKey<Schema.String>;
48
+ readonly repositoryOrProjectId: Schema.optionalKey<Schema.String>;
49
+ readonly refOrBranch: Schema.optionalKey<Schema.String>;
50
+ readonly parentResourceId: Schema.optionalKey<Schema.String>;
51
+ readonly sourceBranch: Schema.optionalKey<Schema.String>;
52
+ readonly targetBranch: Schema.optionalKey<Schema.String>;
53
+ readonly sourceSha: Schema.optionalKey<Schema.String>;
54
+ readonly targetSha: Schema.optionalKey<Schema.String>;
55
+ readonly effectMarker: Schema.optionalKey<Schema.String>;
56
+ readonly targetIdentityVersion: Schema.String;
57
+ }>;
58
+ readonly providerIdempotencyKey: Schema.optionalKey<Schema.String>;
59
+ readonly queryFingerprint: Schema.optionalKey<Schema.String>;
60
+ readonly lookupSchemaDigest: Schema.String;
61
+ }>;
62
+ export declare const ExternalEffectProof: Schema.Struct<{
63
+ readonly kind: Schema.Literals<readonly ["provider_response", "provider_lookup", "publisher_target_read"]>;
64
+ readonly classification: Schema.Literals<readonly ["one_matching", "none_authoritative", "ambiguous", "forbidden", "unavailable", "malformed", "not_started"]>;
65
+ readonly requestDigest: Schema.String;
66
+ readonly providerTargetDigest: Schema.String;
67
+ readonly lookupIdentityDigest: Schema.String;
68
+ readonly responseDigest: Schema.optionalKey<Schema.String>;
69
+ readonly evidenceGrade: Schema.Literals<readonly ["authoritative", "strong", "supporting", "none"]>;
70
+ }>;
71
+ export declare const EffectReservationFence: Schema.Struct<{
72
+ readonly reservationId: Schema.String;
73
+ readonly ownerId: Schema.String;
74
+ readonly ownerReplicaId: Schema.optionalKey<Schema.String>;
75
+ readonly attempt: Schema.Finite;
76
+ readonly fencingToken: Schema.String;
77
+ readonly expectedResourceVersion: Schema.Finite;
78
+ }>;
79
+ type ExternalEffectState = (typeof ExternalEffectStates)[number];
80
+ export type EffectIntentKind = (typeof EffectIntentKinds)[number];
81
+ export type EffectIntentPublicationStatus = (typeof EffectIntentPublicationStatuses)[number];
82
+ export type EffectReservationPhase = (typeof EffectReservationPhases)[number];
83
+ export type EffectObservationKind = (typeof EffectObservationKinds)[number];
84
+ export type EffectObservationClassification = (typeof EffectObservationClassifications)[number];
85
+ export type EffectEvidenceGrade = (typeof EffectEvidenceGrades)[number];
86
+ export type EffectLookupMode = (typeof EffectLookupModes)[number];
87
+ export type EffectOwnerKind = (typeof EffectOwnerKinds)[number];
88
+ export type ExternalEffectProviderTargetIdentity = (typeof ExternalEffectProviderTargetIdentity)['Type'];
89
+ export type ExternalEffectLookupIdentity = (typeof ExternalEffectLookupIdentity)['Type'];
90
+ export type ExternalEffectProof = (typeof ExternalEffectProof)['Type'];
91
+ export type EffectReservationFence = (typeof EffectReservationFence)['Type'];
92
+ export interface ExternalEffectOutcome {
93
+ readonly kind: 'applied' | 'absent' | 'unknown' | 'manual';
94
+ readonly observationId?: string;
95
+ readonly reasonCode?: string;
96
+ readonly responseDigest?: string;
97
+ }
98
+ export interface ExternalEffect {
99
+ readonly id: string;
100
+ readonly workspaceId: string;
101
+ readonly projectId: string | null;
102
+ readonly rootRunId: string;
103
+ readonly runId: string;
104
+ readonly workUnitId: string;
105
+ readonly stepKey: string | null;
106
+ readonly participantKey: string | null;
107
+ readonly workUnitKind: string;
108
+ readonly effectSlot: string;
109
+ readonly operationFamily: string;
110
+ readonly snapshotDigest: string;
111
+ readonly authorityDigest: string;
112
+ readonly budgetDigest: string;
113
+ readonly effectKeyDigest: string;
114
+ readonly requestDigest: string;
115
+ readonly providerTargetIdentity: ExternalEffectProviderTargetIdentity;
116
+ readonly providerTargetDigest: string;
117
+ readonly lookupMode: EffectLookupMode;
118
+ readonly lookupIdentity: ExternalEffectLookupIdentity;
119
+ readonly lookupIdentityDigest: string;
120
+ readonly providerIdempotencyKey: string | null;
121
+ readonly providerIdempotencyScope: string | null;
122
+ readonly providerIdempotencyRetentionSeconds: number | null;
123
+ readonly state: ExternalEffectState;
124
+ readonly resourceVersion: number;
125
+ readonly lastReasonCode: string | null;
126
+ readonly currentReservationId: string | null;
127
+ readonly attemptCount: number;
128
+ readonly reconciliationCount: number;
129
+ readonly availableAt: string;
130
+ readonly executeBy: string;
131
+ readonly reservationExpiresAt: string | null;
132
+ readonly reconcileBy: string;
133
+ readonly manualBy: string;
134
+ readonly outcome: ExternalEffectOutcome | null;
135
+ }
136
+ export interface EffectIntent {
137
+ readonly id: string;
138
+ readonly workspaceId: string;
139
+ readonly projectId: string | null;
140
+ readonly kind: EffectIntentKind;
141
+ readonly intentKey: string;
142
+ readonly payloadDigest: string;
143
+ readonly externalEffectId: string | null;
144
+ readonly snapshotDigest: string | null;
145
+ readonly targetRef: EffectTargetReference;
146
+ readonly availableAt: string;
147
+ readonly executeBy: string;
148
+ readonly reconcileBy: string;
149
+ readonly publicationStatus: EffectIntentPublicationStatus;
150
+ readonly resourceVersion: number;
151
+ readonly attemptCount: number;
152
+ readonly currentReservationId: string | null;
153
+ readonly lastReasonCode: string | null;
154
+ }
155
+ export interface EffectReservation {
156
+ readonly id: string;
157
+ readonly workspaceId: string;
158
+ readonly externalEffectId: string | null;
159
+ readonly effectIntentId: string | null;
160
+ readonly attempt: number;
161
+ readonly ownerKind: EffectOwnerKind;
162
+ readonly ownerId: string;
163
+ readonly ownerReplicaId: string | null;
164
+ readonly leaseId: string | null;
165
+ readonly fencingToken: string;
166
+ readonly expectedResourceVersion: number;
167
+ readonly reservedAt: string;
168
+ readonly expiresAt: string;
169
+ readonly releasedAt: string | null;
170
+ readonly phase: EffectReservationPhase;
171
+ readonly reasonCode: string | null;
172
+ }
173
+ export interface EffectObservation {
174
+ readonly id: string;
175
+ readonly workspaceId: string;
176
+ readonly externalEffectId: string | null;
177
+ readonly effectIntentId: string | null;
178
+ readonly reservationId: string | null;
179
+ readonly kind: EffectObservationKind;
180
+ readonly providerPath: string | null;
181
+ readonly accountScopeDigest: string | null;
182
+ readonly adapterVersion: string | null;
183
+ readonly observedAt: string;
184
+ readonly providerTimestamp: string | null;
185
+ readonly classification: EffectObservationClassification | null;
186
+ readonly requestDigest: string | null;
187
+ readonly responseDigest: string | null;
188
+ readonly lookupIdentityDigest: string | null;
189
+ readonly evidenceGrade: EffectEvidenceGrade;
190
+ readonly safeData: EffectObservationEvidence;
191
+ }
192
+ type EffectTargetReference = {
193
+ readonly [field: string]: JsonValue;
194
+ };
195
+ type EffectObservationEvidence = {
196
+ readonly [field: string]: JsonValue;
197
+ };
198
+ type NormalizedProviderRequest = {
199
+ readonly [field: string]: JsonValue;
200
+ };
201
+ interface EffectKeyInput {
202
+ readonly contract: 'external-effect-reconciliation.v1';
203
+ readonly workspaceId: string;
204
+ readonly rootRunId: string;
205
+ readonly runId: string;
206
+ readonly snapshotDigest: string;
207
+ readonly workUnitKind: string;
208
+ readonly stepKey?: string;
209
+ readonly participantKey?: string;
210
+ readonly effectSlot: string;
211
+ readonly operationFamily: string;
212
+ }
213
+ export interface RequestDigestInput {
214
+ readonly contract: 'external-effect-reconciliation.v1';
215
+ readonly providerPath: string;
216
+ readonly providerAdapterVersion: string;
217
+ readonly providerRequestSchemaDigest: string;
218
+ readonly operation: string;
219
+ readonly providerTargetIdentity: ExternalEffectProviderTargetIdentity;
220
+ readonly normalizedRequest: NormalizedProviderRequest;
221
+ readonly secretReferencePlaceholders: readonly string[];
222
+ readonly semanticIdempotencyMode: EffectLookupMode;
223
+ }
224
+ export declare function effectKeyDigest(input: EffectKeyInput): string;
225
+ export declare function requestDigest(input: RequestDigestInput): string;
226
+ export declare function lookupIdentityDigest(input: ExternalEffectLookupIdentity): string;
227
+ export declare function providerTargetDigest(input: ExternalEffectProviderTargetIdentity): string;
228
+ export declare function providerIdempotencyKey(providerPath: string, accountScopeDigest: string, effectKey: string): string;
229
+ declare const ExternalEffectInvariantError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
230
+ readonly _tag: "ExternalEffectInvariantError";
231
+ } & Readonly<A>;
232
+ export declare class ExternalEffectInvariantError extends ExternalEffectInvariantError_base<{
233
+ readonly code: string;
234
+ readonly message: string;
235
+ }> {
236
+ constructor(code: string, message: string);
237
+ }
238
+ type ExternalEffectTransition = {
239
+ readonly kind: 'begin_executing';
240
+ readonly reservation: EffectReservation;
241
+ readonly expectedResourceVersion: number;
242
+ readonly now: string;
243
+ } | {
244
+ readonly kind: 'record_applied';
245
+ readonly reservation: EffectReservation;
246
+ readonly expectedResourceVersion: number;
247
+ readonly proof: ExternalEffectProof;
248
+ readonly now: string;
249
+ } | {
250
+ readonly kind: 'record_absent';
251
+ readonly reservation: EffectReservation;
252
+ readonly expectedResourceVersion: number;
253
+ readonly proof: ExternalEffectProof;
254
+ readonly now: string;
255
+ } | {
256
+ readonly kind: 'record_unknown';
257
+ readonly reservation: EffectReservation;
258
+ readonly expectedResourceVersion: number;
259
+ readonly reasonCode: string;
260
+ readonly now: string;
261
+ } | {
262
+ readonly kind: 'begin_reconciliation';
263
+ readonly reservation: EffectReservation;
264
+ readonly expectedResourceVersion: number;
265
+ readonly now: string;
266
+ } | {
267
+ readonly kind: 'record_lookup';
268
+ readonly reservation: EffectReservation;
269
+ readonly expectedResourceVersion: number;
270
+ readonly proof: ExternalEffectProof;
271
+ readonly now: string;
272
+ } | {
273
+ readonly kind: 'prepare_retry';
274
+ readonly reservation: EffectReservation;
275
+ readonly expectedResourceVersion: number;
276
+ readonly now: string;
277
+ } | {
278
+ readonly kind: 'manual';
279
+ readonly reservation?: EffectReservation;
280
+ readonly expectedResourceVersion: number;
281
+ readonly reasonCode: string;
282
+ readonly now: string;
283
+ };
284
+ export declare function assertExternalEffectProof(effect: ExternalEffect, proof: ExternalEffectProof, classification: EffectObservationClassification): void;
285
+ export declare function transitionExternalEffect(effect: ExternalEffect, transition: ExternalEffectTransition): ExternalEffect;
286
+ type EffectIntentTransition = {
287
+ readonly kind: 'claim';
288
+ readonly reservation: EffectReservation;
289
+ readonly expectedResourceVersion: number;
290
+ } | {
291
+ readonly kind: 'begin_executing';
292
+ readonly reservation: EffectReservation;
293
+ readonly expectedResourceVersion: number;
294
+ } | {
295
+ readonly kind: 'applied';
296
+ readonly reservation: EffectReservation;
297
+ readonly expectedResourceVersion: number;
298
+ } | {
299
+ readonly kind: 'retryable';
300
+ readonly reservation: EffectReservation;
301
+ readonly expectedResourceVersion: number;
302
+ } | {
303
+ readonly kind: 'record_unknown';
304
+ readonly reservation: EffectReservation;
305
+ readonly expectedResourceVersion: number;
306
+ readonly reasonCode: string;
307
+ } | {
308
+ readonly kind: 'blocked';
309
+ readonly expectedResourceVersion: number;
310
+ readonly reasonCode: string;
311
+ };
312
+ export declare function transitionEffectIntent(intent: EffectIntent, transition: EffectIntentTransition): EffectIntent;
313
+ export {};