@slopus/happy-agent-base 0.0.5 → 0.0.6
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 +16 -1
- package/dist/Agent.d.ts +3 -0
- package/dist/Agent.d.ts.map +1 -1
- package/dist/Agent.js +10 -2
- package/dist/Agent.js.map +1 -1
- package/dist/AgentBase.d.ts +10 -0
- package/dist/AgentBase.d.ts.map +1 -1
- package/dist/AgentBase.js +186 -34
- package/dist/AgentBase.js.map +1 -1
- package/dist/AgentBaseHooks.d.ts +18 -5
- package/dist/AgentBaseHooks.d.ts.map +1 -1
- package/dist/AgentConfig.d.ts +12 -5
- package/dist/AgentConfig.d.ts.map +1 -1
- package/dist/AgentConfig.js +25 -5
- package/dist/AgentConfig.js.map +1 -1
- package/dist/AgentFeature.d.ts +12 -5
- package/dist/AgentFeature.d.ts.map +1 -1
- package/dist/AgentFeatureAction.d.ts +5 -0
- package/dist/AgentFeatureAction.d.ts.map +1 -1
- package/dist/AgentMetadata.d.ts +37 -0
- package/dist/AgentMetadata.d.ts.map +1 -0
- package/dist/AgentMetadata.js +74 -0
- package/dist/AgentMetadata.js.map +1 -0
- package/dist/AgentPersistence.d.ts +14 -4
- package/dist/AgentPersistence.d.ts.map +1 -1
- package/dist/AgentRef.d.ts +6 -1
- package/dist/AgentRef.d.ts.map +1 -1
- package/dist/AgentRef.js +8 -1
- package/dist/AgentRef.js.map +1 -1
- package/dist/AgentSystem.d.ts +26 -7
- package/dist/AgentSystem.d.ts.map +1 -1
- package/dist/AgentSystemLocal.d.ts +14 -8
- package/dist/AgentSystemLocal.d.ts.map +1 -1
- package/dist/AgentSystemLocal.js +108 -32
- package/dist/AgentSystemLocal.js.map +1 -1
- package/dist/AgentSystemRef.d.ts +14 -5
- package/dist/AgentSystemRef.d.ts.map +1 -1
- package/dist/AgentSystemRef.js +25 -6
- package/dist/AgentSystemRef.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentFeature.d.ts","sourceRoot":"","sources":["../sources/AgentFeature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,8BAA8B,EAC9B,YAAY,EACZ,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EACR,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,6BAA6B,EAC7B,uBAAuB,EACvB,iBAAiB,EACjB,yBAAyB,EACzB,oBAAoB,EACpB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAC9B,
|
|
1
|
+
{"version":3,"file":"AgentFeature.d.ts","sourceRoot":"","sources":["../sources/AgentFeature.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { SessionUserMessage } from "@slopus/happy-providers";
|
|
2
|
+
import type { AgentMessageMetadata } from "./AgentMetadata.js";
|
|
2
3
|
/**
|
|
3
4
|
* What a lifecycle hook can ask the agent to do next: queue a steering or sent message through
|
|
4
5
|
* the ordinary durable queues, or trigger a compaction. An action drives the loop exactly like
|
|
@@ -6,10 +7,14 @@ import type { SessionUserMessage } from "@slopus/happy-providers";
|
|
|
6
7
|
*/
|
|
7
8
|
export type AgentFeatureAction = {
|
|
8
9
|
readonly type: "steer";
|
|
10
|
+
readonly id?: string;
|
|
9
11
|
readonly message: SessionUserMessage;
|
|
12
|
+
readonly metadata?: AgentMessageMetadata;
|
|
10
13
|
} | {
|
|
11
14
|
readonly type: "send";
|
|
15
|
+
readonly id?: string;
|
|
12
16
|
readonly message: SessionUserMessage;
|
|
17
|
+
readonly metadata?: AgentMessageMetadata;
|
|
13
18
|
} | {
|
|
14
19
|
readonly type: "compact";
|
|
15
20
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentFeatureAction.d.ts","sourceRoot":"","sources":["../sources/AgentFeatureAction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GACxB;
|
|
1
|
+
{"version":3,"file":"AgentFeatureAction.d.ts","sourceRoot":"","sources":["../sources/AgentFeatureAction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GACxB;IACI,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CAC5C,GACD;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CAC5C,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type Static } from "@sinclair/typebox";
|
|
2
|
+
/** A cuid2 identity: two to thirty-two lowercase alphanumeric characters, opening with a letter. */
|
|
3
|
+
export declare const cuid2Schema: import("@sinclair/typebox").TString;
|
|
4
|
+
/** JSON values metadata may contain, so every metadata object is safe to persist and clone. */
|
|
5
|
+
export declare const agentMetadataValueSchema: import("@sinclair/typebox").TRecursive<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TThis>, import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TThis>]>>;
|
|
6
|
+
/** The TypeScript type inferred from {@link agentMetadataValueSchema}. */
|
|
7
|
+
export type AgentMetadataValue = Static<typeof agentMetadataValueSchema>;
|
|
8
|
+
/**
|
|
9
|
+
* Metadata attached to one queued message. Features own additional fields; `hideFromUser` is the
|
|
10
|
+
* common hint that a presentation feature should keep this message out of the user-visible view.
|
|
11
|
+
*/
|
|
12
|
+
export declare const agentMessageMetadataSchema: import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TObject<{
|
|
13
|
+
hideFromUser: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
14
|
+
}>, import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TRecursive<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TThis>, import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TThis>]>>>]>;
|
|
15
|
+
/** The TypeScript type inferred from {@link agentMessageMetadataSchema}. */
|
|
16
|
+
export type AgentMessageMetadata = Static<typeof agentMessageMetadataSchema>;
|
|
17
|
+
/**
|
|
18
|
+
* Mutable-by-replacement metadata describing one agent. Features own additional fields; `title`
|
|
19
|
+
* is the common human-readable label.
|
|
20
|
+
*/
|
|
21
|
+
export declare const agentMetadataSchema: import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TObject<{
|
|
22
|
+
title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
23
|
+
}>, import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TRecursive<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TThis>, import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TThis>]>>>]>;
|
|
24
|
+
/** The TypeScript type inferred from {@link agentMetadataSchema}. */
|
|
25
|
+
export type AgentMetadata = Static<typeof agentMetadataSchema>;
|
|
26
|
+
/** What metadata-change hooks see after an update has been merged with the previous object. */
|
|
27
|
+
export interface AgentMetadataChange {
|
|
28
|
+
/** The agent whose metadata changed. */
|
|
29
|
+
readonly agentId: string;
|
|
30
|
+
/** The complete immutable metadata before the update. */
|
|
31
|
+
readonly previousMetadata: AgentMetadata;
|
|
32
|
+
/** The immutable fields supplied by this update. */
|
|
33
|
+
readonly update: AgentMetadata;
|
|
34
|
+
/** The complete immutable result after the shallow merge. */
|
|
35
|
+
readonly metadata: AgentMetadata;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=AgentMetadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentMetadata.d.ts","sourceRoot":"","sources":["../sources/AgentMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGtD,oGAAoG;AACpG,eAAO,MAAM,WAAW,qCAItB,CAAC;AAEH,+FAA+F;AAC/F,eAAO,MAAM,wBAAwB,qZASpC,CAAC;AAEF,0EAA0E;AAC1E,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAEzE;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;meAKrC,CAAC;AAEH,4EAA4E;AAC5E,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE7E;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;meAK9B,CAAC;AAEH,qEAAqE;AACrE,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAE/D,+FAA+F;AAC/F,MAAM,WAAW,mBAAmB;IAChC,wCAAwC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC;IACzC,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;CACpC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Type } from "@sinclair/typebox";
|
|
2
|
+
import { Value } from "@sinclair/typebox/value";
|
|
3
|
+
/** A cuid2 identity: two to thirty-two lowercase alphanumeric characters, opening with a letter. */
|
|
4
|
+
export const cuid2Schema = Type.String({
|
|
5
|
+
minLength: 2,
|
|
6
|
+
maxLength: 32,
|
|
7
|
+
pattern: "^[a-z][a-z0-9]*$",
|
|
8
|
+
});
|
|
9
|
+
/** JSON values metadata may contain, so every metadata object is safe to persist and clone. */
|
|
10
|
+
export const agentMetadataValueSchema = Type.Recursive((value) => Type.Union([
|
|
11
|
+
Type.String(),
|
|
12
|
+
Type.Number(),
|
|
13
|
+
Type.Boolean(),
|
|
14
|
+
Type.Null(),
|
|
15
|
+
Type.Array(value),
|
|
16
|
+
Type.Record(Type.String(), value),
|
|
17
|
+
]));
|
|
18
|
+
/**
|
|
19
|
+
* Metadata attached to one queued message. Features own additional fields; `hideFromUser` is the
|
|
20
|
+
* common hint that a presentation feature should keep this message out of the user-visible view.
|
|
21
|
+
*/
|
|
22
|
+
export const agentMessageMetadataSchema = Type.Intersect([
|
|
23
|
+
Type.Object({
|
|
24
|
+
hideFromUser: Type.Optional(Type.Boolean()),
|
|
25
|
+
}),
|
|
26
|
+
Type.Record(Type.String(), agentMetadataValueSchema),
|
|
27
|
+
]);
|
|
28
|
+
/**
|
|
29
|
+
* Mutable-by-replacement metadata describing one agent. Features own additional fields; `title`
|
|
30
|
+
* is the common human-readable label.
|
|
31
|
+
*/
|
|
32
|
+
export const agentMetadataSchema = Type.Intersect([
|
|
33
|
+
Type.Object({
|
|
34
|
+
title: Type.Optional(Type.String()),
|
|
35
|
+
}),
|
|
36
|
+
Type.Record(Type.String(), agentMetadataValueSchema),
|
|
37
|
+
]);
|
|
38
|
+
/** @internal Validate, clone, and deeply freeze message metadata at its ownership boundary. */
|
|
39
|
+
export function ownAgentMessageMetadata(metadata) {
|
|
40
|
+
if (metadata === undefined)
|
|
41
|
+
return undefined;
|
|
42
|
+
if (!Value.Check(agentMessageMetadataSchema, metadata)) {
|
|
43
|
+
throw new Error("The message metadata is not valid.");
|
|
44
|
+
}
|
|
45
|
+
return immutableClone(metadata);
|
|
46
|
+
}
|
|
47
|
+
/** @internal Validate, clone, and deeply freeze agent metadata at its ownership boundary. */
|
|
48
|
+
export function ownAgentMetadata(metadata) {
|
|
49
|
+
if (metadata === undefined)
|
|
50
|
+
return undefined;
|
|
51
|
+
if (!Value.Check(agentMetadataSchema, metadata)) {
|
|
52
|
+
throw new Error("The agent metadata is not valid.");
|
|
53
|
+
}
|
|
54
|
+
return immutableClone(metadata);
|
|
55
|
+
}
|
|
56
|
+
/** Clone one persisted value and freeze every object reachable through ordinary properties. */
|
|
57
|
+
function immutableClone(value) {
|
|
58
|
+
return deepFreeze(structuredClone(value), new WeakSet());
|
|
59
|
+
}
|
|
60
|
+
function deepFreeze(value, seen) {
|
|
61
|
+
if (value === null || typeof value !== "object")
|
|
62
|
+
return value;
|
|
63
|
+
if (seen.has(value))
|
|
64
|
+
return value;
|
|
65
|
+
seen.add(value);
|
|
66
|
+
for (const key of Reflect.ownKeys(value)) {
|
|
67
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
68
|
+
if (descriptor !== undefined && "value" in descriptor) {
|
|
69
|
+
deepFreeze(descriptor.value, seen);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return Object.freeze(value);
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=AgentMetadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentMetadata.js","sourceRoot":"","sources":["../sources/AgentMetadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { SessionAssistantBlock, SessionMessage, SessionSystemMessage, SessionToolResultMessage, SessionUserMessage } from "@slopus/happy-providers";
|
|
2
2
|
import type { Context } from "@steve.kite/stdlib";
|
|
3
|
+
import type { AgentMessageMetadata } from "./AgentMetadata.js";
|
|
3
4
|
/**
|
|
4
5
|
* One record of the main context store. Only content that is part of the model context lives
|
|
5
6
|
* here: user messages enter when a turn consumes them, assistant output is appended one finished
|
|
@@ -11,7 +12,9 @@ import type { Context } from "@steve.kite/stdlib";
|
|
|
11
12
|
*/
|
|
12
13
|
export type AgentRecord = {
|
|
13
14
|
readonly type: "user";
|
|
15
|
+
readonly id: string;
|
|
14
16
|
readonly message: SessionUserMessage;
|
|
17
|
+
readonly metadata?: AgentMessageMetadata;
|
|
15
18
|
} | {
|
|
16
19
|
readonly type: "block";
|
|
17
20
|
readonly block: SessionAssistantBlock;
|
|
@@ -29,10 +32,12 @@ export type AgentRecord = {
|
|
|
29
32
|
* Storage for one agent: an append-only main context store plus a sorted key-value store held
|
|
30
33
|
* alongside it. A sent message is first written under a `pending.` key ordered by append time;
|
|
31
34
|
* it reaches the main store only when a turn consumes it into the context, and its pending key
|
|
32
|
-
* is deleted at that moment.
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
35
|
+
* is deleted at that moment. A `message.` uniqueness key makes retrying a cuid2 message ID an
|
|
36
|
+
* ignored database conflict; history replacement removes keys for the records it deletes.
|
|
37
|
+
* Exactly one owner connects to a store, and the agent serializes its own record and bookkeeping
|
|
38
|
+
* writes through one lock, so history order always matches storage order. Key-value operations —
|
|
39
|
+
* a feature's or a tool's — run as they come, so each one has to be atomic on its own, but no
|
|
40
|
+
* implementation ever has to defend against a second owner.
|
|
36
41
|
*/
|
|
37
42
|
export interface AgentPersistence {
|
|
38
43
|
/**
|
|
@@ -59,6 +64,11 @@ export interface AgentPersistence {
|
|
|
59
64
|
}[]>;
|
|
60
65
|
/** Store the value under `key`, replacing whatever was there before. */
|
|
61
66
|
writeValue(ctx: Context, key: string, value: unknown): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Store the value only when `key` is absent. Returns false for the database uniqueness
|
|
69
|
+
* conflict without changing the existing value.
|
|
70
|
+
*/
|
|
71
|
+
writeValueIfAbsent(ctx: Context, key: string, value: unknown): Promise<boolean>;
|
|
62
72
|
/** Remove the entry stored under `key`, if any. */
|
|
63
73
|
deleteValue(ctx: Context, key: string): Promise<void>;
|
|
64
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentPersistence.d.ts","sourceRoot":"","sources":["../sources/AgentPersistence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACpB,wBAAwB,EACxB,kBAAkB,EACrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GACjB;
|
|
1
|
+
{"version":3,"file":"AgentPersistence.d.ts","sourceRoot":"","sources":["../sources/AgentPersistence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACpB,wBAAwB,EACxB,kBAAkB,EACrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GACjB;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CAC5C,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAA;CAAE,GACjE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAA;CAAE,GACrE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAA;CAAE,GACnE;IACI,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CAChD,CAAC;AAER;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5F,+DAA+D;IAC/D,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IACpD,gEAAgE;IAChE,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD;;;;OAIG;IACH,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,0EAA0E;IAC1E,UAAU,CACN,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,SAAS;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC,CAAC;IACzE,wEAAwE;IACxE,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE;;;OAGG;IACH,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChF,mDAAmD;IACnD,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD"}
|
package/dist/AgentRef.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { SessionUserMessage } from "@slopus/happy-providers";
|
|
|
2
2
|
import type { Context } from "@steve.kite/stdlib";
|
|
3
3
|
import type { Agent } from "./Agent.js";
|
|
4
4
|
import type { AgentBaseMessageOptions } from "./AgentBase.js";
|
|
5
|
+
import type { AgentMetadata } from "./AgentMetadata.js";
|
|
5
6
|
/**
|
|
6
7
|
* Whether this caller may be told that `agentId` durably accepted a message. Acceptance is a
|
|
7
8
|
* queue write under that agent's own persistence lock, so waiting for it is safe from anywhere
|
|
@@ -26,13 +27,17 @@ export declare function acceptanceIsWaitable(ctx: Context, target: string): bool
|
|
|
26
27
|
*/
|
|
27
28
|
export declare class AgentRef {
|
|
28
29
|
#private;
|
|
29
|
-
|
|
30
|
+
/** The durable parent captured when this reference was resolved, or `null` for a root. */
|
|
31
|
+
readonly parent: string | null;
|
|
32
|
+
constructor(agent: Agent, parent?: string | null);
|
|
30
33
|
/** The wrapped agent's ID. */
|
|
31
34
|
get id(): string;
|
|
32
35
|
/** Queue a message that injects as soon as the current response and its tool batch finish. */
|
|
33
36
|
steer(ctx: Context, message: SessionUserMessage, options?: AgentBaseMessageOptions): Promise<void>;
|
|
34
37
|
/** Queue a message that injects when the agent would otherwise stop. */
|
|
35
38
|
send(ctx: Context, message: SessionUserMessage, options?: AgentBaseMessageOptions): Promise<void>;
|
|
39
|
+
/** Shallow-merge fields into this agent's immutable metadata. */
|
|
40
|
+
updateMetadata(ctx: Context, update: AgentMetadata): Promise<void>;
|
|
36
41
|
/** Ask the agent to compact, which it does between turns. */
|
|
37
42
|
compact(ctx: Context): Promise<void>;
|
|
38
43
|
/** Cancel the agent's active turn. */
|
package/dist/AgentRef.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentRef.d.ts","sourceRoot":"","sources":["../sources/AgentRef.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentRef.d.ts","sourceRoot":"","sources":["../sources/AgentRef.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAE9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAG1E;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,QAAQ;;IAGjB,0FAA0F;IAC1F,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/B,YAAY,KAAK,EAAE,KAAK,EAAE,MAAM,GAAE,MAAM,GAAG,IAAW,EAGrD;IAED,8BAA8B;IAC9B,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,8FAA8F;IACxF,KAAK,CACP,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,kBAAkB,EAC3B,OAAO,CAAC,EAAE,uBAAuB,GAClC,OAAO,CAAC,IAAI,CAAC,CAKf;IAED,wEAAwE;IAClE,IAAI,CACN,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,kBAAkB,EAC3B,OAAO,CAAC,EAAE,uBAAuB,GAClC,OAAO,CAAC,IAAI,CAAC,CAKf;IAED,iEAAiE;IAC3D,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvE;IAED,6DAA6D;IACvD,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzC;IAED,sCAAsC;IAChC,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvC;CACJ"}
|
package/dist/AgentRef.js
CHANGED
|
@@ -27,8 +27,11 @@ export function acceptanceIsWaitable(ctx, target) {
|
|
|
27
27
|
export class AgentRef {
|
|
28
28
|
/** The agent this reference wraps. */
|
|
29
29
|
#agent;
|
|
30
|
-
|
|
30
|
+
/** The durable parent captured when this reference was resolved, or `null` for a root. */
|
|
31
|
+
parent;
|
|
32
|
+
constructor(agent, parent = null) {
|
|
31
33
|
this.#agent = agent;
|
|
34
|
+
this.parent = parent;
|
|
32
35
|
}
|
|
33
36
|
/** The wrapped agent's ID. */
|
|
34
37
|
get id() {
|
|
@@ -48,6 +51,10 @@ export class AgentRef {
|
|
|
48
51
|
await: acceptanceIsWaitable(ctx, this.#agent.id),
|
|
49
52
|
});
|
|
50
53
|
}
|
|
54
|
+
/** Shallow-merge fields into this agent's immutable metadata. */
|
|
55
|
+
async updateMetadata(ctx, update) {
|
|
56
|
+
await this.#agent.updateMetadata(ctx, update);
|
|
57
|
+
}
|
|
51
58
|
/** Ask the agent to compact, which it does between turns. */
|
|
52
59
|
async compact(ctx) {
|
|
53
60
|
await this.#agent.compact(ctx, { await: false });
|
package/dist/AgentRef.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentRef.js","sourceRoot":"","sources":["../sources/AgentRef.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentRef.js","sourceRoot":"","sources":["../sources/AgentRef.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAY,EAAE,MAAc;IAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,CAAC;AACrD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,QAAQ;IACjB,sCAAsC;IAC7B,MAAM,CAAQ;IACvB,0FAA0F;IACjF,MAAM,CAAgB;IAE/B,YAAY,KAAY,EAAE,MAAM,GAAkB,IAAI;QAClD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,8BAA8B;IAC9B,IAAI,EAAE;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1B,CAAC;IAED,8FAA8F;IAC9F,KAAK,CAAC,KAAK,CACP,GAAY,EACZ,OAA2B,EAC3B,OAAiC;QAEjC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE;YAClC,GAAG,OAAO;YACV,KAAK,EAAE,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;SACnD,CAAC,CAAC;IACP,CAAC;IAED,wEAAwE;IACxE,KAAK,CAAC,IAAI,CACN,GAAY,EACZ,OAA2B,EAC3B,OAAiC;QAEjC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;YACjC,GAAG,OAAO;YACV,KAAK,EAAE,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;SACnD,CAAC,CAAC;IACP,CAAC;IAED,iEAAiE;IACjE,KAAK,CAAC,cAAc,CAAC,GAAY,EAAE,MAAqB;QACpD,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,OAAO,CAAC,GAAY;QACtB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,KAAK,CAAC,GAAY;QACpB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;CACJ"}
|
package/dist/AgentSystem.d.ts
CHANGED
|
@@ -3,16 +3,30 @@ import type { Context } from "@steve.kite/stdlib";
|
|
|
3
3
|
import type { Agent } from "./Agent.js";
|
|
4
4
|
import type { AgentBaseAwaitOptions, AgentBaseMessageOptions } from "./AgentBase.js";
|
|
5
5
|
import type { AgentConfig } from "./AgentConfig.js";
|
|
6
|
+
import type { AgentMetadata } from "./AgentMetadata.js";
|
|
6
7
|
import type { AgentModel } from "./AgentModel.js";
|
|
7
8
|
/** Conversation state installed atomically before a newly created agent starts. */
|
|
8
9
|
export interface AgentInitialContext {
|
|
9
10
|
/** The conversation installed as the agent's history before its first turn runs. */
|
|
10
11
|
readonly messages: readonly SessionMessage[];
|
|
11
12
|
}
|
|
13
|
+
/** Optional identity, ancestry, and conversation supplied while creating one agent. */
|
|
14
|
+
export interface AgentCreateOptions {
|
|
15
|
+
/** Client-chosen cuid2 identity; generated when omitted. */
|
|
16
|
+
readonly id?: string;
|
|
17
|
+
/** The conversation installed before the agent's first turn. */
|
|
18
|
+
readonly initialContext?: AgentInitialContext;
|
|
19
|
+
/**
|
|
20
|
+
* The parent agent. Omission inherits the creating reference or calling agent, `null` creates
|
|
21
|
+
* a root, and an explicit ID must already exist.
|
|
22
|
+
*/
|
|
23
|
+
readonly parent?: string | null;
|
|
24
|
+
}
|
|
12
25
|
/**
|
|
13
26
|
* A collection of agents addressed by ID: what an owner can ask of the agents it runs. An agent
|
|
14
|
-
* exists only once it has been created with its configuration
|
|
15
|
-
*
|
|
27
|
+
* exists only once it has been created with its persisted configuration; resolving one that was
|
|
28
|
+
* never created is an error. Environment and feature settings stay fixed, while metadata changes
|
|
29
|
+
* through a transactional shallow merge.
|
|
16
30
|
*
|
|
17
31
|
* This is the full surface, including the operations that wait for an agent's run loop to reach a
|
|
18
32
|
* particular point — `delete`, and anything reached through the returned `Agent`. Those are for
|
|
@@ -26,15 +40,20 @@ export interface AgentSystem {
|
|
|
26
40
|
/** Stop every agent and release this system's exclusive ownership of its durable store. */
|
|
27
41
|
close(ctx: Context): Promise<void>;
|
|
28
42
|
/**
|
|
29
|
-
* Create an agent with a
|
|
30
|
-
*
|
|
31
|
-
* the agent runs; a creation that fails to produce an agent leaves no identity behind.
|
|
43
|
+
* Create an agent with a generated or caller-supplied cuid2 identity. Configuration,
|
|
44
|
+
* parentage, and optional initial context are persisted before it runs.
|
|
32
45
|
*/
|
|
33
|
-
create(ctx: Context, config: AgentConfig,
|
|
46
|
+
create(ctx: Context, config: AgentConfig, options?: AgentCreateOptions): Promise<Agent>;
|
|
34
47
|
/** Close an agent and release its identity, so the same ID can be created again. */
|
|
35
48
|
delete(ctx: Context, agentId: string): Promise<void>;
|
|
36
|
-
/** The configuration an agent
|
|
49
|
+
/** The current configuration of an agent, or undefined when there is no such agent. */
|
|
37
50
|
config(ctx: Context, agentId: string): Promise<AgentConfig | undefined>;
|
|
51
|
+
/** Shallow-merge fields into an agent's immutable metadata. */
|
|
52
|
+
updateMetadata(ctx: Context, agentId: string, update: AgentMetadata): Promise<void>;
|
|
53
|
+
/** The direct children of an agent, in durable key order. */
|
|
54
|
+
childOf(ctx: Context, agentId: string): Promise<readonly string[]>;
|
|
55
|
+
/** The parent of an agent, or `null` when it is a root. */
|
|
56
|
+
parentOf(ctx: Context, agentId: string): Promise<string | null>;
|
|
38
57
|
/** The live agent for an ID, loading it if this process has not seen it yet. */
|
|
39
58
|
resolve(ctx: Context, agentId: string): Promise<Agent>;
|
|
40
59
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentSystem.d.ts","sourceRoot":"","sources":["../sources/AgentSystem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,mFAAmF;AACnF,MAAM,WAAW,mBAAmB;IAChC,oFAAoF;IACpF,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CAChD;AAED
|
|
1
|
+
{"version":3,"file":"AgentSystem.d.ts","sourceRoot":"","sources":["../sources/AgentSystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,11 @@ import { Agent } from "./Agent.js";
|
|
|
4
4
|
import { type AgentBaseAwaitOptions, type AgentBaseMessageOptions } from "./AgentBase.js";
|
|
5
5
|
import { type AgentConfig } from "./AgentConfig.js";
|
|
6
6
|
import type { AgentFeature } from "./AgentFeature.js";
|
|
7
|
+
import { type AgentMetadata } from "./AgentMetadata.js";
|
|
7
8
|
import type { AgentModel } from "./AgentModel.js";
|
|
8
9
|
import type { AgentProviders } from "./AgentProviders.js";
|
|
9
10
|
import type { AgentStorage } from "./AgentStorage.js";
|
|
10
|
-
import type {
|
|
11
|
+
import type { AgentCreateOptions, AgentSystem } from "./AgentSystem.js";
|
|
11
12
|
/** Everything `AgentSystemLocal` needs to build and run the agents in its collection. */
|
|
12
13
|
export interface AgentSystemLocalOptions {
|
|
13
14
|
/**
|
|
@@ -62,18 +63,17 @@ export declare class AgentSystemLocal implements AgentSystem {
|
|
|
62
63
|
*/
|
|
63
64
|
close(ctx: Context): Promise<void>;
|
|
64
65
|
/**
|
|
65
|
-
* Create an agent
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
* agent exactly as it was created.
|
|
66
|
+
* Create and resolve an agent. Its identity is either a validated caller-supplied cuid2 or
|
|
67
|
+
* allocated here, and the transaction refuses an existing identity rather than overwriting
|
|
68
|
+
* it. Configuration and parentage are persisted before the agent runs, so every later process
|
|
69
|
+
* resolves the same agent; only its metadata may subsequently change.
|
|
70
70
|
*
|
|
71
71
|
* Nothing here is undone: an agent whose features refuse to load leaves an identity that
|
|
72
72
|
* exists, is resolvable, and will be built the next time something wants it. Taking a
|
|
73
73
|
* provisional identity back after a failed build would add a compensation that can itself
|
|
74
74
|
* fail.
|
|
75
75
|
*/
|
|
76
|
-
create(ctx: Context, config: AgentConfig,
|
|
76
|
+
create(ctx: Context, config: AgentConfig, options?: AgentCreateOptions): Promise<Agent>;
|
|
77
77
|
/**
|
|
78
78
|
* Close an agent and release its identity, so the same ID can be created again. Used to undo
|
|
79
79
|
* a creation whose follow-up work failed; an ID that was never created is left alone.
|
|
@@ -85,8 +85,14 @@ export declare class AgentSystemLocal implements AgentSystem {
|
|
|
85
85
|
* what clears it.
|
|
86
86
|
*/
|
|
87
87
|
delete(ctx: Context, agentId: string): Promise<void>;
|
|
88
|
-
/** The configuration an agent
|
|
88
|
+
/** The current configuration of an agent, or undefined when there is no such agent. */
|
|
89
89
|
config(ctx: Context, agentId: string): Promise<AgentConfig | undefined>;
|
|
90
|
+
/** Shallow-merge fields into one agent's immutable metadata. */
|
|
91
|
+
updateMetadata(ctx: Context, agentId: string, update: AgentMetadata): Promise<void>;
|
|
92
|
+
/** The direct children of an existing agent, in durable key order. */
|
|
93
|
+
childOf(ctx: Context, agentId: string): Promise<readonly string[]>;
|
|
94
|
+
/** The parent of an existing agent, or `null` when it is a root. */
|
|
95
|
+
parentOf(ctx: Context, agentId: string): Promise<string | null>;
|
|
90
96
|
/**
|
|
91
97
|
* The live agent for an ID, loading and starting it if this process has not seen it yet.
|
|
92
98
|
* Concurrent resolutions of the same ID share one load.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentSystemLocal.d.ts","sourceRoot":"","sources":["../sources/AgentSystemLocal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentSystemLocal.d.ts","sourceRoot":"","sources":["../sources/AgentSystemLocal.ts"],"names":[],"mappings":"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"}
|