@grackle-ai/server 0.95.1 → 0.96.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/config.d.ts CHANGED
@@ -14,6 +14,12 @@ export interface ServerConfig {
14
14
  skipLocalPowerline: boolean;
15
15
  /** Skip auto-starting the root task when an environment connects (GRACKLE_SKIP_ROOT_AUTOSTART=1). */
16
16
  skipRootAutostart: boolean;
17
+ /** Override agent working directory (GRACKLE_WORKING_DIRECTORY). */
18
+ workingDirectory?: string;
19
+ /** Worktree base path (GRACKLE_WORKTREE_BASE). */
20
+ worktreeBase?: string;
21
+ /** Docker host for host mapping (GRACKLE_DOCKER_HOST). */
22
+ dockerHost?: string;
17
23
  }
18
24
  /**
19
25
  * Resolve and validate all server configuration from environment variables.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,uFAAuF;IACvF,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qGAAqG;IACrG,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AA0BD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,CAUlD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,uFAAuF;IACvF,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qGAAqG;IACrG,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA0BD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,CAalD"}
package/dist/config.js CHANGED
@@ -32,6 +32,9 @@ export function resolveServerConfig() {
32
32
  host: process.env.GRACKLE_HOST || "127.0.0.1",
33
33
  skipLocalPowerline: parseFlag("GRACKLE_SKIP_LOCAL_POWERLINE"),
34
34
  skipRootAutostart: parseFlag("GRACKLE_SKIP_ROOT_AUTOSTART"),
35
+ workingDirectory: process.env.GRACKLE_WORKING_DIRECTORY || undefined,
36
+ worktreeBase: process.env.GRACKLE_WORKTREE_BASE || undefined,
37
+ dockerHost: process.env.GRACKLE_DOCKER_HOST || undefined,
35
38
  });
36
39
  }
37
40
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAoBrH;;;;GAIG;AACH,SAAS,SAAS,CAAC,OAAe,EAAE,YAAoB;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,KAAK,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CACb,oBAAoB,OAAO,MAAM,GAAG,4CAA4C,CACjF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,6FAA6F;AAC7F,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,QAAQ,EAAE,SAAS,CAAC,cAAc,EAAE,mBAAmB,CAAC;QACxD,OAAO,EAAE,SAAS,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;QACxD,OAAO,EAAE,SAAS,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;QACxD,aAAa,EAAE,SAAS,CAAC,wBAAwB,EAAE,sBAAsB,CAAC;QAC1E,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,WAAW;QAC7C,kBAAkB,EAAE,SAAS,CAAC,8BAA8B,CAAC;QAC7D,iBAAiB,EAAE,SAAS,CAAC,6BAA6B,CAAC;KAC5D,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AA0BrH;;;;GAIG;AACH,SAAS,SAAS,CAAC,OAAe,EAAE,YAAoB;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,KAAK,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CACb,oBAAoB,OAAO,MAAM,GAAG,4CAA4C,CACjF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,6FAA6F;AAC7F,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,QAAQ,EAAE,SAAS,CAAC,cAAc,EAAE,mBAAmB,CAAC;QACxD,OAAO,EAAE,SAAS,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;QACxD,OAAO,EAAE,SAAS,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;QACxD,aAAa,EAAE,SAAS,CAAC,wBAAwB,EAAE,sBAAsB,CAAC;QAC1E,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,WAAW;QAC7C,kBAAkB,EAAE,SAAS,CAAC,8BAA8B,CAAC;QAC7D,iBAAiB,EAAE,SAAS,CAAC,6BAA6B,CAAC;QAC3D,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,SAAS;QACpE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,SAAS;QAC5D,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,SAAS;KACzD,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Core plugin — wraps all built-in Grackle handler groups, reconciliation
3
+ * phases, and event subscribers into a single GracklePlugin.
4
+ *
5
+ * Handler files remain in `@grackle-ai/core`. This plugin groups their
6
+ * contributions for the `loadPlugins()` loader.
7
+ *
8
+ * @module
9
+ */
10
+ import type { GracklePlugin } from "@grackle-ai/plugin-sdk";
11
+ /**
12
+ * Create the core plugin that contributes all built-in server capabilities.
13
+ *
14
+ * - **gRPC handlers**: All 12 handler groups (environments, sessions, tasks, etc.)
15
+ * - **Reconciliation phases**: dispatch, cron, lifecycle-cleanup, orphan-reparent,
16
+ * environment-reconciliation, and optionally knowledge-health
17
+ * - **Event subscribers**: SIGCHLD, escalation auto-detect, orphan reparent,
18
+ * lifecycle manager, and optionally root task boot
19
+ *
20
+ * @returns A GracklePlugin ready to pass to `loadPlugins()`.
21
+ */
22
+ export declare function createCorePlugin(): GracklePlugin;
23
+ //# sourceMappingURL=core-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-plugin.d.ts","sourceRoot":"","sources":["../src/core-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAM5D;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAahD"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Core plugin — wraps all built-in Grackle handler groups, reconciliation
3
+ * phases, and event subscribers into a single GracklePlugin.
4
+ *
5
+ * Handler files remain in `@grackle-ai/core`. This plugin groups their
6
+ * contributions for the `loadPlugins()` loader.
7
+ *
8
+ * @module
9
+ */
10
+ import { grackle } from "@grackle-ai/common";
11
+ import { createDefaultCollector } from "@grackle-ai/core";
12
+ import { createReconciliationPhases } from "./reconciliation-setup.js";
13
+ import { createEventSubscribers } from "./event-subscribers.js";
14
+ /**
15
+ * Create the core plugin that contributes all built-in server capabilities.
16
+ *
17
+ * - **gRPC handlers**: All 12 handler groups (environments, sessions, tasks, etc.)
18
+ * - **Reconciliation phases**: dispatch, cron, lifecycle-cleanup, orphan-reparent,
19
+ * environment-reconciliation, and optionally knowledge-health
20
+ * - **Event subscribers**: SIGCHLD, escalation auto-detect, orphan reparent,
21
+ * lifecycle manager, and optionally root task boot
22
+ *
23
+ * @returns A GracklePlugin ready to pass to `loadPlugins()`.
24
+ */
25
+ export function createCorePlugin() {
26
+ return {
27
+ name: "core",
28
+ grpcHandlers: () => [{
29
+ service: grackle.Grackle,
30
+ handlers: createDefaultCollector().getHandlers(grackle.Grackle),
31
+ }],
32
+ reconciliationPhases: () => createReconciliationPhases(),
33
+ eventSubscribers: (ctx) => createEventSubscribers(ctx),
34
+ };
35
+ }
36
+ //# sourceMappingURL=core-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-plugin.js","sourceRoot":"","sources":["../src/core-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,IAAI,EAAE,MAAM;QAEZ,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;gBACnB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ,EAAE,sBAAsB,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;aAChE,CAAC;QAEF,oBAAoB,EAAE,GAAG,EAAE,CAAC,0BAA0B,EAAE;QAExD,gBAAgB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAC;KACvD,CAAC;AACJ,CAAC"}
@@ -1,16 +1,30 @@
1
- import type { Disposable } from "@grackle-ai/core";
1
+ import type { Disposable, PluginContext } from "@grackle-ai/core";
2
2
  /**
3
- * Wire all event subscribers (SIGCHLD, escalation, orphan reparent, lifecycle)
4
- * and optionally the root task auto-boot handler.
3
+ * Context accepted by createEventSubscribers.
5
4
  *
6
- * Returns an array of Disposable handles so that all subscribers can be
7
- * cleanly unregistered during shutdown.
5
+ * Core's subscriber factories accept the narrow `PluginContext` (subscribe + emit).
6
+ * The SDK's wider `PluginContext` (with logger + config) is structurally compatible.
7
+ */
8
+ interface SubscriberContext extends PluginContext {
9
+ config?: {
10
+ skipRootAutostart?: boolean;
11
+ };
12
+ }
13
+ /**
14
+ * Create all event subscribers for the core plugin.
15
+ *
16
+ * @param ctx - Plugin context. Reads `ctx.config.skipRootAutostart` to decide
17
+ * whether to include the root task boot subscriber.
18
+ * @returns Array of disposables.
19
+ */
20
+ export declare function createEventSubscribers(ctx: SubscriberContext): Disposable[];
21
+ /**
22
+ * Wire all event subscribers (backward-compatible wrapper).
8
23
  *
9
- * @param options.skipRootAutostart - When true, skip wiring the root task boot
10
- * (used in E2E tests where the root session would conflict with test sessions).
11
- * @returns Array of disposables — call `.dispose()` on each to unsubscribe.
24
+ * @deprecated Use `createEventSubscribers(ctx)` with a PluginContext instead.
12
25
  */
13
26
  export declare function wireEventSubscribers(options: {
14
27
  skipRootAutostart: boolean;
15
28
  }): Disposable[];
29
+ export {};
16
30
  //# sourceMappingURL=event-subscribers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-subscribers.d.ts","sourceRoot":"","sources":["../src/event-subscribers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAoC,MAAM,kBAAkB,CAAC;AAGrF;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,iBAAiB,EAAE,OAAO,CAAC;CAC5B,GAAG,UAAU,EAAE,CAwBf"}
1
+ {"version":3,"file":"event-subscribers.d.ts","sourceRoot":"","sources":["../src/event-subscribers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAqB,MAAM,kBAAkB,CAAC;AAGrF;;;;;GAKG;AACH,UAAU,iBAAkB,SAAQ,aAAa;IAC/C,MAAM,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC1C;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,iBAAiB,GAAG,UAAU,EAAE,CAsB3E;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,iBAAiB,EAAE,OAAO,CAAC;CAC5B,GAAG,UAAU,EAAE,CAMf"}
@@ -1,26 +1,21 @@
1
1
  import { createSigchldSubscriber, createEscalationAutoSubscriber, createOrphanReparentSubscriber, createLifecycleSubscriber, createRootTaskBootSubscriber, subscribe, emit, computeTaskStatus, findFirstConnectedEnvironment, startTaskSession, reanimateAgent, } from "@grackle-ai/core";
2
2
  import { taskStore, sessionStore, settingsStore } from "@grackle-ai/database";
3
3
  /**
4
- * Wire all event subscribers (SIGCHLD, escalation, orphan reparent, lifecycle)
5
- * and optionally the root task auto-boot handler.
4
+ * Create all event subscribers for the core plugin.
6
5
  *
7
- * Returns an array of Disposable handles so that all subscribers can be
8
- * cleanly unregistered during shutdown.
9
- *
10
- * @param options.skipRootAutostart - When true, skip wiring the root task boot
11
- * (used in E2E tests where the root session would conflict with test sessions).
12
- * @returns Array of disposables — call `.dispose()` on each to unsubscribe.
6
+ * @param ctx - Plugin context. Reads `ctx.config.skipRootAutostart` to decide
7
+ * whether to include the root task boot subscriber.
8
+ * @returns Array of disposables.
13
9
  */
14
- export function wireEventSubscribers(options) {
15
- const pluginContext = { subscribe, emit };
10
+ export function createEventSubscribers(ctx) {
16
11
  const factories = [
17
12
  createSigchldSubscriber,
18
13
  createEscalationAutoSubscriber,
19
14
  createOrphanReparentSubscriber,
20
15
  createLifecycleSubscriber,
21
16
  ];
22
- if (!options.skipRootAutostart) {
23
- factories.push((ctx) => createRootTaskBootSubscriber(ctx, {
17
+ if (!ctx.config?.skipRootAutostart) {
18
+ factories.push((pluginCtx) => createRootTaskBootSubscriber(pluginCtx, {
24
19
  getTask: taskStore.getTask,
25
20
  listSessionsForTask: sessionStore.listSessionsForTask,
26
21
  getLatestSessionForTask: sessionStore.getLatestSessionForTask,
@@ -31,6 +26,18 @@ export function wireEventSubscribers(options) {
31
26
  isOnboarded: () => settingsStore.getSetting("onboarding_completed") === "true",
32
27
  }));
33
28
  }
34
- return factories.map((factory) => factory(pluginContext));
29
+ return factories.map((factory) => factory(ctx));
30
+ }
31
+ /**
32
+ * Wire all event subscribers (backward-compatible wrapper).
33
+ *
34
+ * @deprecated Use `createEventSubscribers(ctx)` with a PluginContext instead.
35
+ */
36
+ export function wireEventSubscribers(options) {
37
+ return createEventSubscribers({
38
+ subscribe,
39
+ emit,
40
+ config: { skipRootAutostart: options.skipRootAutostart },
41
+ });
35
42
  }
36
43
  //# sourceMappingURL=event-subscribers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-subscribers.js","sourceRoot":"","sources":["../src/event-subscribers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EAAE,8BAA8B,EACvD,8BAA8B,EAAE,yBAAyB,EACzD,4BAA4B,EAAE,SAAS,EAAE,IAAI,EAC7C,iBAAiB,EAAE,6BAA6B,EAChD,gBAAgB,EAAE,cAAc,GACjC,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE9E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAEpC;IACC,MAAM,aAAa,GAAkB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAEzD,MAAM,SAAS,GAAwB;QACrC,uBAAuB;QACvB,8BAA8B;QAC9B,8BAA8B;QAC9B,yBAAyB;KAC1B,CAAC;IAEF,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC/B,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,4BAA4B,CAAC,GAAG,EAAE;YACxD,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,mBAAmB,EAAE,YAAY,CAAC,mBAAmB;YACrD,uBAAuB,EAAE,YAAY,CAAC,uBAAuB;YAC7D,iBAAiB;YACjB,6BAA6B;YAC7B,gBAAgB;YAChB,cAAc;YACd,WAAW,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,sBAAsB,CAAC,KAAK,MAAM;SAC/E,CAAC,CAAC,CAAC;IACN,CAAC;IAED,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"event-subscribers.js","sourceRoot":"","sources":["../src/event-subscribers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EAAE,8BAA8B,EACvD,8BAA8B,EAAE,yBAAyB,EACzD,4BAA4B,EAAE,SAAS,EAAE,IAAI,EAC7C,iBAAiB,EAAE,6BAA6B,EAChD,gBAAgB,EAAE,cAAc,GACjC,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAY9E;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAsB;IAC3D,MAAM,SAAS,GAAwB;QACrC,uBAAuB;QACvB,8BAA8B;QAC9B,8BAA8B;QAC9B,yBAAyB;KAC1B,CAAC;IAEF,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC;QACnC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,4BAA4B,CAAC,SAAS,EAAE;YACpE,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,mBAAmB,EAAE,YAAY,CAAC,mBAAmB;YACrD,uBAAuB,EAAE,YAAY,CAAC,uBAAuB;YAC7D,iBAAiB;YACjB,6BAA6B;YAC7B,gBAAgB;YAChB,cAAc;YACd,WAAW,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,sBAAsB,CAAC,KAAK,MAAM;SAC/E,CAAC,CAAC,CAAC;IACN,CAAC;IAED,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAEpC;IACC,OAAO,sBAAsB,CAAC;QAC5B,SAAS;QACT,IAAI;QACJ,MAAM,EAAE,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE;KACzD,CAAC,CAAC;AACL,CAAC"}
package/dist/index.js CHANGED
@@ -2,7 +2,8 @@ import { connectNodeAdapter } from "@connectrpc/connect-node";
2
2
  import { ConnectError, Code } from "@connectrpc/connect";
3
3
  import http2 from "node:http2";
4
4
  import { randomUUID } from "node:crypto";
5
- import { registerGrackleRoutes, startHeartbeat, getAdapter, setConnection, removeConnection, emit, pushToEnv, attemptReconnects, resetReconnectState, parseAdapterConfig, isKnowledgeEnabled, initKnowledge, getKnowledgeReadinessCheck, ReconciliationManager, logger, exec, detectLanIp, runWithTrace, isValidTraceId, wrapAsyncIterableWithTrace, } from "@grackle-ai/core";
5
+ import { createServiceCollector, startHeartbeat, getAdapter, setConnection, removeConnection, emit, subscribe, pushToEnv, attemptReconnects, resetReconnectState, parseAdapterConfig, isKnowledgeEnabled, initKnowledge, getKnowledgeReadinessCheck, ReconciliationManager, logger, exec, detectLanIp, runWithTrace, isValidTraceId, wrapAsyncIterableWithTrace, } from "@grackle-ai/core";
6
+ import { loadPlugins } from "@grackle-ai/plugin-sdk";
6
7
  import { envRegistry, sessionStore, settingsStore, personaStore, workspaceStore, taskStore, sqlite, grackleHome } from "@grackle-ai/database";
7
8
  import { reconnectOrProvision } from "@grackle-ai/adapter-sdk";
8
9
  import { LocalPowerLineManager } from "./local-powerline-manager.js";
@@ -15,8 +16,7 @@ import { createRequire } from "node:module";
15
16
  import { initializeDatabase } from "./database-init.js";
16
17
  import { registerAllAdapters } from "./adapter-registry.js";
17
18
  import { bootstrapLocalEnvironment } from "./local-environment.js";
18
- import { createReconciliationPhases } from "./reconciliation-setup.js";
19
- import { wireEventSubscribers } from "./event-subscribers.js";
19
+ import { createCorePlugin } from "./core-plugin.js";
20
20
  import { createShutdown } from "./shutdown.js";
21
21
  /** Require function for loading optional native modules (qrcode). */
22
22
  const esmRequire = createRequire(import.meta.url);
@@ -85,9 +85,34 @@ async function main() {
85
85
  startPairingCleanup();
86
86
  startSessionCleanup();
87
87
  startOAuthCleanup();
88
+ // --- Load plugins ---
89
+ const pluginContext = {
90
+ subscribe,
91
+ emit,
92
+ logger,
93
+ config: {
94
+ grpcPort: config.grpcPort,
95
+ webPort: config.webPort,
96
+ mcpPort: config.mcpPort,
97
+ powerlinePort: config.powerlinePort,
98
+ host: config.host,
99
+ grackleHome,
100
+ apiKey,
101
+ skipRootAutostart: config.skipRootAutostart,
102
+ workingDirectory: config.workingDirectory,
103
+ worktreeBase: config.worktreeBase,
104
+ dockerHost: config.dockerHost,
105
+ },
106
+ };
107
+ const loaded = await loadPlugins([createCorePlugin()], pluginContext);
108
+ // --- Wire gRPC handlers from plugins ---
109
+ const collector = createServiceCollector();
110
+ for (const reg of loaded.serviceRegistrations) {
111
+ collector.addHandlers(reg.service, reg.handlers);
112
+ }
113
+ const routes = collector.buildRoutes();
88
114
  // --- Reconciliation Manager ---
89
- const reconciliationPhases = createReconciliationPhases();
90
- const reconciliationManager = new ReconciliationManager(reconciliationPhases);
115
+ const reconciliationManager = new ReconciliationManager(loaded.reconciliationPhases);
91
116
  reconciliationManager.start();
92
117
  // --- gRPC server (HTTP/2) ---
93
118
  const grpcPort = config.grpcPort;
@@ -96,7 +121,7 @@ async function main() {
96
121
  /** Format bindHost for embedding in a URL — IPv6 literals need brackets per RFC 2732. */
97
122
  const urlHost = bindHost.includes(":") ? `[${bindHost}]` : bindHost;
98
123
  const grpcHandler = connectNodeAdapter({
99
- routes: registerGrackleRoutes,
124
+ routes,
100
125
  interceptors: [
101
126
  // Trace ID interceptor: extract or generate a trace ID for request correlation.
102
127
  // For streaming RPCs, wraps the response's message iterable so the generator
@@ -143,7 +168,7 @@ async function main() {
143
168
  apiKey,
144
169
  webPort,
145
170
  bindHost,
146
- connectRoutes: registerGrackleRoutes,
171
+ connectRoutes: routes,
147
172
  readinessCheck: () => {
148
173
  const checks = {};
149
174
  try {
@@ -164,8 +189,6 @@ async function main() {
164
189
  };
165
190
  },
166
191
  });
167
- // Wire event subscribers (SIGCHLD, escalation, orphan reparent, lifecycle, root task boot)
168
- const activeSubscribers = wireEventSubscribers({ skipRootAutostart: config.skipRootAutostart });
169
192
  webServer.on("error", (err) => {
170
193
  if (err.code === "EADDRINUSE") {
171
194
  logger.fatal({ port: webPort }, "Port %d is already in use. Is another Grackle server running?", webPort);
@@ -244,7 +267,7 @@ async function main() {
244
267
  reconciliationManager,
245
268
  localPowerLineManager,
246
269
  knowledgeCleanup,
247
- subscribers: activeSubscribers,
270
+ pluginShutdown: loaded.shutdown,
248
271
  });
249
272
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
250
273
  process.on("SIGINT", shutdown);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import type { Disposable } from "@grackle-ai/core";
2
1
  /** Minimal server interface — only the `.close()` method is needed for shutdown. */
3
2
  interface Closeable {
4
3
  close: (cb: (err?: Error) => void) => void;
@@ -21,8 +20,8 @@ export interface ShutdownContext {
21
20
  };
22
21
  /** Optional knowledge graph cleanup function. */
23
22
  knowledgeCleanup?: () => Promise<void>;
24
- /** Active event subscribers to dispose on shutdown. */
25
- subscribers?: Disposable[];
23
+ /** Plugin shutdown function — disposes subscribers and calls plugin teardown hooks. */
24
+ pluginShutdown?: () => Promise<void>;
26
25
  }
27
26
  /**
28
27
  * Create a graceful shutdown function that closes all server resources.
@@ -1 +1 @@
1
- {"version":3,"file":"shutdown.d.ts","sourceRoot":"","sources":["../src/shutdown.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAQnD,oFAAoF;AACpF,UAAU,SAAS;IACjB,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,KAAK,IAAI,CAAC;CAC5C;AAED,kEAAkE;AAClE,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,UAAU,EAAE,SAAS,CAAC;IACtB,2CAA2C;IAC3C,SAAS,EAAE,SAAS,CAAC;IACrB,+BAA+B;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,mEAAmE;IACnE,qBAAqB,EAAE;QAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IACrD,6DAA6D;IAC7D,qBAAqB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IACtD,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,uDAAuD;IACvD,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CA+E5E"}
1
+ {"version":3,"file":"shutdown.d.ts","sourceRoot":"","sources":["../src/shutdown.ts"],"names":[],"mappings":"AAQA,oFAAoF;AACpF,UAAU,SAAS;IACjB,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,KAAK,IAAI,CAAC;CAC5C;AAED,kEAAkE;AAClE,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,UAAU,EAAE,SAAS,CAAC;IACtB,2CAA2C;IAC3C,SAAS,EAAE,SAAS,CAAC;IACrB,+BAA+B;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,mEAAmE;IACnE,qBAAqB,EAAE;QAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IACrD,6DAA6D;IAC7D,qBAAqB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IACtD,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,uFAAuF;IACvF,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CA6E5E"}
package/dist/shutdown.js CHANGED
@@ -62,16 +62,14 @@ export function createShutdown(context) {
62
62
  resolve();
63
63
  });
64
64
  });
65
- // Dispose event subscribers after servers are closed so in-flight requests
66
- // are fully handled before unregistering handlers.
67
- if (context.subscribers) {
68
- for (const subscriber of context.subscribers) {
69
- try {
70
- subscriber.dispose();
71
- }
72
- catch (err) {
73
- logger.error({ err }, "Error while disposing subscriber during shutdown");
74
- }
65
+ // Run plugin shutdown (disposes subscribers + calls plugin teardown hooks)
66
+ // after servers are closed so in-flight requests are fully handled first.
67
+ if (context.pluginShutdown) {
68
+ try {
69
+ await context.pluginShutdown();
70
+ }
71
+ catch (err) {
72
+ logger.error({ err }, "Error during plugin shutdown");
75
73
  }
76
74
  }
77
75
  // Final WAL checkpoint (TRUNCATE) to fully flush pending writes before exit
@@ -1 +1 @@
1
- {"version":3,"file":"shutdown.js","sourceRoot":"","sources":["../src/shutdown.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shutdown.js","sourceRoot":"","sources":["../src/shutdown.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grackle-ai/server",
3
- "version": "0.95.1",
3
+ "version": "0.96.0",
4
4
  "description": "Grackle server orchestrator — spawns and wires core (gRPC), web-server (HTTP), MCP, and PowerLine",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -31,18 +31,19 @@
31
31
  "@connectrpc/connect-node": "^2.0.0",
32
32
  "pino": "^10.3.1",
33
33
  "qrcode": "^1.5.4",
34
- "@grackle-ai/adapter-codespace": "0.95.1",
35
- "@grackle-ai/adapter-docker": "0.95.1",
36
- "@grackle-ai/adapter-local": "0.95.1",
37
- "@grackle-ai/adapter-ssh": "0.95.1",
38
- "@grackle-ai/adapter-sdk": "0.95.1",
39
- "@grackle-ai/auth": "0.95.1",
40
- "@grackle-ai/powerline": "0.95.1",
41
- "@grackle-ai/mcp": "0.95.1",
42
- "@grackle-ai/web-server": "0.95.1",
43
- "@grackle-ai/common": "0.95.1",
44
- "@grackle-ai/database": "0.95.1",
45
- "@grackle-ai/core": "0.95.1"
34
+ "@grackle-ai/adapter-docker": "0.96.0",
35
+ "@grackle-ai/adapter-codespace": "0.96.0",
36
+ "@grackle-ai/adapter-sdk": "0.96.0",
37
+ "@grackle-ai/adapter-local": "0.96.0",
38
+ "@grackle-ai/adapter-ssh": "0.96.0",
39
+ "@grackle-ai/auth": "0.96.0",
40
+ "@grackle-ai/common": "0.96.0",
41
+ "@grackle-ai/database": "0.96.0",
42
+ "@grackle-ai/mcp": "0.96.0",
43
+ "@grackle-ai/plugin-sdk": "0.96.0",
44
+ "@grackle-ai/powerline": "0.96.0",
45
+ "@grackle-ai/core": "0.96.0",
46
+ "@grackle-ai/web-server": "0.96.0"
46
47
  },
47
48
  "devDependencies": {
48
49
  "@rushstack/heft": "1.2.7",