@grackle-ai/core 0.95.0 → 0.95.2

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.
@@ -1,10 +1,11 @@
1
1
  /**
2
2
  * Cron reconciliation phase — fires due schedules on each tick.
3
3
  *
4
- * Extracted from the former CronManager so it can plug into the
5
- * ReconciliationManager as one of several ordered phases.
4
+ * Creates tasks for due schedules and enqueues them for dispatch.
5
+ * The dispatch phase (separate reconciliation phase) handles starting
6
+ * sessions, respecting concurrency limits, and environment resolution.
6
7
  */
7
- import type { ScheduleRow, EnvironmentRow, TaskRow } from "@grackle-ai/database";
8
+ import type { ScheduleRow } from "@grackle-ai/database";
8
9
  import type { GrackleEventType } from "./event-bus.js";
9
10
  import type { ReconciliationPhase } from "./reconciliation-manager.js";
10
11
  /** Dependencies injected into the cron phase for testability. */
@@ -17,28 +18,23 @@ export interface CronPhaseDeps {
17
18
  createTask: (id: string, workspaceId: string | undefined, title: string, description: string, dependsOn: string[], workspaceSlug: string, parentTaskId?: string, canDecompose?: boolean, defaultPersonaId?: string) => void;
18
19
  /** Set the schedule_id FK on a task. */
19
20
  setTaskScheduleId: (taskId: string, scheduleId: string) => void;
20
- /** Start a task session internally (same as root task boot listener). */
21
- startTaskSession: (task: TaskRow, options?: {
22
- personaId?: string;
21
+ /** Enqueue a task for the dispatch phase to start. */
22
+ enqueueForDispatch: (entry: {
23
+ id: string;
24
+ taskId: string;
23
25
  environmentId?: string;
24
- notes?: string;
25
- }) => Promise<string | undefined>;
26
+ personaId?: string;
27
+ }) => void;
26
28
  /** Emit a domain event. */
27
29
  emit: (type: GrackleEventType, payload: Record<string, unknown>) => void;
28
- /** Find the first connected environment (prefers local). */
29
- findFirstConnectedEnvironment: () => EnvironmentRow | undefined;
30
30
  /** Look up a persona by ID. */
31
31
  getPersona: (id: string) => {
32
32
  id: string;
33
33
  name: string;
34
34
  runtime: string;
35
35
  } | undefined;
36
- /** Look up a task by ID (to pass to startTaskSession). */
37
- getTask: (id: string) => TaskRow | undefined;
38
36
  /** Enable or disable a schedule, setting or clearing nextRunAt. */
39
37
  setScheduleEnabled: (id: string, enabled: boolean, nextRunAt: string | null) => void;
40
- /** Check if an environment is connected. */
41
- isEnvironmentConnected: (environmentId: string) => boolean;
42
38
  }
43
39
  /**
44
40
  * Create a ReconciliationPhase that fires due schedules.
@@ -1 +1 @@
1
- {"version":3,"file":"cron-phase.d.ts","sourceRoot":"","sources":["../src/cron-phase.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGvE,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC5B,gDAAgD;IAChD,eAAe,EAAE,MAAM,WAAW,EAAE,CAAC;IACrC,+EAA+E;IAC/E,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5E,2CAA2C;IAC3C,UAAU,EAAE,CACV,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,OAAO,EACtB,gBAAgB,CAAC,EAAE,MAAM,KACtB,IAAI,CAAC;IACV,wCAAwC;IACxC,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,yEAAyE;IACzE,gBAAgB,EAAE,CAChB,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KACrE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACjC,2BAA2B;IAC3B,IAAI,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACzE,4DAA4D;IAC5D,6BAA6B,EAAE,MAAM,cAAc,GAAG,SAAS,CAAC;IAChE,+BAA+B;IAC/B,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACtF,0DAA0D;IAC1D,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,CAAC;IAC7C,mEAAmE;IAEnE,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACrF,4CAA4C;IAC5C,sBAAsB,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC;CAC5D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,mBAAmB,CAcxE"}
1
+ {"version":3,"file":"cron-phase.d.ts","sourceRoot":"","sources":["../src/cron-phase.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGvE,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC5B,gDAAgD;IAChD,eAAe,EAAE,MAAM,WAAW,EAAE,CAAC;IACrC,+EAA+E;IAC/E,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5E,2CAA2C;IAC3C,UAAU,EAAE,CACV,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,OAAO,EACtB,gBAAgB,CAAC,EAAE,MAAM,KACtB,IAAI,CAAC;IACV,wCAAwC;IACxC,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,sDAAsD;IACtD,kBAAkB,EAAE,CAAC,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAChH,2BAA2B;IAC3B,IAAI,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACzE,+BAA+B;IAC/B,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACtF,mEAAmE;IAEnE,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CACtF;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,mBAAmB,CAcxE"}
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * Cron reconciliation phase — fires due schedules on each tick.
3
3
  *
4
- * Extracted from the former CronManager so it can plug into the
5
- * ReconciliationManager as one of several ordered phases.
4
+ * Creates tasks for due schedules and enqueues them for dispatch.
5
+ * The dispatch phase (separate reconciliation phase) handles starting
6
+ * sessions, respecting concurrency limits, and environment resolution.
6
7
  */
7
8
  import { v4 as uuidv4 } from "uuid";
8
9
  import { logger } from "./logger.js";
@@ -24,13 +25,13 @@ export function createCronPhase(deps) {
24
25
  }
25
26
  logger.debug({ count: due.length }, "Cron phase: due schedules");
26
27
  for (const schedule of due) {
27
- await fireSchedule(deps, schedule);
28
+ fireSchedule(deps, schedule);
28
29
  }
29
30
  },
30
31
  };
31
32
  }
32
- /** Fire a single schedule: create task, start session, advance. */
33
- async function fireSchedule(deps, schedule) {
33
+ /** Fire a single schedule: create task, enqueue for dispatch, advance. */
34
+ function fireSchedule(deps, schedule) {
34
35
  const now = new Date().toISOString();
35
36
  let nextRunAt;
36
37
  try {
@@ -44,27 +45,6 @@ async function fireSchedule(deps, schedule) {
44
45
  return;
45
46
  }
46
47
  try {
47
- // Resolve environment — check connectivity before creating tasks to avoid orphan tasks
48
- let environmentId;
49
- if (schedule.environmentId) {
50
- // Explicit environment: verify it's connected before creating a task
51
- if (!deps.isEnvironmentConnected(schedule.environmentId)) {
52
- logger.warn({ scheduleId: schedule.id, environmentId: schedule.environmentId }, "Schedule fire skipped: specified environment not connected");
53
- deps.advanceSchedule(schedule.id, now, nextRunAt);
54
- return;
55
- }
56
- environmentId = schedule.environmentId;
57
- }
58
- else {
59
- // Auto-select first connected environment
60
- const env = deps.findFirstConnectedEnvironment();
61
- if (!env) {
62
- logger.warn({ scheduleId: schedule.id }, "Schedule fire skipped: no connected environment");
63
- deps.advanceSchedule(schedule.id, now, nextRunAt);
64
- return;
65
- }
66
- environmentId = env.id;
67
- }
68
48
  // Validate persona exists
69
49
  const persona = deps.getPersona(schedule.personaId);
70
50
  if (!persona) {
@@ -81,25 +61,17 @@ async function fireSchedule(deps, schedule) {
81
61
  parentTaskId, false, // canDecompose
82
62
  schedule.personaId);
83
63
  deps.setTaskScheduleId(taskId, schedule.id);
84
- // Fetch the created task for startTaskSession
85
- const task = deps.getTask(taskId);
86
- if (!task) {
87
- logger.error({ scheduleId: schedule.id, taskId }, "Schedule fire failed: created task not found");
88
- deps.advanceSchedule(schedule.id, now, nextRunAt);
89
- return;
90
- }
91
- // Start the task session
92
- const error = await deps.startTaskSession(task, {
93
- environmentId,
64
+ // Enqueue for the dispatch phase to start (respects concurrency limits).
65
+ // Environment resolution is handled by the dispatch phase; we pass the
66
+ // schedule's preferred environmentId as a hint.
67
+ deps.enqueueForDispatch({
68
+ id: uuidv4(),
69
+ taskId,
70
+ environmentId: schedule.environmentId,
94
71
  personaId: schedule.personaId,
95
72
  });
96
- // Advance schedule regardless of session start outcome
73
+ // Advance schedule
97
74
  deps.advanceSchedule(schedule.id, now, nextRunAt);
98
- if (error) {
99
- logger.warn({ scheduleId: schedule.id, taskId, error }, "Schedule fire: task created but session start failed");
100
- return;
101
- }
102
- // Emit event only on successful fire
103
75
  deps.emit("schedule.fired", {
104
76
  scheduleId: schedule.id,
105
77
  taskId,
@@ -1 +1 @@
1
- {"version":3,"file":"cron-phase.js","sourceRoot":"","sources":["../src/cron-phase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cron-phase.js","sourceRoot":"","sources":["../src/cron-phase.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,11 @@ export function createDispatchPhase(deps) {
40
40
  }
41
41
  /** Process a single dispatch queue entry. */
42
42
  async function dispatchEntry(deps, entry) {
43
+ // Entries with no environmentId are waiting for auto-resolution (#927).
44
+ // Skip them for now — they'll be dispatched once environment resolution is implemented.
45
+ if (!entry.environmentId) {
46
+ return;
47
+ }
43
48
  // Dequeue entries whose environment has been removed entirely (not just disconnected)
44
49
  if (!deps.environmentExists(entry.environmentId)) {
45
50
  deps.dequeueEntry(entry.taskId);
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch-phase.js","sourceRoot":"","sources":["../src/dispatch-phase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatch-phase.js","sourceRoot":"","sources":["../src/dispatch-phase.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grackle-ai/core",
3
- "version": "0.95.0",
3
+ "version": "0.95.2",
4
4
  "description": "Core gRPC business logic for Grackle — RPC handlers, event system, streaming, session lifecycle",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -36,13 +36,13 @@
36
36
  "pino": "^10.3.1",
37
37
  "ulid": "^2.3.0",
38
38
  "uuid": "^11.0.0",
39
- "@grackle-ai/auth": "0.95.0",
40
- "@grackle-ai/common": "0.95.0",
41
- "@grackle-ai/database": "0.95.0",
42
- "@grackle-ai/plugin-sdk": "0.95.0",
43
- "@grackle-ai/adapter-sdk": "0.95.0",
44
- "@grackle-ai/knowledge": "0.95.0",
45
- "@grackle-ai/prompt": "0.95.0"
39
+ "@grackle-ai/adapter-sdk": "0.95.2",
40
+ "@grackle-ai/common": "0.95.2",
41
+ "@grackle-ai/plugin-sdk": "0.95.2",
42
+ "@grackle-ai/database": "0.95.2",
43
+ "@grackle-ai/auth": "0.95.2",
44
+ "@grackle-ai/knowledge": "0.95.2",
45
+ "@grackle-ai/prompt": "0.95.2"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@rushstack/heft": "1.2.7",