@slashfi/agents-sdk 0.22.0 → 0.23.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/callback/index.d.ts +90 -0
- package/dist/callback/index.d.ts.map +1 -0
- package/dist/callback/index.js +70 -0
- package/dist/callback/index.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/adk.ts +0 -0
- package/src/callback/index.ts +172 -0
- package/src/index.ts +17 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Callback — Deferred call_agent execution with triggers.
|
|
3
|
+
*
|
|
4
|
+
* An agent_callback is a call_agent command with an optional trigger.
|
|
5
|
+
* When the trigger fires (e.g., user submits a form), template references
|
|
6
|
+
* like {{trigger.variable_name}} are resolved with the trigger's values
|
|
7
|
+
* and the call_agent command is executed.
|
|
8
|
+
*
|
|
9
|
+
* This module provides the unopinionated contract:
|
|
10
|
+
* - Trigger schema (extensible discriminated union)
|
|
11
|
+
* - Template resolution
|
|
12
|
+
* - Store interface
|
|
13
|
+
* - Validation utilities
|
|
14
|
+
*
|
|
15
|
+
* No platform-specific code (no Slack, no CockroachDB, no Atlas).
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Base trigger type. Implementations extend this with specific trigger sources
|
|
19
|
+
* (e.g., slack_block_kit, webhook, timer).
|
|
20
|
+
*
|
|
21
|
+
* The `type` field discriminates between trigger sources.
|
|
22
|
+
* Additional fields are trigger-specific.
|
|
23
|
+
*/
|
|
24
|
+
export interface AgentCallbackTrigger {
|
|
25
|
+
type: string;
|
|
26
|
+
[key: string]: unknown;
|
|
27
|
+
}
|
|
28
|
+
export type AgentCallbackStatus = 'pending' | 'completed' | 'expired' | 'cancelled';
|
|
29
|
+
/**
|
|
30
|
+
* A stored agent_callback — a call_agent command waiting for its trigger to fire.
|
|
31
|
+
*/
|
|
32
|
+
export interface AgentCallbackEntry<TMetadata = Record<string, unknown>> {
|
|
33
|
+
id: string;
|
|
34
|
+
status: AgentCallbackStatus;
|
|
35
|
+
/** The call_agent command. Params may contain {{trigger.x}} templates. */
|
|
36
|
+
callback: Record<string, unknown>;
|
|
37
|
+
/** Trigger definition — how values are collected. */
|
|
38
|
+
trigger?: AgentCallbackTrigger;
|
|
39
|
+
/** Implementation-specific context (e.g., creator branch, user ID). */
|
|
40
|
+
metadata?: TMetadata;
|
|
41
|
+
/** Resolved values from the trigger, keyed by variable name. */
|
|
42
|
+
resolvedValues?: Record<string, string>;
|
|
43
|
+
/** Callback expires after this time. */
|
|
44
|
+
expiresAt?: Date;
|
|
45
|
+
createdAt: Date;
|
|
46
|
+
completedAt?: Date;
|
|
47
|
+
}
|
|
48
|
+
export interface CreateAgentCallbackOptions<TMetadata = Record<string, unknown>> {
|
|
49
|
+
/** The call_agent command. May contain {{trigger.x}} template references in params. */
|
|
50
|
+
callback: Record<string, unknown>;
|
|
51
|
+
/** Trigger definition. */
|
|
52
|
+
trigger?: AgentCallbackTrigger;
|
|
53
|
+
/** Implementation-specific context. */
|
|
54
|
+
metadata?: TMetadata;
|
|
55
|
+
/** TTL in milliseconds (default: implementation-defined). */
|
|
56
|
+
ttlMs?: number;
|
|
57
|
+
}
|
|
58
|
+
export interface ResolveAgentCallbackOptions {
|
|
59
|
+
/** The callback ID to resolve. */
|
|
60
|
+
id: string;
|
|
61
|
+
/** Values from the trigger source, keyed by variable name. */
|
|
62
|
+
values: Record<string, string>;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Agent Callback Store — persistence layer for deferred call_agent commands.
|
|
66
|
+
* Implementations can use any backing store (CockroachDB, SQLite, in-memory, etc.).
|
|
67
|
+
*/
|
|
68
|
+
export interface AgentCallbackStore<TMetadata = Record<string, unknown>> {
|
|
69
|
+
create(options: CreateAgentCallbackOptions<TMetadata>): Promise<string>;
|
|
70
|
+
get(id: string): Promise<AgentCallbackEntry<TMetadata> | null>;
|
|
71
|
+
resolve(options: ResolveAgentCallbackOptions): Promise<AgentCallbackEntry<TMetadata>>;
|
|
72
|
+
cancel(id: string): Promise<boolean>;
|
|
73
|
+
listPending(limit?: number): Promise<AgentCallbackEntry<TMetadata>[]>;
|
|
74
|
+
expireStale(): Promise<number>;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Resolve {{trigger.variable}} references in an object tree.
|
|
78
|
+
* Scans all string values and replaces {{trigger.x}} with the
|
|
79
|
+
* corresponding value from triggerValues.
|
|
80
|
+
*
|
|
81
|
+
* Unresolved references are left as-is.
|
|
82
|
+
*/
|
|
83
|
+
export declare function resolveCallbackTemplates<T>(obj: T, triggerValues: Record<string, string>): T;
|
|
84
|
+
/**
|
|
85
|
+
* Validate that all {{trigger.x}} references in a callback have
|
|
86
|
+
* corresponding variables in the provided set.
|
|
87
|
+
* Returns array of unresolved variable names, or empty if valid.
|
|
88
|
+
*/
|
|
89
|
+
export declare function validateCallbackTemplates(callback: Record<string, unknown>, knownVariables: string[]): string[];
|
|
90
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/callback/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAMD,MAAM,MAAM,mBAAmB,GAC3B,SAAS,GACT,WAAW,GACX,SAAS,GACT,WAAW,CAAC;AAMhB;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACrE,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,mBAAmB,CAAC;IAC5B,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,qDAAqD;IACrD,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,uEAAuE;IACvE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,wCAAwC;IACxC,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAMD,MAAM,WAAW,0BAA0B,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC7E,uFAAuF;IACvF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,0BAA0B;IAC1B,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,uCAAuC;IACvC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,MAAM,WAAW,2BAA2B;IAC1C,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAMD;;;GAGG;AACH,MAAM,WAAW,kBAAkB,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACrE,MAAM,CAAC,OAAO,EAAE,0BAA0B,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/D,OAAO,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;IACtF,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACtE,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAChC;AAMD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EACxC,GAAG,EAAE,CAAC,EACN,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,CAAC,CAiBH;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,cAAc,EAAE,MAAM,EAAE,GACvB,MAAM,EAAE,CAoBV"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Callback — Deferred call_agent execution with triggers.
|
|
3
|
+
*
|
|
4
|
+
* An agent_callback is a call_agent command with an optional trigger.
|
|
5
|
+
* When the trigger fires (e.g., user submits a form), template references
|
|
6
|
+
* like {{trigger.variable_name}} are resolved with the trigger's values
|
|
7
|
+
* and the call_agent command is executed.
|
|
8
|
+
*
|
|
9
|
+
* This module provides the unopinionated contract:
|
|
10
|
+
* - Trigger schema (extensible discriminated union)
|
|
11
|
+
* - Template resolution
|
|
12
|
+
* - Store interface
|
|
13
|
+
* - Validation utilities
|
|
14
|
+
*
|
|
15
|
+
* No platform-specific code (no Slack, no CockroachDB, no Atlas).
|
|
16
|
+
*/
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
// Template Resolution
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
/**
|
|
21
|
+
* Resolve {{trigger.variable}} references in an object tree.
|
|
22
|
+
* Scans all string values and replaces {{trigger.x}} with the
|
|
23
|
+
* corresponding value from triggerValues.
|
|
24
|
+
*
|
|
25
|
+
* Unresolved references are left as-is.
|
|
26
|
+
*/
|
|
27
|
+
export function resolveCallbackTemplates(obj, triggerValues) {
|
|
28
|
+
if (typeof obj === 'string') {
|
|
29
|
+
return obj.replace(/\{\{trigger\.(\w+)\}\}/g, (_match, varName) => {
|
|
30
|
+
return triggerValues[varName] ?? `{{trigger.${varName}}}`;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
if (Array.isArray(obj)) {
|
|
34
|
+
return obj.map((item) => resolveCallbackTemplates(item, triggerValues));
|
|
35
|
+
}
|
|
36
|
+
if (obj !== null && typeof obj === 'object') {
|
|
37
|
+
const result = {};
|
|
38
|
+
for (const [key, val] of Object.entries(obj)) {
|
|
39
|
+
result[key] = resolveCallbackTemplates(val, triggerValues);
|
|
40
|
+
}
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
return obj;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Validate that all {{trigger.x}} references in a callback have
|
|
47
|
+
* corresponding variables in the provided set.
|
|
48
|
+
* Returns array of unresolved variable names, or empty if valid.
|
|
49
|
+
*/
|
|
50
|
+
export function validateCallbackTemplates(callback, knownVariables) {
|
|
51
|
+
const definedVars = new Set(knownVariables);
|
|
52
|
+
const referencedVars = [];
|
|
53
|
+
const scanForRefs = (obj) => {
|
|
54
|
+
if (typeof obj === 'string') {
|
|
55
|
+
const matches = obj.matchAll(/\{\{trigger\.(\w+)\}\}/g);
|
|
56
|
+
for (const match of matches) {
|
|
57
|
+
referencedVars.push(match[1]);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else if (Array.isArray(obj)) {
|
|
61
|
+
obj.forEach(scanForRefs);
|
|
62
|
+
}
|
|
63
|
+
else if (obj !== null && typeof obj === 'object') {
|
|
64
|
+
Object.values(obj).forEach(scanForRefs);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
scanForRefs(callback);
|
|
68
|
+
return referencedVars.filter((v) => !definedVars.has(v));
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/callback/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AA+FH,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACtC,GAAM,EACN,aAAqC;IAErC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC,MAAM,EAAE,OAAe,EAAE,EAAE;YACxE,OAAO,aAAa,CAAC,OAAO,CAAC,IAAI,aAAa,OAAO,IAAI,CAAC;QAC5D,CAAC,CAAM,CAAC;IACV,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAM,CAAC;IAC/E,CAAC;IACD,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAA8B,CAAC,EAAE,CAAC;YACxE,MAAM,CAAC,GAAG,CAAC,GAAG,wBAAwB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,MAAW,CAAC;IACrB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAAiC,EACjC,cAAwB;IAExB,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5C,MAAM,cAAc,GAAa,EAAE,CAAC;IAEpC,MAAM,WAAW,GAAG,CAAC,GAAY,EAAQ,EAAE;QACzC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;YACxD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,GAA8B,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACrE,CAAC;IACH,CAAC,CAAC;IAEF,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEtB,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -94,4 +94,6 @@ export { pack, publish } from "./pack.js";
|
|
|
94
94
|
export type { PackOptions, PackResult, PublishOptions, VersionMeta, VersionChanges, } from "./pack.js";
|
|
95
95
|
export { introspectMcp } from "./introspect.js";
|
|
96
96
|
export type { IntrospectOptions } from "./introspect.js";
|
|
97
|
+
export { resolveCallbackTemplates, validateCallbackTemplates, } from "./callback/index.js";
|
|
98
|
+
export type { AgentCallbackTrigger, AgentCallbackStatus, AgentCallbackEntry, AgentCallbackStore, CreateAgentCallbackOptions, ResolveAgentCallbackOptions, } from "./callback/index.js";
|
|
97
99
|
//# sourceMappingURL=index.d.ts.map
|
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
|
@@ -103,4 +103,8 @@ export { pack, publish } from "./pack.js";
|
|
|
103
103
|
// Introspect
|
|
104
104
|
// ============================================
|
|
105
105
|
export { introspectMcp } from "./introspect.js";
|
|
106
|
+
// ============================================
|
|
107
|
+
// Agent Callbacks (deferred call_agent commands)
|
|
108
|
+
// ============================================
|
|
109
|
+
export { resolveCallbackTemplates, validateCallbackTemplates, } from "./callback/index.js";
|
|
106
110
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAiDH,mBAAmB;AACnB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGtD,WAAW;AACX,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAOpD,SAAS;AACT,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAc7C,SAAS;AACT,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,WAAW,GACZ,MAAM,aAAa,CAAC;AASrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,oBAAoB;AACpB,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAMhC,OAAO;AACP,OAAO,EACL,eAAe,EACf,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AASrC,QAAQ;AACR,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,UAAU;AACV,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,WAAW,EACX,mBAAmB,GACpB,MAAM,gCAAgC,CAAC;AAOxC,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM;AACN,OAAO,EACL,OAAO,EACP,SAAS,EACT,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,GACV,MAAM,UAAU,CAAC;AAQlB,wBAAwB;AAExB,eAAe;AACf,OAAO,EACL,uBAAuB,EACvB,8BAA8B,EAC9B,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,qCAAqC,CAAC;AAiB7C,kBAAkB;AAClB,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,QAAQ;AACR,OAAO,EACL,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,8BAA8B,CAAC;AAOtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAE3C,OAAO,EACL,gBAAgB,GAMjB,MAAM,kBAAkB,CAAC;AAE1B,oBAAoB;AACpB,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAY5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAShE,UAAU;AACV,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAWjE,+CAA+C;AAC/C,+BAA+B;AAC/B,+CAA+C;AAE/C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMhE,+CAA+C;AAC/C,eAAe;AACf,+CAA+C;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,+CAA+C;AAC/C,eAAe;AACf,+CAA+C;AAE/C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEvD,+CAA+C;AAC/C,iBAAiB;AACjB,+CAA+C;AAE/C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAS1C,+CAA+C;AAC/C,aAAa;AACb,+CAA+C;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAiDH,mBAAmB;AACnB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGtD,WAAW;AACX,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAOpD,SAAS;AACT,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAc7C,SAAS;AACT,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,WAAW,GACZ,MAAM,aAAa,CAAC;AASrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,oBAAoB;AACpB,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAMhC,OAAO;AACP,OAAO,EACL,eAAe,EACf,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AASrC,QAAQ;AACR,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,UAAU;AACV,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,WAAW,EACX,mBAAmB,GACpB,MAAM,gCAAgC,CAAC;AAOxC,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM;AACN,OAAO,EACL,OAAO,EACP,SAAS,EACT,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,GACV,MAAM,UAAU,CAAC;AAQlB,wBAAwB;AAExB,eAAe;AACf,OAAO,EACL,uBAAuB,EACvB,8BAA8B,EAC9B,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,qCAAqC,CAAC;AAiB7C,kBAAkB;AAClB,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,QAAQ;AACR,OAAO,EACL,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,8BAA8B,CAAC;AAOtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAE3C,OAAO,EACL,gBAAgB,GAMjB,MAAM,kBAAkB,CAAC;AAE1B,oBAAoB;AACpB,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAY5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAShE,UAAU;AACV,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAWjE,+CAA+C;AAC/C,+BAA+B;AAC/B,+CAA+C;AAE/C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMhE,+CAA+C;AAC/C,eAAe;AACf,+CAA+C;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,+CAA+C;AAC/C,eAAe;AACf,+CAA+C;AAE/C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEvD,+CAA+C;AAC/C,iBAAiB;AACjB,+CAA+C;AAE/C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAS1C,+CAA+C;AAC/C,aAAa;AACb,+CAA+C;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,+CAA+C;AAC/C,iDAAiD;AACjD,+CAA+C;AAE/C,OAAO,EACL,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC"}
|
package/package.json
CHANGED
package/src/adk.ts
CHANGED
|
File without changes
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Callback — Deferred call_agent execution with triggers.
|
|
3
|
+
*
|
|
4
|
+
* An agent_callback is a call_agent command with an optional trigger.
|
|
5
|
+
* When the trigger fires (e.g., user submits a form), template references
|
|
6
|
+
* like {{trigger.variable_name}} are resolved with the trigger's values
|
|
7
|
+
* and the call_agent command is executed.
|
|
8
|
+
*
|
|
9
|
+
* This module provides the unopinionated contract:
|
|
10
|
+
* - Trigger schema (extensible discriminated union)
|
|
11
|
+
* - Template resolution
|
|
12
|
+
* - Store interface
|
|
13
|
+
* - Validation utilities
|
|
14
|
+
*
|
|
15
|
+
* No platform-specific code (no Slack, no CockroachDB, no Atlas).
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// Trigger Schema
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Base trigger type. Implementations extend this with specific trigger sources
|
|
24
|
+
* (e.g., slack_block_kit, webhook, timer).
|
|
25
|
+
*
|
|
26
|
+
* The `type` field discriminates between trigger sources.
|
|
27
|
+
* Additional fields are trigger-specific.
|
|
28
|
+
*/
|
|
29
|
+
export interface AgentCallbackTrigger {
|
|
30
|
+
type: string;
|
|
31
|
+
[key: string]: unknown;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
// Callback Status
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
|
|
38
|
+
export type AgentCallbackStatus =
|
|
39
|
+
| 'pending'
|
|
40
|
+
| 'completed'
|
|
41
|
+
| 'expired'
|
|
42
|
+
| 'cancelled';
|
|
43
|
+
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
// Callback Entry
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* A stored agent_callback — a call_agent command waiting for its trigger to fire.
|
|
50
|
+
*/
|
|
51
|
+
export interface AgentCallbackEntry<TMetadata = Record<string, unknown>> {
|
|
52
|
+
id: string;
|
|
53
|
+
status: AgentCallbackStatus;
|
|
54
|
+
/** The call_agent command. Params may contain {{trigger.x}} templates. */
|
|
55
|
+
callback: Record<string, unknown>;
|
|
56
|
+
/** Trigger definition — how values are collected. */
|
|
57
|
+
trigger?: AgentCallbackTrigger;
|
|
58
|
+
/** Implementation-specific context (e.g., creator branch, user ID). */
|
|
59
|
+
metadata?: TMetadata;
|
|
60
|
+
/** Resolved values from the trigger, keyed by variable name. */
|
|
61
|
+
resolvedValues?: Record<string, string>;
|
|
62
|
+
/** Callback expires after this time. */
|
|
63
|
+
expiresAt?: Date;
|
|
64
|
+
createdAt: Date;
|
|
65
|
+
completedAt?: Date;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
// Create Options
|
|
70
|
+
// ---------------------------------------------------------------------------
|
|
71
|
+
|
|
72
|
+
export interface CreateAgentCallbackOptions<TMetadata = Record<string, unknown>> {
|
|
73
|
+
/** The call_agent command. May contain {{trigger.x}} template references in params. */
|
|
74
|
+
callback: Record<string, unknown>;
|
|
75
|
+
/** Trigger definition. */
|
|
76
|
+
trigger?: AgentCallbackTrigger;
|
|
77
|
+
/** Implementation-specific context. */
|
|
78
|
+
metadata?: TMetadata;
|
|
79
|
+
/** TTL in milliseconds (default: implementation-defined). */
|
|
80
|
+
ttlMs?: number;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// ---------------------------------------------------------------------------
|
|
84
|
+
// Resolve Options
|
|
85
|
+
// ---------------------------------------------------------------------------
|
|
86
|
+
|
|
87
|
+
export interface ResolveAgentCallbackOptions {
|
|
88
|
+
/** The callback ID to resolve. */
|
|
89
|
+
id: string;
|
|
90
|
+
/** Values from the trigger source, keyed by variable name. */
|
|
91
|
+
values: Record<string, string>;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// ---------------------------------------------------------------------------
|
|
95
|
+
// Store Interface
|
|
96
|
+
// ---------------------------------------------------------------------------
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Agent Callback Store — persistence layer for deferred call_agent commands.
|
|
100
|
+
* Implementations can use any backing store (CockroachDB, SQLite, in-memory, etc.).
|
|
101
|
+
*/
|
|
102
|
+
export interface AgentCallbackStore<TMetadata = Record<string, unknown>> {
|
|
103
|
+
create(options: CreateAgentCallbackOptions<TMetadata>): Promise<string>;
|
|
104
|
+
get(id: string): Promise<AgentCallbackEntry<TMetadata> | null>;
|
|
105
|
+
resolve(options: ResolveAgentCallbackOptions): Promise<AgentCallbackEntry<TMetadata>>;
|
|
106
|
+
cancel(id: string): Promise<boolean>;
|
|
107
|
+
listPending(limit?: number): Promise<AgentCallbackEntry<TMetadata>[]>;
|
|
108
|
+
expireStale(): Promise<number>;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// ---------------------------------------------------------------------------
|
|
112
|
+
// Template Resolution
|
|
113
|
+
// ---------------------------------------------------------------------------
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Resolve {{trigger.variable}} references in an object tree.
|
|
117
|
+
* Scans all string values and replaces {{trigger.x}} with the
|
|
118
|
+
* corresponding value from triggerValues.
|
|
119
|
+
*
|
|
120
|
+
* Unresolved references are left as-is.
|
|
121
|
+
*/
|
|
122
|
+
export function resolveCallbackTemplates<T>(
|
|
123
|
+
obj: T,
|
|
124
|
+
triggerValues: Record<string, string>,
|
|
125
|
+
): T {
|
|
126
|
+
if (typeof obj === 'string') {
|
|
127
|
+
return obj.replace(/\{\{trigger\.(\w+)\}\}/g, (_match, varName: string) => {
|
|
128
|
+
return triggerValues[varName] ?? `{{trigger.${varName}}}`;
|
|
129
|
+
}) as T;
|
|
130
|
+
}
|
|
131
|
+
if (Array.isArray(obj)) {
|
|
132
|
+
return obj.map((item) => resolveCallbackTemplates(item, triggerValues)) as T;
|
|
133
|
+
}
|
|
134
|
+
if (obj !== null && typeof obj === 'object') {
|
|
135
|
+
const result: Record<string, unknown> = {};
|
|
136
|
+
for (const [key, val] of Object.entries(obj as Record<string, unknown>)) {
|
|
137
|
+
result[key] = resolveCallbackTemplates(val, triggerValues);
|
|
138
|
+
}
|
|
139
|
+
return result as T;
|
|
140
|
+
}
|
|
141
|
+
return obj;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Validate that all {{trigger.x}} references in a callback have
|
|
146
|
+
* corresponding variables in the provided set.
|
|
147
|
+
* Returns array of unresolved variable names, or empty if valid.
|
|
148
|
+
*/
|
|
149
|
+
export function validateCallbackTemplates(
|
|
150
|
+
callback: Record<string, unknown>,
|
|
151
|
+
knownVariables: string[],
|
|
152
|
+
): string[] {
|
|
153
|
+
const definedVars = new Set(knownVariables);
|
|
154
|
+
const referencedVars: string[] = [];
|
|
155
|
+
|
|
156
|
+
const scanForRefs = (obj: unknown): void => {
|
|
157
|
+
if (typeof obj === 'string') {
|
|
158
|
+
const matches = obj.matchAll(/\{\{trigger\.(\w+)\}\}/g);
|
|
159
|
+
for (const match of matches) {
|
|
160
|
+
referencedVars.push(match[1]);
|
|
161
|
+
}
|
|
162
|
+
} else if (Array.isArray(obj)) {
|
|
163
|
+
obj.forEach(scanForRefs);
|
|
164
|
+
} else if (obj !== null && typeof obj === 'object') {
|
|
165
|
+
Object.values(obj as Record<string, unknown>).forEach(scanForRefs);
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
scanForRefs(callback);
|
|
170
|
+
|
|
171
|
+
return referencedVars.filter((v) => !definedVars.has(v));
|
|
172
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -340,3 +340,20 @@ export type {
|
|
|
340
340
|
|
|
341
341
|
export { introspectMcp } from "./introspect.js";
|
|
342
342
|
export type { IntrospectOptions } from "./introspect.js";
|
|
343
|
+
|
|
344
|
+
// ============================================
|
|
345
|
+
// Agent Callbacks (deferred call_agent commands)
|
|
346
|
+
// ============================================
|
|
347
|
+
|
|
348
|
+
export {
|
|
349
|
+
resolveCallbackTemplates,
|
|
350
|
+
validateCallbackTemplates,
|
|
351
|
+
} from "./callback/index.js";
|
|
352
|
+
export type {
|
|
353
|
+
AgentCallbackTrigger,
|
|
354
|
+
AgentCallbackStatus,
|
|
355
|
+
AgentCallbackEntry,
|
|
356
|
+
AgentCallbackStore,
|
|
357
|
+
CreateAgentCallbackOptions,
|
|
358
|
+
ResolveAgentCallbackOptions,
|
|
359
|
+
} from "./callback/index.js";
|