@keystrokehq/keystroke 0.1.63 → 0.1.64

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 (53) hide show
  1. package/dist/agent-types.cjs +1 -1
  2. package/dist/agent-types.d.cts +2 -2
  3. package/dist/agent-types.d.mts +2 -2
  4. package/dist/agent-types.mjs +1 -1
  5. package/dist/agent.cjs +3 -11
  6. package/dist/agent.cjs.map +1 -1
  7. package/dist/agent.d.cts +3 -3
  8. package/dist/agent.d.mts +3 -3
  9. package/dist/agent.mjs +3 -11
  10. package/dist/agent.mjs.map +1 -1
  11. package/dist/{context-compaction-B2veGznA-CdNhgfb-.cjs → context-compaction-B2veGznA-CaL3m_s8.cjs} +2 -2
  12. package/dist/{context-compaction-B2veGznA-CdNhgfb-.cjs.map → context-compaction-B2veGznA-CaL3m_s8.cjs.map} +1 -1
  13. package/dist/{context-compaction-B2veGznA-fTsVT80w.mjs → context-compaction-B2veGznA-CqXQb-my.mjs} +2 -2
  14. package/dist/{context-compaction-B2veGznA-fTsVT80w.mjs.map → context-compaction-B2veGznA-CqXQb-my.mjs.map} +1 -1
  15. package/dist/{dist-Bxgv3ILc.mjs → dist-5QM3AD9a.mjs} +3 -125
  16. package/dist/dist-5QM3AD9a.mjs.map +1 -0
  17. package/dist/{dist-C0SlRvap.mjs → dist-D2lMFHrf.mjs} +2 -2
  18. package/dist/{dist-C0SlRvap.mjs.map → dist-D2lMFHrf.mjs.map} +1 -1
  19. package/dist/{dist-CqLIePYW.cjs → dist-Dvd9k8Ai.cjs} +2 -2
  20. package/dist/{dist-CqLIePYW.cjs.map → dist-Dvd9k8Ai.cjs.map} +1 -1
  21. package/dist/{dist-FvKVcgN5.cjs → dist-Dx5LXxtl.cjs} +2 -130
  22. package/dist/dist-Dx5LXxtl.cjs.map +1 -0
  23. package/dist/{index-B08z0uxo.d.mts → index-7bWU2yaq.d.mts} +2 -2
  24. package/dist/{index-Dz9SDHVa.d.cts.map → index-7bWU2yaq.d.mts.map} +1 -1
  25. package/dist/{index-BL0m4qM4.d.mts → index-BolOkiNw.d.mts} +13 -2
  26. package/dist/index-BolOkiNw.d.mts.map +1 -0
  27. package/dist/{index-D_HoBfcD.d.mts → index-Co2_egnk.d.mts} +4 -4
  28. package/dist/{index-D_HoBfcD.d.mts.map → index-Co2_egnk.d.mts.map} +1 -1
  29. package/dist/{index-BT2E1slw.d.cts → index-DNg4hc8A.d.cts} +4 -4
  30. package/dist/{index-BT2E1slw.d.cts.map → index-DNg4hc8A.d.cts.map} +1 -1
  31. package/dist/{index-Dz9SDHVa.d.cts → index-DqlM5r4Y.d.cts} +2 -2
  32. package/dist/{index-B08z0uxo.d.mts.map → index-DqlM5r4Y.d.cts.map} +1 -1
  33. package/dist/{index-DET6ZCmJ.d.cts → index-GJs4NjSJ.d.cts} +13 -2
  34. package/dist/index-GJs4NjSJ.d.cts.map +1 -0
  35. package/dist/{schemas-B9dXuD9C-LLqP3vYX.d.cts → schemas-B9dXuD9C-C1Fob77y.d.cts} +2 -2
  36. package/dist/{schemas-B9dXuD9C-BFuog8tV.d.mts.map → schemas-B9dXuD9C-C1Fob77y.d.cts.map} +1 -1
  37. package/dist/{schemas-B9dXuD9C-BFuog8tV.d.mts → schemas-B9dXuD9C-DmZb8lNi.d.mts} +2 -2
  38. package/dist/{schemas-B9dXuD9C-LLqP3vYX.d.cts.map → schemas-B9dXuD9C-DmZb8lNi.d.mts.map} +1 -1
  39. package/dist/{token-DPX8utYi.mjs → token-DH_A8nQu.mjs} +2 -2
  40. package/dist/{token-DPX8utYi.mjs.map → token-DH_A8nQu.mjs.map} +1 -1
  41. package/dist/{token-Bm94B1Q2.cjs → token-_JNYaTJh.cjs} +2 -2
  42. package/dist/{token-Bm94B1Q2.cjs.map → token-_JNYaTJh.cjs.map} +1 -1
  43. package/dist/trigger.cjs +1 -1
  44. package/dist/trigger.d.cts +1 -1
  45. package/dist/trigger.d.mts +1 -1
  46. package/dist/trigger.mjs +1 -1
  47. package/dist/workflow.cjs +1 -1
  48. package/dist/workflow.mjs +1 -1
  49. package/package.json +1 -1
  50. package/dist/dist-Bxgv3ILc.mjs.map +0 -1
  51. package/dist/dist-FvKVcgN5.cjs.map +0 -1
  52. package/dist/index-BL0m4qM4.d.mts.map +0 -1
  53. package/dist/index-DET6ZCmJ.d.cts.map +0 -1
@@ -3158,50 +3158,6 @@ const agentEventsSqlite = sqliteTable("agent_events", {
3158
3158
  createdAt: integer("created_at", { mode: "timestamp_ms" }).notNull(),
3159
3159
  deletedAt: integer("deleted_at", { mode: "timestamp_ms" })
3160
3160
  }, (table) => [index("agent_events_session_event_seq_idx").on(table.sessionId, table.eventType, table.seq)]);
3161
- const usageRecords = pgTable("usage_records", {
3162
- id: text$2("id").primaryKey(),
3163
- runId: text$2("run_id"),
3164
- runKind: text$2("run_kind").$type(),
3165
- kind: text$2("kind").notNull(),
3166
- label: text$2("label").notNull(),
3167
- quantity: integer$1("quantity"),
3168
- unit: text$2("unit"),
3169
- amount: doublePrecision("amount").notNull(),
3170
- metadata: jsonb("metadata"),
3171
- entryType: text$2("entry_type").$type().notNull().default("usage"),
3172
- meterKey: text$2("meter_key"),
3173
- microCredits: bigint("micro_credits", { mode: "number" }),
3174
- bucket: text$2("bucket").$type(),
3175
- reference: text$2("reference"),
3176
- createdAt: timestamp("created_at", { withTimezone: true }).notNull()
3177
- }, (table) => [
3178
- index$1("usage_records_run_run_kind_idx").on(table.runId, table.runKind),
3179
- index$1("usage_records_kind_idx").on(table.kind),
3180
- index$1("usage_records_entry_type_created_at_idx").on(table.entryType, table.createdAt),
3181
- uniqueIndex$1("usage_records_entry_type_reference_unique").on(table.entryType, table.reference).where(sql`${table.reference} is not null`)
3182
- ]);
3183
- const usageRecordsSqlite = sqliteTable("usage_records", {
3184
- id: text$1("id").primaryKey(),
3185
- runId: text$1("run_id"),
3186
- runKind: text$1("run_kind").$type(),
3187
- kind: text$1("kind").notNull(),
3188
- label: text$1("label").notNull(),
3189
- quantity: integer("quantity"),
3190
- unit: text$1("unit"),
3191
- amount: real("amount").notNull(),
3192
- metadata: text$1("metadata", { mode: "json" }),
3193
- entryType: text$1("entry_type").$type().notNull().default("usage"),
3194
- meterKey: text$1("meter_key"),
3195
- microCredits: integer("micro_credits"),
3196
- bucket: text$1("bucket").$type(),
3197
- reference: text$1("reference"),
3198
- createdAt: integer("created_at", { mode: "timestamp_ms" }).notNull()
3199
- }, (table) => [
3200
- index("usage_records_run_run_kind_idx").on(table.runId, table.runKind),
3201
- index("usage_records_kind_idx").on(table.kind),
3202
- index("usage_records_entry_type_created_at_idx").on(table.entryType, table.createdAt),
3203
- uniqueIndex("usage_records_entry_type_reference_unique").on(table.entryType, table.reference).where(sql`${table.reference} is not null`)
3204
- ]);
3205
3161
  const triggers = pgTable("triggers", {
3206
3162
  id: text$2("id").primaryKey(),
3207
3163
  projectId: text$2("project_id").notNull(),
@@ -3702,53 +3658,6 @@ const resourceActivitySqlite = sqliteTable("resource_activity", {
3702
3658
  lastOpenedAt: integer("last_opened_at", { mode: "timestamp_ms" }).notNull()
3703
3659
  }, (table) => [uniqueIndex("resource_activity_project_user_kind_resource").on(table.projectId, table.userId, table.resourceKind, table.resourceId), index("resource_activity_user_last_opened_at").on(table.userId, table.lastOpenedAt)]);
3704
3660
  /**
3705
- * Legacy org-runtime billing cache. Platform cloud financial authority now
3706
- * lives in `@keystrokehq/platform-database`; keep this table for existing org
3707
- * databases and pushed-down runtime plan hints, but do not add new billing
3708
- * writers here.
3709
- *
3710
- * Single-row prepaid credit wallet + pushed-down plan config for the org
3711
- * (the org runtime DB is per-org). Cache of `SUM(usage_records.microCredits)`,
3712
- * updated in the same transaction as each ledger insert. Cloud-only: standalone
3713
- * never writes it. All billing logic lives in `packages/cloud/*`.
3714
- */
3715
- const billingWallet = pgTable("billing_wallet", {
3716
- organizationId: text$2("organization_id").primaryKey(),
3717
- planCreditMicroCredits: bigint("plan_credit_micro_credits", { mode: "number" }).notNull().default(0),
3718
- prepaidCreditMicroCredits: bigint("prepaid_credit_micro_credits", { mode: "number" }).notNull().default(0),
3719
- periodStart: timestamp("period_start", { withTimezone: true }),
3720
- periodEnd: timestamp("period_end", { withTimezone: true }),
3721
- planKey: text$2("plan_key"),
3722
- monthlyCreditMicroCredits: bigint("monthly_credit_micro_credits", { mode: "number" }),
3723
- includedStorageGb: integer$1("included_storage_gb"),
3724
- concurrencyLimit: integer$1("concurrency_limit"),
3725
- agentTimeoutMs: integer$1("agent_timeout_ms"),
3726
- workflowTimeoutMs: integer$1("workflow_timeout_ms"),
3727
- pollTimeoutMs: integer$1("poll_timeout_ms"),
3728
- logRetentionDays: integer$1("log_retention_days"),
3729
- autoTopupEnabled: integer$1("auto_topup_enabled").notNull().default(0),
3730
- autoTopupThresholdMicroCredits: bigint("auto_topup_threshold_micro_credits", { mode: "number" }),
3731
- updatedAt: timestamp("updated_at", { withTimezone: true }).notNull()
3732
- });
3733
- const billingWalletSqlite = sqliteTable("billing_wallet", {
3734
- organizationId: text$1("organization_id").primaryKey(),
3735
- planCreditMicroCredits: integer("plan_credit_micro_credits").notNull().default(0),
3736
- prepaidCreditMicroCredits: integer("prepaid_credit_micro_credits").notNull().default(0),
3737
- periodStart: integer("period_start", { mode: "timestamp_ms" }),
3738
- periodEnd: integer("period_end", { mode: "timestamp_ms" }),
3739
- planKey: text$1("plan_key"),
3740
- monthlyCreditMicroCredits: integer("monthly_credit_micro_credits"),
3741
- includedStorageGb: integer("included_storage_gb"),
3742
- concurrencyLimit: integer("concurrency_limit"),
3743
- agentTimeoutMs: integer("agent_timeout_ms"),
3744
- workflowTimeoutMs: integer("workflow_timeout_ms"),
3745
- pollTimeoutMs: integer("poll_timeout_ms"),
3746
- logRetentionDays: integer("log_retention_days"),
3747
- autoTopupEnabled: integer("auto_topup_enabled").notNull().default(0),
3748
- autoTopupThresholdMicroCredits: integer("auto_topup_threshold_micro_credits"),
3749
- updatedAt: integer("updated_at", { mode: "timestamp_ms" }).notNull()
3750
- });
3751
- /**
3752
3661
  * Project server tables — Postgres (hosted) or SQLite (local dev).
3753
3662
  */
3754
3663
  const tableRegistry = {
@@ -3764,10 +3673,6 @@ const tableRegistry = {
3764
3673
  pg: agentEvents,
3765
3674
  sqlite: agentEventsSqlite
3766
3675
  },
3767
- usageRecords: {
3768
- pg: usageRecords,
3769
- sqlite: usageRecordsSqlite
3770
- },
3771
3676
  triggers: {
3772
3677
  pg: triggers,
3773
3678
  sqlite: triggersSqlite
@@ -3835,10 +3740,6 @@ const tableRegistry = {
3835
3740
  resourceActivity: {
3836
3741
  pg: resourceActivity,
3837
3742
  sqlite: resourceActivitySqlite
3838
- },
3839
- billingWallet: {
3840
- pg: billingWallet,
3841
- sqlite: billingWalletSqlite
3842
3743
  }
3843
3744
  };
3844
3745
  buildPgSchema(tableRegistry);
@@ -3914,14 +3815,6 @@ async function hasAgentEventAfterSeq(sessionId, eventType, afterSeq) {
3914
3815
  async function listAgentEventsForSession(sessionId) {
3915
3816
  return (await getDb().select({ event: agentEvents }).from(agentEvents).innerJoin(agentSessions, eq(agentSessions.id, agentEvents.sessionId)).where(scopedAnd(agentSessions, eq(agentEvents.sessionId, sessionId), isNull(agentEvents.deletedAt))).orderBy(asc(agentEvents.seq))).map((row) => row.event);
3916
3817
  }
3917
- async function insertUsageRecord(values) {
3918
- await getDb().insert(usageRecords).values({
3919
- ...values,
3920
- quantity: values.quantity ?? null,
3921
- unit: values.unit ?? null,
3922
- metadata: values.metadata ?? null
3923
- });
3924
- }
3925
3818
  /** Fetch active skills by slug for the current project scope. */
3926
3819
  async function selectActiveSkillsBySlugs(slugs) {
3927
3820
  if (slugs.length === 0) return [];
@@ -4104,21 +3997,6 @@ async function hasSessionEventAfterSeq(sessionId, eventType, afterSeq) {
4104
3997
  async function setSessionStatus(sessionId, status) {
4105
3998
  await updateAgentSessionStatus(sessionId, status);
4106
3999
  }
4107
- async function recordLlmUsageFromAssistantMessage(options) {
4108
- const { usage } = options;
4109
- await insertUsageRecord({
4110
- id: crypto.randomUUID(),
4111
- runId: options.sessionId,
4112
- runKind: "agent",
4113
- kind: "llm",
4114
- label: usage.label,
4115
- quantity: usage.quantity,
4116
- unit: "tokens",
4117
- amount: usage.amount,
4118
- metadata: usage.metadata,
4119
- createdAt: /* @__PURE__ */ new Date()
4120
- });
4121
- }
4122
4000
  function serializeSpanError(error) {
4123
4001
  if (error instanceof Error) return {
4124
4002
  name: error.name,
@@ -6866,7 +6744,7 @@ var require_get_vercel_oidc_token = /* @__PURE__ */ __commonJSMin(((exports, mod
6866
6744
  err = error;
6867
6745
  }
6868
6746
  try {
6869
- const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([await Promise.resolve().then(() => /* @__PURE__ */ __toESM(require_token_util())), await import("./token-DPX8utYi.mjs").then((m) => /* @__PURE__ */ __toESM(m.default))]);
6747
+ const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([await Promise.resolve().then(() => /* @__PURE__ */ __toESM(require_token_util())), await import("./token-DH_A8nQu.mjs").then((m) => /* @__PURE__ */ __toESM(m.default))]);
6870
6748
  if (!token || isExpired(getTokenPayload(token), options?.expirationBufferMs)) {
6871
6749
  await refreshToken(options);
6872
6750
  token = getVercelOidcTokenSync();
@@ -17445,6 +17323,6 @@ createIdGenerator({
17445
17323
  size: 24
17446
17324
  });
17447
17325
  //#endregion
17448
- export { touchSession as $, appendEvent as A, hasSessionEventAfterSeq as B, tool as C, bigint as Ct, isJSONObject as D, AISDKError as E, entityKind as Et, getAgentByRoute as F, recordLlmUsageFromAssistantMessage as G, latestSessionEventByTypes as H, getBoundProjectScopeId as I, selectCredentialInstanceById as J, resolveRunSourceFromTraceContext as K, getProjectScopeId as L, decryptCredentialPayload as M, encryptCredentialPayload as N, MESSAGE_EVENT_TYPE as O, failAgentSession as P, touchCredentialInstanceLastUsed as Q, getServerTenantScopeId as R, safeValidateTypes as S, boolean as St, EventSourceParserStream as T, pgEnum as Tt, listCredentialAssignmentsByTarget as U, isDatabaseInitialized as V, listSessionEvents as W, setSessionStatus as X, selectCredentialInstancesForScope as Y, setSessionTitle as Z, generateId as _, timestamp as _t, generateText as a, uniqueIndex as at, parseJSON as b, integer$1 as bt, output_exports as c, text$1 as ct, wrapLanguageModel as d, and as dt, captureConsole as et, createGateway as f, eq as ft, dynamicTool as g, pgTable as gt, asSchema as h, PgTable as ht, generateObject as i, index as it, createSession as j, addAgentSessionDuration as k, readUIMessageStream as l, real as lt, require_token_error as m, uniqueIndex$1 as mt, convertToModelMessages as n, logSystem as nt, hasToolCall as o, SQLiteTable as ot, require_token_util as p, index$1 as pt, selectActiveSkillsBySlugs as q, extractJsonMiddleware as r, withSpan as rt, isFileUIPart as s, sqliteTable as st, ToolLoopAgent as t, getTraceContext as tt, toUIMessageStream as u, integer as ut, getRuntimeEnvironmentUserAgent as v, text$2 as vt, withUserAgentSuffix as w, sql as wt, safeParseJSON as x, doublePrecision as xt, jsonSchema as y, jsonb as yt, getSession as z };
17326
+ export { captureConsole as $, appendEvent as A, hasSessionEventAfterSeq as B, tool as C, sql as Ct, isJSONObject as D, AISDKError as E, getAgentByRoute as F, resolveRunSourceFromTraceContext as G, latestSessionEventByTypes as H, getBoundProjectScopeId as I, selectCredentialInstancesForScope as J, selectActiveSkillsBySlugs as K, getProjectScopeId as L, decryptCredentialPayload as M, encryptCredentialPayload as N, MESSAGE_EVENT_TYPE as O, failAgentSession as P, touchSession as Q, getServerTenantScopeId as R, safeValidateTypes as S, bigint as St, EventSourceParserStream as T, entityKind as Tt, listCredentialAssignmentsByTarget as U, isDatabaseInitialized as V, listSessionEvents as W, setSessionTitle as X, setSessionStatus as Y, touchCredentialInstanceLastUsed as Z, generateId as _, text$2 as _t, generateText as a, SQLiteTable as at, parseJSON as b, doublePrecision as bt, output_exports as c, real as ct, wrapLanguageModel as d, eq as dt, getTraceContext as et, createGateway as f, index$1 as ft, dynamicTool as g, timestamp as gt, asSchema as h, pgTable as ht, generateObject as i, uniqueIndex as it, createSession as j, addAgentSessionDuration as k, readUIMessageStream as l, integer as lt, require_token_error as m, PgTable as mt, convertToModelMessages as n, withSpan as nt, hasToolCall as o, sqliteTable as ot, require_token_util as p, uniqueIndex$1 as pt, selectCredentialInstanceById as q, extractJsonMiddleware as r, index as rt, isFileUIPart as s, text$1 as st, ToolLoopAgent as t, logSystem as tt, toUIMessageStream as u, and as ut, getRuntimeEnvironmentUserAgent as v, jsonb as vt, withUserAgentSuffix as w, pgEnum as wt, safeParseJSON as x, boolean as xt, jsonSchema as y, integer$1 as yt, getSession as z };
17449
17327
 
17450
- //# sourceMappingURL=dist-Bxgv3ILc.mjs.map
17328
+ //# sourceMappingURL=dist-5QM3AD9a.mjs.map