@keystrokehq/keystroke 0.0.100 → 0.0.102

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 (69) hide show
  1. package/dist/action.cjs +2 -1
  2. package/dist/action.d.cts +2 -2
  3. package/dist/action.d.mts +2 -2
  4. package/dist/action.mjs +2 -2
  5. package/dist/agent.cjs +144 -116
  6. package/dist/agent.cjs.map +1 -1
  7. package/dist/agent.d.cts +3 -274
  8. package/dist/agent.d.mts +3 -274
  9. package/dist/agent.mjs +144 -117
  10. package/dist/agent.mjs.map +1 -1
  11. package/dist/credentials.cjs +1 -1
  12. package/dist/credentials.mjs +1 -1
  13. package/dist/{dist-BML_gJSh.mjs → dist-BUfE2se6.mjs} +115 -42
  14. package/dist/{dist-BML_gJSh.mjs.map → dist-BUfE2se6.mjs.map} +1 -1
  15. package/dist/{dist-ByV6mHKd.cjs → dist-BkC9pJIu.cjs} +120 -41
  16. package/dist/{dist-ByV6mHKd.cjs.map → dist-BkC9pJIu.cjs.map} +1 -1
  17. package/dist/{dist-CxaI84Ch.cjs → dist-C8RdaDkW.cjs} +110 -79
  18. package/dist/dist-C8RdaDkW.cjs.map +1 -0
  19. package/dist/{dist-CiaGdqFg.mjs → dist-DY_F2zw5.mjs} +110 -79
  20. package/dist/dist-DY_F2zw5.mjs.map +1 -0
  21. package/dist/{dist-T7a5DjzV.cjs → dist-DnqDVVpK.cjs} +51 -8
  22. package/dist/dist-DnqDVVpK.cjs.map +1 -0
  23. package/dist/{dist-B1fqDXYa.mjs → dist-SGAuX401.mjs} +46 -9
  24. package/dist/dist-SGAuX401.mjs.map +1 -0
  25. package/dist/{index-CfK7yBQI.d.cts → index-B6BYxmgO.d.cts} +14 -3
  26. package/dist/index-B6BYxmgO.d.cts.map +1 -0
  27. package/dist/index-CiuCYKLw.d.cts.map +1 -1
  28. package/dist/index-CiuCYKLw.d.mts.map +1 -1
  29. package/dist/{index-DwZkaYLS.d.mts → index-DsP83E4y.d.mts} +10 -3
  30. package/dist/index-DsP83E4y.d.mts.map +1 -0
  31. package/dist/{index-by6PXA-8.d.mts → index-DtcAWajc.d.mts} +14 -3
  32. package/dist/index-DtcAWajc.d.mts.map +1 -0
  33. package/dist/index-FlkwP4zn.d.cts +279 -0
  34. package/dist/index-FlkwP4zn.d.cts.map +1 -0
  35. package/dist/index-TLlgJ1q1.d.mts +279 -0
  36. package/dist/index-TLlgJ1q1.d.mts.map +1 -0
  37. package/dist/{index-C6_DVB_V.d.cts → index-i9JrhOqL.d.cts} +10 -3
  38. package/dist/index-i9JrhOqL.d.cts.map +1 -0
  39. package/dist/{mistral-CI7CQc_C.mjs → mistral-DUtxOD_C.mjs} +2 -2
  40. package/dist/{mistral-CI7CQc_C.mjs.map → mistral-DUtxOD_C.mjs.map} +1 -1
  41. package/dist/{mistral-BLRy436m.cjs → mistral-DXb4X3t4.cjs} +2 -2
  42. package/dist/{mistral-BLRy436m.cjs.map → mistral-DXb4X3t4.cjs.map} +1 -1
  43. package/dist/{sse-Bxvdniu5.mjs → sse-DezHFNKg.mjs} +2 -2
  44. package/dist/{sse-Bxvdniu5.mjs.map → sse-DezHFNKg.mjs.map} +1 -1
  45. package/dist/{sse-DGaTY14k.cjs → sse-SwZnScle.cjs} +2 -2
  46. package/dist/{sse-DGaTY14k.cjs.map → sse-SwZnScle.cjs.map} +1 -1
  47. package/dist/trigger.cjs +67 -30
  48. package/dist/trigger.cjs.map +1 -1
  49. package/dist/trigger.d.cts +38 -23
  50. package/dist/trigger.d.cts.map +1 -1
  51. package/dist/trigger.d.mts +38 -23
  52. package/dist/trigger.d.mts.map +1 -1
  53. package/dist/trigger.mjs +65 -31
  54. package/dist/trigger.mjs.map +1 -1
  55. package/dist/workflow.cjs +1 -1
  56. package/dist/workflow.d.cts +2 -2
  57. package/dist/workflow.d.mts +2 -2
  58. package/dist/workflow.mjs +1 -1
  59. package/package.json +1 -1
  60. package/dist/agent.d.cts.map +0 -1
  61. package/dist/agent.d.mts.map +0 -1
  62. package/dist/dist-B1fqDXYa.mjs.map +0 -1
  63. package/dist/dist-CiaGdqFg.mjs.map +0 -1
  64. package/dist/dist-CxaI84Ch.cjs.map +0 -1
  65. package/dist/dist-T7a5DjzV.cjs.map +0 -1
  66. package/dist/index-C6_DVB_V.d.cts.map +0 -1
  67. package/dist/index-CfK7yBQI.d.cts.map +0 -1
  68. package/dist/index-DwZkaYLS.d.mts.map +0 -1
  69. package/dist/index-by6PXA-8.d.mts.map +0 -1
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_dist = require("./dist-T7a5DjzV.cjs");
2
+ const require_dist = require("./dist-DnqDVVpK.cjs");
3
3
  exports.CREDENTIAL_SCOPE_LEVELS = require_dist.CREDENTIAL_SCOPE_LEVELS;
4
4
  exports.DEFAULT_CREDENTIAL_RESOLUTION_CHAIN = require_dist.DEFAULT_CREDENTIAL_RESOLUTION_CHAIN;
5
5
  exports.credential = require_dist.credential;
@@ -1,2 +1,2 @@
1
- import { _ as credentialInputSchema, b as normalizeCredentialList, g as credential, h as DEFAULT_CREDENTIAL_RESOLUTION_CHAIN, p as CREDENTIAL_SCOPE_LEVELS, v as defineCredential, x as toCredentialRequirement, y as isCredentialInput } from "./dist-B1fqDXYa.mjs";
1
+ import { S as toCredentialRequirement, _ as credential, b as isCredentialInput, g as DEFAULT_CREDENTIAL_RESOLUTION_CHAIN, m as CREDENTIAL_SCOPE_LEVELS, v as credentialInputSchema, x as normalizeCredentialList, y as defineCredential } from "./dist-SGAuX401.mjs";
2
2
  export { CREDENTIAL_SCOPE_LEVELS, DEFAULT_CREDENTIAL_RESOLUTION_CHAIN, credential, credentialInputSchema, defineCredential, isCredentialInput, normalizeCredentialList, toCredentialRequirement };
@@ -1,5 +1,5 @@
1
1
  import { Bn as __require, Ln as __commonJSMin, Vn as __toESM } from "./dist-f_JGyGWx.mjs";
2
- import { b as normalizeCredentialList, m as CREDENTIAL_SCOPE_LEVEL_TO_SCOPE_TYPE } from "./dist-B1fqDXYa.mjs";
2
+ import { h as CREDENTIAL_SCOPE_LEVEL_TO_SCOPE_TYPE, x as normalizeCredentialList } from "./dist-SGAuX401.mjs";
3
3
  import { AsyncLocalStorage } from "node:async_hooks";
4
4
  import "node:fs";
5
5
  import { ZodFirstPartyTypeKind } from "zod/v3";
@@ -13255,7 +13255,7 @@ async function connectMcpServer(name, options) {
13255
13255
  }
13256
13256
  async function createTransport(url, transport, requestInit, fetchImpl) {
13257
13257
  if (transport === "sse") {
13258
- const { SSEClientTransport } = await import("./sse-Bxvdniu5.mjs");
13258
+ const { SSEClientTransport } = await import("./sse-DezHFNKg.mjs");
13259
13259
  return new SSEClientTransport(url, {
13260
13260
  requestInit,
13261
13261
  fetch: fetchImpl
@@ -15756,6 +15756,16 @@ function and(...unfilteredConditions) {
15756
15756
  new StringChunk(")")
15757
15757
  ]);
15758
15758
  }
15759
+ function or(...unfilteredConditions) {
15760
+ const conditions = unfilteredConditions.filter((c) => c !== void 0);
15761
+ if (conditions.length === 0) return;
15762
+ if (conditions.length === 1) return new SQL(conditions);
15763
+ return new SQL([
15764
+ new StringChunk("("),
15765
+ sql.join(conditions, new StringChunk(" or ")),
15766
+ new StringChunk(")")
15767
+ ]);
15768
+ }
15759
15769
  function isNull(value) {
15760
15770
  return sql`${value} is null`;
15761
15771
  }
@@ -16334,6 +16344,41 @@ function index(name) {
16334
16344
  function uniqueIndex(name) {
16335
16345
  return new IndexBuilderOn(name, true);
16336
16346
  }
16347
+ const traceContextStorage = new AsyncLocalStorage();
16348
+ function getTraceContext() {
16349
+ return traceContextStorage.getStore();
16350
+ }
16351
+ const CONSOLE_LEVELS = [
16352
+ "log",
16353
+ "debug",
16354
+ "info",
16355
+ "warn",
16356
+ "error"
16357
+ ];
16358
+ async function captureConsole(fn) {
16359
+ const originals = /* @__PURE__ */ new Map();
16360
+ for (const level of CONSOLE_LEVELS) {
16361
+ originals.set(level, console[level].bind(console));
16362
+ console[level] = (...args) => {
16363
+ originals.get(level)?.(...args);
16364
+ getTraceContext();
16365
+ };
16366
+ }
16367
+ try {
16368
+ return await fn();
16369
+ } finally {
16370
+ for (const level of CONSOLE_LEVELS) {
16371
+ const original = originals.get(level);
16372
+ if (original) console[level] = original;
16373
+ }
16374
+ }
16375
+ }
16376
+ async function logSystem(level, message, data) {
16377
+ getTraceContext();
16378
+ }
16379
+ async function withSpan(input, fn) {
16380
+ return await fn();
16381
+ }
16337
16382
  //#endregion
16338
16383
  //#region ../database/dist/index.mjs
16339
16384
  const tenantScopeStorage = new AsyncLocalStorage();
@@ -16393,6 +16438,8 @@ const agentSessions = pgTable("agent_sessions", {
16393
16438
  id: text$1("id").primaryKey(),
16394
16439
  projectId: text$1("project_id").notNull(),
16395
16440
  agentId: text$1("agent_id").notNull().references(() => agents.id),
16441
+ sourceKind: text$1("source_kind").$type().notNull().default("api"),
16442
+ sourceId: text$1("source_id"),
16396
16443
  parentSpanId: text$1("parent_span_id"),
16397
16444
  createdAt: timestamp("created_at", { withTimezone: true }).notNull(),
16398
16445
  updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(),
@@ -16402,6 +16449,8 @@ const agentSessionsSqlite = sqliteTable("agent_sessions", {
16402
16449
  id: text("id").primaryKey(),
16403
16450
  projectId: text("project_id").notNull(),
16404
16451
  agentId: text("agent_id").notNull().references(() => agentsSqlite.id),
16452
+ sourceKind: text("source_kind").$type().notNull().default("api"),
16453
+ sourceId: text("source_id"),
16405
16454
  parentSpanId: text("parent_span_id"),
16406
16455
  createdAt: integer("created_at", { mode: "timestamp_ms" }).notNull(),
16407
16456
  updatedAt: integer("updated_at", { mode: "timestamp_ms" }).notNull(),
@@ -16429,7 +16478,9 @@ const triggerAttachments = pgTable("trigger_attachments", {
16429
16478
  id: text$1("id").primaryKey(),
16430
16479
  projectId: text$1("project_id").notNull(),
16431
16480
  key: text$1("key").notNull(),
16432
- workflowKey: text$1("workflow_key").notNull(),
16481
+ targetKind: text$1("target_kind").$type().notNull().default("workflow"),
16482
+ workflowKey: text$1("workflow_key"),
16483
+ agentKey: text$1("agent_key"),
16433
16484
  moduleFile: text$1("module_file").notNull(),
16434
16485
  source: jsonb("source").$type().notNull(),
16435
16486
  registeredAt: timestamp("registered_at", { withTimezone: true }).notNull(),
@@ -16440,7 +16491,9 @@ const triggerAttachmentsSqlite = sqliteTable("trigger_attachments", {
16440
16491
  id: text("id").primaryKey(),
16441
16492
  projectId: text("project_id").notNull(),
16442
16493
  key: text("key").notNull(),
16443
- workflowKey: text("workflow_key").notNull(),
16494
+ targetKind: text("target_kind").$type().notNull().default("workflow"),
16495
+ workflowKey: text("workflow_key"),
16496
+ agentKey: text("agent_key"),
16444
16497
  moduleFile: text("module_file").notNull(),
16445
16498
  source: text("source", { mode: "json" }).$type().notNull(),
16446
16499
  registeredAt: integer("registered_at", { mode: "timestamp_ms" }).notNull(),
@@ -16512,6 +16565,8 @@ const workflowRuns = pgTable("workflow_runs", {
16512
16565
  triggerRunId: text$1("trigger_run_id").references(() => triggerRuns.id),
16513
16566
  parentWorkflowRunId: text$1("parent_workflow_run_id"),
16514
16567
  parentSpanId: text$1("parent_span_id"),
16568
+ sourceKind: text$1("source_kind").$type().notNull().default("api"),
16569
+ sourceId: text$1("source_id"),
16515
16570
  status: text$1("status").$type().notNull(),
16516
16571
  trigger: text$1("trigger").$type().notNull(),
16517
16572
  triggeredAt: timestamp("triggered_at", { withTimezone: true }).notNull(),
@@ -16530,6 +16585,8 @@ const workflowRunsSqlite = sqliteTable("workflow_runs", {
16530
16585
  triggerRunId: text("trigger_run_id").references(() => triggerRunsSqlite.id),
16531
16586
  parentWorkflowRunId: text("parent_workflow_run_id"),
16532
16587
  parentSpanId: text("parent_span_id"),
16588
+ sourceKind: text("source_kind").$type().notNull().default("api"),
16589
+ sourceId: text("source_id"),
16533
16590
  status: text("status").$type().notNull(),
16534
16591
  trigger: text("trigger").$type().notNull(),
16535
16592
  triggeredAt: integer("triggered_at", { mode: "timestamp_ms" }).notNull(),
@@ -16937,6 +16994,10 @@ function scopedAnd$1(table, ...conditions) {
16937
16994
  function projectScopeId() {
16938
16995
  return getProjectScopeId();
16939
16996
  }
16997
+ /** Use with left joins on workflowRuns/triggerRuns/agentSessions keyed by trace or ref id. */
16998
+ function traceRootProjectScopeFilter() {
16999
+ return or(eq(workflowRuns.projectId, getProjectScopeId()), eq(triggerRuns.projectId, getProjectScopeId()), eq(agentSessions.projectId, getProjectScopeId()));
17000
+ }
16940
17001
  async function selectActiveAgentByRoute(route) {
16941
17002
  return (await getDb$1().select({
16942
17003
  id: agents.id,
@@ -16946,6 +17007,8 @@ async function selectActiveAgentByRoute(route) {
16946
17007
  async function insertAgentSession(values) {
16947
17008
  await getDb$1().insert(agentSessions).values({
16948
17009
  ...values,
17010
+ sourceKind: values.sourceKind ?? "api",
17011
+ sourceId: values.sourceId ?? null,
16949
17012
  projectId: projectScopeId()
16950
17013
  });
16951
17014
  }
@@ -16983,16 +17046,61 @@ async function selectCredentialInstancesForScope$1(key, scopeType, scopeId) {
16983
17046
  const scopeCondition = scopeId === null ? and(eq(credentialInstances.scopeType, scopeType), isNull(credentialInstances.scopeId)) : and(eq(credentialInstances.scopeType, scopeType), eq(credentialInstances.scopeId, scopeId));
16984
17047
  return db.select().from(credentialInstances).where(credentialScopeAnd(scopeType, eq(credentialInstances.key, key), scopeCondition));
16985
17048
  }
17049
+ async function selectTraceSpanById(id) {
17050
+ const db = getDb$1();
17051
+ const rows = await db.select({ span: traceSpans }).from(traceSpans).leftJoin(workflowRuns, eq(workflowRuns.id, traceSpans.traceId)).leftJoin(triggerRuns, eq(triggerRuns.id, traceSpans.traceId)).leftJoin(agentSessions, eq(agentSessions.id, traceSpans.traceId)).where(and(eq(traceSpans.id, id), traceRootProjectScopeFilter())).limit(1);
17052
+ if (rows[0]) return rows[0].span;
17053
+ return (await db.select({ span: traceSpans }).from(traceSpans).leftJoin(workflowRuns, eq(workflowRuns.id, traceSpans.refId)).leftJoin(triggerRuns, eq(triggerRuns.id, traceSpans.refId)).leftJoin(agentSessions, eq(agentSessions.id, traceSpans.refId)).where(and(eq(traceSpans.id, id), traceRootProjectScopeFilter())).limit(1))[0]?.span;
17054
+ }
17055
+ function runSource(kind, id) {
17056
+ return {
17057
+ kind,
17058
+ id: id ?? null
17059
+ };
17060
+ }
17061
+ function sourceFromSpan(span) {
17062
+ switch (span.kind) {
17063
+ case "workflow_run": return runSource("workflow", span.refId);
17064
+ case "agent_session": return runSource("agent", span.refId);
17065
+ case "trigger_run": return runSource("trigger", span.refId);
17066
+ case "gateway_event": {
17067
+ const metadata = span.metadata;
17068
+ if (metadata && typeof metadata === "object" && "gatewayAttachmentId" in metadata) {
17069
+ const attachmentId = metadata.gatewayAttachmentId;
17070
+ if (typeof attachmentId === "string") return runSource("gateway", attachmentId);
17071
+ }
17072
+ return;
17073
+ }
17074
+ case "action": {
17075
+ const metadata = span.metadata;
17076
+ if (metadata && typeof metadata === "object" && "runId" in metadata) {
17077
+ const runId = metadata.runId;
17078
+ if (typeof runId === "string") return runSource("workflow", runId);
17079
+ }
17080
+ return;
17081
+ }
17082
+ default: return;
17083
+ }
17084
+ }
17085
+ async function resolveRunSourceFromTraceContext() {
17086
+ const parent = getTraceContext();
17087
+ if (!parent?.spanId) return runSource("api");
17088
+ const span = await selectTraceSpanById(parent.spanId);
17089
+ if (!span) return runSource("api");
17090
+ return sourceFromSpan(span) ?? runSource("api");
17091
+ }
16986
17092
  async function getAgentByRoute(route) {
16987
17093
  return selectActiveAgentByRoute(route);
16988
17094
  }
16989
17095
  const MESSAGE_EVENT_TYPE = "message";
16990
- async function createSession(agentId, id) {
17096
+ async function createSession(agentId, id, source = runSource("api")) {
16991
17097
  const now = /* @__PURE__ */ new Date();
16992
17098
  const sessionId = id ?? crypto.randomUUID();
16993
17099
  await insertAgentSession({
16994
17100
  id: sessionId,
16995
17101
  agentId,
17102
+ sourceKind: source.kind,
17103
+ sourceId: source.id,
16996
17104
  createdAt: now,
16997
17105
  updatedAt: now,
16998
17106
  deletedAt: null
@@ -17992,42 +18100,7 @@ async function resolveActionCredentials(requirements, options) {
17992
18100
  });
17993
18101
  return parseResolvedCredentials(requirements, await resolveCredentials(requirements, options.consumer, options.contextOverride));
17994
18102
  }
17995
- const traceContextStorage = new AsyncLocalStorage();
17996
- function getTraceContext() {
17997
- return traceContextStorage.getStore();
17998
- }
17999
- const CONSOLE_LEVELS = [
18000
- "log",
18001
- "debug",
18002
- "info",
18003
- "warn",
18004
- "error"
18005
- ];
18006
- async function captureConsole(fn) {
18007
- const originals = /* @__PURE__ */ new Map();
18008
- for (const level of CONSOLE_LEVELS) {
18009
- originals.set(level, console[level].bind(console));
18010
- console[level] = (...args) => {
18011
- originals.get(level)?.(...args);
18012
- getTraceContext();
18013
- };
18014
- }
18015
- try {
18016
- return await fn();
18017
- } finally {
18018
- for (const level of CONSOLE_LEVELS) {
18019
- const original = originals.get(level);
18020
- if (original) console[level] = original;
18021
- }
18022
- }
18023
- }
18024
- async function logSystem(level, message, data) {
18025
- getTraceContext();
18026
- }
18027
- async function withSpan(input, fn) {
18028
- return await fn();
18029
- }
18030
18103
  //#endregion
18031
- export { JSONRPCMessageSchema as A, createParser as C, createFetchWithInit as D, extractWWWAuthenticateParams as E, normalizeHeaders as O, isMcp as S, auth as T, touchSession as _, buildCredentialRunContext as a, connectMcpStdio as b, isCredentialError as c, MESSAGE_EVENT_TYPE as d, appendEvent as f, listMessageEvents as g, getSession as h, withSpan as i, zodToJsonSchema as k, resolveActionCredentials as l, getAgentByRoute as m, getTraceContext as n, captureCredentialToolErrors as o, createSession as p, logSystem as r, createCredentialResolver as s, captureConsole as t, resolveMcpTools as u, connectMcpDefinition as v, UnauthorizedError as w, defineMcp as x, connectMcpServer as y };
18104
+ export { zodToJsonSchema as A, isMcp as C, extractWWWAuthenticateParams as D, auth as E, createFetchWithInit as O, defineMcp as S, UnauthorizedError as T, logSystem as _, resolveActionCredentials as a, connectMcpServer as b, appendEvent as c, getSession as d, listMessageEvents as f, getTraceContext as g, captureConsole as h, isCredentialError as i, JSONRPCMessageSchema as j, normalizeHeaders as k, createSession as l, touchSession as m, captureCredentialToolErrors as n, resolveMcpTools as o, resolveRunSourceFromTraceContext as p, createCredentialResolver as r, MESSAGE_EVENT_TYPE as s, buildCredentialRunContext as t, getAgentByRoute as u, withSpan as v, createParser as w, connectMcpStdio as x, connectMcpDefinition as y };
18032
18105
 
18033
- //# sourceMappingURL=dist-BML_gJSh.mjs.map
18106
+ //# sourceMappingURL=dist-BUfE2se6.mjs.map