terse-sdk 0.1.11 → 0.1.12
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/README.md +3 -3
- package/dist/hmac.d.ts +8 -0
- package/dist/hmac.d.ts.map +1 -0
- package/dist/hmac.js +44 -0
- package/dist/hmac.js.map +1 -0
- package/dist/index.d.ts +82 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +112 -26
- package/dist/index.js.map +1 -1
- package/dist/sessionStream.d.ts +23 -0
- package/dist/sessionStream.d.ts.map +1 -0
- package/dist/sessionStream.js +87 -0
- package/dist/sessionStream.js.map +1 -0
- package/dist/types.d.ts +8 -311
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +5 -307
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@ client.createJob({
|
|
|
33
33
|
- **Triggers** — Config instances (e.g. `GitHub.onPROpened()`) that define when a job fires.
|
|
34
34
|
- **Skills** — Integration configs (e.g. `Slack.skill()`) that give the model access to tools during `run()` / `runAndWait()`.
|
|
35
35
|
- **Deterministic wrappers** — Generated `agent.tools.*` helpers that you call directly; these can be available from trigger integrations as well as declared skills.
|
|
36
|
-
- **Events** — Typed
|
|
36
|
+
- **Events** — Typed trigger events (`GithubPRTrigger`, `WorkOSUserTrigger`, etc.) with type guards like `isGithubPRTrigger()`.
|
|
37
37
|
|
|
38
38
|
## API
|
|
39
39
|
|
|
@@ -49,8 +49,8 @@ client.createJob({
|
|
|
49
49
|
|
|
50
50
|
The SDK provides typed event classes and type guards for supported integrations:
|
|
51
51
|
|
|
52
|
-
- **GitHub**: `
|
|
53
|
-
- **WorkOS**: `
|
|
52
|
+
- **GitHub**: `GithubTrigger`, `GithubPRTrigger`, `GithubPushTrigger`
|
|
53
|
+
- **WorkOS**: `WorkOSTrigger`, `WorkOSUserTrigger`, `WorkOSMembershipTrigger`, `WorkOSInvitationTrigger`
|
|
54
54
|
|
|
55
55
|
## Environment Variables
|
|
56
56
|
|
package/dist/hmac.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Compute the HMAC-SHA256 of a challenge token using the signing secret. */
|
|
2
|
+
export declare function computeChallengeSignature(signingSecret: string, challengeToken: string): string;
|
|
3
|
+
/**
|
|
4
|
+
* Verify an incoming Terse request signature. Throws if invalid or missing.
|
|
5
|
+
* Useful both internally and as a public export for custom middleware.
|
|
6
|
+
*/
|
|
7
|
+
export declare function verifyIncomingRequest(signingSecret: string, headers: Record<string, string | string[] | undefined>, rawBody: string): void;
|
|
8
|
+
//# sourceMappingURL=hmac.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmac.d.ts","sourceRoot":"","sources":["../src/hmac.ts"],"names":[],"mappings":"AAiBA,6EAA6E;AAC7E,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAE/F;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAsB1I"}
|
package/dist/hmac.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import { TERSE_SIGNATURE_HEADER, TERSE_SIGNATURE_VERSION, TERSE_TIMESTAMP_HEADER } from "terse-types";
|
|
3
|
+
const MAX_TIMESTAMP_AGE_SECONDS = 300;
|
|
4
|
+
function computeRequestSignature(signingSecret, timestamp, body) {
|
|
5
|
+
const baseString = `${TERSE_SIGNATURE_VERSION}:${timestamp}:${body}`;
|
|
6
|
+
const hmac = crypto.createHmac("sha256", signingSecret).update(baseString).digest("hex");
|
|
7
|
+
return `${TERSE_SIGNATURE_VERSION}=${hmac}`;
|
|
8
|
+
}
|
|
9
|
+
function verifyRequestSignature(signingSecret, signature, timestamp, body) {
|
|
10
|
+
const expected = computeRequestSignature(signingSecret, timestamp, body);
|
|
11
|
+
if (signature.length !== expected.length)
|
|
12
|
+
return false;
|
|
13
|
+
return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
|
|
14
|
+
}
|
|
15
|
+
/** Compute the HMAC-SHA256 of a challenge token using the signing secret. */
|
|
16
|
+
export function computeChallengeSignature(signingSecret, challengeToken) {
|
|
17
|
+
return crypto.createHmac("sha256", signingSecret).update(challengeToken).digest("hex");
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Verify an incoming Terse request signature. Throws if invalid or missing.
|
|
21
|
+
* Useful both internally and as a public export for custom middleware.
|
|
22
|
+
*/
|
|
23
|
+
export function verifyIncomingRequest(signingSecret, headers, rawBody) {
|
|
24
|
+
const signature = headers[TERSE_SIGNATURE_HEADER];
|
|
25
|
+
const timestampStr = headers[TERSE_TIMESTAMP_HEADER];
|
|
26
|
+
if (typeof signature !== "string" || typeof timestampStr !== "string") {
|
|
27
|
+
const missing = [typeof signature !== "string" ? TERSE_SIGNATURE_HEADER : null, typeof timestampStr !== "string" ? TERSE_TIMESTAMP_HEADER : null].filter(Boolean);
|
|
28
|
+
throw new Error(`Missing required headers: ${missing.join(", ")}.\n` +
|
|
29
|
+
`Make sure requests to this endpoint are coming from Terse (not a browser or other client) ` +
|
|
30
|
+
`and that your reverse proxy is forwarding all headers.`);
|
|
31
|
+
}
|
|
32
|
+
const timestamp = Number(timestampStr);
|
|
33
|
+
if (Number.isNaN(timestamp)) {
|
|
34
|
+
throw new Error(`"${TERSE_TIMESTAMP_HEADER}" header is not a valid number (got "${timestampStr}").`);
|
|
35
|
+
}
|
|
36
|
+
const age = Math.abs(Math.floor(Date.now() / 1000) - timestamp);
|
|
37
|
+
if (age > MAX_TIMESTAMP_AGE_SECONDS) {
|
|
38
|
+
throw new Error(`Request timestamp is ${age}s old (max allowed: ${MAX_TIMESTAMP_AGE_SECONDS}s). ` + `Check that your server's clock is in sync.`);
|
|
39
|
+
}
|
|
40
|
+
if (!verifyRequestSignature(signingSecret, signature, timestamp, rawBody)) {
|
|
41
|
+
throw new Error(`Request signature does not match. ` + `Verify that TERSE_SIGNING_SECRET matches the value shown in the Terse dashboard.`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=hmac.js.map
|
package/dist/hmac.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmac.js","sourceRoot":"","sources":["../src/hmac.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAErG,MAAM,yBAAyB,GAAG,GAAG,CAAA;AAErC,SAAS,uBAAuB,CAAC,aAAqB,EAAE,SAAiB,EAAE,IAAY;IACnF,MAAM,UAAU,GAAG,GAAG,uBAAuB,IAAI,SAAS,IAAI,IAAI,EAAE,CAAA;IACpE,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACxF,OAAO,GAAG,uBAAuB,IAAI,IAAI,EAAE,CAAA;AAC/C,CAAC;AAED,SAAS,sBAAsB,CAAC,aAAqB,EAAE,SAAiB,EAAE,SAAiB,EAAE,IAAY;IACrG,MAAM,QAAQ,GAAG,uBAAuB,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;IACxE,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IACtD,OAAO,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;AAChF,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,yBAAyB,CAAC,aAAqB,EAAE,cAAsB;IACnF,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC1F,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,aAAqB,EAAE,OAAsD,EAAE,OAAe;IAChI,MAAM,SAAS,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;IACjD,MAAM,YAAY,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;IACpD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACpE,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACjK,MAAM,IAAI,KAAK,CACX,6BAA6B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAChD,4FAA4F;YAC5F,wDAAwD,CAC/D,CAAA;IACL,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;IACtC,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,IAAI,sBAAsB,wCAAwC,YAAY,KAAK,CAAC,CAAA;IACxG,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,CAAA;IAC/D,IAAI,GAAG,GAAG,yBAAyB,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,uBAAuB,yBAAyB,MAAM,GAAG,4CAA4C,CAAC,CAAA;IACrJ,CAAC;IACD,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,kFAAkF,CAAC,CAAA;IAC9I,CAAC;AACL,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,18 +1,52 @@
|
|
|
1
|
-
import type { ConfigData } from "terse-types";
|
|
2
|
-
import type {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export declare
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
export
|
|
15
|
-
export type
|
|
1
|
+
import type { ConfigData, Trigger as RawTrigger, RunHistoryAction, WebhookJobChallengeResponse, WebhookJobTriggerResponse } from "terse-types";
|
|
2
|
+
import type { CronTrigger as _RawCronTrigger, GithubPRClosedTrigger as _RawGithubPRClosedTrigger, GithubPRMergedTrigger as _RawGithubPRMergedTrigger, GithubPROpenedTrigger as _RawGithubPROpenedTrigger, GithubPRSynchronizedTrigger as _RawGithubPRSynchronizedTrigger, GithubPRTrigger as _RawGithubPRTrigger, GithubPushTrigger as _RawGithubPushTrigger, GithubTrigger as _RawGithubTrigger, GmailTrigger as _RawGmailTrigger, LinearCommentCreatedTrigger as _RawLinearCommentCreatedTrigger, LinearIssueCreatedTrigger as _RawLinearIssueCreatedTrigger, LinearIssueUpdatedTrigger as _RawLinearIssueUpdatedTrigger, LinearTrigger as _RawLinearTrigger, ManualSampleTrigger as _RawManualSampleTrigger, SlackAppMentionTrigger as _RawSlackAppMentionTrigger, SlackMessageTrigger as _RawSlackMessageTrigger, SlackReactionAddedTrigger as _RawSlackReactionAddedTrigger, SlackTrigger as _RawSlackTrigger, Trigger as _RawTrigger, WebhookTrigger as _RawWebhookTrigger, WorkOSInvitationAcceptedTrigger as _RawWorkOSInvitationAcceptedTrigger, WorkOSInvitationCreatedTrigger as _RawWorkOSInvitationCreatedTrigger, WorkOSInvitationResentTrigger as _RawWorkOSInvitationResentTrigger, WorkOSInvitationRevokedTrigger as _RawWorkOSInvitationRevokedTrigger, WorkOSInvitationTrigger as _RawWorkOSInvitationTrigger, WorkOSMembershipTrigger as _RawWorkOSMembershipTrigger, WorkOSOrganizationMembershipCreatedTrigger as _RawWorkOSOrganizationMembershipCreatedTrigger, WorkOSOrganizationMembershipDeletedTrigger as _RawWorkOSOrganizationMembershipDeletedTrigger, WorkOSOrganizationMembershipUpdatedTrigger as _RawWorkOSOrganizationMembershipUpdatedTrigger, WorkOSOrganizationTrigger as _RawWorkOSOrganizationTrigger, WorkOSTrigger as _RawWorkOSTrigger, WorkOSUserCreatedTrigger as _RawWorkOSUserCreatedTrigger, WorkOSUserDeletedTrigger as _RawWorkOSUserDeletedTrigger, WorkOSUserTrigger as _RawWorkOSUserTrigger, WorkOSUserUpdatedTrigger as _RawWorkOSUserUpdatedTrigger } from "terse-types";
|
|
3
|
+
import { type InferEvents, type InferToolApprovals, type SDKTrigger, type TypedSkill, type TypedTrigger } from "./types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Path relative to `TERSE_REMOTE_SERVER_URL` where the Terse backend POSTs webhook job triggers.
|
|
6
|
+
* Mount your handler at this path (e.g. `app.post(TERSE_JOB_WEBHOOK_TRIGGER_PATH, ...)`).
|
|
7
|
+
*/
|
|
8
|
+
export declare const TERSE_JOB_WEBHOOK_TRIGGER_PATH: string;
|
|
9
|
+
export { openSessionStream } from "./sessionStream.js";
|
|
10
|
+
export type { OpenSessionStreamOptions, SessionStartedEvent, SessionStreamEvent, SessionStreamHandle } from "./sessionStream.js";
|
|
11
|
+
export { createSDKTrigger } from "./types.js";
|
|
12
|
+
export type { ToolboxEntry, SDKTrigger, TypedTrigger, TypedSkill, InferEvent, InferEvents, InferToolApproval, InferToolApprovals } from "./types.js";
|
|
13
|
+
export { ConfigType, ConfigInstance, GmailConfig, SlackConfig, SlackOutputConfig, GmailOutputConfig, GmailDraftOutputConfig, NotionConfig, LinearInputConfig, LinearOutputConfig, GitHubConfig, PosthogConfig, DatadogConfig, TimeTriggerConfig, LaunchDarklyConfig, TerseConfig, WorkOSInputConfig, WorkOSOutputConfig, AttioOutputConfig, SnowflakeOutputConfig, WebhookInputConfig, SlackEventType, GitHubEventType, LinearEventType, GmailEventType, WorkOSEventType, debugTrigger, formatTriggerForAgent } from "terse-types";
|
|
14
|
+
export type Trigger = SDKTrigger<_RawTrigger>;
|
|
15
|
+
export type CronTrigger = SDKTrigger<_RawCronTrigger>;
|
|
16
|
+
export type GithubPRClosedTrigger = SDKTrigger<_RawGithubPRClosedTrigger>;
|
|
17
|
+
export type GithubPROpenedTrigger = SDKTrigger<_RawGithubPROpenedTrigger>;
|
|
18
|
+
export type GithubPRMergedTrigger = SDKTrigger<_RawGithubPRMergedTrigger>;
|
|
19
|
+
export type GithubPRSynchronizedTrigger = SDKTrigger<_RawGithubPRSynchronizedTrigger>;
|
|
20
|
+
export type GithubPRTrigger = SDKTrigger<_RawGithubPRTrigger>;
|
|
21
|
+
export type GithubPushTrigger = SDKTrigger<_RawGithubPushTrigger>;
|
|
22
|
+
export type GithubTrigger = SDKTrigger<_RawGithubTrigger>;
|
|
23
|
+
export type GmailTrigger = SDKTrigger<_RawGmailTrigger>;
|
|
24
|
+
export type LinearCommentCreatedTrigger = SDKTrigger<_RawLinearCommentCreatedTrigger>;
|
|
25
|
+
export type LinearIssueCreatedTrigger = SDKTrigger<_RawLinearIssueCreatedTrigger>;
|
|
26
|
+
export type LinearIssueUpdatedTrigger = SDKTrigger<_RawLinearIssueUpdatedTrigger>;
|
|
27
|
+
export type LinearTrigger = SDKTrigger<_RawLinearTrigger>;
|
|
28
|
+
export type ManualSampleTrigger = SDKTrigger<_RawManualSampleTrigger>;
|
|
29
|
+
export type SlackAppMentionTrigger = SDKTrigger<_RawSlackAppMentionTrigger>;
|
|
30
|
+
export type SlackMessageTrigger = SDKTrigger<_RawSlackMessageTrigger>;
|
|
31
|
+
export type SlackReactionAddedTrigger = SDKTrigger<_RawSlackReactionAddedTrigger>;
|
|
32
|
+
export type SlackTrigger = SDKTrigger<_RawSlackTrigger>;
|
|
33
|
+
export type WebhookTrigger = SDKTrigger<_RawWebhookTrigger>;
|
|
34
|
+
export type WorkOSInvitationAcceptedTrigger = SDKTrigger<_RawWorkOSInvitationAcceptedTrigger>;
|
|
35
|
+
export type WorkOSInvitationCreatedTrigger = SDKTrigger<_RawWorkOSInvitationCreatedTrigger>;
|
|
36
|
+
export type WorkOSInvitationTrigger = SDKTrigger<_RawWorkOSInvitationTrigger>;
|
|
37
|
+
export type WorkOSInvitationResentTrigger = SDKTrigger<_RawWorkOSInvitationResentTrigger>;
|
|
38
|
+
export type WorkOSInvitationRevokedTrigger = SDKTrigger<_RawWorkOSInvitationRevokedTrigger>;
|
|
39
|
+
export type WorkOSOrganizationMembershipCreatedTrigger = SDKTrigger<_RawWorkOSOrganizationMembershipCreatedTrigger>;
|
|
40
|
+
export type WorkOSOrganizationMembershipDeletedTrigger = SDKTrigger<_RawWorkOSOrganizationMembershipDeletedTrigger>;
|
|
41
|
+
export type WorkOSOrganizationMembershipUpdatedTrigger = SDKTrigger<_RawWorkOSOrganizationMembershipUpdatedTrigger>;
|
|
42
|
+
export type WorkOSMembershipTrigger = SDKTrigger<_RawWorkOSMembershipTrigger>;
|
|
43
|
+
export type WorkOSOrganizationTrigger = SDKTrigger<_RawWorkOSOrganizationTrigger>;
|
|
44
|
+
export type WorkOSTrigger = SDKTrigger<_RawWorkOSTrigger>;
|
|
45
|
+
export type WorkOSUserCreatedTrigger = SDKTrigger<_RawWorkOSUserCreatedTrigger>;
|
|
46
|
+
export type WorkOSUserDeletedTrigger = SDKTrigger<_RawWorkOSUserDeletedTrigger>;
|
|
47
|
+
export type WorkOSUserUpdatedTrigger = SDKTrigger<_RawWorkOSUserUpdatedTrigger>;
|
|
48
|
+
export type WorkOSUserTrigger = SDKTrigger<_RawWorkOSUserTrigger>;
|
|
49
|
+
export type { SdkAgentRunOptionsPayload, SdkAgentRunRequestBody, SdkAgentRunResponseBody, SdkAgentStreamEvent, ToolInputByName, ToolOutputByName } from "terse-types";
|
|
16
50
|
export { IntegrationType } from "terse-types";
|
|
17
51
|
export { RunHistoryAction, RunHistoryStatus, RunHistoryTrigger, RunHistoryDecision, RunHistoryRecord } from "terse-types";
|
|
18
52
|
type Action = RunHistoryAction;
|
|
@@ -23,24 +57,52 @@ export type CreateJobParameters<TTriggers extends readonly TypedTrigger[] = Type
|
|
|
23
57
|
toolApprovals?: InferToolApprovals<TSkills>[];
|
|
24
58
|
filter?: (event: InferEvents<TTriggers>) => boolean | Promise<boolean>;
|
|
25
59
|
onTrigger: (event: InferEvents<TTriggers>, Agent: TerseAgent) => Promise<void>;
|
|
26
|
-
|
|
60
|
+
remoteServerUrl?: string;
|
|
27
61
|
};
|
|
28
62
|
export declare const _jobRegistry: Map<string, CreateJobParameters>;
|
|
29
63
|
export declare class Terse {
|
|
30
64
|
constructor();
|
|
31
65
|
createJob<TTriggers extends readonly TypedTrigger[], TSkills extends readonly TypedSkill<string>[]>(params: CreateJobParameters<TTriggers, TSkills>): void;
|
|
66
|
+
/**
|
|
67
|
+
* Handle an incoming trigger request from the Terse backend.
|
|
68
|
+
* Wire this into your own HTTP route (Express, Hono, Next.js, etc.).
|
|
69
|
+
*
|
|
70
|
+
* Two-phase protocol: (1) POST with `{ type: "challenge", challenge: "<token>" }` verifies the
|
|
71
|
+
* HMAC signature and echoes the challenge with a signed response. (2) POST with
|
|
72
|
+
* `{ jobName, runId, event }` opens an SDK session stream, **awaits** `onTrigger` (so this
|
|
73
|
+
* method does not return until your job handler finishes), then closes the session stream.
|
|
74
|
+
*
|
|
75
|
+
* Both phases require `TERSE_SIGNING_SECRET` to verify request signatures.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```ts
|
|
79
|
+
* // Express — use TERSE_JOB_WEBHOOK_TRIGGER_PATH so the path matches the backend.
|
|
80
|
+
* app.post(TERSE_JOB_WEBHOOK_TRIGGER_PATH, async (req, res) => {
|
|
81
|
+
* const result = await terse.handleTrigger(req.body, req.headers)
|
|
82
|
+
* res.json(result)
|
|
83
|
+
* })
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
handleTrigger(body: unknown, headers: Record<string, string | string[] | undefined>): Promise<WebhookJobChallengeResponse | WebhookJobTriggerResponse>;
|
|
32
87
|
}
|
|
33
88
|
export type ApprovalRequestInfo = {
|
|
34
89
|
stepId: string;
|
|
35
90
|
toolName: string;
|
|
36
91
|
arguments: string;
|
|
37
92
|
};
|
|
93
|
+
export type CreateAgentForJobOptions = {
|
|
94
|
+
apiBaseUrl?: string;
|
|
95
|
+
sessionId?: string;
|
|
96
|
+
runId?: string;
|
|
97
|
+
};
|
|
98
|
+
type JobAgentConfig = Pick<CreateJobParameters, "skills" | "triggers" | "toolApprovals">;
|
|
38
99
|
export declare class TerseAgent {
|
|
39
100
|
readonly skills: ConfigData[];
|
|
40
101
|
manualToolConfigs?: readonly ConfigData[];
|
|
41
102
|
readonly toolApprovals: string[];
|
|
42
103
|
private readonly apiBaseUrl;
|
|
43
104
|
private readonly sessionId?;
|
|
105
|
+
private readonly runId?;
|
|
44
106
|
/**
|
|
45
107
|
* Optional callback invoked when the agent requires tool approval.
|
|
46
108
|
* Return `true` to approve, `false` to reject.
|
|
@@ -48,8 +110,9 @@ export declare class TerseAgent {
|
|
|
48
110
|
* but no decision is submitted (the stream will hang waiting).
|
|
49
111
|
*/
|
|
50
112
|
onApprovalRequired?: (info: ApprovalRequestInfo) => Promise<boolean>;
|
|
51
|
-
constructor(skills?: ConfigData[], apiBaseUrl?: string, sessionId?: string, toolApprovals?: string[]);
|
|
52
|
-
|
|
113
|
+
constructor(skills?: ConfigData[], apiBaseUrl?: string, sessionId?: string, toolApprovals?: string[], runId?: string);
|
|
114
|
+
static fromJob(job: JobAgentConfig, options?: CreateAgentForJobOptions): TerseAgent;
|
|
115
|
+
run(prompt: string, event?: RawTrigger): AsyncGenerator<TerseAgentResult>;
|
|
53
116
|
submitApprovalDecision(params: {
|
|
54
117
|
runId: string;
|
|
55
118
|
stepId: string;
|
|
@@ -59,7 +122,7 @@ export declare class TerseAgent {
|
|
|
59
122
|
* Runs the agent to completion and discards streamed output.
|
|
60
123
|
* Useful when you only care that the run finished (or threw).
|
|
61
124
|
*/
|
|
62
|
-
runAndWait(prompt: string, event?:
|
|
125
|
+
runAndWait(prompt: string, event?: RawTrigger): Promise<string>;
|
|
63
126
|
executeTool<TOutput = unknown>(toolName: string, params?: Record<string, unknown>): Promise<TOutput>;
|
|
64
127
|
private buildHeaders;
|
|
65
128
|
private consumeSseStream;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
import { IntegrationType } from "terse-types";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
formatForAgentRunner() {
|
|
9
|
-
return "Manual trigger from terse run";
|
|
10
|
-
}
|
|
11
|
-
debugLog() {
|
|
12
|
-
return "[MockInputEvent] Manual trigger via CLI";
|
|
13
|
-
}
|
|
1
|
+
import { ApiRoutes, IntegrationType, sdkAgentRunRequestBodySchema, webhookJobChallengeRequestSchema, webhookJobTriggerRequestSchema } from "terse-types";
|
|
2
|
+
import { computeChallengeSignature, verifyIncomingRequest } from "./hmac.js";
|
|
3
|
+
import { openSessionStream } from "./sessionStream.js";
|
|
4
|
+
import { createSDKTrigger } from "./types.js";
|
|
5
|
+
/** Aligns with `terse` CLI (`packages/terse-cli/src/config.ts`) when `TERSE_BACKEND_URL` is unset. */
|
|
6
|
+
function resolveTerseBackendUrl() {
|
|
7
|
+
return process.env.TERSE_BACKEND_URL || "https://useterse.ai/api";
|
|
14
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Path relative to `TERSE_REMOTE_SERVER_URL` where the Terse backend POSTs webhook job triggers.
|
|
11
|
+
* Mount your handler at this path (e.g. `app.post(TERSE_JOB_WEBHOOK_TRIGGER_PATH, ...)`).
|
|
12
|
+
*/
|
|
13
|
+
export const TERSE_JOB_WEBHOOK_TRIGGER_PATH = ApiRoutes.SDK.JOB_WEBHOOK_TRIGGER;
|
|
14
|
+
export { openSessionStream } from "./sessionStream.js";
|
|
15
|
+
// Re-export SDK-specific types
|
|
16
|
+
export { createSDKTrigger } from "./types.js";
|
|
15
17
|
// Re-export shared types for consumer convenience
|
|
16
|
-
export { ConfigType, GmailConfig,
|
|
18
|
+
export { ConfigType, GmailConfig, SlackConfig, SlackOutputConfig, GmailOutputConfig, GmailDraftOutputConfig, NotionConfig, LinearInputConfig, LinearOutputConfig, GitHubConfig, PosthogConfig, DatadogConfig, TimeTriggerConfig, LaunchDarklyConfig, TerseConfig, WorkOSInputConfig, WorkOSOutputConfig, AttioOutputConfig, SnowflakeOutputConfig, WebhookInputConfig, SlackEventType, GitHubEventType, LinearEventType, GmailEventType, WorkOSEventType, debugTrigger, formatTriggerForAgent } from "terse-types";
|
|
17
19
|
export { IntegrationType } from "terse-types";
|
|
18
20
|
export { RunHistoryStatus } from "terse-types";
|
|
19
21
|
/** Internal job registry — lives on globalThis so it survives across module instances (e.g. tsx loaders). */
|
|
@@ -31,6 +33,86 @@ export class Terse {
|
|
|
31
33
|
}
|
|
32
34
|
_jobRegistry.set(params.name, params);
|
|
33
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Handle an incoming trigger request from the Terse backend.
|
|
38
|
+
* Wire this into your own HTTP route (Express, Hono, Next.js, etc.).
|
|
39
|
+
*
|
|
40
|
+
* Two-phase protocol: (1) POST with `{ type: "challenge", challenge: "<token>" }` verifies the
|
|
41
|
+
* HMAC signature and echoes the challenge with a signed response. (2) POST with
|
|
42
|
+
* `{ jobName, runId, event }` opens an SDK session stream, **awaits** `onTrigger` (so this
|
|
43
|
+
* method does not return until your job handler finishes), then closes the session stream.
|
|
44
|
+
*
|
|
45
|
+
* Both phases require `TERSE_SIGNING_SECRET` to verify request signatures.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* // Express — use TERSE_JOB_WEBHOOK_TRIGGER_PATH so the path matches the backend.
|
|
50
|
+
* app.post(TERSE_JOB_WEBHOOK_TRIGGER_PATH, async (req, res) => {
|
|
51
|
+
* const result = await terse.handleTrigger(req.body, req.headers)
|
|
52
|
+
* res.json(result)
|
|
53
|
+
* })
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
async handleTrigger(body, headers) {
|
|
57
|
+
const signingSecret = process.env.TERSE_SIGNING_SECRET;
|
|
58
|
+
if (!signingSecret) {
|
|
59
|
+
throw new Error("TERSE_SIGNING_SECRET is not set. " +
|
|
60
|
+
"Add it to your .env file or export it before starting your server. " +
|
|
61
|
+
"You can find your signing secret in the Terse dashboard under your job's settings.");
|
|
62
|
+
}
|
|
63
|
+
const apiKey = process.env.TERSE_API_KEY;
|
|
64
|
+
if (!apiKey) {
|
|
65
|
+
throw new Error("TERSE_API_KEY is not set. " + "Add it to your .env file or export it before starting your server.");
|
|
66
|
+
}
|
|
67
|
+
verifyIncomingRequest(signingSecret, headers, JSON.stringify(body));
|
|
68
|
+
const challenge = webhookJobChallengeRequestSchema.safeParse(body);
|
|
69
|
+
if (challenge.success) {
|
|
70
|
+
const signature = computeChallengeSignature(signingSecret, challenge.data.challenge);
|
|
71
|
+
return { challenge: challenge.data.challenge, signature };
|
|
72
|
+
}
|
|
73
|
+
const full = webhookJobTriggerRequestSchema.safeParse(body);
|
|
74
|
+
if (!full.success) {
|
|
75
|
+
const detail = full.error.issues.map((issue) => issue.message).join("; ");
|
|
76
|
+
throw new Error(`Invalid trigger payload: ${detail}`);
|
|
77
|
+
}
|
|
78
|
+
const { jobName, runId, event } = full.data;
|
|
79
|
+
const job = _jobRegistry.get(jobName);
|
|
80
|
+
if (!job) {
|
|
81
|
+
const available = [..._jobRegistry.keys()];
|
|
82
|
+
throw new Error(`Job "${jobName}" is not registered. ` +
|
|
83
|
+
(available.length
|
|
84
|
+
? `Registered jobs: ${available.join(", ")}. Make sure the job name in your Terse dashboard matches your code.`
|
|
85
|
+
: `No jobs are registered. Make sure your job file is imported before the server starts.`));
|
|
86
|
+
}
|
|
87
|
+
const apiBaseUrl = resolveTerseBackendUrl();
|
|
88
|
+
const session = await openSessionStream(apiBaseUrl, apiKey);
|
|
89
|
+
try {
|
|
90
|
+
const inputEvent = createSDKTrigger(event);
|
|
91
|
+
const agent = TerseAgent.fromJob(job, { apiBaseUrl, sessionId: session.sessionId, runId });
|
|
92
|
+
if (job.filter) {
|
|
93
|
+
const shouldRun = await job.filter(inputEvent);
|
|
94
|
+
if (!shouldRun) {
|
|
95
|
+
return { status: "ok", filtered: true };
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
await job.onTrigger(inputEvent, agent);
|
|
99
|
+
return { status: "ok" };
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
session.close();
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
105
|
+
finally {
|
|
106
|
+
session.close();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function attachGeneratedTools(agent) {
|
|
111
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
112
|
+
const createTools = globalThis.__terse_createTools;
|
|
113
|
+
if (createTools) {
|
|
114
|
+
Object.defineProperty(agent, "tools", { value: createTools(agent) });
|
|
115
|
+
}
|
|
34
116
|
}
|
|
35
117
|
export class TerseAgent {
|
|
36
118
|
skills;
|
|
@@ -38,6 +120,7 @@ export class TerseAgent {
|
|
|
38
120
|
toolApprovals;
|
|
39
121
|
apiBaseUrl;
|
|
40
122
|
sessionId;
|
|
123
|
+
runId;
|
|
41
124
|
/**
|
|
42
125
|
* Optional callback invoked when the agent requires tool approval.
|
|
43
126
|
* Return `true` to approve, `false` to reject.
|
|
@@ -45,24 +128,27 @@ export class TerseAgent {
|
|
|
45
128
|
* but no decision is submitted (the stream will hang waiting).
|
|
46
129
|
*/
|
|
47
130
|
onApprovalRequired;
|
|
48
|
-
constructor(skills = [], apiBaseUrl = "http://localhost:3001", sessionId, toolApprovals = []) {
|
|
131
|
+
constructor(skills = [], apiBaseUrl = "http://localhost:3001", sessionId, toolApprovals = [], runId) {
|
|
49
132
|
this.skills = skills;
|
|
50
133
|
this.apiBaseUrl = apiBaseUrl;
|
|
51
134
|
this.sessionId = sessionId;
|
|
52
135
|
this.toolApprovals = toolApprovals;
|
|
136
|
+
this.runId = runId;
|
|
137
|
+
}
|
|
138
|
+
static fromJob(job, options = {}) {
|
|
139
|
+
const agent = new TerseAgent(job.skills, options.apiBaseUrl, options.sessionId, job.toolApprovals ? [...job.toolApprovals] : [], options.runId);
|
|
140
|
+
agent.manualToolConfigs = [...job.skills, ...job.triggers];
|
|
141
|
+
attachGeneratedTools(agent);
|
|
142
|
+
return agent;
|
|
53
143
|
}
|
|
54
144
|
async *run(prompt, event) {
|
|
55
|
-
const resolvedEvent = event
|
|
56
|
-
const requestBody = {
|
|
145
|
+
const resolvedEvent = event;
|
|
146
|
+
const requestBody = sdkAgentRunRequestBodySchema.parse({
|
|
57
147
|
prompt,
|
|
58
148
|
toolApprovals: this.toolApprovals,
|
|
59
|
-
event:
|
|
60
|
-
integrationType: resolvedEvent.integrationType,
|
|
61
|
-
formattedContent: resolvedEvent.formatForAgentRunner(),
|
|
62
|
-
debugLog: resolvedEvent.debugLog()
|
|
63
|
-
},
|
|
149
|
+
event: resolvedEvent,
|
|
64
150
|
skills: this.skills
|
|
65
|
-
};
|
|
151
|
+
});
|
|
66
152
|
const res = await fetch(`${this.apiBaseUrl}${ApiRoutes.SDK.AGENT_RUN}`, {
|
|
67
153
|
method: "POST",
|
|
68
154
|
headers: this.buildHeaders(),
|
|
@@ -127,9 +213,9 @@ export class TerseAgent {
|
|
|
127
213
|
};
|
|
128
214
|
if (this.sessionId)
|
|
129
215
|
headers["X-Terse-Session-Id"] = this.sessionId;
|
|
130
|
-
const
|
|
131
|
-
if (
|
|
132
|
-
headers["X-Terse-Run-Id"] =
|
|
216
|
+
const runIdHeader = this.runId ?? process.env.TERSE_RUN_ID;
|
|
217
|
+
if (runIdHeader)
|
|
218
|
+
headers["X-Terse-Run-Id"] = runIdHeader;
|
|
133
219
|
return headers;
|
|
134
220
|
}
|
|
135
221
|
async *consumeSseStream(res) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { SdkAgentStreamEvent } from "terse-types";
|
|
2
|
+
export type SessionStartedEvent = {
|
|
3
|
+
type: "session_started";
|
|
4
|
+
sessionId: string;
|
|
5
|
+
};
|
|
6
|
+
export type SessionStreamEvent = SdkAgentStreamEvent | SessionStartedEvent;
|
|
7
|
+
export type SessionStreamHandle = {
|
|
8
|
+
sessionId: string;
|
|
9
|
+
close: () => void;
|
|
10
|
+
};
|
|
11
|
+
export type OpenSessionStreamOptions = {
|
|
12
|
+
/**
|
|
13
|
+
* Invoked for each SSE `data:` JSON event after the initial `session_started`
|
|
14
|
+
* (that event is consumed internally to obtain `sessionId`).
|
|
15
|
+
*/
|
|
16
|
+
onEvent?: (event: SessionStreamEvent) => void | Promise<void>;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Opens the Terse SSE session used for live run/tool events (same endpoint as the `terse` CLI).
|
|
20
|
+
* Keeps the stream draining until `close()` is called.
|
|
21
|
+
*/
|
|
22
|
+
export declare function openSessionStream(apiBaseUrl: string, apiKey: string, options?: OpenSessionStreamOptions): Promise<SessionStreamHandle>;
|
|
23
|
+
//# sourceMappingURL=sessionStream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionStream.d.ts","sourceRoot":"","sources":["../src/sessionStream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEtD,MAAM,MAAM,mBAAmB,GAAG;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhF,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,GAAG,mBAAmB,CAAA;AAE1E,MAAM,MAAM,mBAAmB,GAAG;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,IAAI,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACnC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAChE,CAAA;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,wBAA6B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAuBhJ"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { ApiRoutes } from "terse-types";
|
|
2
|
+
/**
|
|
3
|
+
* Opens the Terse SSE session used for live run/tool events (same endpoint as the `terse` CLI).
|
|
4
|
+
* Keeps the stream draining until `close()` is called.
|
|
5
|
+
*/
|
|
6
|
+
export async function openSessionStream(apiBaseUrl, apiKey, options = {}) {
|
|
7
|
+
const base = apiBaseUrl.replace(/\/$/, "");
|
|
8
|
+
const response = await fetch(`${base}${ApiRoutes.SDK.SESSION_EVENTS}`, {
|
|
9
|
+
headers: { Authorization: `Bearer ${apiKey}`, Accept: "text/event-stream" }
|
|
10
|
+
});
|
|
11
|
+
if (!response.ok || !response.body) {
|
|
12
|
+
throw new Error(`Failed to open session event stream (HTTP ${response.status})`);
|
|
13
|
+
}
|
|
14
|
+
const reader = response.body.getReader();
|
|
15
|
+
const decoder = new TextDecoder();
|
|
16
|
+
let buffer = "";
|
|
17
|
+
const { value, remainingBuffer } = await readSessionId(reader, decoder, buffer);
|
|
18
|
+
consumeSseSessionEvents(reader, decoder, remainingBuffer, options.onEvent);
|
|
19
|
+
return {
|
|
20
|
+
sessionId: value,
|
|
21
|
+
close: () => {
|
|
22
|
+
reader.cancel().catch(() => { });
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
async function readSessionId(reader, decoder, buffer) {
|
|
27
|
+
while (true) {
|
|
28
|
+
const { done, value } = await reader.read();
|
|
29
|
+
if (done) {
|
|
30
|
+
throw new Error("Session stream ended before sending sessionId");
|
|
31
|
+
}
|
|
32
|
+
buffer += decoder.decode(value, { stream: true });
|
|
33
|
+
const lines = buffer.split("\n");
|
|
34
|
+
buffer = lines.pop() ?? "";
|
|
35
|
+
for (const line of lines) {
|
|
36
|
+
if (!line.startsWith("data: "))
|
|
37
|
+
continue;
|
|
38
|
+
const event = safeParseJson(line.slice(6));
|
|
39
|
+
if (event?.type === "session_started" && typeof event.sessionId === "string") {
|
|
40
|
+
return { value: event.sessionId, remainingBuffer: buffer };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function consumeSseSessionEvents(reader, decoder, initialBuffer, onEvent) {
|
|
46
|
+
let buffer = initialBuffer;
|
|
47
|
+
void (async () => {
|
|
48
|
+
try {
|
|
49
|
+
while (true) {
|
|
50
|
+
const { done, value } = await reader.read();
|
|
51
|
+
if (done)
|
|
52
|
+
break;
|
|
53
|
+
buffer += decoder.decode(value, { stream: true });
|
|
54
|
+
const lines = buffer.split("\n");
|
|
55
|
+
buffer = lines.pop() ?? "";
|
|
56
|
+
for (const line of lines) {
|
|
57
|
+
if (!line.startsWith("data: "))
|
|
58
|
+
continue;
|
|
59
|
+
const event = parseSessionStreamEvent(line.slice(6));
|
|
60
|
+
if (!event)
|
|
61
|
+
continue;
|
|
62
|
+
if (onEvent) {
|
|
63
|
+
await onEvent(event);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// Stream cancelled via close() — expected
|
|
70
|
+
}
|
|
71
|
+
})();
|
|
72
|
+
}
|
|
73
|
+
function parseSessionStreamEvent(raw) {
|
|
74
|
+
const parsed = safeParseJson(raw);
|
|
75
|
+
if (!parsed || typeof parsed.type !== "string")
|
|
76
|
+
return null;
|
|
77
|
+
return parsed;
|
|
78
|
+
}
|
|
79
|
+
function safeParseJson(value) {
|
|
80
|
+
try {
|
|
81
|
+
return JSON.parse(value);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=sessionStream.js.map
|