@treeseed/sdk 0.4.9 → 0.4.10

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 (65) hide show
  1. package/dist/control-plane-client.d.ts +45 -0
  2. package/dist/control-plane-client.js +229 -0
  3. package/dist/control-plane.d.ts +94 -0
  4. package/dist/control-plane.js +125 -0
  5. package/dist/d1-store.d.ts +56 -1
  6. package/dist/d1-store.js +132 -0
  7. package/dist/index.d.ts +11 -1
  8. package/dist/index.js +69 -1
  9. package/dist/operations/services/config-runtime.d.ts +10 -0
  10. package/dist/operations/services/config-runtime.js +60 -2
  11. package/dist/operations/services/deploy.d.ts +95 -0
  12. package/dist/operations/services/deploy.js +350 -9
  13. package/dist/operations/services/github-automation.d.ts +37 -1
  14. package/dist/operations/services/github-automation.js +71 -14
  15. package/dist/operations/services/project-platform.d.ts +835 -0
  16. package/dist/operations/services/project-platform.js +782 -0
  17. package/dist/operations/services/railway-deploy.d.ts +113 -18
  18. package/dist/operations/services/railway-deploy.js +355 -6
  19. package/dist/operations/services/runtime-tools.d.ts +25 -0
  20. package/dist/operations/services/runtime-tools.js +65 -3
  21. package/dist/operations/services/template-registry.d.ts +1 -1
  22. package/dist/operations/services/template-registry.js +17 -3
  23. package/dist/platform/books-data.d.ts +3 -4
  24. package/dist/platform/books-data.js +30 -4
  25. package/dist/platform/contracts.d.ts +55 -2
  26. package/dist/platform/deploy-config.js +109 -4
  27. package/dist/platform/deploy-runtime.d.ts +2 -0
  28. package/dist/platform/deploy-runtime.js +9 -1
  29. package/dist/platform/env.yaml +677 -0
  30. package/dist/platform/environment.js +57 -2
  31. package/dist/platform/plugin.d.ts +8 -0
  32. package/dist/platform/plugins/constants.d.ts +2 -0
  33. package/dist/platform/plugins/constants.js +2 -0
  34. package/dist/platform/plugins/runtime.d.ts +2 -0
  35. package/dist/platform/plugins/runtime.js +9 -1
  36. package/dist/platform/plugins.d.ts +1 -1
  37. package/dist/platform/plugins.js +4 -0
  38. package/dist/platform/published-content-pipeline.d.ts +84 -0
  39. package/dist/platform/published-content-pipeline.js +543 -0
  40. package/dist/platform/published-content.d.ts +223 -0
  41. package/dist/platform/published-content.js +588 -0
  42. package/dist/platform/tenant/runtime-config.d.ts +1 -1
  43. package/dist/platform/tenant/runtime-config.js +34 -1
  44. package/dist/platform/tenant-config.d.ts +2 -1
  45. package/dist/platform/tenant-config.js +17 -1
  46. package/dist/platform/utils/site-config-schema.js +104 -0
  47. package/dist/plugin-default.d.ts +2 -0
  48. package/dist/plugin-default.js +2 -0
  49. package/dist/scripts/check-build-warnings.js +50 -0
  50. package/dist/scripts/config-treeseed.js +7 -0
  51. package/dist/scripts/tenant-workflow-action.js +71 -0
  52. package/dist/sdk-types.d.ts +442 -3
  53. package/dist/sdk-types.js +37 -1
  54. package/dist/sdk.d.ts +11 -1
  55. package/dist/sdk.js +40 -0
  56. package/dist/stores/operational-store.d.ts +22 -2
  57. package/dist/stores/operational-store.js +235 -0
  58. package/dist/template-catalog.js +8 -1
  59. package/dist/treeseed/template-catalog/templates/starter-basic/template/treeseed.site.yaml +20 -0
  60. package/dist/types/cloudflare.d.ts +23 -0
  61. package/dist/workflow/operations.d.ts +12 -3
  62. package/dist/workflow/policy.d.ts +1 -1
  63. package/package.json +7 -2
  64. package/templates/github/deploy.workflow.yml +442 -0
  65. package/templates/github/hosted-project.workflow.yml +77 -0
@@ -7,10 +7,18 @@ export declare const SDK_DISPATCH_EXECUTION_CLASSES: readonly ["local_only", "re
7
7
  export declare const SDK_DISPATCH_TARGETS: readonly ["local", "project_api", "project_runner", "market_catalog"];
8
8
  export declare const SDK_DISPATCH_POLICIES: readonly ["auto", "prefer_local", "prefer_remote", "remote_only"];
9
9
  export declare const SDK_DISPATCH_NAMESPACES: readonly ["sdk", "workflow"];
10
+ export declare const TREESEED_HOSTING_KINDS: readonly ["market_control_plane", "hosted_project", "self_hosted_project"];
11
+ export declare const TREESEED_HOSTING_REGISTRATIONS: readonly ["optional", "none"];
10
12
  export declare const PROJECT_CONNECTION_MODES: readonly ["hosted", "self_hosted", "hybrid"];
11
13
  export declare const PROJECT_RUNNER_REGISTRATION_STATES: readonly ["pending", "registered", "offline"];
12
14
  export declare const PROJECT_EXECUTION_OWNERS: readonly ["project_api", "project_runner", "market"];
13
15
  export declare const REMOTE_JOB_STATUSES: readonly ["pending", "claimed", "running", "completed", "failed", "cancelled"];
16
+ export declare const PROJECT_ENVIRONMENT_NAMES: readonly ["local", "staging", "prod"];
17
+ export declare const PROJECT_DEPLOYMENT_KINDS: readonly ["provision", "code", "content", "mixed"];
18
+ export declare const PROJECT_DEPLOYMENT_STATUSES: readonly ["pending", "running", "succeeded", "failed", "cancelled"];
19
+ export declare const PROJECT_INFRA_RESOURCE_PROVIDERS: readonly ["cloudflare", "railway", "github", "market"];
20
+ export declare const PROJECT_INFRA_RESOURCE_KINDS: readonly ["pages", "worker", "r2", "d1", "queue", "dlq", "railway_project", "railway_service", "railway_schedule"];
21
+ export declare const AGENT_POOL_STATUSES: readonly ["pending", "active", "degraded", "offline"];
14
22
  export type SdkBuiltinModelName = (typeof SDK_MODEL_NAMES)[number];
15
23
  export type SdkModelName = SdkBuiltinModelName | (string & {});
16
24
  export type SdkOperation = (typeof SDK_OPERATIONS)[number];
@@ -21,11 +29,20 @@ export type SdkDispatchExecutionClass = (typeof SDK_DISPATCH_EXECUTION_CLASSES)[
21
29
  export type SdkDispatchTarget = (typeof SDK_DISPATCH_TARGETS)[number];
22
30
  export type SdkDispatchPolicy = (typeof SDK_DISPATCH_POLICIES)[number];
23
31
  export type SdkDispatchNamespace = (typeof SDK_DISPATCH_NAMESPACES)[number];
32
+ export type TreeseedHostingKind = (typeof TREESEED_HOSTING_KINDS)[number];
33
+ export type TreeseedHostingRegistration = (typeof TREESEED_HOSTING_REGISTRATIONS)[number];
24
34
  export type ProjectConnectionMode = (typeof PROJECT_CONNECTION_MODES)[number];
25
35
  export type ProjectRunnerRegistrationState = (typeof PROJECT_RUNNER_REGISTRATION_STATES)[number];
26
36
  export type ProjectExecutionOwner = (typeof PROJECT_EXECUTION_OWNERS)[number];
27
37
  export type RemoteJobStatus = (typeof REMOTE_JOB_STATUSES)[number];
38
+ export type ProjectEnvironmentName = (typeof PROJECT_ENVIRONMENT_NAMES)[number];
39
+ export type ProjectDeploymentKind = (typeof PROJECT_DEPLOYMENT_KINDS)[number];
40
+ export type ProjectDeploymentStatus = (typeof PROJECT_DEPLOYMENT_STATUSES)[number];
41
+ export type ProjectInfrastructureResourceProvider = (typeof PROJECT_INFRA_RESOURCE_PROVIDERS)[number];
42
+ export type ProjectInfrastructureResourceKind = (typeof PROJECT_INFRA_RESOURCE_KINDS)[number];
43
+ export type AgentPoolStatus = (typeof AGENT_POOL_STATUSES)[number];
28
44
  export type RemoteJobRequestedByType = 'user' | 'team_api_key' | 'service' | 'runner' | 'system';
45
+ export declare function projectConnectionModeFromHosting(kind: TreeseedHostingKind, registration?: TreeseedHostingRegistration): ProjectConnectionMode;
29
46
  export interface SdkDispatchCapability {
30
47
  namespace: SdkDispatchNamespace;
31
48
  operation: string;
@@ -48,6 +65,266 @@ export interface ProjectConnection {
48
65
  updatedAt: string;
49
66
  metadata?: Record<string, unknown>;
50
67
  }
68
+ export type CatalogItemOfferMode = 'free' | 'paid' | 'contact' | 'one_time_current_version' | 'subscription_updates' | 'private';
69
+ export interface TeamStorageLocator {
70
+ id: string;
71
+ teamId: string;
72
+ bucketName: string;
73
+ manifestKeyTemplate: string;
74
+ previewRootTemplate: string;
75
+ publicBaseUrl: string | null;
76
+ metadata?: Record<string, unknown>;
77
+ createdAt: string;
78
+ updatedAt: string;
79
+ }
80
+ export interface CatalogItem {
81
+ id: string;
82
+ teamId: string;
83
+ kind: string;
84
+ slug: string;
85
+ title: string;
86
+ summary: string | null;
87
+ visibility: 'public' | 'authenticated' | 'team' | 'private';
88
+ listingEnabled: boolean;
89
+ offerMode: CatalogItemOfferMode;
90
+ manifestKey: string | null;
91
+ artifactKey: string | null;
92
+ searchText: string | null;
93
+ metadata?: Record<string, unknown>;
94
+ createdAt: string;
95
+ updatedAt: string;
96
+ }
97
+ export interface CatalogArtifactVersion {
98
+ id: string;
99
+ itemId: string;
100
+ teamId: string;
101
+ kind: string;
102
+ version: string;
103
+ contentKey: string;
104
+ manifestKey: string | null;
105
+ metadata?: Record<string, unknown>;
106
+ publishedAt: string;
107
+ createdAt: string;
108
+ updatedAt: string;
109
+ }
110
+ export interface ProjectHosting {
111
+ id: string;
112
+ projectId: string;
113
+ kind: TreeseedHostingKind;
114
+ registration: TreeseedHostingRegistration;
115
+ marketBaseUrl: string | null;
116
+ sourceRepoOwner: string | null;
117
+ sourceRepoName: string | null;
118
+ sourceRepoUrl: string | null;
119
+ sourceRepoWorkflowPath: string | null;
120
+ metadata?: Record<string, unknown>;
121
+ createdAt: string;
122
+ updatedAt: string;
123
+ }
124
+ export interface ProjectEnvironment {
125
+ id: string;
126
+ projectId: string;
127
+ environment: ProjectEnvironmentName;
128
+ deploymentProfile: TreeseedHostingKind;
129
+ baseUrl: string | null;
130
+ cloudflareAccountId: string | null;
131
+ pagesProjectName: string | null;
132
+ workerName: string | null;
133
+ r2BucketName: string | null;
134
+ d1DatabaseName: string | null;
135
+ queueName: string | null;
136
+ railwayProjectName: string | null;
137
+ metadata?: Record<string, unknown>;
138
+ createdAt: string;
139
+ updatedAt: string;
140
+ }
141
+ export interface ProjectInfrastructureResource {
142
+ id: string;
143
+ projectId: string;
144
+ environment: ProjectEnvironmentName;
145
+ provider: ProjectInfrastructureResourceProvider;
146
+ resourceKind: ProjectInfrastructureResourceKind;
147
+ logicalName: string;
148
+ locator: string | null;
149
+ metadata?: Record<string, unknown>;
150
+ createdAt: string;
151
+ updatedAt: string;
152
+ }
153
+ export interface ProjectDeployment {
154
+ id: string;
155
+ projectId: string;
156
+ environment: ProjectEnvironmentName;
157
+ deploymentKind: ProjectDeploymentKind;
158
+ status: ProjectDeploymentStatus;
159
+ sourceRef: string | null;
160
+ releaseTag: string | null;
161
+ commitSha: string | null;
162
+ triggeredByType: string | null;
163
+ triggeredById: string | null;
164
+ metadata?: Record<string, unknown>;
165
+ startedAt: string | null;
166
+ finishedAt: string | null;
167
+ createdAt: string;
168
+ updatedAt: string;
169
+ }
170
+ export interface AgentPoolAutoscalePolicy {
171
+ minWorkers: number;
172
+ maxWorkers: number;
173
+ targetQueueDepth: number;
174
+ cooldownSeconds: number;
175
+ }
176
+ export interface AgentPool {
177
+ id: string;
178
+ projectId: string;
179
+ teamId: string;
180
+ environment: ProjectEnvironmentName;
181
+ name: string;
182
+ registrationIdentity: string | null;
183
+ serviceBaseUrl: string | null;
184
+ status: AgentPoolStatus;
185
+ autoscale: AgentPoolAutoscalePolicy;
186
+ metadata?: Record<string, unknown>;
187
+ createdAt: string;
188
+ updatedAt: string;
189
+ }
190
+ export interface AgentPoolRegistration {
191
+ id: string;
192
+ poolId: string;
193
+ projectId: string;
194
+ runnerId: string | null;
195
+ managerId: string | null;
196
+ serviceName: string | null;
197
+ heartbeatAt: string;
198
+ desiredWorkers: number | null;
199
+ observedQueueDepth: number | null;
200
+ observedActiveLeases: number | null;
201
+ metadata?: Record<string, unknown>;
202
+ createdAt: string;
203
+ updatedAt: string;
204
+ }
205
+ export interface AgentPoolScaleDecision {
206
+ id: string;
207
+ poolId: string;
208
+ projectId: string;
209
+ environment: ProjectEnvironmentName;
210
+ desiredWorkers: number;
211
+ observedQueueDepth: number;
212
+ observedActiveLeases: number;
213
+ workDayId: string | null;
214
+ reason: string;
215
+ metadata?: Record<string, unknown>;
216
+ createdAt: string;
217
+ updatedAt: string;
218
+ }
219
+ export interface WorkdayWindow {
220
+ days: number[];
221
+ startTime: string;
222
+ endTime: string;
223
+ }
224
+ export interface WorkdaySchedule {
225
+ timezone: string;
226
+ windows: WorkdayWindow[];
227
+ }
228
+ export interface TaskCreditWeight {
229
+ id?: string;
230
+ taskType?: string | null;
231
+ agentId?: string | null;
232
+ handler?: string | null;
233
+ credits: number;
234
+ }
235
+ export interface TaskCreditBudget {
236
+ dailyLimit: number;
237
+ used: number;
238
+ remaining: number;
239
+ maxQueuedTasks: number;
240
+ maxQueuedCredits: number;
241
+ }
242
+ export interface WorkdayPolicy {
243
+ projectId: string;
244
+ environment: ProjectEnvironmentName | 'local';
245
+ schedule: WorkdaySchedule;
246
+ dailyTaskCreditBudget: number;
247
+ maxQueuedTasks: number;
248
+ maxQueuedCredits: number;
249
+ autoscale: AgentPoolAutoscalePolicy;
250
+ creditWeights: TaskCreditWeight[];
251
+ metadata?: Record<string, unknown>;
252
+ }
253
+ export interface PrioritySnapshotItem {
254
+ model: string;
255
+ id: string;
256
+ slug?: string | null;
257
+ title?: string | null;
258
+ priority: number;
259
+ estimatedCredits: number;
260
+ reasons: string[];
261
+ metadata?: Record<string, unknown>;
262
+ }
263
+ export interface PrioritySnapshot {
264
+ id: string;
265
+ projectId: string;
266
+ workDayId: string | null;
267
+ generatedAt: string;
268
+ items: PrioritySnapshotItem[];
269
+ metadata?: Record<string, unknown>;
270
+ }
271
+ export interface PriorityOverride {
272
+ id: string;
273
+ projectId: string;
274
+ model: string;
275
+ subjectId: string;
276
+ priority: number;
277
+ estimatedCredits: number | null;
278
+ metadata?: Record<string, unknown>;
279
+ createdAt: string;
280
+ updatedAt: string;
281
+ }
282
+ export interface TaskCreditLedgerEntry {
283
+ id: string;
284
+ projectId: string;
285
+ workDayId: string;
286
+ taskId: string | null;
287
+ phase: 'seed' | 'settle' | 'refund';
288
+ credits: number;
289
+ metadata?: Record<string, unknown>;
290
+ createdAt: string;
291
+ }
292
+ export interface ProjectWorkdaySummary {
293
+ id: string;
294
+ projectId: string;
295
+ environment: ProjectEnvironmentName | 'local';
296
+ workDayId: string;
297
+ kind: string;
298
+ state: string | null;
299
+ startedAt: string | null;
300
+ endedAt: string | null;
301
+ summary: Record<string, unknown>;
302
+ metadata?: Record<string, unknown>;
303
+ createdAt: string;
304
+ updatedAt: string;
305
+ }
306
+ export interface ScaleDecision {
307
+ id: string;
308
+ projectId: string;
309
+ environment: ProjectEnvironmentName | 'local';
310
+ poolName: string;
311
+ workDayId: string | null;
312
+ desiredWorkers: number;
313
+ observedQueueDepth: number;
314
+ observedActiveLeases: number;
315
+ reason: string;
316
+ metadata?: Record<string, unknown>;
317
+ createdAt: string;
318
+ }
319
+ export interface WorkerPoolScaleResult {
320
+ applied: boolean;
321
+ provider: string;
322
+ desiredWorkers: number;
323
+ metadata?: Record<string, unknown>;
324
+ }
325
+ export interface WorkerPoolScaler {
326
+ scale(decision: ScaleDecision): Promise<WorkerPoolScaleResult>;
327
+ }
51
328
  export interface ProjectCapabilityGrant {
52
329
  id: string;
53
330
  projectId: string;
@@ -737,6 +1014,159 @@ export interface SdkStartWorkDayRequest {
737
1014
  summary?: Record<string, unknown> | null;
738
1015
  actor: string;
739
1016
  }
1017
+ export interface SdkUpsertWorkPolicyRequest {
1018
+ projectId: string;
1019
+ environment: ProjectEnvironmentName | 'local';
1020
+ schedule: WorkdaySchedule;
1021
+ dailyTaskCreditBudget: number;
1022
+ maxQueuedTasks: number;
1023
+ maxQueuedCredits: number;
1024
+ autoscale: AgentPoolAutoscalePolicy;
1025
+ creditWeights?: TaskCreditWeight[];
1026
+ metadata?: Record<string, unknown> | null;
1027
+ }
1028
+ export interface UpsertProjectHostingRequest {
1029
+ kind: TreeseedHostingKind;
1030
+ registration?: TreeseedHostingRegistration;
1031
+ marketBaseUrl?: string | null;
1032
+ sourceRepoOwner?: string | null;
1033
+ sourceRepoName?: string | null;
1034
+ sourceRepoUrl?: string | null;
1035
+ sourceRepoWorkflowPath?: string | null;
1036
+ projectApiBaseUrl?: string | null;
1037
+ executionOwner?: ProjectExecutionOwner | null;
1038
+ metadata?: Record<string, unknown> | null;
1039
+ }
1040
+ export interface UpsertProjectEnvironmentRequest {
1041
+ deploymentProfile?: TreeseedHostingKind;
1042
+ baseUrl?: string | null;
1043
+ cloudflareAccountId?: string | null;
1044
+ pagesProjectName?: string | null;
1045
+ workerName?: string | null;
1046
+ r2BucketName?: string | null;
1047
+ d1DatabaseName?: string | null;
1048
+ queueName?: string | null;
1049
+ railwayProjectName?: string | null;
1050
+ metadata?: Record<string, unknown> | null;
1051
+ }
1052
+ export interface UpsertProjectInfrastructureResourceRequest {
1053
+ id?: string;
1054
+ environment: ProjectEnvironmentName;
1055
+ provider: ProjectInfrastructureResourceProvider;
1056
+ resourceKind: ProjectInfrastructureResourceKind;
1057
+ logicalName: string;
1058
+ locator?: string | null;
1059
+ metadata?: Record<string, unknown> | null;
1060
+ }
1061
+ export interface CreateProjectDeploymentRequest {
1062
+ id?: string;
1063
+ environment: ProjectEnvironmentName;
1064
+ deploymentKind: ProjectDeploymentKind;
1065
+ status?: ProjectDeploymentStatus;
1066
+ sourceRef?: string | null;
1067
+ releaseTag?: string | null;
1068
+ commitSha?: string | null;
1069
+ triggeredByType?: string | null;
1070
+ triggeredById?: string | null;
1071
+ metadata?: Record<string, unknown> | null;
1072
+ startedAt?: string | null;
1073
+ finishedAt?: string | null;
1074
+ }
1075
+ export interface UpsertAgentPoolRequest {
1076
+ id?: string;
1077
+ teamId: string;
1078
+ environment: ProjectEnvironmentName;
1079
+ name: string;
1080
+ registrationIdentity?: string | null;
1081
+ serviceBaseUrl?: string | null;
1082
+ status?: AgentPoolStatus;
1083
+ autoscale?: Partial<AgentPoolAutoscalePolicy> | null;
1084
+ metadata?: Record<string, unknown> | null;
1085
+ }
1086
+ export interface RecordAgentPoolRegistrationRequest {
1087
+ poolId: string;
1088
+ id?: string;
1089
+ runnerId?: string | null;
1090
+ managerId?: string | null;
1091
+ serviceName?: string | null;
1092
+ heartbeatAt?: string | null;
1093
+ desiredWorkers?: number | null;
1094
+ observedQueueDepth?: number | null;
1095
+ observedActiveLeases?: number | null;
1096
+ metadata?: Record<string, unknown> | null;
1097
+ }
1098
+ export interface CatalogItemFilters {
1099
+ kind?: string;
1100
+ teamId?: string;
1101
+ slug?: string;
1102
+ }
1103
+ export interface UpsertCatalogItemRequest {
1104
+ id?: string;
1105
+ kind: string;
1106
+ slug: string;
1107
+ title: string;
1108
+ summary?: string | null;
1109
+ visibility?: CatalogItem['visibility'];
1110
+ listingEnabled?: boolean;
1111
+ offerMode?: CatalogItemOfferMode;
1112
+ manifestKey?: string | null;
1113
+ artifactKey?: string | null;
1114
+ searchText?: string | null;
1115
+ metadata?: Record<string, unknown> | null;
1116
+ }
1117
+ export interface UpsertCatalogArtifactVersionRequest {
1118
+ id?: string;
1119
+ kind: string;
1120
+ version: string;
1121
+ contentKey: string;
1122
+ manifestKey?: string | null;
1123
+ metadata?: Record<string, unknown> | null;
1124
+ publishedAt?: string | null;
1125
+ }
1126
+ export interface UpsertTeamStorageLocatorRequest {
1127
+ bucketName: string;
1128
+ manifestKeyTemplate: string;
1129
+ previewRootTemplate: string;
1130
+ publicBaseUrl?: string | null;
1131
+ metadata?: Record<string, unknown> | null;
1132
+ }
1133
+ export interface SdkPriorityOverrideRequest {
1134
+ id?: string;
1135
+ projectId: string;
1136
+ model: string;
1137
+ subjectId: string;
1138
+ priority: number;
1139
+ estimatedCredits?: number | null;
1140
+ metadata?: Record<string, unknown> | null;
1141
+ }
1142
+ export interface SdkCreatePrioritySnapshotRequest {
1143
+ id?: string;
1144
+ projectId: string;
1145
+ workDayId?: string | null;
1146
+ items: PrioritySnapshotItem[];
1147
+ metadata?: Record<string, unknown> | null;
1148
+ }
1149
+ export interface SdkRecordTaskCreditsRequest {
1150
+ id?: string;
1151
+ projectId: string;
1152
+ workDayId: string;
1153
+ taskId?: string | null;
1154
+ phase: 'seed' | 'settle' | 'refund';
1155
+ credits: number;
1156
+ metadata?: Record<string, unknown> | null;
1157
+ }
1158
+ export interface SdkRecordScaleDecisionRequest {
1159
+ id?: string;
1160
+ projectId: string;
1161
+ environment: ProjectEnvironmentName | 'local';
1162
+ poolName: string;
1163
+ workDayId?: string | null;
1164
+ desiredWorkers: number;
1165
+ observedQueueDepth: number;
1166
+ observedActiveLeases: number;
1167
+ reason: string;
1168
+ metadata?: Record<string, unknown> | null;
1169
+ }
740
1170
  export interface SdkCloseWorkDayRequest {
741
1171
  id: string;
742
1172
  state?: 'completed' | 'cancelled' | 'failed';
@@ -886,13 +1316,22 @@ export interface SdkTemplateCatalogPublisher {
886
1316
  name: string;
887
1317
  url?: string;
888
1318
  }
889
- export interface SdkTemplateCatalogSource {
1319
+ export interface SdkTemplateCatalogGitSource {
890
1320
  kind: 'git';
891
1321
  repoUrl: string;
892
1322
  directory: string;
893
1323
  ref: string;
894
1324
  integrity?: string;
895
1325
  }
1326
+ export interface SdkTemplateCatalogR2Source {
1327
+ kind: 'r2';
1328
+ bucket?: string;
1329
+ objectKey: string;
1330
+ version: string;
1331
+ publicUrl?: string;
1332
+ integrity?: string;
1333
+ }
1334
+ export type SdkTemplateCatalogSource = SdkTemplateCatalogGitSource | SdkTemplateCatalogR2Source;
896
1335
  export interface SdkTemplateCatalogEntry {
897
1336
  id: string;
898
1337
  displayName: string;
@@ -910,13 +1349,13 @@ export interface SdkTemplateCatalogEntry {
910
1349
  minCliVersion: string;
911
1350
  minCoreVersion?: string;
912
1351
  fulfillment: {
913
- mode?: 'packaged' | 'git';
1352
+ mode?: 'packaged' | 'git' | 'r2';
914
1353
  source: SdkTemplateCatalogSource;
915
1354
  hooksPolicy: 'builtin_only' | 'trusted_only' | 'disabled';
916
1355
  supportsReconcile: boolean;
917
1356
  };
918
1357
  offer?: {
919
- priceModel?: 'free' | 'paid' | 'contact';
1358
+ priceModel?: 'free' | 'paid' | 'contact' | 'one_time_current_version' | 'subscription_updates' | 'private';
920
1359
  license?: string;
921
1360
  support?: string;
922
1361
  };
package/dist/sdk-types.js CHANGED
@@ -26,13 +26,46 @@ const SDK_DISPATCH_EXECUTION_CLASSES = ["local_only", "remote_inline", "remote_j
26
26
  const SDK_DISPATCH_TARGETS = ["local", "project_api", "project_runner", "market_catalog"];
27
27
  const SDK_DISPATCH_POLICIES = ["auto", "prefer_local", "prefer_remote", "remote_only"];
28
28
  const SDK_DISPATCH_NAMESPACES = ["sdk", "workflow"];
29
+ const TREESEED_HOSTING_KINDS = ["market_control_plane", "hosted_project", "self_hosted_project"];
30
+ const TREESEED_HOSTING_REGISTRATIONS = ["optional", "none"];
29
31
  const PROJECT_CONNECTION_MODES = ["hosted", "self_hosted", "hybrid"];
30
32
  const PROJECT_RUNNER_REGISTRATION_STATES = ["pending", "registered", "offline"];
31
33
  const PROJECT_EXECUTION_OWNERS = ["project_api", "project_runner", "market"];
32
34
  const REMOTE_JOB_STATUSES = ["pending", "claimed", "running", "completed", "failed", "cancelled"];
35
+ const PROJECT_ENVIRONMENT_NAMES = ["local", "staging", "prod"];
36
+ const PROJECT_DEPLOYMENT_KINDS = ["provision", "code", "content", "mixed"];
37
+ const PROJECT_DEPLOYMENT_STATUSES = ["pending", "running", "succeeded", "failed", "cancelled"];
38
+ const PROJECT_INFRA_RESOURCE_PROVIDERS = ["cloudflare", "railway", "github", "market"];
39
+ const PROJECT_INFRA_RESOURCE_KINDS = [
40
+ "pages",
41
+ "worker",
42
+ "r2",
43
+ "d1",
44
+ "queue",
45
+ "dlq",
46
+ "railway_project",
47
+ "railway_service",
48
+ "railway_schedule"
49
+ ];
50
+ const AGENT_POOL_STATUSES = ["pending", "active", "degraded", "offline"];
51
+ function projectConnectionModeFromHosting(kind, registration = "none") {
52
+ if (kind === "hosted_project") {
53
+ return "hosted";
54
+ }
55
+ if (kind === "self_hosted_project") {
56
+ return registration === "optional" ? "hybrid" : "self_hosted";
57
+ }
58
+ return "hosted";
59
+ }
33
60
  export {
61
+ AGENT_POOL_STATUSES,
34
62
  PROJECT_CONNECTION_MODES,
63
+ PROJECT_DEPLOYMENT_KINDS,
64
+ PROJECT_DEPLOYMENT_STATUSES,
65
+ PROJECT_ENVIRONMENT_NAMES,
35
66
  PROJECT_EXECUTION_OWNERS,
67
+ PROJECT_INFRA_RESOURCE_KINDS,
68
+ PROJECT_INFRA_RESOURCE_PROVIDERS,
36
69
  PROJECT_RUNNER_REGISTRATION_STATES,
37
70
  REMOTE_JOB_STATUSES,
38
71
  SDK_DISPATCH_EXECUTION_CLASSES,
@@ -42,5 +75,8 @@ export {
42
75
  SDK_MODEL_NAMES,
43
76
  SDK_OPERATIONS,
44
77
  SDK_PICK_STRATEGIES,
45
- SDK_STORAGE_BACKENDS
78
+ SDK_STORAGE_BACKENDS,
79
+ TREESEED_HOSTING_KINDS,
80
+ TREESEED_HOSTING_REGISTRATIONS,
81
+ projectConnectionModeFromHosting
46
82
  };
package/dist/sdk.d.ts CHANGED
@@ -2,7 +2,7 @@ import type { AgentPermissionConfig, AgentRuntimeSpec } from './types/agents.ts'
2
2
  import { ContentStore } from './content-store.ts';
3
3
  import { type AgentDatabase } from './d1-store.ts';
4
4
  import { type LoadedTreeseedPluginEntry } from './platform/plugins.ts';
5
- import type { SdkAckMessageRequest, SdkClaimMessageRequest, SdkClaimTaskRequest, SdkCloseWorkDayRequest, SdkCompleteTaskRequest, SdkCreateReportRequest, SdkCreateMessageRequest, SdkCreateTaskRequest, SdkCursorRequest, SdkFailTaskRequest, SdkFollowRequest, SdkGetRequest, SdkGetCursorRequest, SdkJsonEnvelope, SdkLeaseReleaseRequest, SdkManagerContextPayload, SdkMutationRequest, SdkGraphQueryOptions, SdkGraphQueryRequest, SdkGraphRefreshRequest, SdkGraphSearchOptions, SdkContextPackRequest, SdkGraphDslParseResult, SdkPickRequest, SdkRecordRunRequest, SdkSearchRequest, SdkStartWorkDayRequest, SdkTaskProgressRequest, SdkTaskSearchRequest, SdkUpdateRequest, SdkModelDefinition, SdkModelRegistry, SdkGraphRankingProvider, SdkDispatchConfig, SdkDispatchRequest, SdkDispatchResult } from './sdk-types.ts';
5
+ import type { SdkAckMessageRequest, SdkClaimMessageRequest, SdkClaimTaskRequest, SdkCloseWorkDayRequest, SdkCompleteTaskRequest, SdkCreateReportRequest, SdkCreateMessageRequest, SdkCreatePrioritySnapshotRequest, SdkCreateTaskRequest, SdkCursorRequest, SdkFailTaskRequest, SdkFollowRequest, SdkGetRequest, SdkGetCursorRequest, SdkJsonEnvelope, SdkLeaseReleaseRequest, SdkManagerContextPayload, SdkMutationRequest, SdkGraphQueryOptions, SdkGraphQueryRequest, SdkGraphRefreshRequest, SdkGraphSearchOptions, SdkContextPackRequest, SdkGraphDslParseResult, SdkPickRequest, SdkPriorityOverrideRequest, SdkRecordRunRequest, SdkRecordScaleDecisionRequest, SdkRecordTaskCreditsRequest, SdkSearchRequest, SdkStartWorkDayRequest, SdkTaskProgressRequest, SdkTaskSearchRequest, SdkUpsertWorkPolicyRequest, SdkUpdateRequest, SdkModelDefinition, SdkModelRegistry, SdkGraphRankingProvider, SdkDispatchConfig, SdkDispatchRequest, SdkDispatchResult, PrioritySnapshot, ScaleDecision, TaskCreditLedgerEntry, WorkdayPolicy } from './sdk-types.ts';
6
6
  export interface AgentSdkOptions {
7
7
  repoRoot?: string;
8
8
  database?: AgentDatabase;
@@ -85,6 +85,16 @@ export declare class AgentSdk {
85
85
  searchTasks(request: SdkTaskSearchRequest): Promise<SdkJsonEnvelope<import("./sdk-types.ts").SdkTaskEntity[]>>;
86
86
  createReport(request: SdkCreateReportRequest): Promise<SdkJsonEnvelope<import("./sdk-types.ts").SdkReportEntity | null>>;
87
87
  getManagerContext(taskId: string): Promise<SdkJsonEnvelope<SdkManagerContextPayload>>;
88
+ getWorkPolicy(projectId: string, environment?: string): Promise<SdkJsonEnvelope<WorkdayPolicy>>;
89
+ upsertWorkPolicy(request: SdkUpsertWorkPolicyRequest): Promise<SdkJsonEnvelope<WorkdayPolicy>>;
90
+ listPriorityOverrides(projectId: string): Promise<SdkJsonEnvelope<Record<string, unknown>[]>>;
91
+ upsertPriorityOverride(request: SdkPriorityOverrideRequest): Promise<SdkJsonEnvelope<Record<string, unknown> | null>>;
92
+ createPrioritySnapshot(request: SdkCreatePrioritySnapshotRequest): Promise<SdkJsonEnvelope<PrioritySnapshot>>;
93
+ getLatestPrioritySnapshot(projectId: string, workDayId?: string | null): Promise<SdkJsonEnvelope<PrioritySnapshot>>;
94
+ recordTaskCredits(request: SdkRecordTaskCreditsRequest): Promise<SdkJsonEnvelope<TaskCreditLedgerEntry>>;
95
+ listTaskCredits(workDayId: string): Promise<SdkJsonEnvelope<TaskCreditLedgerEntry[]>>;
96
+ recordScaleDecision(request: SdkRecordScaleDecisionRequest): Promise<SdkJsonEnvelope<ScaleDecision>>;
97
+ getLatestScaleDecision(projectId: string, environment: string, poolName: string): Promise<SdkJsonEnvelope<ScaleDecision>>;
88
98
  listAgentSpecs(options?: {
89
99
  enabled?: boolean;
90
100
  }): Promise<AgentRuntimeSpec[]>;
package/dist/sdk.js CHANGED
@@ -261,6 +261,46 @@ class AgentSdk {
261
261
  const payload = await this.database.getManagerContext(taskId);
262
262
  return this.envelope("task", "get", payload);
263
263
  }
264
+ async getWorkPolicy(projectId, environment = "local") {
265
+ const payload = await this.database.getWorkPolicy(projectId, environment);
266
+ return this.envelope("work_day", "get", payload);
267
+ }
268
+ async upsertWorkPolicy(request) {
269
+ const payload = await this.database.upsertWorkPolicy(request);
270
+ return this.envelope("work_day", "update", payload);
271
+ }
272
+ async listPriorityOverrides(projectId) {
273
+ const payload = await this.database.listPriorityOverrides(projectId);
274
+ return this.envelope("task", "search", payload, { count: payload.length });
275
+ }
276
+ async upsertPriorityOverride(request) {
277
+ const payload = await this.database.upsertPriorityOverride(request);
278
+ return this.envelope("task", "update", payload);
279
+ }
280
+ async createPrioritySnapshot(request) {
281
+ const payload = await this.database.createPrioritySnapshot(request);
282
+ return this.envelope("report", "create", payload);
283
+ }
284
+ async getLatestPrioritySnapshot(projectId, workDayId) {
285
+ const payload = await this.database.getLatestPrioritySnapshot(projectId, workDayId);
286
+ return this.envelope("report", "get", payload);
287
+ }
288
+ async recordTaskCredits(request) {
289
+ const payload = await this.database.recordTaskCredits(request);
290
+ return this.envelope("report", "create", payload);
291
+ }
292
+ async listTaskCredits(workDayId) {
293
+ const payload = await this.database.listTaskCredits(workDayId);
294
+ return this.envelope("report", "search", payload, { count: payload.length });
295
+ }
296
+ async recordScaleDecision(request) {
297
+ const payload = await this.database.recordScaleDecision(request);
298
+ return this.envelope("report", "create", payload);
299
+ }
300
+ async getLatestScaleDecision(projectId, environment, poolName) {
301
+ const payload = await this.database.getLatestScaleDecision(projectId, environment, poolName);
302
+ return this.envelope("report", "get", payload);
303
+ }
264
304
  async listAgentSpecs(options) {
265
305
  const rawEntries = await this.listRawAgentSpecs(options);
266
306
  return rawEntries.map((entry) => normalizeAgentSpec(entry)).filter((entry) => Boolean(entry && entry.slug));
@@ -1,5 +1,5 @@
1
- import type { SdkAppendTaskEventRequest, SdkClaimTaskRequest, SdkCloseWorkDayRequest, SdkCompleteTaskRequest, SdkCreateReportRequest, SdkCreateTaskRequest, SdkFailTaskRequest, SdkGraphRunEntity, SdkReportEntity, SdkStartWorkDayRequest, SdkTaskEntity, SdkTaskEventEntity, SdkTaskOutputEntity, SdkTaskProgressRequest, SdkTaskSearchRequest, SdkWorkDayEntity } from '../sdk-types.ts';
2
- import { SqliteStoreBase } from './helpers.ts';
1
+ import type { PrioritySnapshot, SdkCreatePrioritySnapshotRequest, SdkAppendTaskEventRequest, SdkClaimTaskRequest, SdkCloseWorkDayRequest, SdkCompleteTaskRequest, SdkCreateReportRequest, SdkCreateTaskRequest, SdkFailTaskRequest, SdkGraphRunEntity, SdkPriorityOverrideRequest, SdkReportEntity, SdkRecordScaleDecisionRequest, SdkRecordTaskCreditsRequest, SdkStartWorkDayRequest, SdkTaskEntity, SdkTaskEventEntity, SdkTaskOutputEntity, SdkTaskProgressRequest, SdkTaskSearchRequest, SdkUpsertWorkPolicyRequest, SdkWorkDayEntity, ScaleDecision, TaskCreditLedgerEntry, WorkdayPolicy } from '../sdk-types.ts';
2
+ import { SqliteStoreBase, type DatabaseRow } from './helpers.ts';
3
3
  export declare class OperationalStore extends SqliteStoreBase {
4
4
  getWorkDay(id: string): Promise<SdkWorkDayEntity | null>;
5
5
  searchWorkDays(limit?: number): Promise<SdkWorkDayEntity[]>;
@@ -21,4 +21,24 @@ export declare class OperationalStore extends SqliteStoreBase {
21
21
  getLatestGraphRun(workDayId: string): Promise<SdkGraphRunEntity | null>;
22
22
  createReport(request: SdkCreateReportRequest): Promise<SdkReportEntity | null>;
23
23
  getReport(id: string): Promise<SdkReportEntity | null>;
24
+ getWorkPolicy(projectId: string, environment?: string): Promise<WorkdayPolicy | null>;
25
+ upsertWorkPolicy(request: SdkUpsertWorkPolicyRequest): Promise<WorkdayPolicy | null>;
26
+ listPriorityOverrides(projectId: string): Promise<DatabaseRow[]>;
27
+ upsertPriorityOverride(request: SdkPriorityOverrideRequest): Promise<{
28
+ id: string;
29
+ projectId: string;
30
+ model: string;
31
+ subjectId: string;
32
+ priority: number;
33
+ estimatedCredits: number | null;
34
+ metadata: Record<string, unknown>;
35
+ createdAt: string;
36
+ updatedAt: string;
37
+ } | null>;
38
+ createPrioritySnapshot(request: SdkCreatePrioritySnapshotRequest): Promise<PrioritySnapshot | null>;
39
+ getLatestPrioritySnapshot(projectId: string, workDayId?: string | null): Promise<PrioritySnapshot | null>;
40
+ recordTaskCredits(request: SdkRecordTaskCreditsRequest): Promise<TaskCreditLedgerEntry | null>;
41
+ listTaskCredits(workDayId: string): Promise<TaskCreditLedgerEntry[]>;
42
+ recordScaleDecision(request: SdkRecordScaleDecisionRequest): Promise<ScaleDecision | null>;
43
+ getLatestScaleDecision(projectId: string, environment: string, poolName: string): Promise<ScaleDecision | null>;
24
44
  }