@moltzap/client 2026.729.0 → 2026.730.1
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/agent-client.d.ts +2 -0
- package/dist/agent-client.d.ts.map +1 -1
- package/dist/agent-client.js +1 -0
- package/dist/agent-client.js.map +1 -1
- package/dist/app-client.d.ts +2 -0
- package/dist/app-client.d.ts.map +1 -1
- package/dist/app-client.js +1 -0
- package/dist/app-client.js.map +1 -1
- package/dist/auth.d.ts +7 -2
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +10 -5
- package/dist/auth.js.map +1 -1
- package/dist/channel-base/format-cross-conv.d.ts +8 -3
- package/dist/channel-base/format-cross-conv.d.ts.map +1 -1
- package/dist/channel-base/format-cross-conv.js +10 -9
- package/dist/channel-base/format-cross-conv.js.map +1 -1
- package/dist/channel-base/format-group-block.d.ts +9 -2
- package/dist/channel-base/format-group-block.d.ts.map +1 -1
- package/dist/channel-base/format-group-block.js +12 -7
- package/dist/channel-base/format-group-block.js.map +1 -1
- package/dist/channel-base/index.d.ts +8 -0
- package/dist/channel-base/index.d.ts.map +1 -1
- package/dist/channel-base/index.js +8 -0
- package/dist/channel-base/index.js.map +1 -1
- package/dist/channel-base/lease-guard.d.ts +6 -3
- package/dist/channel-base/lease-guard.d.ts.map +1 -1
- package/dist/channel-base/lease-guard.js +10 -4
- package/dist/channel-base/lease-guard.js.map +1 -1
- package/dist/channel-base/lease-store.d.ts +29 -10
- package/dist/channel-base/lease-store.d.ts.map +1 -1
- package/dist/channel-base/lease-store.js +33 -13
- package/dist/channel-base/lease-store.js.map +1 -1
- package/dist/channel-base/lease.d.ts +9 -1
- package/dist/channel-base/lease.d.ts.map +1 -1
- package/dist/channel-base/lease.js +16 -4
- package/dist/channel-base/lease.js.map +1 -1
- package/dist/channel-core-enrichment.d.ts +9 -2
- package/dist/channel-core-enrichment.d.ts.map +1 -1
- package/dist/channel-core-enrichment.js +17 -5
- package/dist/channel-core-enrichment.js.map +1 -1
- package/dist/channel-core-test-support.d.ts +46 -0
- package/dist/channel-core-test-support.d.ts.map +1 -1
- package/dist/channel-core-test-support.js +67 -13
- package/dist/channel-core-test-support.js.map +1 -1
- package/dist/channel-core.d.ts +37 -19
- package/dist/channel-core.d.ts.map +1 -1
- package/dist/channel-core.js +45 -30
- package/dist/channel-core.js.map +1 -1
- package/dist/cli/adapters.d.ts +4 -1
- package/dist/cli/adapters.d.ts.map +1 -1
- package/dist/cli/adapters.js +11 -4
- package/dist/cli/adapters.js.map +1 -1
- package/dist/cli/commands/agents.js +3 -3
- package/dist/cli/commands/contacts.d.ts +3 -3
- package/dist/cli/commands/contacts.d.ts.map +1 -1
- package/dist/cli/commands/contacts.js +13 -9
- package/dist/cli/commands/contacts.js.map +1 -1
- package/dist/cli/commands/conversations.d.ts +3 -2
- package/dist/cli/commands/conversations.d.ts.map +1 -1
- package/dist/cli/commands/conversations.js +7 -6
- package/dist/cli/commands/conversations.js.map +1 -1
- package/dist/cli/commands/messages.d.ts +6 -2
- package/dist/cli/commands/messages.d.ts.map +1 -1
- package/dist/cli/commands/messages.js +8 -5
- package/dist/cli/commands/messages.js.map +1 -1
- package/dist/cli/commands/register.d.ts +1 -1
- package/dist/cli/commands/register.js +4 -4
- package/dist/cli/commands/send.d.ts +7 -6
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +7 -6
- package/dist/cli/commands/send.js.map +1 -1
- package/dist/cli/commands/start.d.ts +15 -7
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +12 -5
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/status.js +2 -2
- package/dist/cli/commands/test-transport.d.ts +9 -1
- package/dist/cli/commands/test-transport.d.ts.map +1 -1
- package/dist/cli/commands/test-transport.js +5 -1
- package/dist/cli/commands/test-transport.js.map +1 -1
- package/dist/cli/index.js +8 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts +10 -0
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +10 -0
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/socket-client.d.ts +13 -3
- package/dist/cli/socket-client.d.ts.map +1 -1
- package/dist/cli/socket-client.js +16 -5
- package/dist/cli/socket-client.js.map +1 -1
- package/dist/cli/transport.d.ts +16 -3
- package/dist/cli/transport.d.ts.map +1 -1
- package/dist/cli/transport.js +19 -6
- package/dist/cli/transport.js.map +1 -1
- package/dist/config.d.ts +9 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -3
- package/dist/config.js.map +1 -1
- package/dist/config.test-utils.d.ts +7 -2
- package/dist/config.test-utils.d.ts.map +1 -1
- package/dist/config.test-utils.js +8 -1
- package/dist/config.test-utils.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/local-daemon-rpc.d.ts +116 -93
- package/dist/local-daemon-rpc.d.ts.map +1 -1
- package/dist/local-daemon-rpc.js +128 -108
- package/dist/local-daemon-rpc.js.map +1 -1
- package/dist/local-history.d.ts +40 -20
- package/dist/local-history.d.ts.map +1 -1
- package/dist/local-history.js +45 -23
- package/dist/local-history.js.map +1 -1
- package/dist/local-paths.d.ts +17 -0
- package/dist/local-paths.d.ts.map +1 -1
- package/dist/local-paths.js +21 -4
- package/dist/local-paths.js.map +1 -1
- package/dist/local-socket-server.d.ts +13 -2
- package/dist/local-socket-server.d.ts.map +1 -1
- package/dist/local-socket-server.js +13 -2
- package/dist/local-socket-server.js.map +1 -1
- package/dist/message-rendering.d.ts +1 -0
- package/dist/message-rendering.d.ts.map +1 -1
- package/dist/message-rendering.js +1 -0
- package/dist/message-rendering.js.map +1 -1
- package/dist/notification/__tests__/subscribe-signatures.types-check.d.ts +50 -2
- package/dist/notification/__tests__/subscribe-signatures.types-check.d.ts.map +1 -1
- package/dist/notification/__tests__/subscribe-signatures.types-check.js +22 -48
- package/dist/notification/__tests__/subscribe-signatures.types-check.js.map +1 -1
- package/dist/notification/errors.d.ts +2 -0
- package/dist/notification/errors.d.ts.map +1 -1
- package/dist/notification/errors.js +3 -1
- package/dist/notification/errors.js.map +1 -1
- package/dist/notification/index.d.ts +1 -0
- package/dist/notification/index.d.ts.map +1 -1
- package/dist/notification/index.js +1 -0
- package/dist/notification/index.js.map +1 -1
- package/dist/notification/stream.d.ts +11 -4
- package/dist/notification/stream.d.ts.map +1 -1
- package/dist/notification/stream.js +5 -38
- package/dist/notification/stream.js.map +1 -1
- package/dist/pagination.d.ts +13 -16
- package/dist/pagination.d.ts.map +1 -1
- package/dist/pagination.js +9 -1
- package/dist/pagination.js.map +1 -1
- package/dist/profile.d.ts +21 -9
- package/dist/profile.d.ts.map +1 -1
- package/dist/profile.js +30 -16
- package/dist/profile.js.map +1 -1
- package/dist/refs.d.ts +9 -1
- package/dist/refs.d.ts.map +1 -1
- package/dist/refs.js +9 -1
- package/dist/refs.js.map +1 -1
- package/dist/service-archive-purge.d.ts +18 -0
- package/dist/service-archive-purge.d.ts.map +1 -1
- package/dist/service-archive-purge.js +18 -0
- package/dist/service-archive-purge.js.map +1 -1
- package/dist/service-event-trace.d.ts +15 -0
- package/dist/service-event-trace.d.ts.map +1 -0
- package/dist/service-event-trace.js +35 -0
- package/dist/service-event-trace.js.map +1 -0
- package/dist/service-helpers.d.ts +35 -6
- package/dist/service-helpers.d.ts.map +1 -1
- package/dist/service-helpers.js +38 -8
- package/dist/service-helpers.js.map +1 -1
- package/dist/service-local-daemon.d.ts +12 -2
- package/dist/service-local-daemon.d.ts.map +1 -1
- package/dist/service-local-daemon.js +38 -25
- package/dist/service-local-daemon.js.map +1 -1
- package/dist/service.d.ts +62 -22
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +135 -80
- package/dist/service.js.map +1 -1
- package/dist/test-utils/channel-service-fixture.d.ts +8 -0
- package/dist/test-utils/channel-service-fixture.d.ts.map +1 -1
- package/dist/test-utils/channel-service-fixture.js +31 -13
- package/dist/test-utils/channel-service-fixture.js.map +1 -1
- package/dist/test-utils/fake-service.d.ts +20 -7
- package/dist/test-utils/fake-service.d.ts.map +1 -1
- package/dist/test-utils/fake-service.js +18 -4
- package/dist/test-utils/fake-service.js.map +1 -1
- package/dist/test-utils/harness.d.ts +5 -1
- package/dist/test-utils/harness.d.ts.map +1 -1
- package/dist/test-utils/harness.js +3 -0
- package/dist/test-utils/harness.js.map +1 -1
- package/dist/test-utils/ids.d.ts +25 -0
- package/dist/test-utils/ids.d.ts.map +1 -1
- package/dist/test-utils/ids.js +27 -1
- package/dist/test-utils/ids.js.map +1 -1
- package/dist/test-utils/index.d.ts +7 -1
- package/dist/test-utils/index.d.ts.map +1 -1
- package/dist/test-utils/index.js +7 -1
- package/dist/test-utils/index.js.map +1 -1
- package/dist/test-utils/standalone-provisioning.d.ts +5 -0
- package/dist/test-utils/standalone-provisioning.d.ts.map +1 -1
- package/dist/test-utils/standalone-provisioning.js +3 -0
- package/dist/test-utils/standalone-provisioning.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
package/dist/pagination.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,OAAO,uBAAwB,SAAQ,IAAI,CAAC,WAAW,CAC3D,yBAAyB,CAGzB;IACA,IAAa,OAAO;QAClB,OAAO,yBAAyB,IAAI,CAAC,MAAM,qCAAqC,CAAC;IACnF,CAAC;CACF;AAgCD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAKhC,EACA,OAAO,EACP,UAAU,EACV,eAAe,EACf,WAAW,EACX,iBAAiB,GAC4B;IAI7C,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,GAAG,GAAU,EAAE,CAAC;QACtB,qEAAqE;QACrE,yDAAyD;QACzD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,IAAI,MAA0B,CAAC;QAC/B,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YACvC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAChD,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/B,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,UAAU,KAAK,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5D,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,uBAAuB,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CACzD,CAAC;YACJ,CAAC;YACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC9B,CAAC;YACD,MAAM,GAAG,UAAU,CAAC;YACpB,IAAI,GAAG,UAAU,KAAK,SAAS,CAAC;QAClC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC;AACjD,CAAC"}
|
package/dist/profile.d.ts
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import { Effect, Schema } from "effect";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export declare const ProfileName: Schema.brand<Schema.filter<typeof Schema.String>, "ProfileName">;
|
|
2
|
+
/** Validates and decodes profile name values. */
|
|
3
|
+
export declare const profileName: Schema.brand<Schema.filter<typeof Schema.String>, "ProfileName">;
|
|
5
4
|
/**
|
|
6
5
|
* Branded profile name shared by profile lookup and CLI registration.
|
|
7
6
|
*/
|
|
8
|
-
export type ProfileName = Schema.Schema.Type<typeof
|
|
9
|
-
declare const
|
|
10
|
-
agentId: Schema.Schema<AgentId, string, never>;
|
|
11
|
-
apiKey: Schema.Schema<AgentKey, string, never>;
|
|
7
|
+
export type ProfileName = Schema.Schema.Type<typeof profileName>;
|
|
8
|
+
declare const profileRecordSchema: Schema.Struct<{
|
|
9
|
+
agentId: Schema.Schema<import("@moltzap/protocol/identity").AgentId, string, never>;
|
|
10
|
+
apiKey: Schema.Schema<import("@moltzap/protocol/identity").AgentKey, string, never>;
|
|
12
11
|
agentName: typeof Schema.String;
|
|
13
12
|
}>;
|
|
14
13
|
/** One profile's persisted auth record. */
|
|
15
|
-
export type ProfileRecord = Schema.Schema.Type<typeof
|
|
14
|
+
export type ProfileRecord = Schema.Schema.Type<typeof profileRecordSchema>;
|
|
16
15
|
/** Named profile view of config.json. */
|
|
17
16
|
export interface LayeredConfig {
|
|
18
17
|
readonly profiles: ReadonlyMap<ProfileName, ProfileRecord>;
|
|
@@ -22,6 +21,7 @@ export type ProfileError = ProfileNotFoundError | ProfileInvalidNameError | Prof
|
|
|
22
21
|
declare const ProfileNotFoundError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
23
22
|
readonly _tag: "ProfileNotFoundError";
|
|
24
23
|
} & Readonly<A>;
|
|
24
|
+
/** Reports profile not found failures. */
|
|
25
25
|
export declare class ProfileNotFoundError extends ProfileNotFoundError_base<{
|
|
26
26
|
readonly name: string;
|
|
27
27
|
}> {
|
|
@@ -29,6 +29,7 @@ export declare class ProfileNotFoundError extends ProfileNotFoundError_base<{
|
|
|
29
29
|
declare const ProfileInvalidNameError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
30
30
|
readonly _tag: "ProfileInvalidNameError";
|
|
31
31
|
} & Readonly<A>;
|
|
32
|
+
/** Reports profile invalid name failures. */
|
|
32
33
|
export declare class ProfileInvalidNameError extends ProfileInvalidNameError_base<{
|
|
33
34
|
readonly name: string;
|
|
34
35
|
readonly reason: string;
|
|
@@ -37,6 +38,7 @@ export declare class ProfileInvalidNameError extends ProfileInvalidNameError_bas
|
|
|
37
38
|
declare const ProfileConfigReadError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
38
39
|
readonly _tag: "ProfileConfigReadError";
|
|
39
40
|
} & Readonly<A>;
|
|
41
|
+
/** Reports profile config read failures. */
|
|
40
42
|
export declare class ProfileConfigReadError extends ProfileConfigReadError_base<{
|
|
41
43
|
readonly path: string;
|
|
42
44
|
readonly cause: unknown;
|
|
@@ -45,6 +47,7 @@ export declare class ProfileConfigReadError extends ProfileConfigReadError_base<
|
|
|
45
47
|
declare const ProfileConfigWriteError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
46
48
|
readonly _tag: "ProfileConfigWriteError";
|
|
47
49
|
} & Readonly<A>;
|
|
50
|
+
/** Reports profile config write failures. */
|
|
48
51
|
export declare class ProfileConfigWriteError extends ProfileConfigWriteError_base<{
|
|
49
52
|
readonly path: string;
|
|
50
53
|
readonly cause: unknown;
|
|
@@ -53,6 +56,8 @@ export declare class ProfileConfigWriteError extends ProfileConfigWriteError_bas
|
|
|
53
56
|
/**
|
|
54
57
|
* Parse and brand a raw profile name. Rejects the empty string and any
|
|
55
58
|
* string that fails NAME_PATTERN.
|
|
59
|
+
* @param raw Value supplied to the operation.
|
|
60
|
+
* @returns The decoded profile name.
|
|
56
61
|
*/
|
|
57
62
|
export declare const parseProfileName: (raw: string) => Effect.Effect<ProfileName, ProfileInvalidNameError>;
|
|
58
63
|
/**
|
|
@@ -67,10 +72,15 @@ export declare const loadLayeredConfig: Effect.Effect<LayeredConfig, ProfileConf
|
|
|
67
72
|
/**
|
|
68
73
|
* Resolve a named profile record. CLI transport selection uses only
|
|
69
74
|
* `agentId`; daemon startup consumes the redacted `apiKey`.
|
|
75
|
+
* @param name Name of the operation.
|
|
76
|
+
* @returns The next profile file result.
|
|
70
77
|
*/
|
|
71
78
|
export declare const resolveProfileRecord: (name: ProfileName) => Effect.Effect<ProfileRecord, ProfileNotFoundError | ProfileConfigReadError>;
|
|
72
79
|
/**
|
|
73
80
|
* Persist a new profile record under `profiles.<name>`.
|
|
81
|
+
* @param name Name of the operation.
|
|
82
|
+
* @param record Value supplied to the operation.
|
|
83
|
+
* @returns The write profile result.
|
|
74
84
|
*/
|
|
75
85
|
export declare const writeProfile: (name: ProfileName, record: ProfileRecord) => Effect.Effect<void, ProfileConfigWriteError | ProfileConfigReadError>;
|
|
76
86
|
/**
|
|
@@ -84,9 +94,11 @@ export declare const writeProfile: (name: ProfileName, record: ProfileRecord) =>
|
|
|
84
94
|
*
|
|
85
95
|
* The register command pipes the returned record through the printer,
|
|
86
96
|
* which writes non-secret registration details to stdout.
|
|
97
|
+
* @param record Value supplied to the operation.
|
|
98
|
+
* @returns The emit no persist result.
|
|
87
99
|
*/
|
|
88
100
|
export declare const emitNoPersist: (record: ProfileRecord) => Effect.Effect<{
|
|
89
101
|
readonly record: ProfileRecord;
|
|
90
|
-
}
|
|
102
|
+
}>;
|
|
91
103
|
export {};
|
|
92
104
|
//# sourceMappingURL=profile.d.ts.map
|
package/dist/profile.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAQA,OAAO,EAAQ,MAAM,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAQA,OAAO,EAAQ,MAAM,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AAkBtD,iDAAiD;AACjD,eAAO,MAAM,WAAW,kEAGvB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC,CAAC;AAEjE,QAAA,MAAM,mBAAmB;;;;EAIvB,CAAC;AAEH,2CAA2C;AAC3C,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAe3E,yCAAyC;AACzC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;CAC5D;AAID,sDAAsD;AACtD,MAAM,MAAM,YAAY,GACpB,oBAAoB,GACpB,uBAAuB,GACvB,sBAAsB,GACtB,uBAAuB,CAAC;;;;AAE5B,0CAA0C;AAC1C,qBAAa,oBAAqB,SAAQ,0BAExC;IACA,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;CAAG;;;;AAEL,6CAA6C;AAC7C,qBAAa,uBAAwB,SAAQ,6BAE3C;IACA,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;CAAG;;;;AAEL,4CAA4C;AAC5C,qBAAa,sBAAuB,SAAQ,4BAE1C;IACA,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;CAAG;;;;AAEL,6CAA6C;AAC7C,qBAAa,uBAAwB,SAAQ,6BAE3C;IACA,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;CAAG;AAIL;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,KAAK,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAWpD,CAAC;AAoEF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAC3C,aAAa,EACb,sBAAsB,CAMqB,CAAC;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,WAAW,KAChB,MAAM,CAAC,MAAM,CACd,aAAa,EACb,oBAAoB,GAAG,sBAAsB,CASG,CAAC;AAgEnD;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GACvB,MAAM,WAAW,EACjB,QAAQ,aAAa,KACpB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,uBAAuB,GAAG,sBAAsB,CAI7B,CAAC;AAE3C;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,aAAa,GACxB,QAAQ,aAAa,KACpB,MAAM,CAAC,MAAM,CAAC;IAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CACvB,CAAC"}
|
package/dist/profile.js
CHANGED
|
@@ -7,8 +7,7 @@
|
|
|
7
7
|
import { FileSystem } from "@effect/platform";
|
|
8
8
|
import { NodeFileSystem } from "@effect/platform-node";
|
|
9
9
|
import { Data, Effect, Either, Schema } from "effect";
|
|
10
|
-
import {
|
|
11
|
-
import { AgentKey } from "@moltzap/protocol/identity";
|
|
10
|
+
import { agentId, agentKey } from "@moltzap/protocol/identity";
|
|
12
11
|
import { getMoltZapConfigDir, getMoltZapConfigPath } from "./local-paths.js";
|
|
13
12
|
// ─── Branded names ─────────────────────────────────────────────────────────
|
|
14
13
|
const NAME_PATTERN = /^[a-z0-9][a-z0-9-]{1,30}[a-z0-9]$/;
|
|
@@ -19,37 +18,44 @@ const getConfigDir = getMoltZapConfigDir;
|
|
|
19
18
|
const getConfigFilePathSync = getMoltZapConfigPath;
|
|
20
19
|
const STRICT_PARSE_OPTIONS = { onExcessProperty: "error" };
|
|
21
20
|
// ─── Records ───────────────────────────────────────────────────────────────
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
/** Validates and decodes profile name values. */
|
|
22
|
+
export const profileName = Schema.String.pipe(Schema.pattern(NAME_PATTERN), Schema.brand("ProfileName"));
|
|
23
|
+
const profileRecordSchema = Schema.Struct({
|
|
24
|
+
agentId: agentId,
|
|
25
|
+
apiKey: agentKey,
|
|
26
26
|
agentName: Schema.String,
|
|
27
27
|
});
|
|
28
|
-
const
|
|
29
|
-
key:
|
|
30
|
-
value:
|
|
28
|
+
const profileMapSchema = Schema.Record({
|
|
29
|
+
key: profileName,
|
|
30
|
+
value: profileRecordSchema,
|
|
31
31
|
});
|
|
32
|
-
const
|
|
33
|
-
profiles: Schema.optional(
|
|
32
|
+
const profileFileSchema = Schema.Struct({
|
|
33
|
+
profiles: Schema.optional(profileMapSchema),
|
|
34
34
|
});
|
|
35
|
-
const
|
|
35
|
+
const profileFileTextSchema = Schema.parseJson(profileFileSchema, {
|
|
36
36
|
space: JSON_INDENT_SPACES,
|
|
37
37
|
});
|
|
38
|
+
/** Reports profile not found failures. */
|
|
38
39
|
export class ProfileNotFoundError extends Data.TaggedError("ProfileNotFoundError") {
|
|
39
40
|
}
|
|
41
|
+
/** Reports profile invalid name failures. */
|
|
40
42
|
export class ProfileInvalidNameError extends Data.TaggedError("ProfileInvalidNameError") {
|
|
41
43
|
}
|
|
44
|
+
/** Reports profile config read failures. */
|
|
42
45
|
export class ProfileConfigReadError extends Data.TaggedError("ProfileConfigReadError") {
|
|
43
46
|
}
|
|
47
|
+
/** Reports profile config write failures. */
|
|
44
48
|
export class ProfileConfigWriteError extends Data.TaggedError("ProfileConfigWriteError") {
|
|
45
49
|
}
|
|
46
50
|
// ─── Public API ────────────────────────────────────────────────────────────
|
|
47
51
|
/**
|
|
48
52
|
* Parse and brand a raw profile name. Rejects the empty string and any
|
|
49
53
|
* string that fails NAME_PATTERN.
|
|
54
|
+
* @param raw Value supplied to the operation.
|
|
55
|
+
* @returns The decoded profile name.
|
|
50
56
|
*/
|
|
51
57
|
export const parseProfileName = (raw) => {
|
|
52
|
-
return Schema.decodeUnknown(
|
|
58
|
+
return Schema.decodeUnknown(profileName)(raw).pipe(Effect.catchTag("ParseError", () => Effect.fail(new ProfileInvalidNameError({
|
|
53
59
|
name: raw,
|
|
54
60
|
reason: raw.length === 0 ? "empty string" : PROFILE_NAME_REASON,
|
|
55
61
|
}))));
|
|
@@ -62,7 +68,7 @@ const readProfileFileText = (configPath) => FileSystem.FileSystem.pipe(Effect.fl
|
|
|
62
68
|
onLeft: (cause) => Effect.fail(new ProfileConfigReadError({ path: configPath, cause })),
|
|
63
69
|
onRight: (value) => Effect.succeed(value),
|
|
64
70
|
})));
|
|
65
|
-
const decodeProfileFileText = (configPath, text) => Schema.decodeUnknown(
|
|
71
|
+
const decodeProfileFileText = (configPath, text) => Schema.decodeUnknown(profileFileTextSchema, STRICT_PARSE_OPTIONS)(text).pipe(Effect.either, Effect.flatMap(Either.match({
|
|
66
72
|
onLeft: (cause) => Effect.fail(new ProfileConfigReadError({ path: configPath, cause })),
|
|
67
73
|
onRight: Effect.succeed,
|
|
68
74
|
})));
|
|
@@ -76,7 +82,8 @@ const readProfileFile = () => Effect.gen(function* () {
|
|
|
76
82
|
return { file, existed: true };
|
|
77
83
|
});
|
|
78
84
|
function profilesFromFile(file) {
|
|
79
|
-
return new Map(
|
|
85
|
+
return new Map(
|
|
86
|
+
/* Safe because the surrounding invariant establishes this asserted shape. */ Object.entries(file.profiles ?? {}));
|
|
80
87
|
}
|
|
81
88
|
/**
|
|
82
89
|
* Load the full layered config view. Missing file resolves to an empty
|
|
@@ -95,6 +102,8 @@ export const loadLayeredConfig = Effect.gen(function* () {
|
|
|
95
102
|
/**
|
|
96
103
|
* Resolve a named profile record. CLI transport selection uses only
|
|
97
104
|
* `agentId`; daemon startup consumes the redacted `apiKey`.
|
|
105
|
+
* @param name Name of the operation.
|
|
106
|
+
* @returns The next profile file result.
|
|
98
107
|
*/
|
|
99
108
|
export const resolveProfileRecord = (name) => Effect.gen(function* () {
|
|
100
109
|
const layered = yield* loadLayeredConfig;
|
|
@@ -112,7 +121,7 @@ function nextProfileFile(file, name, record) {
|
|
|
112
121
|
},
|
|
113
122
|
};
|
|
114
123
|
}
|
|
115
|
-
const encodeProfileFileText = (configPath, file) => Schema.encode(
|
|
124
|
+
const encodeProfileFileText = (configPath, file) => Schema.encode(profileFileTextSchema, STRICT_PARSE_OPTIONS)(file).pipe(Effect.either, Effect.flatMap(Either.match({
|
|
116
125
|
onLeft: (cause) => Effect.fail(new ProfileConfigWriteError({ path: configPath, cause })),
|
|
117
126
|
onRight: Effect.succeed,
|
|
118
127
|
})));
|
|
@@ -128,6 +137,9 @@ const writeProfileFile = (next) => {
|
|
|
128
137
|
};
|
|
129
138
|
/**
|
|
130
139
|
* Persist a new profile record under `profiles.<name>`.
|
|
140
|
+
* @param name Name of the operation.
|
|
141
|
+
* @param record Value supplied to the operation.
|
|
142
|
+
* @returns The write profile result.
|
|
131
143
|
*/
|
|
132
144
|
export const writeProfile = (name, record) => Effect.gen(function* () {
|
|
133
145
|
const { file } = yield* readProfileFile();
|
|
@@ -144,6 +156,8 @@ export const writeProfile = (name, record) => Effect.gen(function* () {
|
|
|
144
156
|
*
|
|
145
157
|
* The register command pipes the returned record through the printer,
|
|
146
158
|
* which writes non-secret registration details to stdout.
|
|
159
|
+
* @param record Value supplied to the operation.
|
|
160
|
+
* @returns The emit no persist result.
|
|
147
161
|
*/
|
|
148
162
|
export const emitNoPersist = (record) => Effect.succeed({ record });
|
|
149
163
|
//# sourceMappingURL=profile.js.map
|
package/dist/profile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"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"}
|
package/dist/refs.d.ts
CHANGED
|
@@ -3,8 +3,16 @@ import { HashMap, Ref } from "effect";
|
|
|
3
3
|
* Read a `Ref` synchronously outside an Effect scope. Only safe for `Ref`s
|
|
4
4
|
* that never fiber-park (the stock `Ref.Ref<A>` never does). Use from
|
|
5
5
|
* object methods or sync code paths that hold a `Ref` set up at construction.
|
|
6
|
+
* @param ref Value supplied to the operation.
|
|
7
|
+
* @returns The snapshot result.
|
|
6
8
|
*/
|
|
7
9
|
export declare const snapshot: <A>(ref: Ref.Ref<A>) => A;
|
|
8
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* Lookup `key` in `m`, falling back to `dflt()` if absent. Lazy default.
|
|
12
|
+
* @param m Value supplied to the operation.
|
|
13
|
+
* @param key Value supplied to the operation.
|
|
14
|
+
* @param dflt Value supplied to the operation.
|
|
15
|
+
* @returns The get or result.
|
|
16
|
+
*/
|
|
9
17
|
export declare const getOr: <K, V>(m: HashMap.HashMap<K, V>, key: K, dflt: () => V) => V;
|
|
10
18
|
//# sourceMappingURL=refs.d.ts.map
|
package/dist/refs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../src/refs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,OAAO,EAAU,GAAG,EAAE,MAAM,QAAQ,CAAC;AAEtD
|
|
1
|
+
{"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../src/refs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,OAAO,EAAU,GAAG,EAAE,MAAM,QAAQ,CAAC;AAEtD;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAG,CAAiC,CAAC;AAEhF;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,CAAC,EACxB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EACxB,KAAK,CAAC,EACN,MAAM,MAAM,CAAC,KACZ,CAAgD,CAAC"}
|
package/dist/refs.js
CHANGED
|
@@ -3,8 +3,16 @@ import { Effect, HashMap, Option, Ref } from "effect";
|
|
|
3
3
|
* Read a `Ref` synchronously outside an Effect scope. Only safe for `Ref`s
|
|
4
4
|
* that never fiber-park (the stock `Ref.Ref<A>` never does). Use from
|
|
5
5
|
* object methods or sync code paths that hold a `Ref` set up at construction.
|
|
6
|
+
* @param ref Value supplied to the operation.
|
|
7
|
+
* @returns The snapshot result.
|
|
6
8
|
*/
|
|
7
9
|
export const snapshot = (ref) => Effect.runSync(Ref.get(ref));
|
|
8
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* Lookup `key` in `m`, falling back to `dflt()` if absent. Lazy default.
|
|
12
|
+
* @param m Value supplied to the operation.
|
|
13
|
+
* @param key Value supplied to the operation.
|
|
14
|
+
* @param dflt Value supplied to the operation.
|
|
15
|
+
* @returns The get or result.
|
|
16
|
+
*/
|
|
9
17
|
export const getOr = (m, key, dflt) => Option.getOrElse(HashMap.get(m, key), dflt);
|
|
10
18
|
//# sourceMappingURL=refs.js.map
|
package/dist/refs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refs.js","sourceRoot":"","sources":["../src/refs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAEtD
|
|
1
|
+
{"version":3,"file":"refs.js","sourceRoot":"","sources":["../src/refs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAI,GAAe,EAAK,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,CAAwB,EACxB,GAAM,EACN,IAAa,EACV,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC"}
|
|
@@ -6,6 +6,12 @@ import type { TaskId } from "@moltzap/protocol/task";
|
|
|
6
6
|
* the function under the 50-line ESLint cap and the file under the
|
|
7
7
|
* 1050-line cap.
|
|
8
8
|
*/
|
|
9
|
+
/**
|
|
10
|
+
* Executes the purge agent cache entries operation.
|
|
11
|
+
* @param m Value supplied to the operation.
|
|
12
|
+
* @param conversationId Value supplied to the operation.
|
|
13
|
+
* @returns The purge agent cache entries result.
|
|
14
|
+
*/
|
|
9
15
|
export declare function purgeAgentCacheEntries(m: HashMap.HashMap<string, {
|
|
10
16
|
readonly taskId: TaskId;
|
|
11
17
|
readonly conversationId: ConversationId;
|
|
@@ -13,6 +19,18 @@ export declare function purgeAgentCacheEntries(m: HashMap.HashMap<string, {
|
|
|
13
19
|
readonly taskId: TaskId;
|
|
14
20
|
readonly conversationId: ConversationId;
|
|
15
21
|
}>;
|
|
22
|
+
/**
|
|
23
|
+
* Executes the purge last notified operation.
|
|
24
|
+
* @param outer Value supplied to the operation.
|
|
25
|
+
* @param conversationId Value supplied to the operation.
|
|
26
|
+
* @returns The purge last notified result.
|
|
27
|
+
*/
|
|
16
28
|
export declare function purgeLastNotified(outer: HashMap.HashMap<string, HashMap.HashMap<string, string>>, conversationId: ConversationId): HashMap.HashMap<string, HashMap.HashMap<string, string>>;
|
|
29
|
+
/**
|
|
30
|
+
* Executes the purge last read operation.
|
|
31
|
+
* @param outer Value supplied to the operation.
|
|
32
|
+
* @param conversationId Value supplied to the operation.
|
|
33
|
+
* @returns The purge last read result.
|
|
34
|
+
*/
|
|
17
35
|
export declare function purgeLastRead(outer: HashMap.HashMap<string, HashMap.HashMap<string, ReadonlySet<string>>>, conversationId: ConversationId): HashMap.HashMap<string, HashMap.HashMap<string, ReadonlySet<string>>>;
|
|
18
36
|
//# sourceMappingURL=service-archive-purge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-archive-purge.d.ts","sourceRoot":"","sources":["../src/service-archive-purge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD;;;;GAIG;AAEH,wBAAgB,sBAAsB,CACpC,CAAC,EAAE,OAAO,CAAC,OAAO,CAChB,MAAM,EACN;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;CAAE,CACrE,EACD,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,OAAO,CAChB,MAAM,EACN;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;CAAE,CACrE,CAWA;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC/D,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAY1D;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAC5E,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAavE"}
|
|
1
|
+
{"version":3,"file":"service-archive-purge.d.ts","sourceRoot":"","sources":["../src/service-archive-purge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD;;;;GAIG;AAEH;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,CAAC,EAAE,OAAO,CAAC,OAAO,CAChB,MAAM,EACN;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;CAAE,CACrE,EACD,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,OAAO,CAChB,MAAM,EACN;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;CAAE,CACrE,CAWA;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC/D,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAY1D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAC5E,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAavE"}
|
|
@@ -4,6 +4,12 @@ import { HashMap } from "effect";
|
|
|
4
4
|
* the function under the 50-line ESLint cap and the file under the
|
|
5
5
|
* 1050-line cap.
|
|
6
6
|
*/
|
|
7
|
+
/**
|
|
8
|
+
* Executes the purge agent cache entries operation.
|
|
9
|
+
* @param m Value supplied to the operation.
|
|
10
|
+
* @param conversationId Value supplied to the operation.
|
|
11
|
+
* @returns The purge agent cache entries result.
|
|
12
|
+
*/
|
|
7
13
|
export function purgeAgentCacheEntries(m, conversationId) {
|
|
8
14
|
let next = HashMap.empty();
|
|
9
15
|
for (const [agentName, entry] of HashMap.entries(m)) {
|
|
@@ -13,6 +19,12 @@ export function purgeAgentCacheEntries(m, conversationId) {
|
|
|
13
19
|
}
|
|
14
20
|
return next;
|
|
15
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Executes the purge last notified operation.
|
|
24
|
+
* @param outer Value supplied to the operation.
|
|
25
|
+
* @param conversationId Value supplied to the operation.
|
|
26
|
+
* @returns The purge last notified result.
|
|
27
|
+
*/
|
|
16
28
|
export function purgeLastNotified(outer, conversationId) {
|
|
17
29
|
let next = HashMap.empty();
|
|
18
30
|
for (const [viewConvId, markers] of HashMap.entries(outer)) {
|
|
@@ -22,6 +34,12 @@ export function purgeLastNotified(outer, conversationId) {
|
|
|
22
34
|
}
|
|
23
35
|
return next;
|
|
24
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Executes the purge last read operation.
|
|
39
|
+
* @param outer Value supplied to the operation.
|
|
40
|
+
* @param conversationId Value supplied to the operation.
|
|
41
|
+
* @returns The purge last read result.
|
|
42
|
+
*/
|
|
25
43
|
export function purgeLastRead(outer, conversationId) {
|
|
26
44
|
let next = HashMap.empty();
|
|
27
45
|
for (const [sessionKey, perConv] of HashMap.entries(outer)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-archive-purge.js","sourceRoot":"","sources":["../src/service-archive-purge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAIjC;;;;GAIG;AAEH,MAAM,UAAU,sBAAsB,CACpC,CAGC,EACD,cAA8B;IAK9B,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,EAGrB,CAAC;IACJ,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,IAAI,KAAK,CAAC,cAAc,KAAK,cAAc,EAAE,CAAC;YAC5C,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAA+D,EAC/D,cAA8B;IAE9B,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,EAA2C,CAAC;IACpE,KAAK,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;YAClC,IAAI,GAAG,OAAO,CAAC,GAAG,CAChB,IAAI,EACJ,UAAU,EACV,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CACxC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,KAA4E,EAC5E,cAA8B;IAE9B,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,EAGrB,CAAC;IACJ,KAAK,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,IAAI,GAAG,OAAO,CAAC,GAAG,CAChB,IAAI,EACJ,UAAU,EACV,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CACxC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"service-archive-purge.js","sourceRoot":"","sources":["../src/service-archive-purge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAIjC;;;;GAIG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,CAGC,EACD,cAA8B;IAK9B,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,EAGrB,CAAC;IACJ,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,IAAI,KAAK,CAAC,cAAc,KAAK,cAAc,EAAE,CAAC;YAC5C,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAA+D,EAC/D,cAA8B;IAE9B,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,EAA2C,CAAC;IACpE,KAAK,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;YAClC,IAAI,GAAG,OAAO,CAAC,GAAG,CAChB,IAAI,EACJ,UAAU,EACV,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CACxC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,KAA4E,EAC5E,cAA8B;IAE9B,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,EAGrB,CAAC;IACJ,KAAK,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,IAAI,GAAG,OAAO,CAAC,GAAG,CAChB,IAAI,EACJ,UAAU,EACV,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CACxC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** @file Best-effort client event trace persistence. */
|
|
2
|
+
import { ConfigProvider, Effect } from "effect";
|
|
3
|
+
/**
|
|
4
|
+
* Resolve the configured trace directory while preserving empty-as-disabled.
|
|
5
|
+
* @param configProvider Source used to resolve the environment-backed config.
|
|
6
|
+
* @returns A nonempty configured directory, or `undefined` when disabled.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getClientEventLogDir(configProvider?: ConfigProvider.ConfigProvider): string | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* Append one client event trace when trace persistence is configured.
|
|
11
|
+
* @param record Structured event fields to persist.
|
|
12
|
+
* @returns A best-effort write Effect that logs and absorbs storage failures.
|
|
13
|
+
*/
|
|
14
|
+
export declare function appendClientEventTrace(record: Record<string, unknown>): Effect.Effect<void>;
|
|
15
|
+
//# sourceMappingURL=service-event-trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-event-trace.d.ts","sourceRoot":"","sources":["../src/service-event-trace.ts"],"names":[],"mappings":"AAAA,wDAAwD;AAIxD,OAAO,EAAU,cAAc,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AAMhE;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,GAC7C,MAAM,GAAG,SAAS,CAMpB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CA0BrB"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** @file Best-effort client event trace persistence. */
|
|
2
|
+
import { FileSystem, Path } from "@effect/platform";
|
|
3
|
+
import { NodeContext } from "@effect/platform-node";
|
|
4
|
+
import { Config, ConfigProvider, Effect, Option } from "effect";
|
|
5
|
+
const clientEventLogDir = Config.option(Config.string("MOLTZAP_CLIENT_EVENT_LOG_DIR"));
|
|
6
|
+
/**
|
|
7
|
+
* Resolve the configured trace directory while preserving empty-as-disabled.
|
|
8
|
+
* @param configProvider Source used to resolve the environment-backed config.
|
|
9
|
+
* @returns A nonempty configured directory, or `undefined` when disabled.
|
|
10
|
+
*/
|
|
11
|
+
export function getClientEventLogDir(configProvider) {
|
|
12
|
+
const provider = configProvider ?? ConfigProvider.fromEnv();
|
|
13
|
+
const directory = Option.getOrUndefined(Effect.runSync(clientEventLogDir.pipe(Effect.withConfigProvider(provider))));
|
|
14
|
+
return directory === "" ? undefined : directory;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Append one client event trace when trace persistence is configured.
|
|
18
|
+
* @param record Structured event fields to persist.
|
|
19
|
+
* @returns A best-effort write Effect that logs and absorbs storage failures.
|
|
20
|
+
*/
|
|
21
|
+
export function appendClientEventTrace(record) {
|
|
22
|
+
const dir = getClientEventLogDir();
|
|
23
|
+
if (dir === undefined) {
|
|
24
|
+
return Effect.void;
|
|
25
|
+
}
|
|
26
|
+
return Effect.gen(function* () {
|
|
27
|
+
const fileSystem = yield* FileSystem.FileSystem;
|
|
28
|
+
const path = yield* Path.Path;
|
|
29
|
+
const agentId = typeof record.agentId === "string" ? record.agentId : "unknown";
|
|
30
|
+
const safeAgentId = /^[A-Za-z0-9_-]+$/.test(agentId) ? agentId : "unknown";
|
|
31
|
+
yield* Effect.zipRight(fileSystem.makeDirectory(dir, { recursive: true }), fileSystem.writeFileString(path.join(dir, `client-events-${safeAgentId}.jsonl`), `${JSON.stringify(record)}\n`, { flag: "a" }));
|
|
32
|
+
}).pipe(Effect.withSpan("appendClientEventTrace"), Effect.provide(NodeContext.layer), Effect.catchAll((error) => Effect.logWarning("moltzap client event trace write failed", error)));
|
|
33
|
+
}
|
|
34
|
+
// safer-arch-ignore no-trivial-sink-file: Event-trace lifecycle is isolated to keep the public service implementation within the normative function and file-size limits.
|
|
35
|
+
//# sourceMappingURL=service-event-trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-event-trace.js","sourceRoot":"","sources":["../src/service-event-trace.ts"],"names":[],"mappings":"AAAA,wDAAwD;AAExD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhE,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CACrC,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAC9C,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,cAA8C;IAE9C,MAAM,QAAQ,GAAG,cAAc,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;IAC5D,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CACrC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC5E,CAAC;IACF,OAAO,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAA+B;IAE/B,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;IACnC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;QAChD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9B,MAAM,OAAO,GACX,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAClE,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3E,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CACpB,UAAU,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAClD,UAAU,CAAC,eAAe,CACxB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,WAAW,QAAQ,CAAC,EACpD,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAC7B,EAAE,IAAI,EAAE,GAAG,EAAE,CACd,CACF,CAAC;IACJ,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EACzC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,MAAM,CAAC,UAAU,CAAC,yCAAyC,EAAE,KAAK,CAAC,CACpE,CACF,CAAC;AACJ,CAAC;AACD,0KAA0K"}
|
|
@@ -3,24 +3,53 @@ import type { AnyNotificationDefinition } from "@moltzap/protocol/socket/catalog
|
|
|
3
3
|
import type { Message } from "@moltzap/protocol/message";
|
|
4
4
|
import { HashMap } from "effect";
|
|
5
5
|
import type { ConversationMeta, CrossConversationEntry } from "./service.js";
|
|
6
|
+
/** Describes cross conv state. */
|
|
6
7
|
export interface CrossConvState {
|
|
7
|
-
readonly messagesMap: HashMap.HashMap<string,
|
|
8
|
+
readonly messagesMap: HashMap.HashMap<string, readonly Message[]>;
|
|
8
9
|
readonly conversationsMap: HashMap.HashMap<string, ConversationMeta>;
|
|
9
10
|
readonly agentNamesMap: HashMap.HashMap<string, string>;
|
|
10
11
|
readonly viewMarkers: HashMap.HashMap<string, string>;
|
|
11
12
|
}
|
|
13
|
+
/** Describes context candidate. */
|
|
12
14
|
export interface ContextCandidate {
|
|
13
15
|
readonly convId: string;
|
|
14
|
-
readonly newMsgs:
|
|
16
|
+
readonly newMsgs: readonly Message[];
|
|
15
17
|
readonly lastTs: number;
|
|
16
18
|
}
|
|
17
19
|
interface BuiltContextEntries {
|
|
18
20
|
readonly entries: CrossConversationEntry[];
|
|
19
21
|
readonly pendingAdvances: ReadonlyArray<readonly [string, string]>;
|
|
20
22
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Creates messages for conversation.
|
|
25
|
+
* @param convId Value supplied to the operation.
|
|
26
|
+
* @param messages Value supplied to the operation.
|
|
27
|
+
* @param viewMarkers Value supplied to the operation.
|
|
28
|
+
* @param currentConvId Value supplied to the operation.
|
|
29
|
+
* @returns The new messages for conversation result.
|
|
30
|
+
*/
|
|
31
|
+
export declare function newMessagesForConversation(convId: string, messages: readonly Message[], viewMarkers: HashMap.HashMap<string, string>, currentConvId: string): readonly Message[];
|
|
32
|
+
/**
|
|
33
|
+
* Creates context candidate.
|
|
34
|
+
* @param convId Value supplied to the operation.
|
|
35
|
+
* @param newMsgs Value supplied to the operation.
|
|
36
|
+
* @returns The created context candidate.
|
|
37
|
+
*/
|
|
38
|
+
export declare function makeContextCandidate(convId: string, newMsgs: readonly Message[]): ContextCandidate;
|
|
39
|
+
/**
|
|
40
|
+
* Creates context entries.
|
|
41
|
+
* @param candidates Value supplied to the operation.
|
|
42
|
+
* @param state Value supplied to the operation.
|
|
43
|
+
* @param maxMessagesPerConv Value supplied to the operation.
|
|
44
|
+
* @returns The created context entries.
|
|
45
|
+
*/
|
|
46
|
+
export declare function buildContextEntries(candidates: readonly ContextCandidate[], state: CrossConvState, maxMessagesPerConv: number): BuiltContextEntries;
|
|
47
|
+
/**
|
|
48
|
+
* Executes the notification trace record operation.
|
|
49
|
+
* @param notification Value supplied to the operation.
|
|
50
|
+
* @param agentId Identifier of the agent targeted by the operation.
|
|
51
|
+
* @returns The notification trace record result.
|
|
52
|
+
*/
|
|
53
|
+
export declare function notificationTraceRecord(notification: NotificationDelivery<AnyNotificationDefinition>, agentId?: string): Record<string, unknown>;
|
|
25
54
|
export {};
|
|
26
55
|
//# sourceMappingURL=service-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-helpers.d.ts","sourceRoot":"","sources":["../src/service-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAU,MAAM,QAAQ,CAAC;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAM7E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"service-helpers.d.ts","sourceRoot":"","sources":["../src/service-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAU,MAAM,QAAQ,CAAC;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAM7E,kCAAkC;AAClC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC,CAAC;IAClE,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACrE,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxD,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvD;AAED,mCAAmC;AACnC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACpE;AAwBD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5C,aAAa,EAAE,MAAM,GACpB,SAAS,OAAO,EAAE,CAUpB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,SAAS,OAAO,EAAE,GAC1B,gBAAgB,CAUlB;AA4CD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,SAAS,gBAAgB,EAAE,EACvC,KAAK,EAAE,cAAc,EACrB,kBAAkB,EAAE,MAAM,GACzB,mBAAmB,CAarB;AAQD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,oBAAoB,CAAC,yBAAyB,CAAC,EAC7D,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBzB"}
|
package/dist/service-helpers.js
CHANGED
|
@@ -12,17 +12,33 @@ const stringProperty = (record, key) => {
|
|
|
12
12
|
const value = record[key];
|
|
13
13
|
return typeof value === "string" ? value : undefined;
|
|
14
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* Creates messages for conversation.
|
|
17
|
+
* @param convId Value supplied to the operation.
|
|
18
|
+
* @param messages Value supplied to the operation.
|
|
19
|
+
* @param viewMarkers Value supplied to the operation.
|
|
20
|
+
* @param currentConvId Value supplied to the operation.
|
|
21
|
+
* @returns The new messages for conversation result.
|
|
22
|
+
*/
|
|
15
23
|
export function newMessagesForConversation(convId, messages, viewMarkers, currentConvId) {
|
|
16
|
-
if (convId === currentConvId || messages.length === 0)
|
|
24
|
+
if (convId === currentConvId || messages.length === 0) {
|
|
17
25
|
return [];
|
|
26
|
+
}
|
|
18
27
|
const lastSeenId = Option.getOrUndefined(HashMap.get(viewMarkers, convId));
|
|
19
28
|
const lastSeenIndex = lastSeenId !== undefined
|
|
20
29
|
? messages.findIndex((message) => message.id === lastSeenId)
|
|
21
30
|
: -1;
|
|
22
31
|
return messages.slice(lastSeenIndex + 1);
|
|
23
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Creates context candidate.
|
|
35
|
+
* @param convId Value supplied to the operation.
|
|
36
|
+
* @param newMsgs Value supplied to the operation.
|
|
37
|
+
* @returns The created context candidate.
|
|
38
|
+
*/
|
|
24
39
|
export function makeContextCandidate(convId, newMsgs) {
|
|
25
|
-
const last =
|
|
40
|
+
const last =
|
|
41
|
+
/* Safe because the surrounding invariant establishes this asserted shape. */ newMsgs[newMsgs.length - 1];
|
|
26
42
|
return {
|
|
27
43
|
convId,
|
|
28
44
|
newMsgs,
|
|
@@ -34,7 +50,8 @@ function minutesSince(timestamp) {
|
|
|
34
50
|
}
|
|
35
51
|
function contextEntryForCandidate(candidate, state, maxMessagesPerConv) {
|
|
36
52
|
const reportable = candidate.newMsgs.slice(-maxMessagesPerConv);
|
|
37
|
-
const last =
|
|
53
|
+
const last =
|
|
54
|
+
/* Safe because the surrounding invariant establishes this asserted shape. */ reportable[reportable.length - 1];
|
|
38
55
|
const senderName = getOr(state.agentNamesMap, last.senderId, () => last.senderId);
|
|
39
56
|
return {
|
|
40
57
|
entry: {
|
|
@@ -48,6 +65,13 @@ function contextEntryForCandidate(candidate, state, maxMessagesPerConv) {
|
|
|
48
65
|
advance: [candidate.convId, last.id],
|
|
49
66
|
};
|
|
50
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Creates context entries.
|
|
70
|
+
* @param candidates Value supplied to the operation.
|
|
71
|
+
* @param state Value supplied to the operation.
|
|
72
|
+
* @param maxMessagesPerConv Value supplied to the operation.
|
|
73
|
+
* @returns The created context entries.
|
|
74
|
+
*/
|
|
51
75
|
export function buildContextEntries(candidates, state, maxMessagesPerConv) {
|
|
52
76
|
const entries = [];
|
|
53
77
|
const pendingAdvances = [];
|
|
@@ -58,7 +82,13 @@ export function buildContextEntries(candidates, state, maxMessagesPerConv) {
|
|
|
58
82
|
}
|
|
59
83
|
return { entries, pendingAdvances };
|
|
60
84
|
}
|
|
61
|
-
const traceConversationId = (conversation, fallback) => conversation === undefined ? fallback : (conversation
|
|
85
|
+
const traceConversationId = (conversation, fallback) => conversation === undefined ? fallback : (conversation.id ?? fallback);
|
|
86
|
+
/**
|
|
87
|
+
* Executes the notification trace record operation.
|
|
88
|
+
* @param notification Value supplied to the operation.
|
|
89
|
+
* @param agentId Identifier of the agent targeted by the operation.
|
|
90
|
+
* @returns The notification trace record result.
|
|
91
|
+
*/
|
|
62
92
|
export function notificationTraceRecord(notification, agentId) {
|
|
63
93
|
const params = recordOrEmpty(notification.params);
|
|
64
94
|
const message = recordProperty(params, "message");
|
|
@@ -68,11 +98,11 @@ export function notificationTraceRecord(notification, agentId) {
|
|
|
68
98
|
ts: new Date().toISOString(),
|
|
69
99
|
agentId: agentId ?? "unknown",
|
|
70
100
|
notification: notification.method,
|
|
71
|
-
messageId: message?.
|
|
72
|
-
messageConversationId: message?.
|
|
73
|
-
messageSenderId: message?.
|
|
101
|
+
messageId: message?.id,
|
|
102
|
+
messageConversationId: message?.conversationId,
|
|
103
|
+
messageSenderId: message?.senderId,
|
|
74
104
|
conversationId: traceConversationId(conversation, notificationConversationId),
|
|
75
|
-
conversationName: conversation?.
|
|
105
|
+
conversationName: conversation?.name,
|
|
76
106
|
};
|
|
77
107
|
}
|
|
78
108
|
//# sourceMappingURL=service-helpers.js.map
|