@boringos/workflow 0.1.0 → 0.1.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.
@@ -0,0 +1,17 @@
1
+ import type { BlockHandler } from "../types.js";
2
+ /**
3
+ * Connector-action block handler — calls a connector action from within a workflow.
4
+ *
5
+ * Config:
6
+ * connectorKind: string (required) — e.g., "google", "slack"
7
+ * action: string (required) — e.g., "list_emails", "send_message"
8
+ * inputs?: Record<string, unknown> — action inputs
9
+ *
10
+ * Output:
11
+ * { success: boolean, data?: Record<string, unknown>, error?: string }
12
+ *
13
+ * Requires "actionRunner" and "db" in services.
14
+ * Fetches connector credentials from the DB for the workflow's tenant.
15
+ */
16
+ export declare const connectorActionHandler: BlockHandler;
17
+ //# sourceMappingURL=connector-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector-action.d.ts","sourceRoot":"","sources":["../../src/handlers/connector-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAA2C,MAAM,aAAa,CAAC;AAEzF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sBAAsB,EAAE,YAmEpC,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Connector-action block handler — calls a connector action from within a workflow.
3
+ *
4
+ * Config:
5
+ * connectorKind: string (required) — e.g., "google", "slack"
6
+ * action: string (required) — e.g., "list_emails", "send_message"
7
+ * inputs?: Record<string, unknown> — action inputs
8
+ *
9
+ * Output:
10
+ * { success: boolean, data?: Record<string, unknown>, error?: string }
11
+ *
12
+ * Requires "actionRunner" and "db" in services.
13
+ * Fetches connector credentials from the DB for the workflow's tenant.
14
+ */
15
+ export const connectorActionHandler = {
16
+ types: ["connector-action"],
17
+ async execute(ctx) {
18
+ const { connectorKind, action, inputs } = ctx.config;
19
+ if (!connectorKind || !action) {
20
+ return {
21
+ output: { success: false, error: "connectorKind and action are required" },
22
+ };
23
+ }
24
+ const actionRunner = ctx.services.get("actionRunner");
25
+ if (!actionRunner) {
26
+ return { output: { success: false, error: "actionRunner not available in services" } };
27
+ }
28
+ // Fetch connector credentials from DB
29
+ const db = ctx.services.get("db");
30
+ if (!db) {
31
+ return { output: { success: false, error: "db not available in services" } };
32
+ }
33
+ const { connectors } = await import("@boringos/db");
34
+ const { eq, and } = await import("drizzle-orm");
35
+ const rows = await db
36
+ .select()
37
+ .from(connectors)
38
+ .where(and(eq(connectors.tenantId, ctx.tenantId), eq(connectors.kind, connectorKind)))
39
+ .limit(1);
40
+ const connectorRow = rows[0];
41
+ if (!connectorRow) {
42
+ return {
43
+ output: { success: false, error: `Connector ${connectorKind} not configured for tenant` },
44
+ };
45
+ }
46
+ const credentials = {
47
+ accessToken: connectorRow.credentials?.accessToken ?? "",
48
+ refreshToken: connectorRow.credentials?.refreshToken,
49
+ config: connectorRow.config,
50
+ };
51
+ const result = await actionRunner.execute({
52
+ connectorKind,
53
+ action,
54
+ tenantId: ctx.tenantId,
55
+ agentId: ctx.governingAgentId ?? "",
56
+ inputs: inputs ?? {},
57
+ }, credentials);
58
+ return { output: result };
59
+ },
60
+ };
61
+ //# sourceMappingURL=connector-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector-action.js","sourceRoot":"","sources":["../../src/handlers/connector-action.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAiB;IAClD,KAAK,EAAE,CAAC,kBAAkB,CAAC;IAE3B,KAAK,CAAC,OAAO,CAAC,GAAwB;QACpC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAI7C,CAAC;QAEF,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9B,OAAO;gBACL,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,uCAAuC,EAAE;aAC3E,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAKlC,cAAc,CAAC,CAAC;QAEnB,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,wCAAwC,EAAE,EAAE,CAAC;QACzF,CAAC;QAED,sCAAsC;QACtC,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAM,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,8BAA8B,EAAE,EAAE,CAAC;QAC/E,CAAC;QAED,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACpD,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,EAAE;aAClB,MAAM,EAAE;aACR,IAAI,CAAC,UAAU,CAAC;aAChB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;aACrF,KAAK,CAAC,CAAC,CAAC,CAAC;QAEZ,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO;gBACL,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,aAAa,4BAA4B,EAAE;aAC1F,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,WAAW,EAAG,YAAY,CAAC,WAAsC,EAAE,WAAW,IAAI,EAAE;YACpF,YAAY,EAAG,YAAY,CAAC,WAAsC,EAAE,YAAY;YAChF,MAAM,EAAE,YAAY,CAAC,MAAiC;SACvD,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CACvC;YACE,aAAa;YACb,MAAM;YACN,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,OAAO,EAAE,GAAG,CAAC,gBAAgB,IAAI,EAAE;YACnC,MAAM,EAAE,MAAM,IAAI,EAAE;SACrB,EACD,WAAW,CACZ,CAAC;QAEF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC;CACF,CAAC"}
@@ -2,4 +2,6 @@ export { triggerHandler } from "./trigger.js";
2
2
  export { conditionHandler } from "./condition.js";
3
3
  export { delayHandler } from "./delay.js";
4
4
  export { transformHandler } from "./transform.js";
5
+ export { wakeAgentHandler } from "./wake-agent.js";
6
+ export { connectorActionHandler } from "./connector-action.js";
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -2,4 +2,6 @@ export { triggerHandler } from "./trigger.js";
2
2
  export { conditionHandler } from "./condition.js";
3
3
  export { delayHandler } from "./delay.js";
4
4
  export { transformHandler } from "./transform.js";
5
+ export { wakeAgentHandler } from "./wake-agent.js";
6
+ export { connectorActionHandler } from "./connector-action.js";
5
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { BlockHandler } from "../types.js";
2
+ /**
3
+ * Wake-agent block handler — wakes an agent from within a workflow.
4
+ *
5
+ * Config:
6
+ * agentId: string (required) — the agent to wake
7
+ * reason?: string — wake reason (default: "workflow_triggered")
8
+ * taskId?: string — optional task to associate with the wake
9
+ *
10
+ * Output:
11
+ * { outcome: string, wakeupRequestId?: string }
12
+ *
13
+ * Requires "agentEngine" in services.
14
+ */
15
+ export declare const wakeAgentHandler: BlockHandler;
16
+ //# sourceMappingURL=wake-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wake-agent.d.ts","sourceRoot":"","sources":["../../src/handlers/wake-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAA2C,MAAM,aAAa,CAAC;AAEzF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB,EAAE,YA6C9B,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Wake-agent block handler — wakes an agent from within a workflow.
3
+ *
4
+ * Config:
5
+ * agentId: string (required) — the agent to wake
6
+ * reason?: string — wake reason (default: "workflow_triggered")
7
+ * taskId?: string — optional task to associate with the wake
8
+ *
9
+ * Output:
10
+ * { outcome: string, wakeupRequestId?: string }
11
+ *
12
+ * Requires "agentEngine" in services.
13
+ */
14
+ export const wakeAgentHandler = {
15
+ types: ["wake-agent"],
16
+ async execute(ctx) {
17
+ const { agentId, reason, taskId } = ctx.config;
18
+ if (!agentId) {
19
+ return { output: { outcome: "error", error: "agentId is required" } };
20
+ }
21
+ const engine = ctx.services.get("agentEngine");
22
+ if (!engine) {
23
+ return { output: { outcome: "error", error: "agentEngine not available in services" } };
24
+ }
25
+ const outcome = await engine.wake({
26
+ agentId,
27
+ tenantId: ctx.tenantId,
28
+ reason: reason ?? "workflow_triggered",
29
+ taskId,
30
+ });
31
+ if (outcome.kind === "created" && outcome.wakeupRequestId) {
32
+ await engine.enqueue(outcome.wakeupRequestId);
33
+ }
34
+ return {
35
+ output: {
36
+ outcome: outcome.kind,
37
+ wakeupRequestId: outcome.wakeupRequestId,
38
+ agentId,
39
+ },
40
+ };
41
+ },
42
+ };
43
+ //# sourceMappingURL=wake-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wake-agent.js","sourceRoot":"","sources":["../../src/handlers/wake-agent.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAiB;IAC5C,KAAK,EAAE,CAAC,YAAY,CAAC;IAErB,KAAK,CAAC,OAAO,CAAC,GAAwB;QACpC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAIvC,CAAC;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,CAAC;QACxE,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAM5B,aAAa,CAAC,CAAC;QAElB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,uCAAuC,EAAE,EAAE,CAAC;QAC1F,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;YAChC,OAAO;YACP,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,MAAM,EAAE,MAAM,IAAI,oBAAoB;YACtC,MAAM;SACP,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC1D,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAChD,CAAC;QAED,OAAO;YACL,MAAM,EAAE;gBACN,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,OAAO;aACR;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
package/dist/index.d.ts CHANGED
@@ -7,5 +7,5 @@ export type { HandlerRegistry } from "./handler-registry.js";
7
7
  export { createWorkflowEngine } from "./engine.js";
8
8
  export type { WorkflowEngineConfig } from "./engine.js";
9
9
  export { createWorkflowStore } from "./store.js";
10
- export { triggerHandler, conditionHandler, delayHandler, transformHandler } from "./handlers/index.js";
10
+ export { triggerHandler, conditionHandler, delayHandler, transformHandler, wakeAgentHandler, connectorActionHandler } from "./handlers/index.js";
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,OAAO,EACP,OAAO,EACP,GAAG,EACH,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,OAAO,EACP,OAAO,EACP,GAAG,EACH,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -4,5 +4,5 @@ export { createExecutionState, resolveTemplate } from "./state.js";
4
4
  export { createHandlerRegistry } from "./handler-registry.js";
5
5
  export { createWorkflowEngine } from "./engine.js";
6
6
  export { createWorkflowStore } from "./store.js";
7
- export { triggerHandler, conditionHandler, delayHandler, transformHandler } from "./handlers/index.js";
7
+ export { triggerHandler, conditionHandler, delayHandler, transformHandler, wakeAgentHandler, connectorActionHandler } from "./handlers/index.js";
8
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@boringos/workflow",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -12,8 +12,8 @@
12
12
  },
13
13
  "license": "MIT",
14
14
  "dependencies": {
15
- "@boringos/shared": "0.1.0",
16
- "@boringos/db": "0.1.0"
15
+ "@boringos/shared": "0.1.1",
16
+ "@boringos/db": "0.1.2"
17
17
  },
18
18
  "devDependencies": {
19
19
  "@types/node": "^22.0.0",