@grackle-ai/plugin-core 0.114.0 → 0.115.1

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.
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Runtime configuration for channel-capability handlers.
3
+ *
4
+ * Channel handlers are stateless module functions, but minting tokens and
5
+ * building ingress URLs requires the signing secret and the public web base
6
+ * URL — known only at server startup. The composition root calls
7
+ * {@link setChannelConfig} once; handlers read it via {@link getChannelConfig}.
8
+ *
9
+ * @module
10
+ */
11
+ /** Configuration required by channel-capability handlers. */
12
+ export interface ChannelConfig {
13
+ /** HMAC signing secret for channel tokens (the server API key). */
14
+ signingSecret: string;
15
+ /** Public base URL for ingress webhook URLs, e.g. `http://127.0.0.1:3000`. */
16
+ ingressBaseUrl: string;
17
+ }
18
+ /** Configure channel handlers. Called once at server startup. */
19
+ export declare function setChannelConfig(next: ChannelConfig): void;
20
+ /** Get the channel config, throwing if {@link setChannelConfig} was not called. */
21
+ export declare function getChannelConfig(): ChannelConfig;
22
+ //# sourceMappingURL=channel-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-config.d.ts","sourceRoot":"","sources":["../src/channel-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,6DAA6D;AAC7D,MAAM,WAAW,aAAa;IAC5B,mEAAmE;IACnE,aAAa,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,cAAc,EAAE,MAAM,CAAC;CACxB;AAID,iEAAiE;AACjE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAE1D;AAED,mFAAmF;AACnF,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Runtime configuration for channel-capability handlers.
3
+ *
4
+ * Channel handlers are stateless module functions, but minting tokens and
5
+ * building ingress URLs requires the signing secret and the public web base
6
+ * URL — known only at server startup. The composition root calls
7
+ * {@link setChannelConfig} once; handlers read it via {@link getChannelConfig}.
8
+ *
9
+ * @module
10
+ */
11
+ let config;
12
+ /** Configure channel handlers. Called once at server startup. */
13
+ export function setChannelConfig(next) {
14
+ config = next;
15
+ }
16
+ /** Get the channel config, throwing if {@link setChannelConfig} was not called. */
17
+ export function getChannelConfig() {
18
+ if (!config) {
19
+ throw new Error("Channel handlers not configured: call setChannelConfig() at startup");
20
+ }
21
+ return config;
22
+ }
23
+ //# sourceMappingURL=channel-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-config.js","sourceRoot":"","sources":["../src/channel-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,IAAI,MAAiC,CAAC;AAEtC,iEAAiE;AACjE,MAAM,UAAU,gBAAgB,CAAC,IAAmB;IAClD,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { grackle } from "@grackle-ai/common";
2
+ /**
3
+ * Mint a capability token exposing a single session channel for inbound
4
+ * user-message injection, and persist a revocable grant.
5
+ *
6
+ * v0 supports session targets only (`grackle:/sessions/<id>`).
7
+ */
8
+ export declare function exposeChannel(req: grackle.ExposeChannelRequest): Promise<grackle.ExposeChannelResponse>;
9
+ /** List all channel grants. */
10
+ export declare function listChannelGrants(_req: grackle.ListChannelGrantsRequest): Promise<grackle.ChannelGrantList>;
11
+ /** Revoke a channel grant; its webhook token stops working immediately. */
12
+ export declare function revokeChannelGrant(req: grackle.RevokeChannelGrantRequest): Promise<grackle.Empty>;
13
+ //# sourceMappingURL=channel-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-handlers.d.ts","sourceRoot":"","sources":["../src/channel-handlers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAyB7C;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAmC7G;AAED,+BAA+B;AAC/B,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAGjH;AAED,2EAA2E;AAC3E,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,yBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CASvG"}
@@ -0,0 +1,77 @@
1
+ import { ConnectError, Code } from "@connectrpc/connect";
2
+ import { create } from "@bufbuild/protobuf";
3
+ import { grackle } from "@grackle-ai/common";
4
+ import { channelGrantStore, sessionStore } from "@grackle-ai/database";
5
+ import { createChannelToken, verifyChannelToken } from "@grackle-ai/auth";
6
+ import { ulid } from "ulid";
7
+ import { getChannelConfig } from "./channel-config.js";
8
+ /** Verbs currently supported on a channel. */
9
+ const SUPPORTED_VERBS = new Set(["send_input"]);
10
+ /** Default verb set when a request omits `verbs`. */
11
+ const DEFAULT_VERBS = ["send_input"];
12
+ /** Convert a stored grant row to its proto representation. */
13
+ function grantRowToProto(row) {
14
+ return create(grackle.ChannelGrantSchema, {
15
+ grantId: row.id,
16
+ channelUri: row.channelUri,
17
+ verbs: row.verbs ? row.verbs.split(",") : [],
18
+ label: row.label,
19
+ createdAt: row.createdAt,
20
+ expiresAt: row.expiresAt ?? "",
21
+ revoked: row.revoked,
22
+ });
23
+ }
24
+ /**
25
+ * Mint a capability token exposing a single session channel for inbound
26
+ * user-message injection, and persist a revocable grant.
27
+ *
28
+ * v0 supports session targets only (`grackle:/sessions/<id>`).
29
+ */
30
+ export async function exposeChannel(req) {
31
+ if (req.target.case !== "sessionId" || !req.target.value) {
32
+ throw new ConnectError("a session_id target is required", Code.InvalidArgument);
33
+ }
34
+ const sessionId = req.target.value;
35
+ if (!sessionStore.getSession(sessionId)) {
36
+ throw new ConnectError(`Session not found: ${sessionId}`, Code.NotFound);
37
+ }
38
+ const verbs = req.verbs.length > 0 ? req.verbs : [...DEFAULT_VERBS];
39
+ for (const verb of verbs) {
40
+ if (!SUPPORTED_VERBS.has(verb)) {
41
+ throw new ConnectError(`Unsupported verb: ${verb}`, Code.InvalidArgument);
42
+ }
43
+ }
44
+ const channelUri = `grackle:/sessions/${sessionId}`;
45
+ const grantId = ulid();
46
+ const { signingSecret, ingressBaseUrl } = getChannelConfig();
47
+ const ttlMs = req.ttlSeconds > 0 ? req.ttlSeconds * 1000 : undefined;
48
+ const token = createChannelToken({ chan: channelUri, verbs, jti: grantId }, signingSecret, ttlMs);
49
+ // Decode the freshly-minted token to read its expiry without duplicating TTL logic.
50
+ const claims = verifyChannelToken(token, signingSecret);
51
+ const expiresAt = claims ? new Date(claims.exp * 1000).toISOString() : "";
52
+ channelGrantStore.createGrant(grantId, channelUri, verbs.join(","), req.label, expiresAt || null);
53
+ return create(grackle.ExposeChannelResponseSchema, {
54
+ channelUri,
55
+ grantId,
56
+ token,
57
+ ingressUrl: `${ingressBaseUrl}/hook/${token}`,
58
+ expiresAt,
59
+ });
60
+ }
61
+ /** List all channel grants. */
62
+ export async function listChannelGrants(_req) {
63
+ const rows = channelGrantStore.listGrants();
64
+ return create(grackle.ChannelGrantListSchema, { grants: rows.map(grantRowToProto) });
65
+ }
66
+ /** Revoke a channel grant; its webhook token stops working immediately. */
67
+ export async function revokeChannelGrant(req) {
68
+ if (!req.grantId) {
69
+ throw new ConnectError("grant_id is required", Code.InvalidArgument);
70
+ }
71
+ if (!channelGrantStore.getGrant(req.grantId)) {
72
+ throw new ConnectError(`grant not found: ${req.grantId}`, Code.NotFound);
73
+ }
74
+ channelGrantStore.revokeGrant(req.grantId);
75
+ return create(grackle.EmptySchema, {});
76
+ }
77
+ //# sourceMappingURL=channel-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-handlers.js","sourceRoot":"","sources":["../src/channel-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Inbound channel message ingestion — the data-plane logic behind the
3
+ * `POST /hook/<token>` webhook. Verifies a capability token, checks the
4
+ * persisted (revocable) grant, then injects the message into the target
5
+ * session via the existing {@link sendInput} handler.
6
+ *
7
+ * @module
8
+ */
9
+ /** Structural result of handling an inbound webhook (mirrors web-server `WebhookResult`). */
10
+ export interface IngestResult {
11
+ /** Outcome category (maps to an HTTP status in the web server). */
12
+ outcome: "delivered" | "buffered" | "forbidden" | "not_found" | "ended" | "bad_request";
13
+ /** Resolved channel URI, when known. */
14
+ channelUri?: string;
15
+ /** Resolved session ID, when delivered. */
16
+ sessionId?: string;
17
+ }
18
+ /** Inbound webhook payload (mirrors web-server `WebhookBody`). */
19
+ export interface IngestBody {
20
+ /** The user message text to inject into the target session. */
21
+ message: string;
22
+ /** Optional sender attribution, prefixed onto the injected message. */
23
+ from?: string;
24
+ /** Optional dedupe key for webhook retries (hashed before use). */
25
+ idempotencyKey?: string;
26
+ }
27
+ /**
28
+ * Verify a channel capability token and inject the message into its session.
29
+ *
30
+ * @param token - The capability token (from the URL or Bearer header).
31
+ * @param body - The inbound message payload.
32
+ * @returns An {@link IngestResult} the web server maps to an HTTP status.
33
+ */
34
+ export declare function ingestChannelMessage(token: string, body: IngestBody): Promise<IngestResult>;
35
+ //# sourceMappingURL=channel-ingest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-ingest.d.ts","sourceRoot":"","sources":["../src/channel-ingest.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,6FAA6F;AAC7F,MAAM,WAAW,YAAY;IAC3B,mEAAmE;IACnE,OAAO,EAAE,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,OAAO,GAAG,aAAa,CAAC;IACxF,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,kEAAkE;AAClE,MAAM,WAAW,UAAU;IACzB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA8BD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAkDjG"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Inbound channel message ingestion — the data-plane logic behind the
3
+ * `POST /hook/<token>` webhook. Verifies a capability token, checks the
4
+ * persisted (revocable) grant, then injects the message into the target
5
+ * session via the existing {@link sendInput} handler.
6
+ *
7
+ * @module
8
+ */
9
+ import { createHash } from "node:crypto";
10
+ import { Code, ConnectError } from "@connectrpc/connect";
11
+ import { create } from "@bufbuild/protobuf";
12
+ import { grackle } from "@grackle-ai/common";
13
+ import { channelGrantStore } from "@grackle-ai/database";
14
+ import { verifyChannelToken } from "@grackle-ai/auth";
15
+ import { getChannelConfig } from "./channel-config.js";
16
+ import { sendInput } from "./session-handlers.js";
17
+ const SESSION_CHANNEL_PREFIX = "grackle:/sessions/";
18
+ /**
19
+ * Best-effort, process-local idempotency dedupe. Entries expire by age so the
20
+ * dedupe window is bounded and predictable; cross-process/persistent dedupe
21
+ * (e.g. a DB-backed store) is a deliberate follow-up (#1255).
22
+ */
23
+ const IDEMPOTENCY_TTL_MS = 10 * 60 * 1000;
24
+ const MAX_SEEN_KEYS = 1000;
25
+ const seenKeys = new Map();
26
+ /** Record an idempotency key; returns true if seen within the TTL window. */
27
+ function alreadySeen(key) {
28
+ const now = Date.now();
29
+ const seenAt = seenKeys.get(key);
30
+ if (seenAt !== undefined && now - seenAt < IDEMPOTENCY_TTL_MS) {
31
+ return true;
32
+ }
33
+ seenKeys.set(key, now);
34
+ if (seenKeys.size > MAX_SEEN_KEYS) {
35
+ const oldest = seenKeys.keys().next().value;
36
+ if (oldest !== undefined) {
37
+ seenKeys.delete(oldest);
38
+ }
39
+ }
40
+ return false;
41
+ }
42
+ /**
43
+ * Verify a channel capability token and inject the message into its session.
44
+ *
45
+ * @param token - The capability token (from the URL or Bearer header).
46
+ * @param body - The inbound message payload.
47
+ * @returns An {@link IngestResult} the web server maps to an HTTP status.
48
+ */
49
+ export async function ingestChannelMessage(token, body) {
50
+ const { signingSecret } = getChannelConfig();
51
+ const claims = verifyChannelToken(token, signingSecret);
52
+ if (!claims) {
53
+ return { outcome: "forbidden" };
54
+ }
55
+ const grant = channelGrantStore.getGrant(claims.jti);
56
+ if (!grant || grant.revoked) {
57
+ return { outcome: "forbidden", channelUri: claims.chan };
58
+ }
59
+ // Defense-in-depth: the persisted grant must match the signed token claims,
60
+ // and both must permit send_input.
61
+ const grantVerbs = grant.verbs ? grant.verbs.split(",") : [];
62
+ if (grant.channelUri !== claims.chan ||
63
+ !claims.verbs.includes("send_input") ||
64
+ !grantVerbs.includes("send_input")) {
65
+ return { outcome: "forbidden", channelUri: claims.chan };
66
+ }
67
+ if (!claims.chan.startsWith(SESSION_CHANNEL_PREFIX)) {
68
+ return { outcome: "bad_request", channelUri: claims.chan };
69
+ }
70
+ const sessionId = claims.chan.slice(SESSION_CHANNEL_PREFIX.length);
71
+ // Dedupe webhook retries (scoped to the grant). Hash the caller-supplied key
72
+ // so an arbitrarily long key can't bloat the in-memory dedupe map.
73
+ if (body.idempotencyKey) {
74
+ const dedupeKey = `${claims.jti}:${createHash("sha256").update(body.idempotencyKey).digest("base64url")}`;
75
+ if (alreadySeen(dedupeKey)) {
76
+ return { outcome: "delivered", channelUri: claims.chan, sessionId };
77
+ }
78
+ }
79
+ const text = body.from ? `[${body.from}] ${body.message}` : body.message;
80
+ try {
81
+ await sendInput(create(grackle.InputMessageSchema, { sessionId, text }));
82
+ return { outcome: "delivered", channelUri: claims.chan, sessionId };
83
+ }
84
+ catch (err) {
85
+ if (err instanceof ConnectError) {
86
+ if (err.code === Code.NotFound) {
87
+ return { outcome: "not_found", channelUri: claims.chan };
88
+ }
89
+ if (err.code === Code.FailedPrecondition) {
90
+ return { outcome: "ended", channelUri: claims.chan };
91
+ }
92
+ }
93
+ throw err;
94
+ }
95
+ }
96
+ //# sourceMappingURL=channel-ingest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-ingest.js","sourceRoot":"","sources":["../src/channel-ingest.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { grackle } from "@grackle-ai/common";
2
2
  import type { EnvironmentRow, SessionRow } from "@grackle-ai/database";
3
- import { workspaceStore, taskStore, personaStore, findingStore, escalationStore } from "@grackle-ai/database";
3
+ import { workspaceStore, taskStore, personaStore, findingStore, widgetStore, escalationStore } from "@grackle-ai/database";
4
4
  /** Convert an environment database row to its proto representation. */
5
5
  export declare function envRowToProto(row: EnvironmentRow): grackle.Environment;
6
6
  /** Convert a session database row to its proto representation. */
@@ -15,6 +15,8 @@ export declare function workspaceRowToProto(row: workspaceStore.WorkspaceRow, li
15
15
  export declare function taskRowToProto(row: taskStore.TaskRow, childIds?: string[], computedStatus?: string, latestSessionId?: string): grackle.Task;
16
16
  /** Convert a finding database row to its proto representation. */
17
17
  export declare function findingRowToProto(row: findingStore.FindingRow): grackle.Finding;
18
+ /** Convert a widget database row to its proto representation. */
19
+ export declare function widgetRowToProto(row: widgetStore.WidgetRow): grackle.Widget;
18
20
  /** Convert an escalation database row to its proto representation. */
19
21
  export declare function escalationRowToProto(row: escalationStore.EscalationRow): grackle.Escalation;
20
22
  /** Safely parse a JSON string, returning the fallback value on failure. */
@@ -1 +1 @@
1
- {"version":3,"file":"grpc-proto-converters.d.ts","sourceRoot":"","sources":["../src/grpc-proto-converters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAK7C,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAqD,MAAM,sBAAsB,CAAC;AAEjK,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAatE;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAsBlE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,cAAc,CAAC,YAAY,EAChC,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACnC,OAAO,CAAC,SAAS,CAmBnB;AAED,+DAA+D;AAC/D,wBAAgB,cAAc,CAC5B,GAAG,EAAE,SAAS,CAAC,OAAO,EACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,EACnB,cAAc,CAAC,EAAE,MAAM,EACvB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAyBd;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,CAK/E;AAED,sEAAsE;AACtE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,CAAC,aAAa,GAAG,OAAO,CAAC,UAAU,CAe3F;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAS1E;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,CAgE/E"}
1
+ {"version":3,"file":"grpc-proto-converters.d.ts","sourceRoot":"","sources":["../src/grpc-proto-converters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAK7C,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAqD,MAAM,sBAAsB,CAAC;AAE9K,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAatE;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAsBlE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,cAAc,CAAC,YAAY,EAChC,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACnC,OAAO,CAAC,SAAS,CAmBnB;AAED,+DAA+D;AAC/D,wBAAgB,cAAc,CAC5B,GAAG,EAAE,SAAS,CAAC,OAAO,EACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,EACnB,cAAc,CAAC,EAAE,MAAM,EACvB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAyBd;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,CAK/E;AAED,iEAAiE;AACjE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAE3E;AAED,sEAAsE;AACtE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,CAAC,aAAa,GAAG,OAAO,CAAC,UAAU,CAe3F;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAS1E;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,CAgE/E"}
@@ -100,6 +100,10 @@ export function findingRowToProto(row) {
100
100
  tags: safeParseJsonArray(row.tags),
101
101
  });
102
102
  }
103
+ /** Convert a widget database row to its proto representation. */
104
+ export function widgetRowToProto(row) {
105
+ return create(grackle.WidgetSchema, { ...row });
106
+ }
103
107
  /** Convert an escalation database row to its proto representation. */
104
108
  export function escalationRowToProto(row) {
105
109
  return create(grackle.EscalationSchema, {
@@ -1 +1 @@
1
- {"version":3,"file":"grpc-proto-converters.js","sourceRoot":"","sources":["../src/grpc-proto-converters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grpc-proto-converters.js","sourceRoot":"","sources":["../src/grpc-proto-converters.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"grpc-service.d.ts","sourceRoot":"","sources":["../src/grpc-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAezD;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,gBAAgB,CAgBzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CAYtD;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,IAAI,gBAAgB,CAO/D;AAED,iFAAiF;AACjF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAEjE"}
1
+ {"version":3,"file":"grpc-service.d.ts","sourceRoot":"","sources":["../src/grpc-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAiBzD;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,gBAAgB,CAkBzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CAatD;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,IAAI,gBAAgB,CAQ/D;AAED,iFAAiF;AACjF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAEjE"}
@@ -16,12 +16,14 @@ import * as workspaces from "./workspace-handlers.js";
16
16
  import * as personas from "./persona-handlers.js";
17
17
  import * as tokens from "./token-handlers.js";
18
18
  import * as findings from "./finding-handlers.js";
19
+ import * as widgets from "./widget-handlers.js";
19
20
  import * as escalations from "./escalation-handlers.js";
20
21
  import * as codespaces from "./codespace-handlers.js";
21
22
  import * as dockerContainers from "./docker-handlers.js";
22
23
  import * as settings from "./settings-handlers.js";
23
24
  import * as pluginHandlers from "./plugin-handlers.js";
24
25
  import * as githubAccounts from "./github-account-handlers.js";
26
+ import * as channels from "./channel-handlers.js";
25
27
  /**
26
28
  * Create a `ServiceCollector` pre-loaded with all built-in Grackle handler groups.
27
29
  *
@@ -37,12 +39,14 @@ export function createDefaultCollector() {
37
39
  collector.addHandlers(grackle.GrackleOrchestration, personas);
38
40
  collector.addHandlers(grackle.GrackleCore, tokens);
39
41
  collector.addHandlers(grackle.GrackleOrchestration, findings);
42
+ collector.addHandlers(grackle.GrackleOrchestration, widgets);
40
43
  collector.addHandlers(grackle.GrackleOrchestration, escalations);
41
44
  collector.addHandlers(grackle.GrackleCore, codespaces);
42
45
  collector.addHandlers(grackle.GrackleCore, dockerContainers);
43
46
  collector.addHandlers(grackle.GrackleCore, settings);
44
47
  collector.addHandlers(grackle.GrackleCore, pluginHandlers);
45
48
  collector.addHandlers(grackle.GrackleCore, githubAccounts);
49
+ collector.addHandlers(grackle.GrackleCore, channels);
46
50
  return collector;
47
51
  }
48
52
  /**
@@ -66,6 +70,7 @@ export function createCoreCollector() {
66
70
  collector.addHandlers(grackle.GrackleCore, settings);
67
71
  collector.addHandlers(grackle.GrackleCore, pluginHandlers);
68
72
  collector.addHandlers(grackle.GrackleCore, githubAccounts);
73
+ collector.addHandlers(grackle.GrackleCore, channels);
69
74
  return collector;
70
75
  }
71
76
  /**
@@ -80,6 +85,7 @@ export function createOrchestrationCollector() {
80
85
  collector.addHandlers(grackle.GrackleOrchestration, tasks);
81
86
  collector.addHandlers(grackle.GrackleOrchestration, personas);
82
87
  collector.addHandlers(grackle.GrackleOrchestration, findings);
88
+ collector.addHandlers(grackle.GrackleOrchestration, widgets);
83
89
  collector.addHandlers(grackle.GrackleOrchestration, escalations);
84
90
  return collector;
85
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"grpc-service.js","sourceRoot":"","sources":["../src/grpc-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grpc-service.js","sourceRoot":"","sources":["../src/grpc-service.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -15,6 +15,10 @@ export type { EnvironmentReconciliationDeps } from "./environment-reconciliation
15
15
  export { setLoadedPluginNames, PLUGIN_REGISTRY } from "./plugin-registry.js";
16
16
  export type { PluginRegistryEntry } from "./plugin-registry.js";
17
17
  export { killSessionAndCleanup } from "./grpc-shared.js";
18
+ export { setChannelConfig } from "./channel-config.js";
19
+ export type { ChannelConfig } from "./channel-config.js";
20
+ export { ingestChannelMessage } from "./channel-ingest.js";
21
+ export type { IngestBody, IngestResult } from "./channel-ingest.js";
18
22
  export { cleanupLifecycleStream, ensureLifecycleStream } from "./lifecycle.js";
19
23
  export { toDialableHost, validatePipeInputs, resolveAncestorEnvironmentId, VALID_PIPE_MODES } from "./grpc-shared.js";
20
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAGrI,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5G,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,oCAAoC,EAAE,MAAM,iCAAiC,CAAC;AACvF,YAAY,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAGrF,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC7E,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAGhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAGrI,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5G,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,oCAAoC,EAAE,MAAM,iCAAiC,CAAC;AACvF,YAAY,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAGrF,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC7E,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAGhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGpE,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -15,6 +15,9 @@ export { createEnvironmentReconciliationPhase } from "./environment-reconciliati
15
15
  export { setLoadedPluginNames, PLUGIN_REGISTRY } from "./plugin-registry.js";
16
16
  // ─── Handler Utilities ──────────────────────────────────────
17
17
  export { killSessionAndCleanup } from "./grpc-shared.js";
18
+ // ─── Channel Capability I/O ─────────────────────────────────
19
+ export { setChannelConfig } from "./channel-config.js";
20
+ export { ingestChannelMessage } from "./channel-ingest.js";
18
21
  // ─── Re-exports from other modules ──────────────────────────
19
22
  export { cleanupLifecycleStream, ensureLifecycleStream } from "./lifecycle.js";
20
23
  export { toDialableHost, validatePipeInputs, resolveAncestorEnvironmentId, VALID_PIPE_MODES } from "./grpc-shared.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,OAAO,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAErI,+DAA+D;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5G,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAGnE,+DAA+D;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,oCAAoC,EAAE,MAAM,iCAAiC,CAAC;AAGvF,+DAA+D;AAC/D,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG7E,+DAA+D;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,+DAA+D;AAC/D,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,OAAO,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAErI,+DAA+D;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5G,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAGnE,+DAA+D;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,oCAAoC,EAAE,MAAM,iCAAiC,CAAC;AAGvF,+DAA+D;AAC/D,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG7E,+DAA+D;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,+DAA+D;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAG3D,+DAA+D;AAC/D,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { grackle } from "@grackle-ai/common";
2
+ /** Register a new agent-authored widget in the caller's workspace. */
3
+ export declare function registerWidget(req: grackle.RegisterWidgetRequest): Promise<grackle.Widget>;
4
+ /** Update a widget's mutable fields (only set fields change); bumps version. */
5
+ export declare function updateWidget(req: grackle.UpdateWidgetRequest): Promise<grackle.Widget>;
6
+ /** Resolve a widget by id (precedence) or by name within a workspace. */
7
+ export declare function getWidget(req: grackle.GetWidgetRequest): Promise<grackle.Widget>;
8
+ /** List all widgets registered in a workspace. */
9
+ export declare function listWidgets(req: grackle.ListWidgetsRequest): Promise<grackle.WidgetList>;
10
+ //# sourceMappingURL=widget-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget-handlers.d.ts","sourceRoot":"","sources":["../src/widget-handlers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAoB7C,sEAAsE;AACtE,wBAAsB,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CA4BhG;AAED,gFAAgF;AAChF,wBAAsB,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAoB5F;AAED,yEAAyE;AACzE,wBAAsB,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAoBtF;AAED,kDAAkD;AAClD,wBAAsB,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAK9F"}
@@ -0,0 +1,105 @@
1
+ import { ConnectError, Code } from "@connectrpc/connect";
2
+ import { create } from "@bufbuild/protobuf";
3
+ import { grackle } from "@grackle-ai/common";
4
+ import { widgetStore, workspaceStore } from "@grackle-ai/database";
5
+ import { v4 as uuid } from "uuid";
6
+ import { widgetRowToProto } from "./grpc-proto-converters.js";
7
+ /** Validate that a workspace id is present and refers to a real workspace. */
8
+ function requireWorkspace(workspaceId) {
9
+ if (!workspaceId) {
10
+ throw new ConnectError("workspaceId is required", Code.InvalidArgument);
11
+ }
12
+ if (!workspaceStore.getWorkspace(workspaceId)) {
13
+ throw new ConnectError(`Workspace not found: ${workspaceId}`, Code.NotFound);
14
+ }
15
+ }
16
+ /** Wrap store validation errors (e.g. body-size cap) as INVALID_ARGUMENT. */
17
+ function asInvalidArgument(err) {
18
+ throw new ConnectError(err instanceof Error ? err.message : String(err), Code.InvalidArgument);
19
+ }
20
+ /** Register a new agent-authored widget in the caller's workspace. */
21
+ export async function registerWidget(req) {
22
+ requireWorkspace(req.workspaceId);
23
+ if (!req.name) {
24
+ throw new ConnectError("name is required", Code.InvalidArgument);
25
+ }
26
+ if (!req.body) {
27
+ throw new ConnectError("body is required", Code.InvalidArgument);
28
+ }
29
+ // Full UUID (not an 8-char slice): widgets are addressed by their agent-chosen
30
+ // name in practice, so a long collision-proof id avoids a UNIQUE-constraint
31
+ // throw being surfaced to the agent as a misleading INVALID_ARGUMENT.
32
+ const id = uuid();
33
+ try {
34
+ widgetStore.registerWidget({
35
+ id,
36
+ workspaceId: req.workspaceId,
37
+ name: req.name,
38
+ description: req.description,
39
+ rendererKind: req.rendererKind || undefined,
40
+ body: req.body,
41
+ propsSchema: req.propsSchema,
42
+ ownerTaskId: req.ownerTaskId,
43
+ ownerSessionId: req.ownerSessionId,
44
+ });
45
+ }
46
+ catch (err) {
47
+ asInvalidArgument(err);
48
+ }
49
+ return widgetRowToProto(widgetStore.getWidget(id));
50
+ }
51
+ /** Update a widget's mutable fields (only set fields change); bumps version. */
52
+ export async function updateWidget(req) {
53
+ if (!req.id) {
54
+ throw new ConnectError("id is required", Code.InvalidArgument);
55
+ }
56
+ const existing = widgetStore.getWidget(req.id);
57
+ // Workspace isolation: treat a widget in another workspace as not found.
58
+ if (!existing || (req.workspaceId && existing.workspaceId !== req.workspaceId)) {
59
+ throw new ConnectError(`Widget not found: ${req.id}`, Code.NotFound);
60
+ }
61
+ try {
62
+ widgetStore.updateWidget(req.id, {
63
+ name: req.name,
64
+ description: req.description,
65
+ body: req.body,
66
+ propsSchema: req.propsSchema,
67
+ });
68
+ }
69
+ catch (err) {
70
+ asInvalidArgument(err);
71
+ }
72
+ return widgetRowToProto(widgetStore.getWidget(req.id));
73
+ }
74
+ /** Resolve a widget by id (precedence) or by name within a workspace. */
75
+ export async function getWidget(req) {
76
+ let row;
77
+ if (req.id) {
78
+ row = widgetStore.getWidget(req.id);
79
+ // Workspace isolation: hide widgets that belong to another workspace.
80
+ if (row && req.workspaceId && row.workspaceId !== req.workspaceId) {
81
+ row = undefined;
82
+ }
83
+ }
84
+ else if (req.name) {
85
+ if (!req.workspaceId) {
86
+ throw new ConnectError("workspaceId is required to resolve a widget by name", Code.InvalidArgument);
87
+ }
88
+ row = widgetStore.findWidgetByName(req.workspaceId, req.name);
89
+ }
90
+ else {
91
+ throw new ConnectError("id or name is required", Code.InvalidArgument);
92
+ }
93
+ if (!row) {
94
+ throw new ConnectError("Widget not found", Code.NotFound);
95
+ }
96
+ return widgetRowToProto(row);
97
+ }
98
+ /** List all widgets registered in a workspace. */
99
+ export async function listWidgets(req) {
100
+ requireWorkspace(req.workspaceId);
101
+ return create(grackle.WidgetListSchema, {
102
+ widgets: widgetStore.listWidgets(req.workspaceId).map(widgetRowToProto),
103
+ });
104
+ }
105
+ //# sourceMappingURL=widget-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget-handlers.js","sourceRoot":"","sources":["../src/widget-handlers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grackle-ai/plugin-core",
3
- "version": "0.114.0",
3
+ "version": "0.115.1",
4
4
  "description": "Core plugin for Grackle — gRPC handlers, reconciliation phases, and event subscribers",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -33,14 +33,14 @@
33
33
  "pino": "^10.3.1",
34
34
  "ulid": "^2.3.0",
35
35
  "uuid": "^11.1.1",
36
- "@grackle-ai/auth": "0.114.0",
37
- "@grackle-ai/common": "0.114.0",
38
- "@grackle-ai/core": "0.114.0",
39
- "@grackle-ai/adapter-sdk": "0.114.0",
40
- "@grackle-ai/database": "0.114.0",
41
- "@grackle-ai/plugin-sdk": "0.114.0",
42
- "@grackle-ai/prompt": "0.114.0",
43
- "@grackle-ai/knowledge": "0.114.0"
36
+ "@grackle-ai/auth": "0.115.1",
37
+ "@grackle-ai/common": "0.115.1",
38
+ "@grackle-ai/core": "0.115.1",
39
+ "@grackle-ai/database": "0.115.1",
40
+ "@grackle-ai/adapter-sdk": "0.115.1",
41
+ "@grackle-ai/knowledge": "0.115.1",
42
+ "@grackle-ai/plugin-sdk": "0.115.1",
43
+ "@grackle-ai/prompt": "0.115.1"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@rushstack/heft": "1.2.7",