@treeseed/core 0.8.3 → 0.8.4

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 (133) hide show
  1. package/README.md +7 -11
  2. package/dist/dev-watch.js +1 -1
  3. package/dist/dev.d.ts +2 -4
  4. package/dist/dev.js +4 -124
  5. package/dist/env.yaml +23 -175
  6. package/dist/index.d.ts +0 -4
  7. package/dist/index.js +0 -6
  8. package/dist/scripts/build-dist.js +3 -3
  9. package/dist/scripts/dev-platform.js +1 -7
  10. package/dist/scripts/run-fixture-astro-command.js +25 -51
  11. package/dist/scripts/test-smoke.js +50 -7
  12. package/package.json +5 -78
  13. package/templates/github/deploy-web.workflow.yml +106 -0
  14. package/templates/github/hosted-project.workflow.yml +4 -4
  15. package/dist/agent-runtime.d.ts +0 -17
  16. package/dist/agent-runtime.js +0 -117
  17. package/dist/agent.d.ts +0 -11
  18. package/dist/agent.js +0 -25
  19. package/dist/agents/adapters/execution.d.ts +0 -41
  20. package/dist/agents/adapters/execution.js +0 -73
  21. package/dist/agents/adapters/mutations.d.ts +0 -22
  22. package/dist/agents/adapters/mutations.js +0 -30
  23. package/dist/agents/adapters/notification.d.ts +0 -26
  24. package/dist/agents/adapters/notification.js +0 -46
  25. package/dist/agents/adapters/repository.d.ts +0 -23
  26. package/dist/agents/adapters/repository.js +0 -61
  27. package/dist/agents/adapters/research.d.ts +0 -26
  28. package/dist/agents/adapters/research.js +0 -59
  29. package/dist/agents/adapters/verification.d.ts +0 -36
  30. package/dist/agents/adapters/verification.js +0 -62
  31. package/dist/agents/cli-tools.d.ts +0 -1
  32. package/dist/agents/cli-tools.js +0 -5
  33. package/dist/agents/cli.d.ts +0 -15
  34. package/dist/agents/cli.js +0 -109
  35. package/dist/agents/contracts/messages.d.ts +0 -88
  36. package/dist/agents/contracts/messages.js +0 -138
  37. package/dist/agents/contracts/run.d.ts +0 -21
  38. package/dist/agents/contracts/run.js +0 -0
  39. package/dist/agents/index.d.ts +0 -1
  40. package/dist/agents/index.js +0 -5
  41. package/dist/agents/kernel/agent-kernel.d.ts +0 -51
  42. package/dist/agents/kernel/agent-kernel.js +0 -292
  43. package/dist/agents/kernel/trigger-resolver.d.ts +0 -19
  44. package/dist/agents/kernel/trigger-resolver.js +0 -157
  45. package/dist/agents/registry-helper.d.ts +0 -4
  46. package/dist/agents/registry-helper.js +0 -14
  47. package/dist/agents/registry.d.ts +0 -6
  48. package/dist/agents/registry.js +0 -98
  49. package/dist/agents/runtime-types.d.ts +0 -118
  50. package/dist/agents/runtime-types.js +0 -0
  51. package/dist/agents/spec-loader.d.ts +0 -18
  52. package/dist/agents/spec-loader.js +0 -55
  53. package/dist/agents/spec-normalizer.d.ts +0 -2
  54. package/dist/agents/spec-normalizer.js +0 -327
  55. package/dist/agents/spec-types.d.ts +0 -64
  56. package/dist/agents/spec-types.js +0 -0
  57. package/dist/agents/testing/agents-smoke.d.ts +0 -1
  58. package/dist/agents/testing/agents-smoke.js +0 -32
  59. package/dist/agents/testing/e2e-harness.d.ts +0 -44
  60. package/dist/agents/testing/e2e-harness.js +0 -504
  61. package/dist/api/agent-routes.d.ts +0 -13
  62. package/dist/api/agent-routes.js +0 -327
  63. package/dist/api/app.d.ts +0 -5
  64. package/dist/api/app.js +0 -361
  65. package/dist/api/auth/d1-database.d.ts +0 -3
  66. package/dist/api/auth/d1-database.js +0 -20
  67. package/dist/api/auth/d1-provider.d.ts +0 -79
  68. package/dist/api/auth/d1-provider.js +0 -92
  69. package/dist/api/auth/d1-store.d.ts +0 -114
  70. package/dist/api/auth/d1-store.js +0 -895
  71. package/dist/api/auth/memory-provider.d.ts +0 -77
  72. package/dist/api/auth/memory-provider.js +0 -249
  73. package/dist/api/auth/rbac.d.ts +0 -22
  74. package/dist/api/auth/rbac.js +0 -162
  75. package/dist/api/auth/tokens.d.ts +0 -18
  76. package/dist/api/auth/tokens.js +0 -56
  77. package/dist/api/capabilities.d.ts +0 -9
  78. package/dist/api/capabilities.js +0 -33
  79. package/dist/api/config.d.ts +0 -2
  80. package/dist/api/config.js +0 -77
  81. package/dist/api/http.d.ts +0 -28
  82. package/dist/api/http.js +0 -51
  83. package/dist/api/index.d.ts +0 -9
  84. package/dist/api/index.js +0 -18
  85. package/dist/api/operations-routes.d.ts +0 -11
  86. package/dist/api/operations-routes.js +0 -87
  87. package/dist/api/operations.d.ts +0 -3
  88. package/dist/api/operations.js +0 -26
  89. package/dist/api/project-routes.d.ts +0 -8
  90. package/dist/api/project-routes.js +0 -586
  91. package/dist/api/providers.d.ts +0 -2
  92. package/dist/api/providers.js +0 -62
  93. package/dist/api/railway.d.ts +0 -50
  94. package/dist/api/railway.js +0 -69
  95. package/dist/api/sdk-dispatch.d.ts +0 -5
  96. package/dist/api/sdk-dispatch.js +0 -13
  97. package/dist/api/sdk-routes.d.ts +0 -11
  98. package/dist/api/sdk-routes.js +0 -29
  99. package/dist/api/server.d.ts +0 -2
  100. package/dist/api/server.js +0 -10
  101. package/dist/api/templates.d.ts +0 -3
  102. package/dist/api/templates.js +0 -31
  103. package/dist/api/types.d.ts +0 -231
  104. package/dist/api/types.js +0 -0
  105. package/dist/api.d.ts +0 -1
  106. package/dist/api.js +0 -1
  107. package/dist/railway.d.ts +0 -1
  108. package/dist/railway.js +0 -4
  109. package/dist/services/agents.d.ts +0 -11
  110. package/dist/services/agents.js +0 -48
  111. package/dist/services/common.d.ts +0 -66
  112. package/dist/services/common.js +0 -212
  113. package/dist/services/index.d.ts +0 -6
  114. package/dist/services/index.js +0 -19
  115. package/dist/services/manager.d.ts +0 -267
  116. package/dist/services/manager.js +0 -1368
  117. package/dist/services/remote-runner.d.ts +0 -30
  118. package/dist/services/remote-runner.js +0 -230
  119. package/dist/services/workday-content.d.ts +0 -53
  120. package/dist/services/workday-content.js +0 -190
  121. package/dist/services/workday-manager.d.ts +0 -279
  122. package/dist/services/workday-manager.js +0 -163
  123. package/dist/services/workday-report.d.ts +0 -195
  124. package/dist/services/workday-report.js +0 -17
  125. package/dist/services/workday-start.d.ts +0 -195
  126. package/dist/services/workday-start.js +0 -17
  127. package/dist/services/worker-capacity.d.ts +0 -58
  128. package/dist/services/worker-capacity.js +0 -208
  129. package/dist/services/worker-pool-scaler.d.ts +0 -27
  130. package/dist/services/worker-pool-scaler.js +0 -127
  131. package/dist/services/worker.d.ts +0 -19
  132. package/dist/services/worker.js +0 -436
  133. package/templates/github/deploy.workflow.yml +0 -577
@@ -1,212 +0,0 @@
1
- import crypto from "node:crypto";
2
- import { AgentSdk } from "@treeseed/sdk";
3
- import { CloudflareQueuePullClient } from "@treeseed/sdk/remote";
4
- function integerFromEnv(name, fallback) {
5
- const value = process.env[name];
6
- if (!value) return fallback;
7
- const parsed = Number.parseInt(value, 10);
8
- return Number.isFinite(parsed) ? parsed : fallback;
9
- }
10
- function resolveServiceRepoRoot() {
11
- return process.env.TREESEED_AGENT_REPO_ROOT?.trim() || process.cwd();
12
- }
13
- function createServiceSdk() {
14
- return AgentSdk.createLocal({
15
- repoRoot: resolveServiceRepoRoot(),
16
- databaseName: process.env.TREESEED_AGENT_D1_DATABASE ?? "karyon-docs-site-data",
17
- persistTo: process.env.TREESEED_AGENT_D1_PERSIST_TO ?? void 0
18
- });
19
- }
20
- function createQueueClientConfig(token) {
21
- const accountId = process.env.CLOUDFLARE_ACCOUNT_ID?.trim();
22
- const queueId = process.env.TREESEED_QUEUE_ID?.trim();
23
- if (!accountId || !queueId || !token) {
24
- return null;
25
- }
26
- return {
27
- accountId,
28
- queueId,
29
- token,
30
- apiBaseUrl: process.env.TREESEED_QUEUE_API_BASE_URL?.trim() || void 0
31
- };
32
- }
33
- function createQueueClient() {
34
- const config = createQueueClientConfig(process.env.TREESEED_QUEUE_PULL_TOKEN?.trim() || "");
35
- if (!config) {
36
- return null;
37
- }
38
- return new CloudflareQueuePullClient(config);
39
- }
40
- function createQueuePushClient() {
41
- const config = createQueueClientConfig(
42
- process.env.TREESEED_QUEUE_PUSH_TOKEN?.trim() || process.env.CLOUDFLARE_API_TOKEN?.trim() || ""
43
- );
44
- if (!config) {
45
- return null;
46
- }
47
- const apiBaseUrl = config.apiBaseUrl ?? "https://api.cloudflare.com/client/v4/accounts";
48
- const baseUrl = `${apiBaseUrl.replace(/\/$/u, "")}/${config.accountId}/queues/${config.queueId}`;
49
- return {
50
- async enqueue(request) {
51
- const response = await fetch(`${baseUrl}/messages`, {
52
- method: "POST",
53
- headers: {
54
- accept: "application/json",
55
- authorization: `Bearer ${config.token}`,
56
- "content-type": "application/json"
57
- },
58
- body: JSON.stringify({
59
- body: request.message,
60
- content_type: "json",
61
- delay_seconds: request.delaySeconds ?? 0
62
- })
63
- });
64
- const payload = await response.json().catch(() => ({}));
65
- if (!response.ok || payload.success === false) {
66
- throw new Error(payload.errors?.[0]?.message ?? `Queue request failed with ${response.status}.`);
67
- }
68
- }
69
- };
70
- }
71
- function queueEnvelopeForTask(task) {
72
- return {
73
- messageId: crypto.randomUUID(),
74
- taskId: String(task.id ?? ""),
75
- workDayId: String(task.workDayId ?? task.work_day_id ?? ""),
76
- agentId: String(task.agentId ?? task.agent_id ?? ""),
77
- taskType: String(task.type ?? ""),
78
- idempotencyKey: String(task.idempotencyKey ?? task.idempotency_key ?? ""),
79
- attempt: Number(task.attemptCount ?? task.attempt_count ?? 0) + 1,
80
- payloadRef: `d1:tasks/${String(task.id ?? "")}`,
81
- graphVersion: task.graphVersion !== void 0 && task.graphVersion !== null ? String(task.graphVersion) : task.graph_version !== void 0 && task.graph_version !== null ? String(task.graph_version) : null,
82
- budgetHint: 1
83
- };
84
- }
85
- async function enqueueTaskFromSdk(sdk, request) {
86
- const queue = createQueuePushClient();
87
- if (!queue) {
88
- throw new Error("Queue push client not configured.");
89
- }
90
- const task = await sdk.get({ model: "task", id: request.taskId });
91
- if (!task.payload) {
92
- throw new Error("Unknown task.");
93
- }
94
- await queue.enqueue({
95
- message: queueEnvelopeForTask(task.payload),
96
- delaySeconds: request.deliveryDelaySeconds ?? 0
97
- });
98
- await sdk.recordTaskProgress({
99
- id: request.taskId,
100
- state: "queued",
101
- appendEvent: { kind: "queued", data: { queueName: request.queueName ?? null } },
102
- actor: request.actor
103
- });
104
- return { ok: true, taskId: request.taskId, queued: true };
105
- }
106
- async function buildTaskContext(sdk, taskId) {
107
- const context = await sdk.getManagerContext(taskId);
108
- const task = context.payload.task;
109
- const agent = task ? (await sdk.get({ model: "agent", slug: String(task.agentId) })).payload : null;
110
- return {
111
- ...context.payload,
112
- agent
113
- };
114
- }
115
- async function seedRootTasks(sdk, workDayId) {
116
- const specs = await sdk.listAgentSpecs({ enabled: true });
117
- const created = [];
118
- for (const spec of specs) {
119
- const hasStartTrigger = spec.triggers.some((trigger) => trigger.type === "startup" || trigger.type === "schedule");
120
- if (!hasStartTrigger) continue;
121
- created.push(await sdk.createTask({
122
- workDayId,
123
- agentId: spec.slug,
124
- type: "agent_root",
125
- priority: 100,
126
- idempotencyKey: `${workDayId}:${spec.slug}:root`,
127
- payload: {
128
- agentSlug: spec.slug,
129
- handler: spec.handler,
130
- triggerKinds: spec.triggers.map((entry) => entry.type)
131
- },
132
- graphVersion: null,
133
- actor: "manager"
134
- }));
135
- }
136
- return created;
137
- }
138
- async function seedGraphRefreshTask(sdk, request) {
139
- const task = await sdk.createTask({
140
- workDayId: request.workDayId,
141
- agentId: "system",
142
- type: "refresh_project_graph",
143
- priority: 1e3,
144
- idempotencyKey: `${request.workDayId}:refresh_project_graph`,
145
- payload: {
146
- projectId: request.projectId,
147
- repositoryId: request.repositoryId ?? request.projectId
148
- },
149
- graphVersion: null,
150
- actor: request.actor ?? "manager"
151
- });
152
- return task.payload;
153
- }
154
- async function startAndSeedWorkday(sdk, request) {
155
- const workDay = await sdk.startWorkDay({
156
- id: request.id,
157
- projectId: request.projectId,
158
- capacityBudget: request.capacityBudget,
159
- graphVersion: null,
160
- summary: { graphRefresh: { state: "queued" } },
161
- actor: request.actor ?? "manager"
162
- });
163
- const graphTask = workDay.payload ? await seedGraphRefreshTask(sdk, {
164
- workDayId: String(workDay.payload.id),
165
- projectId: request.projectId,
166
- actor: request.actor ?? "manager"
167
- }) : null;
168
- const tasks = workDay.payload ? await seedRootTasks(sdk, String(workDay.payload.id)) : [];
169
- return {
170
- ok: true,
171
- workDay: workDay.payload,
172
- seededTasks: [graphTask, ...tasks.map((entry) => entry.payload).filter(Boolean)].filter(Boolean)
173
- };
174
- }
175
- function resolveManagerConfig() {
176
- return {
177
- host: process.env.HOST?.trim() || "0.0.0.0",
178
- port: integerFromEnv("PORT", 3100),
179
- projectId: process.env.TREESEED_PROJECT_ID?.trim() || "treeseed-market",
180
- defaultCapacityBudget: integerFromEnv("TREESEED_WORKDAY_CAPACITY_BUDGET", 100)
181
- };
182
- }
183
- function resolveWorkerConfig() {
184
- return {
185
- workerId: process.env.TREESEED_WORKER_ID?.trim() || `worker-${process.pid}`,
186
- batchSize: integerFromEnv("TREESEED_QUEUE_BATCH_SIZE", integerFromEnv("TREESEED_RUNNER_MAX_LOCAL_WORKERS", 4)),
187
- maxLocalWorkers: integerFromEnv("TREESEED_RUNNER_MAX_LOCAL_WORKERS", 4),
188
- runnerServiceName: process.env.TREESEED_RUNNER_SERVICE_NAME?.trim() || process.env.RAILWAY_SERVICE_NAME?.trim() || `worker-runner-${process.pid}`,
189
- volumeRoot: process.env.TREESEED_RUNNER_VOLUME_ROOT?.trim() || process.env.RAILWAY_VOLUME_MOUNT_PATH?.trim() || ".treeseed-runner",
190
- volumeIdentity: process.env.TREESEED_RUNNER_VOLUME_ID?.trim() || process.env.RAILWAY_VOLUME_ID?.trim() || process.env.RAILWAY_VOLUME_NAME?.trim() || "local-runner-volume",
191
- projectId: process.env.TREESEED_PROJECT_ID?.trim() || "treeseed-market",
192
- environment: process.env.TREESEED_DEPLOY_ENVIRONMENT?.trim() || (process.env.NODE_ENV === "production" ? "prod" : "local"),
193
- visibilityTimeoutMs: integerFromEnv("TREESEED_QUEUE_VISIBILITY_TIMEOUT_MS", 12e4),
194
- pollIntervalMs: integerFromEnv("TREESEED_WORKER_POLL_INTERVAL_MS", 5e3),
195
- idleExitMs: integerFromEnv("TREESEED_WORKER_IDLE_EXIT_MS", 0),
196
- leaseSeconds: integerFromEnv("TREESEED_TASK_LEASE_SECONDS", 120)
197
- };
198
- }
199
- export {
200
- buildTaskContext,
201
- createQueueClient,
202
- createQueuePushClient,
203
- createServiceSdk,
204
- enqueueTaskFromSdk,
205
- queueEnvelopeForTask,
206
- resolveManagerConfig,
207
- resolveServiceRepoRoot,
208
- resolveWorkerConfig,
209
- seedGraphRefreshTask,
210
- seedRootTasks,
211
- startAndSeedWorkday
212
- };
@@ -1,6 +0,0 @@
1
- export { runManagerAction, runManagerCycle, startManagerLoop } from './manager.ts';
2
- export { runWorkerCycle, startWorkerLoop } from './worker.ts';
3
- export { runScheduledWorkdayManager } from './workday-manager.ts';
4
- export { runWorkdayStart } from './workday-start.ts';
5
- export { runWorkdayReport } from './workday-report.ts';
6
- export { createWorkerPoolScaler, RailwayWorkerPoolScaler, NoopWorkerPoolScaler } from './worker-pool-scaler.ts';
@@ -1,19 +0,0 @@
1
- import { runManagerAction, runManagerCycle, startManagerLoop } from "./manager.js";
2
- import { runWorkerCycle, startWorkerLoop } from "./worker.js";
3
- import { runScheduledWorkdayManager } from "./workday-manager.js";
4
- import { runWorkdayStart } from "./workday-start.js";
5
- import { runWorkdayReport } from "./workday-report.js";
6
- import { createWorkerPoolScaler, RailwayWorkerPoolScaler, NoopWorkerPoolScaler } from "./worker-pool-scaler.js";
7
- export {
8
- NoopWorkerPoolScaler,
9
- RailwayWorkerPoolScaler,
10
- createWorkerPoolScaler,
11
- runManagerAction,
12
- runManagerCycle,
13
- runScheduledWorkdayManager,
14
- runWorkdayReport,
15
- runWorkdayStart,
16
- runWorkerCycle,
17
- startManagerLoop,
18
- startWorkerLoop
19
- };
@@ -1,267 +0,0 @@
1
- #!/usr/bin/env node
2
- import { type ControlPlaneReporter, type PrioritySnapshot, type PrioritySnapshotItem, type ProjectEnvironmentName, type ScaleDecision, type WorkdayPolicy, type WorkdaySchedule, type WorkerPoolScaleResult, type WorkerPoolScaler } from '@treeseed/sdk';
3
- import { createServiceSdk } from './common.ts';
4
- import { type WorkerPoolScalerKind } from './worker-pool-scaler.ts';
5
- type ManagerSdk = ReturnType<typeof createServiceSdk>;
6
- type ManagerMode = 'reconcile' | 'open-workday' | 'close-workday' | 'report-workday' | 'loop';
7
- type ManagerConfig = ReturnType<typeof resolveManagerServiceConfig>;
8
- type TaskRecord = Record<string, unknown>;
9
- export declare function resolveManagerServiceConfig(): {
10
- mode: ManagerMode;
11
- managerId: string;
12
- marketBaseUrl: string;
13
- runnerToken: string;
14
- projectId: string;
15
- teamId: string;
16
- environment: ProjectEnvironmentName | "local";
17
- poolName: string;
18
- serviceBaseUrl: string;
19
- pollIntervalMs: number;
20
- dailyTaskCreditBudget: number;
21
- maxQueuedTasks: number;
22
- maxQueuedCredits: number;
23
- priorityModels: string[];
24
- priorityLimitPerModel: number;
25
- graphInvalidated: boolean;
26
- defaultSchedule: WorkdaySchedule;
27
- scalerKind: WorkerPoolScalerKind;
28
- creditWeights: import("@treeseed/sdk").TaskCreditWeight[];
29
- autoscale: {
30
- minWorkers: number;
31
- maxWorkers: number;
32
- targetQueueDepth: number;
33
- cooldownSeconds: number;
34
- };
35
- host: string;
36
- port: number;
37
- defaultCapacityBudget: number;
38
- };
39
- export declare function runManagerAction(options?: {
40
- mode?: ManagerMode;
41
- sdk?: ManagerSdk;
42
- config?: ManagerConfig;
43
- reporter?: ControlPlaneReporter;
44
- scaler?: WorkerPoolScaler;
45
- now?: Date;
46
- }): Promise<{
47
- ok: boolean;
48
- mode: "reconcile";
49
- managerId: string;
50
- projectId: string;
51
- environment: "local" | "prod" | "staging";
52
- insideWorkWindow: boolean;
53
- workPolicy: WorkdayPolicy;
54
- workDay: Record<string, unknown>;
55
- prioritySnapshot: PrioritySnapshot;
56
- seededTasks: TaskRecord[];
57
- queuedCount: number;
58
- activeLeases: number;
59
- desiredWorkers: number;
60
- scaleResult: WorkerPoolScaleResult;
61
- workdaySummary: Record<string, unknown>;
62
- } | {
63
- ok: boolean;
64
- created: boolean;
65
- workDay: Record<string, unknown>;
66
- skipped?: undefined;
67
- reason?: undefined;
68
- prioritySnapshot?: undefined;
69
- } | {
70
- ok: boolean;
71
- created: boolean;
72
- skipped: boolean;
73
- reason: string;
74
- workDay?: undefined;
75
- prioritySnapshot?: undefined;
76
- } | {
77
- ok: boolean;
78
- created: boolean;
79
- workDay: import("@treeseed/sdk").SdkWorkDayEntity;
80
- prioritySnapshot: PrioritySnapshot;
81
- skipped?: undefined;
82
- reason?: undefined;
83
- } | {
84
- ok: boolean;
85
- skipped: boolean;
86
- reason: string;
87
- workDay?: undefined;
88
- summary?: undefined;
89
- scale?: undefined;
90
- } | {
91
- ok: boolean;
92
- workDay: import("@treeseed/sdk").SdkWorkDayEntity;
93
- summary: {
94
- contentSnapshot: {
95
- relativePath: string;
96
- slug: string;
97
- reportVersion: string;
98
- title: string;
99
- };
100
- capacity: {
101
- providerSplit: any;
102
- grantedDailyCredits: number;
103
- reservedCredits: number;
104
- consumedCredits: number;
105
- remainingDailyCredits: number | null;
106
- providerCount: number;
107
- laneCount: number;
108
- grantCount: number;
109
- };
110
- projectId: string;
111
- environment: "local" | "prod" | "staging";
112
- workDayId: string;
113
- state: string;
114
- totalTasks: number;
115
- completedTasks: number;
116
- failedTasks: number;
117
- queuedTasks: number;
118
- activeTasks: number;
119
- dailyTaskCreditBudget: number;
120
- usedTaskCredits: number;
121
- remainingTaskCredits: number;
122
- creditLedgerEntries: number;
123
- prioritySnapshotId: string;
124
- priorityItemCount: number;
125
- priorityItems: PrioritySnapshotItem[];
126
- taskItems: {
127
- id: string;
128
- agentId: string;
129
- type: string;
130
- state: string;
131
- priority: number;
132
- idempotencyKey: string;
133
- createdAt: string;
134
- startedAt: string;
135
- completedAt: string;
136
- lastErrorCode: string;
137
- lastErrorMessage: string;
138
- lastEventKind: string;
139
- outputCount: number;
140
- changedFiles: string[];
141
- }[];
142
- changedFiles: string[];
143
- releases: {
144
- id: string;
145
- deploymentKind: string;
146
- status: string;
147
- releaseTag: string;
148
- commitSha: string;
149
- sourceRef: string;
150
- startedAt: string;
151
- finishedAt: string;
152
- createdAt: string;
153
- }[];
154
- scaleDecision: ScaleDecision;
155
- scaleResult: WorkerPoolScaleResult;
156
- generatedAt: string;
157
- };
158
- scale: WorkerPoolScaleResult;
159
- skipped?: undefined;
160
- reason?: undefined;
161
- } | {
162
- ok: boolean;
163
- skipped: boolean;
164
- reason: string;
165
- workDayId?: undefined;
166
- summary?: undefined;
167
- } | {
168
- ok: boolean;
169
- workDayId: unknown;
170
- summary: {
171
- contentSnapshot: {
172
- relativePath: string;
173
- slug: string;
174
- reportVersion: string;
175
- title: string;
176
- };
177
- capacity: {
178
- providerSplit: any;
179
- grantedDailyCredits: number;
180
- reservedCredits: number;
181
- consumedCredits: number;
182
- remainingDailyCredits: number | null;
183
- providerCount: number;
184
- laneCount: number;
185
- grantCount: number;
186
- };
187
- projectId: string;
188
- environment: "local" | "prod" | "staging";
189
- workDayId: string;
190
- state: string;
191
- totalTasks: number;
192
- completedTasks: number;
193
- failedTasks: number;
194
- queuedTasks: number;
195
- activeTasks: number;
196
- dailyTaskCreditBudget: number;
197
- usedTaskCredits: number;
198
- remainingTaskCredits: number;
199
- creditLedgerEntries: number;
200
- prioritySnapshotId: string;
201
- priorityItemCount: number;
202
- priorityItems: PrioritySnapshotItem[];
203
- taskItems: {
204
- id: string;
205
- agentId: string;
206
- type: string;
207
- state: string;
208
- priority: number;
209
- idempotencyKey: string;
210
- createdAt: string;
211
- startedAt: string;
212
- completedAt: string;
213
- lastErrorCode: string;
214
- lastErrorMessage: string;
215
- lastEventKind: string;
216
- outputCount: number;
217
- changedFiles: string[];
218
- }[];
219
- changedFiles: string[];
220
- releases: {
221
- id: string;
222
- deploymentKind: string;
223
- status: string;
224
- releaseTag: string;
225
- commitSha: string;
226
- sourceRef: string;
227
- startedAt: string;
228
- finishedAt: string;
229
- createdAt: string;
230
- }[];
231
- scaleDecision: ScaleDecision;
232
- scaleResult: WorkerPoolScaleResult;
233
- generatedAt: string;
234
- };
235
- skipped?: undefined;
236
- reason?: undefined;
237
- }>;
238
- export declare function runManagerCycle(options?: {
239
- sdk?: ManagerSdk;
240
- config?: ManagerConfig;
241
- reporter?: ControlPlaneReporter;
242
- scaler?: WorkerPoolScaler;
243
- now?: Date;
244
- }): Promise<{
245
- ok: boolean;
246
- mode: "reconcile";
247
- managerId: string;
248
- projectId: string;
249
- environment: "local" | "prod" | "staging";
250
- insideWorkWindow: boolean;
251
- workPolicy: WorkdayPolicy;
252
- workDay: Record<string, unknown>;
253
- prioritySnapshot: PrioritySnapshot;
254
- seededTasks: TaskRecord[];
255
- queuedCount: number;
256
- activeLeases: number;
257
- desiredWorkers: number;
258
- scaleResult: WorkerPoolScaleResult;
259
- workdaySummary: Record<string, unknown>;
260
- }>;
261
- export declare function startManagerLoop(options?: {
262
- sdk?: ManagerSdk;
263
- config?: ManagerConfig;
264
- reporter?: ControlPlaneReporter;
265
- scaler?: WorkerPoolScaler;
266
- }): Promise<void>;
267
- export {};