@cat-factory/integrations 0.26.4 → 0.27.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/modules/accountSettings/AccountSettingsService.d.ts +12 -2
- package/dist/modules/accountSettings/AccountSettingsService.d.ts.map +1 -1
- package/dist/modules/accountSettings/AccountSettingsService.js +33 -7
- package/dist/modules/accountSettings/AccountSettingsService.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AccountSettingsRepository, Clock, SecretCipher } from '@cat-factory/kernel';
|
|
2
|
-
import type { AccountSettingsConfig, AccountSettingsView, SlackOAuthSecret, UpdateAccountSettingsInput, WebSearchSecret } from '@cat-factory/contracts';
|
|
2
|
+
import type { AccountSettingsConfig, AccountSettingsView, ContentStorageCapability, ContentStorageConfig, S3CredentialsSecret, SlackOAuthSecret, UpdateAccountSettingsInput, WebSearchSecret } from '@cat-factory/contracts';
|
|
3
3
|
/** HKDF domain tag separating the grouped account-settings secret blob from other ciphers. */
|
|
4
4
|
export declare const ACCOUNT_SETTINGS_CIPHER_INFO = "cat-factory:account-settings";
|
|
5
5
|
/** A fully-resolved (decrypted) view of an account's settings, for runtime consumers. */
|
|
@@ -7,12 +7,21 @@ export interface ResolvedAccountSettings {
|
|
|
7
7
|
config: AccountSettingsConfig;
|
|
8
8
|
slackOAuth?: SlackOAuthSecret;
|
|
9
9
|
webSearch?: WebSearchSecret;
|
|
10
|
+
/** Non-secret content-storage config (backend selection + connection settings). */
|
|
11
|
+
contentStorage?: ContentStorageConfig;
|
|
12
|
+
/** Decrypted S3 access keys for the content-storage `s3` backend, when stored. */
|
|
13
|
+
s3Credentials?: S3CredentialsSecret;
|
|
10
14
|
}
|
|
11
15
|
export interface AccountSettingsServiceDependencies {
|
|
12
16
|
accountSettingsRepository: AccountSettingsRepository;
|
|
13
17
|
/** Seals the grouped secrets blob (domain tag {@link ACCOUNT_SETTINGS_CIPHER_INFO}). */
|
|
14
18
|
secretCipher: SecretCipher;
|
|
15
19
|
clock: Clock;
|
|
20
|
+
/**
|
|
21
|
+
* Which content-storage backends THIS runtime can serve + its default. Surfaced in the
|
|
22
|
+
* admin view so the UI only offers valid options. Omitted ⇒ storage disabled (tests).
|
|
23
|
+
*/
|
|
24
|
+
contentStorageCapability?: ContentStorageCapability;
|
|
16
25
|
}
|
|
17
26
|
/**
|
|
18
27
|
* Owns per-account deployment settings: a non-secret `config` blob + ONE sealed secrets
|
|
@@ -25,13 +34,14 @@ export declare class AccountSettingsService {
|
|
|
25
34
|
private readonly repo;
|
|
26
35
|
private readonly cipher;
|
|
27
36
|
private readonly clock;
|
|
37
|
+
private readonly contentStorageCapability;
|
|
28
38
|
private readonly cache;
|
|
29
39
|
constructor(deps: AccountSettingsServiceDependencies);
|
|
30
40
|
/** The resolved (decrypted) settings for an account, cache-first. Defaults when no row. */
|
|
31
41
|
resolve(accountId: string): Promise<ResolvedAccountSettings>;
|
|
32
42
|
/** Drop an account's cached settings (after a write, so the change is seen at once). */
|
|
33
43
|
invalidate(accountId: string): void;
|
|
34
|
-
/** Admin read: config + non-secret summary; NEVER
|
|
44
|
+
/** Admin read: config + non-secret summary + runtime capability; NEVER returns secrets. */
|
|
35
45
|
read(accountId: string): Promise<AccountSettingsView>;
|
|
36
46
|
/**
|
|
37
47
|
* Admin write. `config` (when present) fully replaces the non-secret config. Each
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountSettingsService.d.ts","sourceRoot":"","sources":["../../../src/modules/accountSettings/AccountSettingsService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEzF,OAAO,KAAK,EACV,qBAAqB,EAGrB,mBAAmB,EACnB,gBAAgB,EAChB,0BAA0B,EAC1B,eAAe,EAChB,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"AccountSettingsService.d.ts","sourceRoot":"","sources":["../../../src/modules/accountSettings/AccountSettingsService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEzF,OAAO,KAAK,EACV,qBAAqB,EAGrB,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,0BAA0B,EAC1B,eAAe,EAChB,MAAM,wBAAwB,CAAA;AAc/B,8FAA8F;AAC9F,eAAO,MAAM,4BAA4B,iCAAiC,CAAA;AAK1E,yFAAyF;AACzF,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,qBAAqB,CAAA;IAC7B,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,mFAAmF;IACnF,cAAc,CAAC,EAAE,oBAAoB,CAAA;IACrC,kFAAkF;IAClF,aAAa,CAAC,EAAE,mBAAmB,CAAA;CACpC;AAED,MAAM,WAAW,kCAAkC;IACjD,yBAAyB,EAAE,yBAAyB,CAAA;IACpD,wFAAwF;IACxF,YAAY,EAAE,YAAY,CAAA;IAC1B,KAAK,EAAE,KAAK,CAAA;IACZ;;;OAGG;IACH,wBAAwB,CAAC,EAAE,wBAAwB,CAAA;CACpD;AAED;;;;;;GAMG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2B;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA0B;IACnE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2E;IAEjG,YAAY,IAAI,EAAE,kCAAkC,EAMnD;IAED,2FAA2F;IACrF,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAgBjE;IAED,wFAAwF;IACxF,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAElC;IAED,2FAA2F;IACrF,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAc1D;IAED;;;;OAIG;IACG,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAkC9F;IAED,sFAAsF;YACxE,cAAc;IAW5B,mFAAmF;YACrE,WAAW;CAO1B"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { ConflictError } from '@cat-factory/kernel';
|
|
2
2
|
import { DEFAULT_ACCOUNT_SETTINGS_CONFIG, accountSettingsSummary, parseAccountSettingsConfig, parseAccountSettingsSecrets, } from '@cat-factory/contracts';
|
|
3
|
+
/** Capability used when a facade doesn't supply one (storage disabled — e.g. in tests). */
|
|
4
|
+
const DISABLED_CONTENT_STORAGE_CAPABILITY = {
|
|
5
|
+
supportedBackends: ['off'],
|
|
6
|
+
defaultBackend: 'off',
|
|
7
|
+
};
|
|
3
8
|
/** HKDF domain tag separating the grouped account-settings secret blob from other ciphers. */
|
|
4
9
|
export const ACCOUNT_SETTINGS_CIPHER_INFO = 'cat-factory:account-settings';
|
|
5
10
|
/** How long a resolved account-settings entry is cached before reloading (ms). */
|
|
@@ -15,11 +20,14 @@ export class AccountSettingsService {
|
|
|
15
20
|
repo;
|
|
16
21
|
cipher;
|
|
17
22
|
clock;
|
|
23
|
+
contentStorageCapability;
|
|
18
24
|
cache = new Map();
|
|
19
25
|
constructor(deps) {
|
|
20
26
|
this.repo = deps.accountSettingsRepository;
|
|
21
27
|
this.cipher = deps.secretCipher;
|
|
22
28
|
this.clock = deps.clock;
|
|
29
|
+
this.contentStorageCapability =
|
|
30
|
+
deps.contentStorageCapability ?? DISABLED_CONTENT_STORAGE_CAPABILITY;
|
|
23
31
|
}
|
|
24
32
|
/** The resolved (decrypted) settings for an account, cache-first. Defaults when no row. */
|
|
25
33
|
async resolve(accountId) {
|
|
@@ -34,6 +42,8 @@ export class AccountSettingsService {
|
|
|
34
42
|
config,
|
|
35
43
|
...(secrets.slackOAuth ? { slackOAuth: secrets.slackOAuth } : {}),
|
|
36
44
|
...(secrets.webSearch ? { webSearch: secrets.webSearch } : {}),
|
|
45
|
+
...(config.contentStorage ? { contentStorage: config.contentStorage } : {}),
|
|
46
|
+
...(secrets.s3 ? { s3Credentials: secrets.s3 } : {}),
|
|
37
47
|
};
|
|
38
48
|
this.cache.set(accountId, { value, expiresAt: now + CACHE_TTL_MS });
|
|
39
49
|
return value;
|
|
@@ -42,16 +52,21 @@ export class AccountSettingsService {
|
|
|
42
52
|
invalidate(accountId) {
|
|
43
53
|
this.cache.delete(accountId);
|
|
44
54
|
}
|
|
45
|
-
/** Admin read: config + non-secret summary; NEVER
|
|
55
|
+
/** Admin read: config + non-secret summary + runtime capability; NEVER returns secrets. */
|
|
46
56
|
async read(accountId) {
|
|
47
57
|
const record = await this.repo.getByAccount(accountId);
|
|
48
58
|
if (!record) {
|
|
49
59
|
return {
|
|
50
60
|
config: DEFAULT_ACCOUNT_SETTINGS_CONFIG,
|
|
51
61
|
summary: accountSettingsSummary({}),
|
|
62
|
+
contentStorageCapability: this.contentStorageCapability,
|
|
52
63
|
};
|
|
53
64
|
}
|
|
54
|
-
return {
|
|
65
|
+
return {
|
|
66
|
+
config: parseConfig(record.config),
|
|
67
|
+
summary: parseSummary(record.summary),
|
|
68
|
+
contentStorageCapability: this.contentStorageCapability,
|
|
69
|
+
};
|
|
55
70
|
}
|
|
56
71
|
/**
|
|
57
72
|
* Admin write. `config` (when present) fully replaces the non-secret config. Each
|
|
@@ -73,7 +88,7 @@ export class AccountSettingsService {
|
|
|
73
88
|
const current = existing?.secretsCipher ? await this.decryptSecrets(existing.secretsCipher) : {};
|
|
74
89
|
const merged = { ...current };
|
|
75
90
|
if (input.secrets) {
|
|
76
|
-
for (const key of ['slackOAuth', 'webSearch']) {
|
|
91
|
+
for (const key of ['slackOAuth', 'webSearch', 's3']) {
|
|
77
92
|
if (!(key in input.secrets))
|
|
78
93
|
continue;
|
|
79
94
|
const value = input.secrets[key];
|
|
@@ -83,8 +98,8 @@ export class AccountSettingsService {
|
|
|
83
98
|
merged[key] = value;
|
|
84
99
|
}
|
|
85
100
|
}
|
|
86
|
-
const hasSecrets = Boolean(merged.slackOAuth || merged.webSearch);
|
|
87
|
-
const summary = accountSettingsSummary(merged);
|
|
101
|
+
const hasSecrets = Boolean(merged.slackOAuth || merged.webSearch || merged.s3);
|
|
102
|
+
const summary = accountSettingsSummary(merged, config);
|
|
88
103
|
await this.repo.upsert({
|
|
89
104
|
accountId,
|
|
90
105
|
config: JSON.stringify(config),
|
|
@@ -94,7 +109,7 @@ export class AccountSettingsService {
|
|
|
94
109
|
updatedAt: now,
|
|
95
110
|
});
|
|
96
111
|
this.invalidate(accountId);
|
|
97
|
-
return { config, summary };
|
|
112
|
+
return { config, summary, contentStorageCapability: this.contentStorageCapability };
|
|
98
113
|
}
|
|
99
114
|
/** Decrypt + parse the sealed secrets blob. Throws when it can't be opened/parsed. */
|
|
100
115
|
async decryptSecrets(sealed) {
|
|
@@ -125,15 +140,26 @@ function parseConfig(raw) {
|
|
|
125
140
|
return DEFAULT_ACCOUNT_SETTINGS_CONFIG;
|
|
126
141
|
}
|
|
127
142
|
}
|
|
128
|
-
|
|
143
|
+
const CONTENT_STORAGE_BACKENDS = new Set(['off', 'fs', 's3', 'r2', 'db']);
|
|
144
|
+
/** Parse the stored non-secret summary, tolerating a malformed/empty/legacy value. */
|
|
129
145
|
function parseSummary(raw) {
|
|
130
146
|
try {
|
|
131
147
|
const parsed = JSON.parse(raw);
|
|
132
148
|
if (parsed && typeof parsed === 'object') {
|
|
133
149
|
const o = parsed;
|
|
150
|
+
const cs = (o.contentStorage ?? {});
|
|
151
|
+
const backend = typeof cs.backend === 'string' && CONTENT_STORAGE_BACKENDS.has(cs.backend)
|
|
152
|
+
? cs.backend
|
|
153
|
+
: null;
|
|
134
154
|
return {
|
|
135
155
|
slackOAuthConfigured: Boolean(o.slackOAuthConfigured),
|
|
136
156
|
webSearch: o.webSearch === 'brave' || o.webSearch === 'searxng' ? o.webSearch : null,
|
|
157
|
+
contentStorage: {
|
|
158
|
+
backend,
|
|
159
|
+
bucket: typeof cs.bucket === 'string' ? cs.bucket : null,
|
|
160
|
+
basePath: typeof cs.basePath === 'string' ? cs.basePath : null,
|
|
161
|
+
s3CredentialsConfigured: Boolean(cs.s3CredentialsConfigured),
|
|
162
|
+
},
|
|
137
163
|
};
|
|
138
164
|
}
|
|
139
165
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountSettingsService.js","sourceRoot":"","sources":["../../../src/modules/accountSettings/AccountSettingsService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"AccountSettingsService.js","sourceRoot":"","sources":["../../../src/modules/accountSettings/AccountSettingsService.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/integrations",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.0",
|
|
4
4
|
"description": "External-system integration domain logic for the Agent Architecture Board (GitHub, documents, tasks, environments, runners).",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"ai": "^6.0.209",
|
|
28
|
-
"@cat-factory/contracts": "0.
|
|
29
|
-
"@cat-factory/kernel": "0.
|
|
28
|
+
"@cat-factory/contracts": "0.44.0",
|
|
29
|
+
"@cat-factory/kernel": "0.46.0"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"typescript": "7.0.1-rc",
|
|
33
|
-
"undici": "^
|
|
33
|
+
"undici": "^8.5.0",
|
|
34
34
|
"vitest": "^4.1.9"
|
|
35
35
|
},
|
|
36
36
|
"scripts": {
|