@axiom-lattice/protocols 4.7.0 → 4.7.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/.turbo/turbo-build.log +8 -8
- package/CHANGELOG.md +13 -0
- package/dist/index.d.mts +36 -0
- package/dist/index.d.ts +36 -0
- package/package.json +1 -1
- package/src/ConnectionStoreProtocol.ts +36 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @axiom-lattice/protocols@4.7.
|
|
2
|
+
> @axiom-lattice/protocols@4.7.1 build /home/runner/work/agentic/agentic/packages/protocols
|
|
3
3
|
> tsup src/index.ts --format cjs,esm --dts --sourcemap
|
|
4
4
|
|
|
5
5
|
[34mCLI[39m Building entry: src/index.ts
|
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
[34mCLI[39m Target: es2020
|
|
9
9
|
[34mCJS[39m Build start
|
|
10
10
|
[34mESM[39m Build start
|
|
11
|
-
[32mESM[39m [1mdist/index.mjs [22m[32m42.99 KB[39m
|
|
12
|
-
[32mESM[39m [1mdist/index.mjs.map [22m[32m189.15 KB[39m
|
|
13
|
-
[32mESM[39m ⚡️ Build success in 817ms
|
|
14
11
|
[32mCJS[39m [1mdist/index.js [22m[32m48.09 KB[39m
|
|
15
12
|
[32mCJS[39m [1mdist/index.js.map [22m[32m193.07 KB[39m
|
|
16
|
-
[32mCJS[39m ⚡️ Build success in
|
|
13
|
+
[32mCJS[39m ⚡️ Build success in 508ms
|
|
14
|
+
[32mESM[39m [1mdist/index.mjs [22m[32m42.99 KB[39m
|
|
15
|
+
[32mESM[39m [1mdist/index.mjs.map [22m[32m189.15 KB[39m
|
|
16
|
+
[32mESM[39m ⚡️ Build success in 504ms
|
|
17
17
|
[34mDTS[39m Build start
|
|
18
|
-
[32mDTS[39m ⚡️ Build success in
|
|
19
|
-
[32mDTS[39m [1mdist/index.d.ts [22m[
|
|
20
|
-
[32mDTS[39m [1mdist/index.d.mts [22m[
|
|
18
|
+
[32mDTS[39m ⚡️ Build success in 14202ms
|
|
19
|
+
[32mDTS[39m [1mdist/index.d.ts [22m[32m251.25 KB[39m
|
|
20
|
+
[32mDTS[39m [1mdist/index.d.mts [22m[32m251.25 KB[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @axiom-lattice/protocols
|
|
2
2
|
|
|
3
|
+
## 4.7.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- bb2614f: Chating composer height, plugin connection-secret encryption, and manage_task compact cards.
|
|
8
|
+
|
|
9
|
+
- react-sdk: keep the Chating composer input from collapsing after a run. In slot mode (Chating always passes an array `slotConfig`) the Sender input is a `contentEditable` whose height comes from `autoSize`; without a `minRows` the empty editor lost its placeholder-driven line box once streaming ended and collapsed to zero height on some platforms (e.g. Windows Chrome), leaving the input unreachable while the footer stayed visible. Pass `autoSize={{ minRows: 1, maxRows: 8 }}` like `ProjectRoomComposer`.
|
|
10
|
+
- protocols/core: add `ConnectionEntry.secretFields`, plus `connectionSecretFields` / `encryptConfigFields` / `decryptConfigFields`.
|
|
11
|
+
- local-stores/pg-stores: encrypt the declared secret fields on save and decrypt on read, so the API and runtime consumers always receive real values. Existing plaintext rows read unchanged and convert on their next save (PG migration v188).
|
|
12
|
+
- gateway: plugin builder self-test discovery + secret redaction.
|
|
13
|
+
- core: `manage_task` `add_activity` now returns the target task alongside the activity (`{ success, data, task }`), so UIs can show which task an activity was written to.
|
|
14
|
+
- react-sdk: every `manage_task` action renders a compact chip in the chat stream and reveals its full card on hover. Fixes `get` and `add_activity`, which previously rendered no UI at all.
|
|
15
|
+
|
|
3
16
|
## 4.7.0
|
|
4
17
|
|
|
5
18
|
### Minor Changes
|
package/dist/index.d.mts
CHANGED
|
@@ -2409,14 +2409,50 @@ interface ConnectionEntry {
|
|
|
2409
2409
|
name: string;
|
|
2410
2410
|
description?: string;
|
|
2411
2411
|
config: Record<string, unknown>;
|
|
2412
|
+
/**
|
|
2413
|
+
* Names of config fields that hold secrets (API keys, passwords, tokens).
|
|
2414
|
+
*
|
|
2415
|
+
* Stores persist this list alongside the entry and use it to encrypt those
|
|
2416
|
+
* config values at rest on write and transparently decrypt them on read.
|
|
2417
|
+
* `config` in a returned entry is always the decrypted, real value — callers
|
|
2418
|
+
* (gateway API, runtime plugin resolution) never see ciphertext.
|
|
2419
|
+
*
|
|
2420
|
+
* Absent/empty means the entry has no encrypted fields (e.g. legacy rows or
|
|
2421
|
+
* connection types whose schema defines no password fields).
|
|
2422
|
+
*/
|
|
2423
|
+
secretFields?: string[];
|
|
2412
2424
|
createdAt: string;
|
|
2413
2425
|
updatedAt: string;
|
|
2414
2426
|
}
|
|
2415
2427
|
interface ConnectionStore {
|
|
2416
2428
|
listByTenant(tenantId: string): Promise<ConnectionEntry[]>;
|
|
2429
|
+
/**
|
|
2430
|
+
* List a tenant's connections of one plugin type.
|
|
2431
|
+
*
|
|
2432
|
+
* `config` in the returned entries is decrypted — implementations decrypt the
|
|
2433
|
+
* fields named by each entry's `secretFields` before returning.
|
|
2434
|
+
*/
|
|
2417
2435
|
listByType(tenantId: string, type: string): Promise<ConnectionEntry[]>;
|
|
2436
|
+
/**
|
|
2437
|
+
* Read one connection by key.
|
|
2438
|
+
*
|
|
2439
|
+
* `config` in the returned entry is decrypted (see `listByType`).
|
|
2440
|
+
*/
|
|
2418
2441
|
getByKey(tenantId: string, type: string, key: string): Promise<ConnectionEntry | null>;
|
|
2442
|
+
/**
|
|
2443
|
+
* Create a connection.
|
|
2444
|
+
*
|
|
2445
|
+
* Implementations encrypt the `secretFields` of `config` at rest; the
|
|
2446
|
+
* returned entry carries the plaintext `config` the caller supplied.
|
|
2447
|
+
*/
|
|
2419
2448
|
create(entry: Omit<ConnectionEntry, "id" | "createdAt" | "updatedAt">): Promise<ConnectionEntry>;
|
|
2449
|
+
/**
|
|
2450
|
+
* Update a connection.
|
|
2451
|
+
*
|
|
2452
|
+
* When `updates.config` is present, the effective secret fields are
|
|
2453
|
+
* `updates.secretFields ?? existing.secretFields`; those fields are
|
|
2454
|
+
* re-encrypted before persistence.
|
|
2455
|
+
*/
|
|
2420
2456
|
update(tenantId: string, type: string, key: string, updates: Partial<ConnectionEntry>): Promise<ConnectionEntry | null>;
|
|
2421
2457
|
delete(tenantId: string, type: string, key: string): Promise<boolean>;
|
|
2422
2458
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -2409,14 +2409,50 @@ interface ConnectionEntry {
|
|
|
2409
2409
|
name: string;
|
|
2410
2410
|
description?: string;
|
|
2411
2411
|
config: Record<string, unknown>;
|
|
2412
|
+
/**
|
|
2413
|
+
* Names of config fields that hold secrets (API keys, passwords, tokens).
|
|
2414
|
+
*
|
|
2415
|
+
* Stores persist this list alongside the entry and use it to encrypt those
|
|
2416
|
+
* config values at rest on write and transparently decrypt them on read.
|
|
2417
|
+
* `config` in a returned entry is always the decrypted, real value — callers
|
|
2418
|
+
* (gateway API, runtime plugin resolution) never see ciphertext.
|
|
2419
|
+
*
|
|
2420
|
+
* Absent/empty means the entry has no encrypted fields (e.g. legacy rows or
|
|
2421
|
+
* connection types whose schema defines no password fields).
|
|
2422
|
+
*/
|
|
2423
|
+
secretFields?: string[];
|
|
2412
2424
|
createdAt: string;
|
|
2413
2425
|
updatedAt: string;
|
|
2414
2426
|
}
|
|
2415
2427
|
interface ConnectionStore {
|
|
2416
2428
|
listByTenant(tenantId: string): Promise<ConnectionEntry[]>;
|
|
2429
|
+
/**
|
|
2430
|
+
* List a tenant's connections of one plugin type.
|
|
2431
|
+
*
|
|
2432
|
+
* `config` in the returned entries is decrypted — implementations decrypt the
|
|
2433
|
+
* fields named by each entry's `secretFields` before returning.
|
|
2434
|
+
*/
|
|
2417
2435
|
listByType(tenantId: string, type: string): Promise<ConnectionEntry[]>;
|
|
2436
|
+
/**
|
|
2437
|
+
* Read one connection by key.
|
|
2438
|
+
*
|
|
2439
|
+
* `config` in the returned entry is decrypted (see `listByType`).
|
|
2440
|
+
*/
|
|
2418
2441
|
getByKey(tenantId: string, type: string, key: string): Promise<ConnectionEntry | null>;
|
|
2442
|
+
/**
|
|
2443
|
+
* Create a connection.
|
|
2444
|
+
*
|
|
2445
|
+
* Implementations encrypt the `secretFields` of `config` at rest; the
|
|
2446
|
+
* returned entry carries the plaintext `config` the caller supplied.
|
|
2447
|
+
*/
|
|
2419
2448
|
create(entry: Omit<ConnectionEntry, "id" | "createdAt" | "updatedAt">): Promise<ConnectionEntry>;
|
|
2449
|
+
/**
|
|
2450
|
+
* Update a connection.
|
|
2451
|
+
*
|
|
2452
|
+
* When `updates.config` is present, the effective secret fields are
|
|
2453
|
+
* `updates.secretFields ?? existing.secretFields`; those fields are
|
|
2454
|
+
* re-encrypted before persistence.
|
|
2455
|
+
*/
|
|
2420
2456
|
update(tenantId: string, type: string, key: string, updates: Partial<ConnectionEntry>): Promise<ConnectionEntry | null>;
|
|
2421
2457
|
delete(tenantId: string, type: string, key: string): Promise<boolean>;
|
|
2422
2458
|
}
|
package/package.json
CHANGED
|
@@ -15,15 +15,51 @@ export interface ConnectionEntry {
|
|
|
15
15
|
name: string;
|
|
16
16
|
description?: string;
|
|
17
17
|
config: Record<string, unknown>;
|
|
18
|
+
/**
|
|
19
|
+
* Names of config fields that hold secrets (API keys, passwords, tokens).
|
|
20
|
+
*
|
|
21
|
+
* Stores persist this list alongside the entry and use it to encrypt those
|
|
22
|
+
* config values at rest on write and transparently decrypt them on read.
|
|
23
|
+
* `config` in a returned entry is always the decrypted, real value — callers
|
|
24
|
+
* (gateway API, runtime plugin resolution) never see ciphertext.
|
|
25
|
+
*
|
|
26
|
+
* Absent/empty means the entry has no encrypted fields (e.g. legacy rows or
|
|
27
|
+
* connection types whose schema defines no password fields).
|
|
28
|
+
*/
|
|
29
|
+
secretFields?: string[];
|
|
18
30
|
createdAt: string;
|
|
19
31
|
updatedAt: string;
|
|
20
32
|
}
|
|
21
33
|
|
|
22
34
|
export interface ConnectionStore {
|
|
23
35
|
listByTenant(tenantId: string): Promise<ConnectionEntry[]>;
|
|
36
|
+
/**
|
|
37
|
+
* List a tenant's connections of one plugin type.
|
|
38
|
+
*
|
|
39
|
+
* `config` in the returned entries is decrypted — implementations decrypt the
|
|
40
|
+
* fields named by each entry's `secretFields` before returning.
|
|
41
|
+
*/
|
|
24
42
|
listByType(tenantId: string, type: string): Promise<ConnectionEntry[]>;
|
|
43
|
+
/**
|
|
44
|
+
* Read one connection by key.
|
|
45
|
+
*
|
|
46
|
+
* `config` in the returned entry is decrypted (see `listByType`).
|
|
47
|
+
*/
|
|
25
48
|
getByKey(tenantId: string, type: string, key: string): Promise<ConnectionEntry | null>;
|
|
49
|
+
/**
|
|
50
|
+
* Create a connection.
|
|
51
|
+
*
|
|
52
|
+
* Implementations encrypt the `secretFields` of `config` at rest; the
|
|
53
|
+
* returned entry carries the plaintext `config` the caller supplied.
|
|
54
|
+
*/
|
|
26
55
|
create(entry: Omit<ConnectionEntry, "id" | "createdAt" | "updatedAt">): Promise<ConnectionEntry>;
|
|
56
|
+
/**
|
|
57
|
+
* Update a connection.
|
|
58
|
+
*
|
|
59
|
+
* When `updates.config` is present, the effective secret fields are
|
|
60
|
+
* `updates.secretFields ?? existing.secretFields`; those fields are
|
|
61
|
+
* re-encrypted before persistence.
|
|
62
|
+
*/
|
|
27
63
|
update(tenantId: string, type: string, key: string, updates: Partial<ConnectionEntry>): Promise<ConnectionEntry | null>;
|
|
28
64
|
delete(tenantId: string, type: string, key: string): Promise<boolean>;
|
|
29
65
|
}
|