@cotal-ai/core 0.4.0 → 0.5.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/agent-file.d.ts +7 -0
- package/dist/agent-file.d.ts.map +1 -1
- package/dist/agent-file.js +29 -2
- package/dist/agent-file.js.map +1 -1
- package/dist/channels.d.ts +13 -2
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +24 -1
- package/dist/channels.js.map +1 -1
- package/dist/endpoint.d.ts +233 -57
- package/dist/endpoint.d.ts.map +1 -1
- package/dist/endpoint.js +905 -200
- package/dist/endpoint.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/members.d.ts +93 -0
- package/dist/members.d.ts.map +1 -0
- package/dist/members.js +193 -0
- package/dist/members.js.map +1 -0
- package/dist/provision.d.ts +25 -10
- package/dist/provision.d.ts.map +1 -1
- package/dist/provision.js +38 -16
- package/dist/provision.js.map +1 -1
- package/dist/streams.d.ts +37 -23
- package/dist/streams.d.ts.map +1 -1
- package/dist/streams.js +87 -32
- package/dist/streams.js.map +1 -1
- package/dist/subjects.d.ts +42 -4
- package/dist/subjects.d.ts.map +1 -1
- package/dist/subjects.js +70 -4
- package/dist/subjects.js.map +1 -1
- package/dist/types.d.ts +111 -5
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/subjects.js
CHANGED
|
@@ -220,6 +220,29 @@ export function channelBucket(space) {
|
|
|
220
220
|
* character (`/^[-/=.\w]+$/`) but one `token()` can never produce (it maps every char
|
|
221
221
|
* outside `[A-Za-z0-9_-]` to `_`), so this key can never collide with a real channel. */
|
|
222
222
|
export const CHANNEL_DEFAULTS_KEY = "=defaults";
|
|
223
|
+
/** Name of the KV bucket holding the durable-membership registry (Plane-3) for a space — a
|
|
224
|
+
* privileged-write sibling of the channels/presence buckets. One record per (concrete channel,
|
|
225
|
+
* owner) under {@link memberKey}; the source of truth for `channelMembers()` and the fan-out's
|
|
226
|
+
* member list, moved off JetStream consumer topology (which core-sub joins don't create). */
|
|
227
|
+
export function membersBucket(space) {
|
|
228
|
+
return `cotal_members_${token(space)}`;
|
|
229
|
+
}
|
|
230
|
+
/** KV key for one membership record: `<channel>/<owner>`. The channel is concrete (no `*`/`>`,
|
|
231
|
+
* validated at the write path) so it is dotted-but-`/`-free, and an owner id is an nkey
|
|
232
|
+
* (`[A-Z0-9]`, also `/`-free), so the single `/` separates them unambiguously — both halves
|
|
233
|
+
* recover via {@link parseMemberKey}. `/`, `.`, and `[A-Za-z0-9_-]` are all legal KV-key chars
|
|
234
|
+
* (`/^[-/=.\w]+$/`), so no encoding is needed. */
|
|
235
|
+
export function memberKey(channel, owner) {
|
|
236
|
+
return `${channel}/${owner}`;
|
|
237
|
+
}
|
|
238
|
+
/** Inverse of {@link memberKey}: split a member key back into `{ channel, owner }`, or `null` if
|
|
239
|
+
* it isn't one (no `/`). Splits on the single separator — channels and owner ids are both `/`-free. */
|
|
240
|
+
export function parseMemberKey(key) {
|
|
241
|
+
const i = key.indexOf("/");
|
|
242
|
+
if (i <= 0 || i >= key.length - 1)
|
|
243
|
+
return null;
|
|
244
|
+
return { channel: key.slice(0, i), owner: key.slice(i + 1) };
|
|
245
|
+
}
|
|
223
246
|
// ---- JetStream streams (the durable backing for the three delivery modes) ----
|
|
224
247
|
/** Stream capturing `chat.>` — multicast backlog + history. */
|
|
225
248
|
export function chatStream(space) {
|
|
@@ -233,14 +256,57 @@ export function dmStream(space) {
|
|
|
233
256
|
export function taskStream(space) {
|
|
234
257
|
return `TASK_${token(space)}`;
|
|
235
258
|
}
|
|
236
|
-
|
|
259
|
+
// ---- Plane-3 (durable backstop, SPEC §8) — two per-space streams ----
|
|
260
|
+
//
|
|
261
|
+
// `dinbox.<owner>` is the MIXED pre-auth store (fan-out target): the agent holds NO grant on
|
|
262
|
+
// {@link inboxStream} and the trusted reader (manager) is its only consumer. `dlv.<owner>` is the
|
|
263
|
+
// per-member POST-auth handoff: the reader transfers each re-authorized copy here and the agent binds
|
|
264
|
+
// {@link dlvDurable} bind-only and acks it via native JetStream (§8 "an equivalent per-member
|
|
265
|
+
// at-least-once mechanism with the same ack semantics"). `dlv` carries channel messages only, so the
|
|
266
|
+
// receiver derives `kind=channel` from the delivery path — no payload/header kind (SPEC §4).
|
|
267
|
+
/** Stream capturing `dinbox.>` — the per-owner mixed durable inbox (fan-out target; agent unreadable). */
|
|
268
|
+
export function inboxStream(space) {
|
|
269
|
+
return `INBOX_${token(space)}`;
|
|
270
|
+
}
|
|
271
|
+
/** Stream capturing `dlv.>` — the per-member post-auth delivery store (agent binds + acks). */
|
|
272
|
+
export function dlvStream(space) {
|
|
273
|
+
return `DLV_${token(space)}`;
|
|
274
|
+
}
|
|
275
|
+
/** Subject of an owner's mixed durable inbox: `cotal.<space>.dinbox.<owner>` (one per owner). */
|
|
276
|
+
export function dinboxSubject(space, owner) {
|
|
277
|
+
return `${spacePrefix(space)}.dinbox.${routeToken(owner)}`;
|
|
278
|
+
}
|
|
279
|
+
/** Subject of an owner's post-auth delivery: `cotal.<space>.dlv.<owner>` (one per owner). */
|
|
280
|
+
export function dlvSubject(space, owner) {
|
|
281
|
+
return `${spacePrefix(space)}.dlv.${routeToken(owner)}`;
|
|
282
|
+
}
|
|
283
|
+
/** Parse the owner id out of an owner's mixed-inbox subject `cotal.<space>.dinbox.<owner>`, or null.
|
|
284
|
+
* The trusted reader is a SINGLE consumer over `dinbox.>` (all owners), so it recovers the per-message
|
|
285
|
+
* owner from the subject (the routing token is `routeToken(owner)` — an nkey, a `token()` no-op). */
|
|
286
|
+
export function parseDinboxOwner(subject) {
|
|
287
|
+
const parts = subject.split(".");
|
|
288
|
+
// cotal.<space>.dinbox.<owner>
|
|
289
|
+
return parts.length === 4 && parts[0] === ROOT && parts[2] === "dinbox" ? parts[3] : null;
|
|
290
|
+
}
|
|
291
|
+
/** An agent's bind-only per-owner consumer on {@link dlvStream} (filter `dlv.<owner>`). */
|
|
292
|
+
export function dlvDurable(owner) {
|
|
293
|
+
return `dlv_${token(owner)}`;
|
|
294
|
+
}
|
|
295
|
+
/** The single privileged fan-out consumer on the CHAT stream (manager-pumped; routing, not auth). */
|
|
296
|
+
export const FANOUT_DURABLE = "fanout";
|
|
297
|
+
/** The single privileged trusted-reader consumer on {@link inboxStream} (filter `dinbox.>`,
|
|
298
|
+
* manager-pumped). It re-authorizes each entry and transfers the authorized copy to `dlv.<owner>`. */
|
|
299
|
+
export const INBOX_READER_DURABLE = "reader";
|
|
300
|
+
/** Name of the REMOVED per-instance chat live-tail durable. Retained only as the canonical name the
|
|
301
|
+
* read-ACL conformance test asserts an agent can NOT create — it has no live callers, the live read is
|
|
302
|
+
* now a native core subscription. */
|
|
237
303
|
export function chatDurable(instance) {
|
|
238
304
|
return `chat_${token(instance)}`;
|
|
239
305
|
}
|
|
240
306
|
/** Consumer name for an instance's short-lived chat **history** reads (join-backfill, focus-recall,
|
|
241
|
-
* drop-marker). A single per-instance name
|
|
242
|
-
* delete grants
|
|
243
|
-
*
|
|
307
|
+
* drop-marker). A single per-instance name, scoped to the agent's own id so its create/info/fetch/
|
|
308
|
+
* delete grants name-scope to that id — a peer can never bind it — while the per-read single
|
|
309
|
+
* `filter_subject` is what the create-time ACL pins to `allowSubscribe`. */
|
|
244
310
|
export function chatHistDurable(instance) {
|
|
245
311
|
return `chathist_${token(instance)}`;
|
|
246
312
|
}
|
package/dist/subjects.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subjects.js","sourceRoot":"","sources":["../src/subjects.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"subjects.js","sourceRoot":"","sources":["../src/subjects.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -40,15 +40,47 @@ export interface AgentCard {
|
|
|
40
40
|
* - `offline`: disconnected or heartbeat lapsed (derived by observers, not self-set while live)
|
|
41
41
|
*/
|
|
42
42
|
export type PresenceStatus = "idle" | "waiting" | "working" | "offline";
|
|
43
|
+
/**
|
|
44
|
+
* How aggressively peer traffic interrupts an agent — chosen by the agent, orthogonal to
|
|
45
|
+
* {@link PresenceStatus}. Defined here (the wire layer) because it is now published in
|
|
46
|
+
* {@link Presence}; the connector imports it. Advisory observability, not a security boundary.
|
|
47
|
+
*/
|
|
48
|
+
export type AttentionMode = "open" | "dnd" | "focus";
|
|
49
|
+
/**
|
|
50
|
+
* Per-channel attention override (more specific than the global {@link AttentionMode}).
|
|
51
|
+
* - `quiet` — still delivered + buffered, but never wakes; an `@`-mention still wakes (per-channel `dnd`).
|
|
52
|
+
* - `muted` — channel messages dropped on receive, incl. `@`-mentions ("don't receive this channel").
|
|
53
|
+
*/
|
|
54
|
+
export type ChannelMode = "quiet" | "muted";
|
|
43
55
|
/** Live presence record. Stored in the space's KV bucket under key = card.id. */
|
|
44
56
|
export interface Presence {
|
|
45
57
|
card: AgentCard;
|
|
46
58
|
status: PresenceStatus;
|
|
47
59
|
/** Freeform "what I'm doing right now". */
|
|
48
60
|
activity?: string;
|
|
61
|
+
/** This instance's current global attention mode. Advisory, within-space observability — a peer
|
|
62
|
+
* can see "they're in focus" and choose to DM. Published from the connector's authoritative state
|
|
63
|
+
* (presence is a mirror, never the source of truth for delivery). `open`/absent ⇒ receives all. */
|
|
64
|
+
attention?: AttentionMode;
|
|
65
|
+
/** Per-channel attention overrides this instance currently has (runtime, reset on restart). Keys are
|
|
66
|
+
* concrete channel names. Advisory: lets a peer see "locally muted #deploys → DM to reach me". NOT
|
|
67
|
+
* access control — the broker still authorizes and delivers; this is a receive-side presentation. */
|
|
68
|
+
channelModes?: Record<string, ChannelMode>;
|
|
49
69
|
/** Epoch ms of the last heartbeat. */
|
|
50
70
|
ts: number;
|
|
51
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* A channel's delivery class (SPEC §4). Fixed per channel, wire-observable.
|
|
74
|
+
* - `live` — native broker-subscription delivery; **at-most-once** (only instances subscribed at
|
|
75
|
+
* publish time receive it; a disconnected/busy/not-yet-joined instance has no claim to it later).
|
|
76
|
+
* - `durable` — `live` plus a per-subscriber durable backstop; **at-least-once for current members**
|
|
77
|
+
* (also retained per member and redelivered on the member's next connection/turn until acked).
|
|
78
|
+
*
|
|
79
|
+
* Effective class is {@link effectiveDeliveryClass}: `channel ?? space default ?? "durable"`. The
|
|
80
|
+
* space default is set at space creation from the deployment profile (local/self-hosted ⇒ `durable`,
|
|
81
|
+
* public/web-scale ⇒ `live`) so it is always discoverable on the wire, never inferred per-component.
|
|
82
|
+
*/
|
|
83
|
+
export type DeliveryClass = "live" | "durable";
|
|
52
84
|
/**
|
|
53
85
|
* Channel registry entry — channel-global config, stored in the per-space channels KV
|
|
54
86
|
* (one entry per channel; the space-wide default lives under {@link CHANNEL_DEFAULTS_KEY}).
|
|
@@ -60,9 +92,11 @@ export interface ChannelConfig {
|
|
|
60
92
|
/** Override the space default for history replay-on-join. */
|
|
61
93
|
replay?: boolean;
|
|
62
94
|
/** How far back a joiner's backfill reaches — a duration like `"24h"`, `"30m"`, `"7d"`.
|
|
63
|
-
*
|
|
64
|
-
* retained window; ignored when replay is off. */
|
|
95
|
+
* Bounds the join-backfill read horizon (now − window) on the pinned single-filter `chathist`
|
|
96
|
+
* history consumer. Unset + `replay` ⇒ the full retained window; ignored when replay is off. */
|
|
65
97
|
replayWindow?: string;
|
|
98
|
+
/** Override the space default delivery class (SPEC §4, §7). See {@link DeliveryClass}. */
|
|
99
|
+
deliveryClass?: DeliveryClass;
|
|
66
100
|
/** One-line "what this channel is for". */
|
|
67
101
|
description?: string;
|
|
68
102
|
/** Longer "how to use it" — surfaced to joiners as advisory, attributed data. */
|
|
@@ -72,6 +106,71 @@ export interface ChannelConfig {
|
|
|
72
106
|
export interface ChannelDefaults {
|
|
73
107
|
replay?: boolean;
|
|
74
108
|
replayWindow?: string;
|
|
109
|
+
/** Default delivery class for channels without an explicit one. Written at space creation from
|
|
110
|
+
* the deployment profile (local ⇒ `durable`, web ⇒ `live`); see {@link DeliveryClass}. */
|
|
111
|
+
deliveryClass?: DeliveryClass;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Durable-membership state (Plane-3, SPEC §7). One {@link MembershipRecord} per (concrete channel,
|
|
115
|
+
* owner) in the privileged members registry KV.
|
|
116
|
+
* - `live-confirmed` — the owner is live-subscribed (core-sub / boot durable); no Plane-3 backstop.
|
|
117
|
+
* Fan-out does NOT target these (their durability, if any, is the legacy tail until Stage 5).
|
|
118
|
+
* - `durable-active` — a Plane-3 durable backstop is established for this (channel, owner). Fan-out
|
|
119
|
+
* targets these; the trusted reader re-authorizes each entry against the interval below.
|
|
120
|
+
*/
|
|
121
|
+
export type MembershipState = "live-confirmed" | "durable-active";
|
|
122
|
+
/**
|
|
123
|
+
* A durable-membership record (privileged write only; agent-authored membership is forbidden —
|
|
124
|
+
* it would self-authorize delivery + reads). Eligibility is by **CHAT stream sequence**, never
|
|
125
|
+
* wall-clock: a `durable-channel` entry is deliverable to this owner iff
|
|
126
|
+
* `joinCursor < seq <= leaveCursor` (open leave ⇒ no upper bound) — SPEC §7 L355-356. `leaveCursor`
|
|
127
|
+
* present ⇒ this is a tombstone (kept through the retention horizon so late entries are denied
|
|
128
|
+
* deterministically); a rejoin bumps {@link generation} and takes a fresh {@link joinCursor}.
|
|
129
|
+
*/
|
|
130
|
+
export interface MembershipRecord {
|
|
131
|
+
/** Concrete channel (never a wildcard — wildcard ACLs grant live breadth, durable is per-channel). */
|
|
132
|
+
channel: string;
|
|
133
|
+
/** Owner agent id (nkey). */
|
|
134
|
+
owner: string;
|
|
135
|
+
state: MembershipState;
|
|
136
|
+
/** CHAT stream seq captured at join — durable eligibility is `seq > joinCursor`. */
|
|
137
|
+
joinCursor: number;
|
|
138
|
+
/** True only once activation catch-up has COMPLETED. A **completeness/reporting** flag, NOT a delivery
|
|
139
|
+
* gate: {@link durableEligible} is pure membership-interval, so a `durable-active` record routes
|
|
140
|
+
* in-interval immediately (no live message is lost during catch-up). `activated` instead gates what is
|
|
141
|
+
* REPORTED — `durableJoin` returns `durable:true` and `channelMembers()` lists the owner only once
|
|
142
|
+
* catch-up confirms; a join whose catch-up never completes reports `durable:false`, stays hidden, and
|
|
143
|
+
* is tombstoned on eviction so it does not route. A tombstone preserves the `activated` it had at leave. */
|
|
144
|
+
activated?: boolean;
|
|
145
|
+
/** CHAT stream seq captured at leave — eligibility upper bound `seq <= leaveCursor`. Present ⇒
|
|
146
|
+
* tombstone. Absent ⇒ open membership (no upper bound). */
|
|
147
|
+
leaveCursor?: number;
|
|
148
|
+
/** Bumped each (re)join. Stale-write guard (with the KV revision CAS) + idempotency-key component
|
|
149
|
+
* for fan-out/catch-up (`<msgId>:<owner>:<generation>`). */
|
|
150
|
+
generation: number;
|
|
151
|
+
/** The privileged writer's id (audit; never an agent). */
|
|
152
|
+
writerIdentity: string;
|
|
153
|
+
/** Epoch ms of the last write (diagnostics only — eligibility is seq, never this). */
|
|
154
|
+
updatedAt: number;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* A fan-out entry in an owner's mixed pre-auth inbox (`dinbox.<owner>`, Plane-3). The fan-out writer
|
|
158
|
+
* copies one of these per eligible owner; the trusted reader re-authorizes it (`channel`+`seq` against
|
|
159
|
+
* the membership interval for `durable-channel`, ACL-only for `live-mention`) before transferring the
|
|
160
|
+
* embedded `msg` to the owner's DELIVER store. `seq`/`reason`/`generation` are the re-auth metadata;
|
|
161
|
+
* the agent never sees this envelope (it receives only `msg` on `dlv.<owner>`).
|
|
162
|
+
*/
|
|
163
|
+
export interface Plane3Entry {
|
|
164
|
+
msg: CotalMessage;
|
|
165
|
+
/** Concrete channel the message was published on (the re-auth subject). */
|
|
166
|
+
channel: string;
|
|
167
|
+
/** The message's CHAT stream sequence (membership-interval re-auth). */
|
|
168
|
+
seq: number;
|
|
169
|
+
/** Why this owner was fanned to: a `durable` channel's member (interval-gated) vs a `live` channel
|
|
170
|
+
* `@mention` to an authorized target (ACL-only, no membership). */
|
|
171
|
+
reason: "durable-channel" | "live-mention";
|
|
172
|
+
/** The owner's membership generation at fan-out (idempotency-key component + diagnostics). */
|
|
173
|
+
generation: number;
|
|
75
174
|
}
|
|
76
175
|
/** Reverse-DNS extension part kind, e.g. `com.acme.snapshot`.
|
|
77
176
|
* @pattern ^[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)+$ */
|
|
@@ -98,9 +197,11 @@ interface CotalMessageBase {
|
|
|
98
197
|
ts: number;
|
|
99
198
|
space: string;
|
|
100
199
|
from: EndpointRef;
|
|
101
|
-
/** Lowercased peer names called out within a `channel` message — a
|
|
102
|
-
*
|
|
103
|
-
*
|
|
200
|
+
/** Lowercased peer names called out within a `channel` message — a wake hint that also, on a
|
|
201
|
+
* `live` channel, routes a durable copy to each mentioned target **authorized to read that
|
|
202
|
+
* channel** (SPEC §4/§5). It never carries content outside the target's read ACL and is not a
|
|
203
|
+
* routing substitute for `channel`/`to`; the message still multicasts to the whole channel.
|
|
204
|
+
* Omitted when empty. */
|
|
104
205
|
mentions?: string[];
|
|
105
206
|
parts: Part[];
|
|
106
207
|
/** Id of the message being replied to. */
|
|
@@ -159,6 +260,11 @@ export interface Delivery {
|
|
|
159
260
|
ack(): void;
|
|
160
261
|
/** Decline for now; the message redelivers (e.g. couldn't surface it yet). */
|
|
161
262
|
nak(): void;
|
|
263
|
+
/** Whether {@link ack} actually COMMITS this copy (durable backstop / JetStream, at-least-once)
|
|
264
|
+
* or is a no-op (live core-sub / history backfill, at-most-once). A receiver coalescing a
|
|
265
|
+
* cross-path duplicate must NOT downgrade a durable ack to a live no-op — else the durable copy
|
|
266
|
+
* is never committed, JetStream redelivers it, and it double-surfaces. See {@link DeliveryClass}. */
|
|
267
|
+
durable: boolean;
|
|
162
268
|
}
|
|
163
269
|
/** Control-plane request/reply (e.g. CLI → manager). */
|
|
164
270
|
export interface ControlRequest {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,UAAU,CAAC;AAEhD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,6DAA6D;AAC7D,MAAM,WAAW,SAAS;IACxB,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAC;IACX,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,yFAAyF;IACzF,IAAI,EAAE,YAAY,CAAC;IACnB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2FAA2F;IAC3F,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B;;wEAEoE;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAExE,iFAAiF;AACjF,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cotal-ai/core",
|
|
3
3
|
"description": "The Cotal protocol: endpoint, subjects, message types, the NATS client layer, and the extension contracts.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.5.0",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -33,6 +33,6 @@
|
|
|
33
33
|
"scripts": {
|
|
34
34
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
35
35
|
"build": "tsc -p tsconfig.json",
|
|
36
|
-
"test": "tsx resolve.smoke.ts"
|
|
36
|
+
"test": "tsx smoke/resolve.smoke.ts"
|
|
37
37
|
}
|
|
38
38
|
}
|