@treeseed/agent 0.8.5

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 (138) hide show
  1. package/Dockerfile +7 -0
  2. package/README.md +198 -0
  3. package/dist/agent-runtime.d.ts +17 -0
  4. package/dist/agent-runtime.js +117 -0
  5. package/dist/agents/adapters/execution.d.ts +41 -0
  6. package/dist/agents/adapters/execution.js +73 -0
  7. package/dist/agents/adapters/mutations.d.ts +22 -0
  8. package/dist/agents/adapters/mutations.js +30 -0
  9. package/dist/agents/adapters/notification.d.ts +26 -0
  10. package/dist/agents/adapters/notification.js +46 -0
  11. package/dist/agents/adapters/repository.d.ts +28 -0
  12. package/dist/agents/adapters/repository.js +61 -0
  13. package/dist/agents/adapters/research.d.ts +26 -0
  14. package/dist/agents/adapters/research.js +59 -0
  15. package/dist/agents/adapters/verification.d.ts +36 -0
  16. package/dist/agents/adapters/verification.js +62 -0
  17. package/dist/agents/cli-tools.d.ts +1 -0
  18. package/dist/agents/cli-tools.js +5 -0
  19. package/dist/agents/cli.d.ts +15 -0
  20. package/dist/agents/cli.js +109 -0
  21. package/dist/agents/contracts/messages.d.ts +88 -0
  22. package/dist/agents/contracts/messages.js +138 -0
  23. package/dist/agents/contracts/run.d.ts +21 -0
  24. package/dist/agents/contracts/run.js +0 -0
  25. package/dist/agents/index.d.ts +1 -0
  26. package/dist/agents/index.js +5 -0
  27. package/dist/agents/kernel/agent-kernel.d.ts +63 -0
  28. package/dist/agents/kernel/agent-kernel.js +291 -0
  29. package/dist/agents/kernel/trigger-resolver.d.ts +19 -0
  30. package/dist/agents/kernel/trigger-resolver.js +157 -0
  31. package/dist/agents/registry-helper.d.ts +4 -0
  32. package/dist/agents/registry-helper.js +14 -0
  33. package/dist/agents/registry.d.ts +6 -0
  34. package/dist/agents/registry.js +98 -0
  35. package/dist/agents/runtime-types.d.ts +118 -0
  36. package/dist/agents/runtime-types.js +0 -0
  37. package/dist/agents/spec-loader.d.ts +18 -0
  38. package/dist/agents/spec-loader.js +54 -0
  39. package/dist/agents/spec-normalizer.d.ts +2 -0
  40. package/dist/agents/spec-normalizer.js +327 -0
  41. package/dist/agents/spec-types.d.ts +64 -0
  42. package/dist/agents/spec-types.js +0 -0
  43. package/dist/agents/testing/agents-smoke.d.ts +1 -0
  44. package/dist/agents/testing/agents-smoke.js +32 -0
  45. package/dist/agents/testing/e2e-harness.d.ts +44 -0
  46. package/dist/agents/testing/e2e-harness.js +503 -0
  47. package/dist/api/agent-routes.d.ts +13 -0
  48. package/dist/api/agent-routes.js +327 -0
  49. package/dist/api/app.d.ts +8 -0
  50. package/dist/api/app.js +444 -0
  51. package/dist/api/auth/d1-database.d.ts +3 -0
  52. package/dist/api/auth/d1-database.js +20 -0
  53. package/dist/api/auth/d1-provider.d.ts +79 -0
  54. package/dist/api/auth/d1-provider.js +92 -0
  55. package/dist/api/auth/d1-store.d.ts +114 -0
  56. package/dist/api/auth/d1-store.js +895 -0
  57. package/dist/api/auth/memory-provider.d.ts +77 -0
  58. package/dist/api/auth/memory-provider.js +249 -0
  59. package/dist/api/auth/rbac.d.ts +22 -0
  60. package/dist/api/auth/rbac.js +162 -0
  61. package/dist/api/auth/tokens.d.ts +18 -0
  62. package/dist/api/auth/tokens.js +56 -0
  63. package/dist/api/capabilities.d.ts +9 -0
  64. package/dist/api/capabilities.js +33 -0
  65. package/dist/api/config.d.ts +2 -0
  66. package/dist/api/config.js +77 -0
  67. package/dist/api/http.d.ts +28 -0
  68. package/dist/api/http.js +51 -0
  69. package/dist/api/index.d.ts +9 -0
  70. package/dist/api/index.js +20 -0
  71. package/dist/api/operations-routes.d.ts +11 -0
  72. package/dist/api/operations-routes.js +87 -0
  73. package/dist/api/operations.d.ts +3 -0
  74. package/dist/api/operations.js +26 -0
  75. package/dist/api/project-routes.d.ts +8 -0
  76. package/dist/api/project-routes.js +585 -0
  77. package/dist/api/providers.d.ts +2 -0
  78. package/dist/api/providers.js +62 -0
  79. package/dist/api/railway.d.ts +51 -0
  80. package/dist/api/railway.js +71 -0
  81. package/dist/api/sdk-dispatch.d.ts +5 -0
  82. package/dist/api/sdk-dispatch.js +13 -0
  83. package/dist/api/sdk-routes.d.ts +11 -0
  84. package/dist/api/sdk-routes.js +29 -0
  85. package/dist/api/server.d.ts +2 -0
  86. package/dist/api/server.js +10 -0
  87. package/dist/api/templates.d.ts +3 -0
  88. package/dist/api/templates.js +31 -0
  89. package/dist/api/types.d.ts +237 -0
  90. package/dist/api/types.js +0 -0
  91. package/dist/env.yaml +957 -0
  92. package/dist/index.d.ts +14 -0
  93. package/dist/index.js +41 -0
  94. package/dist/scripts/assert-release-tag-version.d.ts +1 -0
  95. package/dist/scripts/assert-release-tag-version.js +20 -0
  96. package/dist/scripts/build-dist.d.ts +1 -0
  97. package/dist/scripts/build-dist.js +106 -0
  98. package/dist/scripts/package-tools.d.ts +1 -0
  99. package/dist/scripts/package-tools.js +7 -0
  100. package/dist/scripts/publish-package.d.ts +1 -0
  101. package/dist/scripts/publish-package.js +24 -0
  102. package/dist/scripts/release-verify.d.ts +1 -0
  103. package/dist/scripts/release-verify.js +152 -0
  104. package/dist/scripts/test-smoke.d.ts +1 -0
  105. package/dist/scripts/test-smoke.js +23 -0
  106. package/dist/scripts/treeseed-agent-api.d.ts +2 -0
  107. package/dist/scripts/treeseed-agent-api.js +25 -0
  108. package/dist/scripts/treeseed-agent-service.d.ts +2 -0
  109. package/dist/scripts/treeseed-agent-service.js +36 -0
  110. package/dist/scripts/treeseed-agents.d.ts +2 -0
  111. package/dist/scripts/treeseed-agents.js +13 -0
  112. package/dist/services/agents.d.ts +17 -0
  113. package/dist/services/agents.js +48 -0
  114. package/dist/services/common.d.ts +66 -0
  115. package/dist/services/common.js +212 -0
  116. package/dist/services/index.d.ts +6 -0
  117. package/dist/services/index.js +19 -0
  118. package/dist/services/manager.d.ts +333 -0
  119. package/dist/services/manager.js +1368 -0
  120. package/dist/services/remote-runner.d.ts +30 -0
  121. package/dist/services/remote-runner.js +230 -0
  122. package/dist/services/workday-content.d.ts +53 -0
  123. package/dist/services/workday-content.js +190 -0
  124. package/dist/services/workday-manager.d.ts +391 -0
  125. package/dist/services/workday-manager.js +163 -0
  126. package/dist/services/workday-report.d.ts +238 -0
  127. package/dist/services/workday-report.js +17 -0
  128. package/dist/services/workday-start.d.ts +238 -0
  129. package/dist/services/workday-start.js +17 -0
  130. package/dist/services/worker-capacity.d.ts +58 -0
  131. package/dist/services/worker-capacity.js +208 -0
  132. package/dist/services/worker-pool-scaler.d.ts +27 -0
  133. package/dist/services/worker-pool-scaler.js +127 -0
  134. package/dist/services/worker.d.ts +19 -0
  135. package/dist/services/worker.js +436 -0
  136. package/dist/templates/github/deploy-processing.workflow.yml +119 -0
  137. package/package.json +136 -0
  138. package/templates/github/deploy-processing.workflow.yml +119 -0
@@ -0,0 +1,238 @@
1
+ #!/usr/bin/env node
2
+ export declare function runWorkdayReport(): Promise<{
3
+ ok: boolean;
4
+ mode: "reconcile";
5
+ managerId: string;
6
+ projectId: string;
7
+ environment: "local" | "staging" | "prod";
8
+ insideWorkWindow: boolean;
9
+ workPolicy: import("@treeseed/sdk").WorkdayPolicy;
10
+ workDay: null;
11
+ prioritySnapshot: null;
12
+ seededTasks: never[];
13
+ queuedCount: number;
14
+ activeLeases: number;
15
+ desiredWorkers: number;
16
+ scaleResult: {
17
+ applied: boolean;
18
+ provider: string;
19
+ desiredWorkers: number;
20
+ metadata: {
21
+ reason: string;
22
+ };
23
+ };
24
+ workdaySummary: null;
25
+ } | {
26
+ ok: boolean;
27
+ mode: "reconcile";
28
+ managerId: string;
29
+ projectId: string;
30
+ environment: "local" | "staging" | "prod";
31
+ insideWorkWindow: boolean;
32
+ workPolicy: import("@treeseed/sdk").WorkdayPolicy;
33
+ workDay: Record<string, unknown>;
34
+ prioritySnapshot: import("@treeseed/sdk").PrioritySnapshot | null;
35
+ seededTasks: {
36
+ [x: string]: unknown;
37
+ }[];
38
+ queuedCount: number;
39
+ activeLeases: number;
40
+ desiredWorkers: number;
41
+ scaleResult: import("@treeseed/sdk").WorkerPoolScaleResult;
42
+ workdaySummary: Record<string, unknown> | null;
43
+ } | {
44
+ ok: boolean;
45
+ created: boolean;
46
+ workDay: Record<string, unknown>;
47
+ skipped?: undefined;
48
+ reason?: undefined;
49
+ prioritySnapshot?: undefined;
50
+ } | {
51
+ ok: boolean;
52
+ created: boolean;
53
+ skipped: boolean;
54
+ reason: string;
55
+ workDay?: undefined;
56
+ prioritySnapshot?: undefined;
57
+ } | {
58
+ ok: boolean;
59
+ created: boolean;
60
+ workDay: import("@treeseed/sdk").SdkWorkDayEntity | null;
61
+ prioritySnapshot: import("@treeseed/sdk").PrioritySnapshot | null;
62
+ skipped?: undefined;
63
+ reason?: undefined;
64
+ } | {
65
+ ok: boolean;
66
+ skipped: boolean;
67
+ reason: string;
68
+ workDay?: undefined;
69
+ summary?: undefined;
70
+ scale?: undefined;
71
+ } | {
72
+ ok: boolean;
73
+ workDay: import("@treeseed/sdk").SdkWorkDayEntity | null;
74
+ summary: {
75
+ contentSnapshot: {
76
+ relativePath: string;
77
+ slug: string;
78
+ reportVersion: string;
79
+ title: string;
80
+ };
81
+ capacity: {
82
+ providerSplit: {
83
+ providerId: string;
84
+ laneId: string;
85
+ state: import("@treeseed/sdk/types").CapacityReservationState;
86
+ reservedCredits: number;
87
+ consumedCredits: number;
88
+ reservedProviderUnits: number | null;
89
+ consumedProviderUnits: number | null;
90
+ reservedUsd: number | null;
91
+ consumedUsd: number | null;
92
+ }[];
93
+ grantedDailyCredits: number;
94
+ reservedCredits: number;
95
+ consumedCredits: number;
96
+ remainingDailyCredits: number | null;
97
+ providerCount: number;
98
+ laneCount: number;
99
+ grantCount: number;
100
+ } | null;
101
+ projectId: string;
102
+ environment: "local" | "staging" | "prod";
103
+ workDayId: string;
104
+ state: string;
105
+ totalTasks: number;
106
+ completedTasks: number;
107
+ failedTasks: number;
108
+ queuedTasks: number;
109
+ activeTasks: number;
110
+ dailyTaskCreditBudget: number;
111
+ usedTaskCredits: number;
112
+ remainingTaskCredits: number;
113
+ creditLedgerEntries: number;
114
+ prioritySnapshotId: string | null;
115
+ priorityItemCount: number;
116
+ priorityItems: import("@treeseed/sdk").PrioritySnapshotItem[];
117
+ taskItems: {
118
+ id: string;
119
+ agentId: string | undefined;
120
+ type: string | undefined;
121
+ state: string | undefined;
122
+ priority: number | undefined;
123
+ idempotencyKey: string | undefined;
124
+ createdAt: string | null;
125
+ startedAt: string | null;
126
+ completedAt: string | null;
127
+ lastErrorCode: string | null;
128
+ lastErrorMessage: string | null;
129
+ lastEventKind: string | null;
130
+ outputCount: number;
131
+ changedFiles: string[];
132
+ }[];
133
+ changedFiles: string[];
134
+ releases: {
135
+ id: string | undefined;
136
+ deploymentKind: string;
137
+ status: string;
138
+ releaseTag: string | null;
139
+ commitSha: string | null;
140
+ sourceRef: string | null;
141
+ startedAt: string | null;
142
+ finishedAt: string | null;
143
+ createdAt: string | null;
144
+ }[];
145
+ scaleDecision: import("@treeseed/sdk").ScaleDecision;
146
+ scaleResult: import("@treeseed/sdk").WorkerPoolScaleResult;
147
+ generatedAt: string;
148
+ };
149
+ scale: import("@treeseed/sdk").WorkerPoolScaleResult;
150
+ skipped?: undefined;
151
+ reason?: undefined;
152
+ } | {
153
+ ok: boolean;
154
+ skipped: boolean;
155
+ reason: string;
156
+ workDayId?: undefined;
157
+ summary?: undefined;
158
+ } | {
159
+ ok: boolean;
160
+ workDayId: unknown;
161
+ summary: {
162
+ contentSnapshot: {
163
+ relativePath: string;
164
+ slug: string;
165
+ reportVersion: string;
166
+ title: string;
167
+ };
168
+ capacity: {
169
+ providerSplit: {
170
+ providerId: string;
171
+ laneId: string;
172
+ state: import("@treeseed/sdk/types").CapacityReservationState;
173
+ reservedCredits: number;
174
+ consumedCredits: number;
175
+ reservedProviderUnits: number | null;
176
+ consumedProviderUnits: number | null;
177
+ reservedUsd: number | null;
178
+ consumedUsd: number | null;
179
+ }[];
180
+ grantedDailyCredits: number;
181
+ reservedCredits: number;
182
+ consumedCredits: number;
183
+ remainingDailyCredits: number | null;
184
+ providerCount: number;
185
+ laneCount: number;
186
+ grantCount: number;
187
+ } | null;
188
+ projectId: string;
189
+ environment: "local" | "staging" | "prod";
190
+ workDayId: string;
191
+ state: string;
192
+ totalTasks: number;
193
+ completedTasks: number;
194
+ failedTasks: number;
195
+ queuedTasks: number;
196
+ activeTasks: number;
197
+ dailyTaskCreditBudget: number;
198
+ usedTaskCredits: number;
199
+ remainingTaskCredits: number;
200
+ creditLedgerEntries: number;
201
+ prioritySnapshotId: string | null;
202
+ priorityItemCount: number;
203
+ priorityItems: import("@treeseed/sdk").PrioritySnapshotItem[];
204
+ taskItems: {
205
+ id: string;
206
+ agentId: string | undefined;
207
+ type: string | undefined;
208
+ state: string | undefined;
209
+ priority: number | undefined;
210
+ idempotencyKey: string | undefined;
211
+ createdAt: string | null;
212
+ startedAt: string | null;
213
+ completedAt: string | null;
214
+ lastErrorCode: string | null;
215
+ lastErrorMessage: string | null;
216
+ lastEventKind: string | null;
217
+ outputCount: number;
218
+ changedFiles: string[];
219
+ }[];
220
+ changedFiles: string[];
221
+ releases: {
222
+ id: string | undefined;
223
+ deploymentKind: string;
224
+ status: string;
225
+ releaseTag: string | null;
226
+ commitSha: string | null;
227
+ sourceRef: string | null;
228
+ startedAt: string | null;
229
+ finishedAt: string | null;
230
+ createdAt: string | null;
231
+ }[];
232
+ scaleDecision: import("@treeseed/sdk").ScaleDecision;
233
+ scaleResult: import("@treeseed/sdk").WorkerPoolScaleResult;
234
+ generatedAt: string;
235
+ };
236
+ skipped?: undefined;
237
+ reason?: undefined;
238
+ }>;
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+ import { fileURLToPath } from "node:url";
3
+ import { runManagerAction } from "./manager.js";
4
+ async function runWorkdayReport() {
5
+ return runManagerAction({
6
+ mode: "report-workday"
7
+ });
8
+ }
9
+ const currentFile = fileURLToPath(import.meta.url);
10
+ const entryFile = process.argv[1] ?? "";
11
+ if (entryFile === currentFile) {
12
+ process.stdout.write(`${JSON.stringify(await runWorkdayReport(), null, 2)}
13
+ `);
14
+ }
15
+ export {
16
+ runWorkdayReport
17
+ };
@@ -0,0 +1,238 @@
1
+ #!/usr/bin/env node
2
+ export declare function runWorkdayStart(): Promise<{
3
+ ok: boolean;
4
+ mode: "reconcile";
5
+ managerId: string;
6
+ projectId: string;
7
+ environment: "local" | "staging" | "prod";
8
+ insideWorkWindow: boolean;
9
+ workPolicy: import("@treeseed/sdk").WorkdayPolicy;
10
+ workDay: null;
11
+ prioritySnapshot: null;
12
+ seededTasks: never[];
13
+ queuedCount: number;
14
+ activeLeases: number;
15
+ desiredWorkers: number;
16
+ scaleResult: {
17
+ applied: boolean;
18
+ provider: string;
19
+ desiredWorkers: number;
20
+ metadata: {
21
+ reason: string;
22
+ };
23
+ };
24
+ workdaySummary: null;
25
+ } | {
26
+ ok: boolean;
27
+ mode: "reconcile";
28
+ managerId: string;
29
+ projectId: string;
30
+ environment: "local" | "staging" | "prod";
31
+ insideWorkWindow: boolean;
32
+ workPolicy: import("@treeseed/sdk").WorkdayPolicy;
33
+ workDay: Record<string, unknown>;
34
+ prioritySnapshot: import("@treeseed/sdk").PrioritySnapshot | null;
35
+ seededTasks: {
36
+ [x: string]: unknown;
37
+ }[];
38
+ queuedCount: number;
39
+ activeLeases: number;
40
+ desiredWorkers: number;
41
+ scaleResult: import("@treeseed/sdk").WorkerPoolScaleResult;
42
+ workdaySummary: Record<string, unknown> | null;
43
+ } | {
44
+ ok: boolean;
45
+ created: boolean;
46
+ workDay: Record<string, unknown>;
47
+ skipped?: undefined;
48
+ reason?: undefined;
49
+ prioritySnapshot?: undefined;
50
+ } | {
51
+ ok: boolean;
52
+ created: boolean;
53
+ skipped: boolean;
54
+ reason: string;
55
+ workDay?: undefined;
56
+ prioritySnapshot?: undefined;
57
+ } | {
58
+ ok: boolean;
59
+ created: boolean;
60
+ workDay: import("@treeseed/sdk").SdkWorkDayEntity | null;
61
+ prioritySnapshot: import("@treeseed/sdk").PrioritySnapshot | null;
62
+ skipped?: undefined;
63
+ reason?: undefined;
64
+ } | {
65
+ ok: boolean;
66
+ skipped: boolean;
67
+ reason: string;
68
+ workDay?: undefined;
69
+ summary?: undefined;
70
+ scale?: undefined;
71
+ } | {
72
+ ok: boolean;
73
+ workDay: import("@treeseed/sdk").SdkWorkDayEntity | null;
74
+ summary: {
75
+ contentSnapshot: {
76
+ relativePath: string;
77
+ slug: string;
78
+ reportVersion: string;
79
+ title: string;
80
+ };
81
+ capacity: {
82
+ providerSplit: {
83
+ providerId: string;
84
+ laneId: string;
85
+ state: import("@treeseed/sdk/types").CapacityReservationState;
86
+ reservedCredits: number;
87
+ consumedCredits: number;
88
+ reservedProviderUnits: number | null;
89
+ consumedProviderUnits: number | null;
90
+ reservedUsd: number | null;
91
+ consumedUsd: number | null;
92
+ }[];
93
+ grantedDailyCredits: number;
94
+ reservedCredits: number;
95
+ consumedCredits: number;
96
+ remainingDailyCredits: number | null;
97
+ providerCount: number;
98
+ laneCount: number;
99
+ grantCount: number;
100
+ } | null;
101
+ projectId: string;
102
+ environment: "local" | "staging" | "prod";
103
+ workDayId: string;
104
+ state: string;
105
+ totalTasks: number;
106
+ completedTasks: number;
107
+ failedTasks: number;
108
+ queuedTasks: number;
109
+ activeTasks: number;
110
+ dailyTaskCreditBudget: number;
111
+ usedTaskCredits: number;
112
+ remainingTaskCredits: number;
113
+ creditLedgerEntries: number;
114
+ prioritySnapshotId: string | null;
115
+ priorityItemCount: number;
116
+ priorityItems: import("@treeseed/sdk").PrioritySnapshotItem[];
117
+ taskItems: {
118
+ id: string;
119
+ agentId: string | undefined;
120
+ type: string | undefined;
121
+ state: string | undefined;
122
+ priority: number | undefined;
123
+ idempotencyKey: string | undefined;
124
+ createdAt: string | null;
125
+ startedAt: string | null;
126
+ completedAt: string | null;
127
+ lastErrorCode: string | null;
128
+ lastErrorMessage: string | null;
129
+ lastEventKind: string | null;
130
+ outputCount: number;
131
+ changedFiles: string[];
132
+ }[];
133
+ changedFiles: string[];
134
+ releases: {
135
+ id: string | undefined;
136
+ deploymentKind: string;
137
+ status: string;
138
+ releaseTag: string | null;
139
+ commitSha: string | null;
140
+ sourceRef: string | null;
141
+ startedAt: string | null;
142
+ finishedAt: string | null;
143
+ createdAt: string | null;
144
+ }[];
145
+ scaleDecision: import("@treeseed/sdk").ScaleDecision;
146
+ scaleResult: import("@treeseed/sdk").WorkerPoolScaleResult;
147
+ generatedAt: string;
148
+ };
149
+ scale: import("@treeseed/sdk").WorkerPoolScaleResult;
150
+ skipped?: undefined;
151
+ reason?: undefined;
152
+ } | {
153
+ ok: boolean;
154
+ skipped: boolean;
155
+ reason: string;
156
+ workDayId?: undefined;
157
+ summary?: undefined;
158
+ } | {
159
+ ok: boolean;
160
+ workDayId: unknown;
161
+ summary: {
162
+ contentSnapshot: {
163
+ relativePath: string;
164
+ slug: string;
165
+ reportVersion: string;
166
+ title: string;
167
+ };
168
+ capacity: {
169
+ providerSplit: {
170
+ providerId: string;
171
+ laneId: string;
172
+ state: import("@treeseed/sdk/types").CapacityReservationState;
173
+ reservedCredits: number;
174
+ consumedCredits: number;
175
+ reservedProviderUnits: number | null;
176
+ consumedProviderUnits: number | null;
177
+ reservedUsd: number | null;
178
+ consumedUsd: number | null;
179
+ }[];
180
+ grantedDailyCredits: number;
181
+ reservedCredits: number;
182
+ consumedCredits: number;
183
+ remainingDailyCredits: number | null;
184
+ providerCount: number;
185
+ laneCount: number;
186
+ grantCount: number;
187
+ } | null;
188
+ projectId: string;
189
+ environment: "local" | "staging" | "prod";
190
+ workDayId: string;
191
+ state: string;
192
+ totalTasks: number;
193
+ completedTasks: number;
194
+ failedTasks: number;
195
+ queuedTasks: number;
196
+ activeTasks: number;
197
+ dailyTaskCreditBudget: number;
198
+ usedTaskCredits: number;
199
+ remainingTaskCredits: number;
200
+ creditLedgerEntries: number;
201
+ prioritySnapshotId: string | null;
202
+ priorityItemCount: number;
203
+ priorityItems: import("@treeseed/sdk").PrioritySnapshotItem[];
204
+ taskItems: {
205
+ id: string;
206
+ agentId: string | undefined;
207
+ type: string | undefined;
208
+ state: string | undefined;
209
+ priority: number | undefined;
210
+ idempotencyKey: string | undefined;
211
+ createdAt: string | null;
212
+ startedAt: string | null;
213
+ completedAt: string | null;
214
+ lastErrorCode: string | null;
215
+ lastErrorMessage: string | null;
216
+ lastEventKind: string | null;
217
+ outputCount: number;
218
+ changedFiles: string[];
219
+ }[];
220
+ changedFiles: string[];
221
+ releases: {
222
+ id: string | undefined;
223
+ deploymentKind: string;
224
+ status: string;
225
+ releaseTag: string | null;
226
+ commitSha: string | null;
227
+ sourceRef: string | null;
228
+ startedAt: string | null;
229
+ finishedAt: string | null;
230
+ createdAt: string | null;
231
+ }[];
232
+ scaleDecision: import("@treeseed/sdk").ScaleDecision;
233
+ scaleResult: import("@treeseed/sdk").WorkerPoolScaleResult;
234
+ generatedAt: string;
235
+ };
236
+ skipped?: undefined;
237
+ reason?: undefined;
238
+ }>;
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+ import { fileURLToPath } from "node:url";
3
+ import { runManagerAction } from "./manager.js";
4
+ async function runWorkdayStart() {
5
+ return runManagerAction({
6
+ mode: "open-workday"
7
+ });
8
+ }
9
+ const currentFile = fileURLToPath(import.meta.url);
10
+ const entryFile = process.argv[1] ?? "";
11
+ if (entryFile === currentFile) {
12
+ process.stdout.write(`${JSON.stringify(await runWorkdayStart(), null, 2)}
13
+ `);
14
+ }
15
+ export {
16
+ runWorkdayStart
17
+ };
@@ -0,0 +1,58 @@
1
+ import type { AgentPoolAutoscalePolicy, AgentSdk, ProjectEnvironmentName, ScaleDecision, WorkerPoolScaleResult, WorkerPoolScaler } from '@treeseed/sdk';
2
+ export interface TaskMetricsSnapshot {
3
+ queuedTasks: Array<Record<string, unknown>>;
4
+ activeTasks: Array<Record<string, unknown>>;
5
+ queuedCount: number;
6
+ activeLeases: number;
7
+ queuedCredits: number;
8
+ }
9
+ export interface WorkerPoolIdentity {
10
+ projectId: string;
11
+ environment: ProjectEnvironmentName | 'local';
12
+ poolName: string;
13
+ }
14
+ export interface CapacityAssuranceResult {
15
+ ok: true;
16
+ taskId: string;
17
+ queued: true;
18
+ workerState: 'warm' | 'cold_starting';
19
+ desiredWorkers: number;
20
+ scaleApplied: boolean;
21
+ scaleReason: string;
22
+ scaleDecision: ScaleDecision;
23
+ scaleResult: WorkerPoolScaleResult;
24
+ metrics: TaskMetricsSnapshot;
25
+ }
26
+ export declare function resolveAutoscalePolicyFromEnv(): AgentPoolAutoscalePolicy;
27
+ export declare function resolveWorkerPoolIdentityFromEnv(projectId?: string): WorkerPoolIdentity;
28
+ export declare function computeDesiredWorkerCount(autoscale: AgentPoolAutoscalePolicy, metrics: Pick<TaskMetricsSnapshot, 'queuedCount' | 'activeLeases'>): number;
29
+ export declare function applyScaleCooldown(autoscale: AgentPoolAutoscalePolicy, latestDecision: ScaleDecision | null, nextDesired: number, now: Date): number;
30
+ export declare function applyInteractiveWakeUpOverride(options: {
31
+ priorityClass?: 'interactive' | 'background';
32
+ queuedCount: number;
33
+ currentWorkers: number;
34
+ desiredWorkers: number;
35
+ }): number;
36
+ export declare function collectTaskMetrics(sdk: AgentSdk, workDayId?: string | null): Promise<TaskMetricsSnapshot>;
37
+ export declare function enqueueTaskAndEnsureCapacity(sdk: AgentSdk, request: {
38
+ taskId: string;
39
+ actor?: string;
40
+ queueName?: string;
41
+ deliveryDelaySeconds?: number;
42
+ priorityClass?: 'interactive' | 'background';
43
+ projectId?: string;
44
+ identity?: WorkerPoolIdentity;
45
+ autoscale?: AgentPoolAutoscalePolicy;
46
+ scaler?: WorkerPoolScaler;
47
+ now?: Date;
48
+ enqueueTask: (sdk: AgentSdk, request: {
49
+ taskId: string;
50
+ queueName?: string;
51
+ deliveryDelaySeconds?: number;
52
+ actor?: string;
53
+ }) => Promise<{
54
+ ok: boolean;
55
+ taskId: string;
56
+ queued: boolean;
57
+ }>;
58
+ }): Promise<CapacityAssuranceResult>;