@relaycast/engine 10.6.5 → 11.1.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/adapters/node/database.d.ts +8 -3
- package/dist/adapters/node/database.d.ts.map +1 -1
- package/dist/adapters/node/database.js +9 -30
- package/dist/adapters/node/database.js.map +1 -1
- package/dist/adapters/node/delivery-maintenance.d.ts.map +1 -1
- package/dist/adapters/node/delivery-maintenance.js +5 -2
- package/dist/adapters/node/delivery-maintenance.js.map +1 -1
- package/dist/adapters/node/index.d.ts.map +1 -1
- package/dist/adapters/node/index.js +2 -1
- package/dist/adapters/node/index.js.map +1 -1
- package/dist/adapters/node/migration-source.d.ts +17 -0
- package/dist/adapters/node/migration-source.d.ts.map +1 -0
- package/dist/adapters/node/migration-source.js +31 -0
- package/dist/adapters/node/migration-source.js.map +1 -0
- package/dist/adapters/node/pinned-https-fetch.d.ts +16 -0
- package/dist/adapters/node/pinned-https-fetch.d.ts.map +1 -0
- package/dist/adapters/node/pinned-https-fetch.js +83 -0
- package/dist/adapters/node/pinned-https-fetch.js.map +1 -0
- package/dist/adapters/node/sqlite-driver.d.ts +27 -0
- package/dist/adapters/node/sqlite-driver.d.ts.map +1 -0
- package/dist/adapters/node/sqlite-driver.js +9 -0
- package/dist/adapters/node/sqlite-driver.js.map +1 -0
- package/dist/adapters/node/ssrf-fetch.d.ts.map +1 -1
- package/dist/adapters/node/ssrf-fetch.js +35 -28
- package/dist/adapters/node/ssrf-fetch.js.map +1 -1
- package/dist/bin/serve.js +9 -0
- package/dist/bin/serve.js.map +1 -1
- package/dist/bin/version.d.ts +8 -0
- package/dist/bin/version.d.ts.map +1 -0
- package/dist/bin/version.js +12 -0
- package/dist/bin/version.js.map +1 -0
- package/dist/db/migrations/0076_deliveries_agent_status_created_index.sql +17 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +2 -0
- package/dist/db/schema.js.map +1 -1
- package/dist/engine/usage.d.ts +10 -0
- package/dist/engine/usage.d.ts.map +1 -1
- package/dist/engine/usage.js +18 -0
- package/dist/engine/usage.js.map +1 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +8 -7
- package/dist/engine.js.map +1 -1
- package/dist/env.d.ts +11 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/httpError.d.ts.map +1 -1
- package/dist/lib/httpError.js +3 -0
- package/dist/lib/httpError.js.map +1 -1
- package/dist/lib/logger.d.ts +3 -9
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +10 -96
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/planLimitError.d.ts +26 -0
- package/dist/lib/planLimitError.d.ts.map +1 -0
- package/dist/lib/planLimitError.js +16 -0
- package/dist/lib/planLimitError.js.map +1 -0
- package/dist/lib/serverTelemetry.d.ts +6 -45
- package/dist/lib/serverTelemetry.d.ts.map +1 -1
- package/dist/lib/serverTelemetry.js +27 -125
- package/dist/lib/serverTelemetry.js.map +1 -1
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +14 -0
- package/dist/middleware/auth.js.map +1 -1
- package/dist/middleware/planLimits.d.ts +31 -0
- package/dist/middleware/planLimits.d.ts.map +1 -1
- package/dist/middleware/planLimits.js +136 -4
- package/dist/middleware/planLimits.js.map +1 -1
- package/dist/ports/entitlements.d.ts +30 -0
- package/dist/ports/entitlements.d.ts.map +1 -1
- package/dist/ports/index.d.ts +8 -12
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/index.js +1 -0
- package/dist/ports/index.js.map +1 -1
- package/dist/ports/logging.d.ts +10 -0
- package/dist/ports/logging.d.ts.map +1 -0
- package/dist/ports/logging.js +2 -0
- package/dist/ports/logging.js.map +1 -0
- package/dist/ports/telemetry.d.ts +95 -23
- package/dist/ports/telemetry.d.ts.map +1 -1
- package/dist/ports/telemetry.js +77 -1
- package/dist/ports/telemetry.js.map +1 -1
- package/dist/providers/noop-telemetry.d.ts +1 -7
- package/dist/providers/noop-telemetry.d.ts.map +1 -1
- package/dist/providers/noop-telemetry.js +1 -7
- package/dist/providers/noop-telemetry.js.map +1 -1
- package/dist/providers/static-entitlements.d.ts +1 -1
- package/dist/providers/static-entitlements.d.ts.map +1 -1
- package/dist/providers/static-entitlements.js +6 -1
- package/dist/providers/static-entitlements.js.map +1 -1
- package/dist/routes/action.js +3 -3
- package/dist/routes/action.js.map +1 -1
- package/dist/routes/agent.js +8 -8
- package/dist/routes/agent.js.map +1 -1
- package/dist/routes/channel.js +9 -9
- package/dist/routes/channel.js.map +1 -1
- package/dist/routes/directory.js +5 -5
- package/dist/routes/directory.js.map +1 -1
- package/dist/routes/dm.d.ts.map +1 -1
- package/dist/routes/dm.js +4 -2
- package/dist/routes/dm.js.map +1 -1
- package/dist/routes/eventSubscription.js +2 -2
- package/dist/routes/eventSubscription.js.map +1 -1
- package/dist/routes/file.js +2 -2
- package/dist/routes/file.js.map +1 -1
- package/dist/routes/groupDm.d.ts.map +1 -1
- package/dist/routes/groupDm.js +15 -11
- package/dist/routes/groupDm.js.map +1 -1
- package/dist/routes/inboundWebhook.js +5 -6
- package/dist/routes/inboundWebhook.js.map +1 -1
- package/dist/routes/message.d.ts.map +1 -1
- package/dist/routes/message.js +7 -3
- package/dist/routes/message.js.map +1 -1
- package/dist/routes/node.js +1 -1
- package/dist/routes/node.js.map +1 -1
- package/dist/routes/presence.js +2 -2
- package/dist/routes/presence.js.map +1 -1
- package/dist/routes/reaction.js +2 -2
- package/dist/routes/reaction.js.map +1 -1
- package/dist/routes/receipt.js +1 -1
- package/dist/routes/receipt.js.map +1 -1
- package/dist/routes/relayfileInbound.d.ts.map +1 -1
- package/dist/routes/relayfileInbound.js +3 -4
- package/dist/routes/relayfileInbound.js.map +1 -1
- package/dist/routes/routing.js +3 -3
- package/dist/routes/routing.js.map +1 -1
- package/dist/routes/search.js +1 -1
- package/dist/routes/search.js.map +1 -1
- package/dist/routes/systemPrompt.js +2 -2
- package/dist/routes/systemPrompt.js.map +1 -1
- package/dist/routes/thread.d.ts.map +1 -1
- package/dist/routes/thread.js +7 -3
- package/dist/routes/thread.js.map +1 -1
- package/dist/routes/workspace.js +5 -5
- package/dist/routes/workspace.js.map +1 -1
- package/package.json +8 -4
package/dist/env.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { workspaces, agents, nodes, observerTokens } from './db/schema.js';
|
|
2
2
|
import type { Logger } from './lib/logger.js';
|
|
3
|
+
import type { PlanLimitExceededBody } from './lib/planLimitError.js';
|
|
3
4
|
import type { EngineDb, EnginePorts, EngineProviders, EngineConfig } from './ports/index.js';
|
|
4
5
|
/**
|
|
5
6
|
* The runtime dependency bundle injected into every request. An adapter
|
|
@@ -8,12 +9,16 @@ import type { EngineDb, EnginePorts, EngineProviders, EngineConfig } from './por
|
|
|
8
9
|
* code reads infrastructure off `c.get('engine')` instead of `c.env.*` bindings.
|
|
9
10
|
*/
|
|
10
11
|
export interface EngineRuntime extends EnginePorts, EngineProviders {
|
|
12
|
+
telemetry: NonNullable<EngineProviders["telemetry"]>;
|
|
11
13
|
config: EngineConfig;
|
|
12
14
|
}
|
|
13
15
|
/** Hono context variables set by middleware. */
|
|
14
16
|
export interface AppVariables {
|
|
15
17
|
workspace: typeof workspaces.$inferSelect;
|
|
16
18
|
agent: typeof agents.$inferSelect | undefined;
|
|
19
|
+
/** Hash of the credential actually presented and accepted for this request.
|
|
20
|
+
* May differ from agent.tokenHash during a previous-token grace window. */
|
|
21
|
+
agentCredentialHash: string | undefined;
|
|
17
22
|
node: typeof nodes.$inferSelect | undefined;
|
|
18
23
|
observerToken: typeof observerTokens.$inferSelect | undefined;
|
|
19
24
|
db: EngineDb;
|
|
@@ -31,6 +36,12 @@ export interface AppVariables {
|
|
|
31
36
|
* times per request). Unset until the first webhook-eligible mutation.
|
|
32
37
|
*/
|
|
33
38
|
webhookSubscribersExist?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Set by `checkMessageAllowance` when the workspace's one-time message
|
|
41
|
+
* allowance is spent but the request carries an `Idempotency-Key`: the route
|
|
42
|
+
* still replays a stored receipt, and refuses only a fresh send with this body.
|
|
43
|
+
*/
|
|
44
|
+
messageAllowanceDenial?: PlanLimitExceededBody;
|
|
34
45
|
/** The injected ports + providers + config for this deployment. */
|
|
35
46
|
engine: EngineRuntime;
|
|
36
47
|
}
|
package/dist/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EACV,QAAQ,EACR,WAAW,EACX,eAAe,EACf,YAAY,EACb,MAAM,kBAAkB,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,WAAW,aAAc,SAAQ,WAAW,EAAE,eAAe;IACjE,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,gDAAgD;AAChD,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,UAAU,CAAC,YAAY,CAAC;IAC1C,KAAK,EAAE,OAAO,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;IAC9C,IAAI,EAAE,OAAO,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC;IAC5C,aAAa,EAAE,OAAO,cAAc,CAAC,YAAY,GAAG,SAAS,CAAC;IAC9D,EAAE,EAAE,QAAQ,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mEAAmE;IACnE,MAAM,EAAE,aAAa,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,SAAS,EAAE,YAAY,CAAC;CACzB,CAAC"}
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EACV,QAAQ,EACR,WAAW,EACX,eAAe,EACf,YAAY,EACb,MAAM,kBAAkB,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,WAAW,aAAc,SAAQ,WAAW,EAAE,eAAe;IACjE,SAAS,EAAE,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC;IACrD,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,gDAAgD;AAChD,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,UAAU,CAAC,YAAY,CAAC;IAC1C,KAAK,EAAE,OAAO,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;IAC9C;+EAC2E;IAC3E,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,IAAI,EAAE,OAAO,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC;IAC5C,aAAa,EAAE,OAAO,cAAc,CAAC,YAAY,GAAG,SAAS,CAAC;IAC9D,EAAE,EAAE,QAAQ,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,qBAAqB,CAAC;IAC/C,mEAAmE;IACnE,MAAM,EAAE,aAAa,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,SAAS,EAAE,YAAY,CAAC;CACzB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
export declare const SERVER_VERSION: "0.1.0";
|
|
2
2
|
export { createEngine } from './engine.js';
|
|
3
3
|
export type { AppEnv, AppVariables, EngineRuntime } from './env.js';
|
|
4
|
-
export type { EngineDeps, EnginePorts, EngineProviders, EngineConfig, EngineDb, EngineEvent, RealtimeBus, ConnectionRegistry, UpgradeArgs, PresenceTracker, RateLimiter, RateLimitResult, FileStorage, KeyValueStore, EventQueue, QueuedEvent, AuthProvider, AuthResult, AuthRequire, Workspace, Agent, EntitlementsProvider, PlanLimits, UsageMetric, TelemetrySink, TelemetryEvent, } from './ports/index.js';
|
|
4
|
+
export type { EngineDeps, EnginePorts, EngineProviders, EngineConfig, EngineLogRecord, EngineLogExport, EngineDb, EngineEvent, RealtimeBus, ConnectionRegistry, UpgradeArgs, PresenceTracker, RateLimiter, RateLimitResult, FileStorage, KeyValueStore, EventQueue, QueuedEvent, AuthProvider, AuthResult, AuthRequire, Workspace, Agent, EntitlementsProvider, PlanLimits, UsageMetric, TelemetrySink, TelemetryEvent, } from './ports/index.js';
|
|
5
5
|
export { observerAllowsEvent, type ObserverToken } from './engine/observerToken.js';
|
|
6
6
|
export { SqliteApiKeyAuthProvider, hashToken } from './auth/index.js';
|
|
7
7
|
export { StaticEntitlementsProvider, PLAN_LIMITS } from './providers/static-entitlements.js';
|
|
8
|
-
export { getUsageMetric, usageCounterKey, usagePeriod, usagePeriodResetAt, } from './engine/usage.js';
|
|
8
|
+
export { getLifetimeUsageMetric, getUsageMetric, lifetimeUsageCounterKey, usageCounterKey, usagePeriod, usagePeriodResetAt, } from './engine/usage.js';
|
|
9
9
|
export { NoopTelemetrySink } from './providers/noop-telemetry.js';
|
|
10
10
|
export { isValidStandardWebhookSecret, signStandardWebhook, verifyStandardWebhook, } from './lib/standardWebhook.js';
|
|
11
11
|
export { getDb, healthCheck as dbHealthCheck } from './db/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -11,7 +11,7 @@ export { StaticEntitlementsProvider, PLAN_LIMITS } from './providers/static-enti
|
|
|
11
11
|
// Usage-counter key contract. An `EntitlementsProvider` reads the counters the
|
|
12
12
|
// engine writes, so it has to agree with the engine on the billing period the
|
|
13
13
|
// key is scoped to — build the key with these rather than by hand.
|
|
14
|
-
export { getUsageMetric, usageCounterKey, usagePeriod, usagePeriodResetAt, } from './engine/usage.js';
|
|
14
|
+
export { getLifetimeUsageMetric, getUsageMetric, lifetimeUsageCounterKey, usageCounterKey, usagePeriod, usagePeriodResetAt, } from './engine/usage.js';
|
|
15
15
|
export { NoopTelemetrySink } from './providers/noop-telemetry.js';
|
|
16
16
|
export { isValidStandardWebhookSecret, signStandardWebhook, verifyStandardWebhook, } from './lib/standardWebhook.js';
|
|
17
17
|
// Database helpers + schema for adapters and migrations.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,OAAgB,CAAC;AAE/C,2DAA2D;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,OAAgB,CAAC;AAE/C,2DAA2D;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAmC3C,0EAA0E;AAC1E,gFAAgF;AAChF,+EAA+E;AAC/E,OAAO,EAAE,mBAAmB,EAAsB,MAAM,2BAA2B,CAAC;AAEpF,4DAA4D;AAC5D,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAC7F,+EAA+E;AAC/E,8EAA8E;AAC9E,mEAAmE;AACnE,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,WAAW,EACX,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAElC,yDAAyD;AACzD,OAAO,EAAE,KAAK,EAAE,WAAW,IAAI,aAAa,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAEzC,+EAA+E;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACL,8BAA8B,EAC9B,iCAAiC,EACjC,oBAAoB,EACpB,uBAAuB,EACvB,8BAA8B,GAC/B,MAAM,qCAAqC,CAAC;AAM7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,wEAAwE;AACxE,4EAA4E;AAC5E,gFAAgF;AAChF,8EAA8E;AAC9E,gFAAgF;AAChF,yCAAyC;AACzC,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACjG,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACjG,4EAA4E;AAC5E,8EAA8E;AAC9E,wEAAwE;AACxE,OAAO,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAElG,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAG5D,6EAA6E;AAC7E,4EAA4E;AAC5E,yEAAyE;AACzE,4CAA4C;AAC5C,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAGhC,yEAAyE;AACzE,8EAA8E;AAC9E,4EAA4E;AAC5E,qBAAqB;AACrB,OAAO,EACL,YAAY,EACZ,gCAAgC,EAChC,yBAAyB,EACzB,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,uBAAuB,CAAC;AAK/B,yEAAyE;AACzE,8EAA8E;AAC9E,gFAAgF;AAChF,+EAA+E;AAC/E,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAE/B,yEAAyE;AACzE,+EAA+E;AAC/E,0CAA0C;AAC1C,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,2EAA2E;AAC3E,+EAA+E;AAC/E,8BAA8B;AAC9B,OAAO,EACL,oBAAoB,EACpB,8BAA8B,EAC9B,mBAAmB,EACnB,kCAAkC,EAClC,8BAA8B,GAC/B,MAAM,6BAA6B,CAAC;AAGrC,iBAAiB;AACjB,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpError.d.ts","sourceRoot":"","sources":["../../src/lib/httpError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"httpError.d.ts","sourceRoot":"","sources":["../../src/lib/httpError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAKpC;;;;;GAKG;AACH,MAAM,WAAW,UAAW,SAAQ,KAAK;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CASrD;AAED,8FAA8F;AAC9F,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAEpF;AAQD,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAWjG;AAMD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,UAAU,EACjB,MAAM,SAA6B,GAClC,MAAM,CAIR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO;;;;;;iXAgBrD"}
|
package/dist/lib/httpError.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsonError, jsonMalformedBody } from './httpResponse.js';
|
|
2
|
+
import { PlanLimitExceededError } from './planLimitError.js';
|
|
2
3
|
/**
|
|
3
4
|
* Narrow an unknown thrown value to a {@link CodedError} without asserting.
|
|
4
5
|
* Plain (non-`Error`) objects are wrapped while preserving their own properties
|
|
@@ -60,6 +61,8 @@ export function safeClientErrorMessage(error, status = effectiveHttpStatus(error
|
|
|
60
61
|
* way. Only route handlers call this, so a throw always reaches `onError`.
|
|
61
62
|
*/
|
|
62
63
|
export function errorResponse(c, err) {
|
|
64
|
+
if (err instanceof PlanLimitExceededError)
|
|
65
|
+
return c.json(err.body, 429);
|
|
63
66
|
const error = asCodedError(err);
|
|
64
67
|
if (error.code === 'workspace_delivery_depth_exceeded')
|
|
65
68
|
c.header('Retry-After', '30');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpError.js","sourceRoot":"","sources":["../../src/lib/httpError.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"httpError.js","sourceRoot":"","sources":["../../src/lib/httpError.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/logger.d.ts
CHANGED
|
@@ -1,19 +1,13 @@
|
|
|
1
1
|
import type { Context } from 'hono';
|
|
2
2
|
import type { AppEnv, EngineRuntime } from '../env.js';
|
|
3
|
-
type
|
|
4
|
-
|
|
5
|
-
* Minimal logging config the engine needs — resolved from {@link EngineConfig}
|
|
6
|
-
* by an adapter. Platform-agnostic: production logs are exported to a PostHog
|
|
7
|
-
* OTLP endpoint via plain `fetch` only when `posthogApiKey` is set (cloud);
|
|
8
|
-
* otherwise the logger writes to the console (self-host / dev).
|
|
9
|
-
*/
|
|
3
|
+
import type { EngineLogExport, EngineLogRecord } from '../ports/logging.js';
|
|
4
|
+
type LogFields = EngineLogRecord['fields'];
|
|
10
5
|
export interface LoggerEnv {
|
|
11
6
|
environment: string;
|
|
12
7
|
appVersion?: string;
|
|
13
8
|
appSemver?: string;
|
|
14
9
|
sdkSemver?: string;
|
|
15
|
-
|
|
16
|
-
posthogHost?: string;
|
|
10
|
+
logExport?: EngineLogExport;
|
|
17
11
|
}
|
|
18
12
|
export interface Logger {
|
|
19
13
|
debug: (message: string, fields?: LogFields) => void;
|
package/dist/lib/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG5E,KAAK,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;AAI3C,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACrD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACpD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACpD,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACrD,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,KAAK,MAAM,CAAC;CACvD;AAED,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,UAAU,WAAW;IACnB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;CAC7B;AAED,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS,CASlF;AA8BD,wBAAgB,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,mBAAmB,GAAG,MAAM,CA4CjF;AAED,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,SAAS,GACjB,MAAM,CAuBR;AAED,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,SAAS,GACjB,MAAM,CAUR;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAYlH"}
|
package/dist/lib/logger.js
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
const DEFAULT_POSTHOG_HOST = 'https://i.agentrelay.com';
|
|
2
1
|
const DEFAULT_APP_VERSION = '0.1.0';
|
|
3
2
|
const DEFAULT_SDK_VERSION = 'unknown';
|
|
4
|
-
const SERVICE_NAME = 'relaycast-server';
|
|
5
|
-
const LOGGER_SCOPE = 'relaycast.server.logger';
|
|
6
|
-
const SEVERITY_BY_LEVEL = {
|
|
7
|
-
debug: 5,
|
|
8
|
-
info: 9,
|
|
9
|
-
warn: 13,
|
|
10
|
-
error: 17,
|
|
11
|
-
};
|
|
12
3
|
/** Build a {@link LoggerEnv} from the engine runtime's config. */
|
|
13
4
|
export function loggerEnvFromRuntime(runtime) {
|
|
14
5
|
const config = runtime?.config ?? {};
|
|
@@ -17,14 +8,9 @@ export function loggerEnvFromRuntime(runtime) {
|
|
|
17
8
|
appVersion: config.appVersion,
|
|
18
9
|
appSemver: config.appSemver,
|
|
19
10
|
sdkSemver: config.sdkSemver,
|
|
20
|
-
|
|
21
|
-
posthogHost: config.logExport?.posthogHost,
|
|
11
|
+
logExport: config.logExport,
|
|
22
12
|
};
|
|
23
13
|
}
|
|
24
|
-
function getPostHogHost(env) {
|
|
25
|
-
const configured = env.posthogHost ?? DEFAULT_POSTHOG_HOST;
|
|
26
|
-
return configured.endsWith('/') ? configured.slice(0, -1) : configured;
|
|
27
|
-
}
|
|
28
14
|
function getAppVersion(env) {
|
|
29
15
|
return env.appSemver ?? env.appVersion ?? DEFAULT_APP_VERSION;
|
|
30
16
|
}
|
|
@@ -36,79 +22,6 @@ function getSdkVersion(env, request, explicit) {
|
|
|
36
22
|
return fromHeader;
|
|
37
23
|
return env.sdkSemver ?? DEFAULT_SDK_VERSION;
|
|
38
24
|
}
|
|
39
|
-
function toAttributeValue(value) {
|
|
40
|
-
if (typeof value === 'string')
|
|
41
|
-
return { stringValue: value };
|
|
42
|
-
if (typeof value === 'boolean')
|
|
43
|
-
return { boolValue: value };
|
|
44
|
-
if (typeof value === 'number') {
|
|
45
|
-
if (Number.isFinite(value) && Number.isInteger(value))
|
|
46
|
-
return { intValue: String(value) };
|
|
47
|
-
if (Number.isFinite(value))
|
|
48
|
-
return { doubleValue: value };
|
|
49
|
-
return { stringValue: String(value) };
|
|
50
|
-
}
|
|
51
|
-
if (value === null)
|
|
52
|
-
return { stringValue: 'null' };
|
|
53
|
-
if (value === undefined)
|
|
54
|
-
return { stringValue: 'undefined' };
|
|
55
|
-
try {
|
|
56
|
-
return { stringValue: JSON.stringify(value) };
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
return { stringValue: String(value) };
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
function metadataToAttributes(metadata) {
|
|
63
|
-
return Object.entries(metadata).map(([key, value]) => ({
|
|
64
|
-
key,
|
|
65
|
-
value: toAttributeValue(value),
|
|
66
|
-
}));
|
|
67
|
-
}
|
|
68
|
-
async function sendToPostHog(env, level, message, metadata, appVersion) {
|
|
69
|
-
const apiKey = env.posthogApiKey;
|
|
70
|
-
if (!apiKey)
|
|
71
|
-
return;
|
|
72
|
-
const timestampNanos = `${Date.now()}000000`;
|
|
73
|
-
const payload = {
|
|
74
|
-
resourceLogs: [{
|
|
75
|
-
resource: {
|
|
76
|
-
attributes: [
|
|
77
|
-
{ key: 'service.name', value: { stringValue: SERVICE_NAME } },
|
|
78
|
-
{ key: 'service.version', value: { stringValue: appVersion } },
|
|
79
|
-
{ key: 'deployment.environment', value: { stringValue: env.environment } },
|
|
80
|
-
],
|
|
81
|
-
},
|
|
82
|
-
scopeLogs: [{
|
|
83
|
-
scope: { name: LOGGER_SCOPE, version: appVersion },
|
|
84
|
-
logRecords: [{
|
|
85
|
-
timeUnixNano: timestampNanos,
|
|
86
|
-
observedTimeUnixNano: timestampNanos,
|
|
87
|
-
severityNumber: SEVERITY_BY_LEVEL[level],
|
|
88
|
-
severityText: level.toUpperCase(),
|
|
89
|
-
body: { stringValue: message },
|
|
90
|
-
attributes: metadataToAttributes(metadata),
|
|
91
|
-
}],
|
|
92
|
-
}],
|
|
93
|
-
}],
|
|
94
|
-
};
|
|
95
|
-
try {
|
|
96
|
-
const response = await globalThis.fetch(`${getPostHogHost(env)}/i/v1/logs`, {
|
|
97
|
-
method: 'POST',
|
|
98
|
-
headers: {
|
|
99
|
-
Authorization: `Bearer ${apiKey}`,
|
|
100
|
-
'Content-Type': 'application/json',
|
|
101
|
-
},
|
|
102
|
-
body: JSON.stringify(payload),
|
|
103
|
-
});
|
|
104
|
-
if (!response.ok) {
|
|
105
|
-
// Best effort: ignore non-2xx response from logging backend.
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
catch {
|
|
109
|
-
// Best effort: do not fail request handling if log export fails.
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
25
|
function writeConsole(level, source, message, metadata) {
|
|
113
26
|
const line = `[${source}] ${message}`;
|
|
114
27
|
if (level === 'debug') {
|
|
@@ -139,16 +52,17 @@ export function createLogger(env, options) {
|
|
|
139
52
|
...baseFields,
|
|
140
53
|
...fields,
|
|
141
54
|
};
|
|
142
|
-
// Always write to the console so logs are never silently lost — even in
|
|
143
|
-
// production, where the OTLP export can fail (network/misconfig) and
|
|
144
|
-
// swallows its own errors. When a PostHog key is configured we additionally
|
|
145
|
-
// export to the OTLP endpoint.
|
|
146
55
|
writeConsole(level, options.source, message, metadata);
|
|
147
|
-
if (!env.
|
|
56
|
+
if (!env.logExport)
|
|
148
57
|
return;
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
58
|
+
try {
|
|
59
|
+
const promise = Promise.resolve(env.logExport({ level, message, fields: metadata, occurredAt: new Date().toISOString() })).catch(() => { });
|
|
60
|
+
state.pending.add(promise);
|
|
61
|
+
void promise.then(() => state.pending.delete(promise));
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// A host transport must never alter request handling.
|
|
65
|
+
}
|
|
152
66
|
};
|
|
153
67
|
return {
|
|
154
68
|
debug: (message, fields) => log('debug', message, fields),
|
package/dist/lib/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** The `plan_limit_exceeded` response body (see `middleware/planLimits.ts`). */
|
|
2
|
+
export interface PlanLimitExceededBody {
|
|
3
|
+
ok: false;
|
|
4
|
+
error: {
|
|
5
|
+
code: 'plan_limit_exceeded';
|
|
6
|
+
message: string;
|
|
7
|
+
metric: string;
|
|
8
|
+
plan: string;
|
|
9
|
+
limit: number;
|
|
10
|
+
usage: number;
|
|
11
|
+
upgrade_url: string | null;
|
|
12
|
+
upgrade_action: 'sign_in' | 'upgrade' | null;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Thrown from inside a route when a fresh send would exceed a plan limit that
|
|
17
|
+
* was already known to be exhausted. `errorResponse` renders the carried body
|
|
18
|
+
* verbatim, so the error keeps its additive quota fields.
|
|
19
|
+
*/
|
|
20
|
+
export declare class PlanLimitExceededError extends Error {
|
|
21
|
+
readonly body: PlanLimitExceededBody;
|
|
22
|
+
readonly code = "plan_limit_exceeded";
|
|
23
|
+
readonly status = 429;
|
|
24
|
+
constructor(body: PlanLimitExceededBody);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=planLimitError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planLimitError.d.ts","sourceRoot":"","sources":["../../src/lib/planLimitError.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE;QACL,IAAI,EAAE,qBAAqB,CAAC;QAC5B,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,cAAc,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;KAC9C,CAAC;CACH;AAED;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAInC,QAAQ,CAAC,IAAI,EAAE,qBAAqB;IAHhD,QAAQ,CAAC,IAAI,yBAAyB;IACtC,QAAQ,CAAC,MAAM,OAAO;gBAED,IAAI,EAAE,qBAAqB;CAIjD"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown from inside a route when a fresh send would exceed a plan limit that
|
|
3
|
+
* was already known to be exhausted. `errorResponse` renders the carried body
|
|
4
|
+
* verbatim, so the error keeps its additive quota fields.
|
|
5
|
+
*/
|
|
6
|
+
export class PlanLimitExceededError extends Error {
|
|
7
|
+
body;
|
|
8
|
+
code = 'plan_limit_exceeded';
|
|
9
|
+
status = 429;
|
|
10
|
+
constructor(body) {
|
|
11
|
+
super(body.error.message);
|
|
12
|
+
this.body = body;
|
|
13
|
+
this.name = 'PlanLimitExceededError';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=planLimitError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planLimitError.js","sourceRoot":"","sources":["../../src/lib/planLimitError.ts"],"names":[],"mappings":"AAeA;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAI1B;IAHZ,IAAI,GAAG,qBAAqB,CAAC;IAC7B,MAAM,GAAG,GAAG,CAAC;IAEtB,YAAqB,IAA2B;QAC9C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QADP,SAAI,GAAJ,IAAI,CAAuB;QAE9C,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF"}
|
|
@@ -1,52 +1,13 @@
|
|
|
1
1
|
import type { Context } from "hono";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import type { EngineObservationKind, EngineObservationFacts } from '../ports/telemetry.js';
|
|
3
|
+
import { type agents } from "../db/schema.js";
|
|
4
4
|
import type { AppEnv } from "../env.js";
|
|
5
|
-
import type { EngineDb } from "../ports/index.js";
|
|
6
|
-
/**
|
|
7
|
-
* Properties for a server event. The hosted sink validates events with
|
|
8
|
-
* `parseInternalTelemetryEvent`, which drops any event missing a required
|
|
9
|
-
* property (or whose name is not in `SERVER_TELEMETRY_EVENTS`), so both are
|
|
10
|
-
* enforced here at compile time. `workspace_id` always comes from the
|
|
11
|
-
* `workspaceId` argument. Required values must not be `undefined`, which the
|
|
12
|
-
* sanitizer strips.
|
|
13
|
-
*/
|
|
14
|
-
type ServerEventProperties<E extends ServerTelemetryEventName> = Record<string, unknown> & {
|
|
15
|
-
[K in Exclude<ServerTelemetryRequiredProperty<E>, "workspace_id">]: string | number | boolean | null;
|
|
16
|
-
};
|
|
17
5
|
export declare function normalizeRoutePathForTelemetry(value: string): string;
|
|
18
|
-
/**
|
|
19
|
-
export type TelemetryActor = Pick<typeof agents.$inferSelect, "id" | "name" | "type"
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Overrides for who an event is attributed to. Both default to the request's
|
|
23
|
-
* authenticated agent and workspace; routes pass them when the actor is not
|
|
24
|
-
* the token holder (a node token posting as `from`) or the context has no
|
|
25
|
-
* workspace row.
|
|
26
|
-
*/
|
|
6
|
+
/** Domain sender fields. Metadata never establishes authenticated provenance. */
|
|
7
|
+
export type TelemetryActor = Pick<typeof agents.$inferSelect, "id" | "name" | "type">;
|
|
8
|
+
/** Optional domain sender override; never changes the authenticated principal. */
|
|
27
9
|
export interface ServerEventAttribution {
|
|
28
10
|
actor?: TelemetryActor;
|
|
29
|
-
workspace?: TelemetryWorkspace;
|
|
30
11
|
}
|
|
31
|
-
|
|
32
|
-
* Load the workspace fields that carry its PostHog groups, for emitters that
|
|
33
|
-
* run without an authenticated workspace in context (external webhooks, node
|
|
34
|
-
* sockets). Groups are optional, so a failed lookup yields none rather than
|
|
35
|
-
* dropping the event.
|
|
36
|
-
*/
|
|
37
|
-
export declare function loadTelemetryWorkspace(db: EngineDb, workspaceId: string): Promise<TelemetryWorkspace | undefined>;
|
|
38
|
-
/** Distinct id for events with no person; a workspace is never a person. */
|
|
39
|
-
export declare function workspaceTelemetryDistinctId(workspaceId: string): string;
|
|
40
|
-
/**
|
|
41
|
-
* Emit a server-side product-telemetry event through the injected
|
|
42
|
-
* {@link TelemetrySink}. Self-host's default sink is a no-op; cloud injects
|
|
43
|
-
* PostHog. The sink owns batching/background-flush, so this returns immediately.
|
|
44
|
-
*
|
|
45
|
-
* The person is the acting agent's `metadata.cloud_user_id` (a human, or the
|
|
46
|
-
* owner of an agent), else the caller-declared user/client id, else the
|
|
47
|
-
* workspace with person processing off. The workspace's cloud org and
|
|
48
|
-
* workspace ids become PostHog groups.
|
|
49
|
-
*/
|
|
50
|
-
export declare function emitServerEvent<E extends ServerTelemetryEventName>(c: Context<AppEnv>, workspaceId: string, event: E, properties: ServerEventProperties<E>, attribution?: ServerEventAttribution): void;
|
|
51
|
-
export {};
|
|
12
|
+
export declare function emitServerEvent<E extends EngineObservationKind>(c: Context<AppEnv>, workspaceId: string, event: E, properties: EngineObservationFacts<E>, attribution?: ServerEventAttribution): void;
|
|
52
13
|
//# sourceMappingURL=serverTelemetry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverTelemetry.d.ts","sourceRoot":"","sources":["../../src/lib/serverTelemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"serverTelemetry.d.ts","sourceRoot":"","sources":["../../src/lib/serverTelemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAqB,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC9G,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAOxC,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAoBpE;AAED,iFAAiF;AACjF,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,OAAO,MAAM,CAAC,YAAY,EAC1B,IAAI,GAAG,MAAM,GAAG,MAAM,CACvB,CAAC;AAEF,kFAAkF;AAClF,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAQD,wBAAgB,eAAe,CAAC,CAAC,SAAS,qBAAqB,EAC7D,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,CAAC,EACR,UAAU,EAAE,sBAAsB,CAAC,CAAC,CAAC,EACrC,WAAW,GAAE,sBAA2B,GACvC,IAAI,CAoDN"}
|